scip-query 0.22.0 → 0.24.0

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 (470) hide show
  1. package/CHANGELOG.md +500 -0
  2. package/README.md +13 -0
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/by-kind-H3P6BR5G.js +2 -0
  5. package/dist/call-graph-VTG2CUOQ.js +2 -0
  6. package/dist/call-graph-evidence-BociKRpF.d.ts +19 -0
  7. package/dist/chunk-2BMSSRBH.js +2 -0
  8. package/dist/{chunk-TAYD3AE7.js → chunk-2GJSD5GY.js} +2 -2
  9. package/dist/{chunk-TUQIPUDS.js → chunk-2M2LSIMY.js} +3 -3
  10. package/dist/{chunk-GIQ6CSL4.js → chunk-2N6WBNDC.js} +2 -2
  11. package/dist/{chunk-JHH5SCZ3.js → chunk-2OOY75BW.js} +2 -2
  12. package/dist/{chunk-EELPBR7E.js → chunk-2USA3S3P.js} +2 -2
  13. package/dist/chunk-2VAHDDLM.js +133 -0
  14. package/dist/chunk-2XWIUW5Z.js +455 -0
  15. package/dist/{chunk-57N6LN2A.js → chunk-3AF4TUFK.js} +2 -2
  16. package/dist/chunk-3D4BOXW6.js +20 -0
  17. package/dist/{chunk-FFJQZG6J.js → chunk-3LO4FST5.js} +2 -2
  18. package/dist/{chunk-HXOU4XNH.js → chunk-3WTY4LP2.js} +2 -2
  19. package/dist/{chunk-DPWKKNKI.js → chunk-3Z5AMSK6.js} +2 -2
  20. package/dist/{chunk-F24G5NBE.js → chunk-44IETFOU.js} +2 -2
  21. package/dist/chunk-4FR6GQIT.js +2 -0
  22. package/dist/chunk-4KBTHJLP.js +2 -0
  23. package/dist/chunk-5BIKR67W.js +2 -0
  24. package/dist/{chunk-DJAO2OZJ.js → chunk-5PROPLHI.js} +2 -2
  25. package/dist/chunk-5V7EPTII.js +2 -0
  26. package/dist/{chunk-VZ7NXSHV.js → chunk-62LPZCBQ.js} +2 -2
  27. package/dist/{chunk-LXQUF2RP.js → chunk-64O2JHQA.js} +2 -2
  28. package/dist/chunk-6D4F5VWG.js +10 -0
  29. package/dist/{chunk-NEIQPFBI.js → chunk-6ERFBC3X.js} +2 -2
  30. package/dist/{chunk-4HE7MVWD.js → chunk-6ILKOOGH.js} +2 -2
  31. package/dist/chunk-6MFXCMZC.js +2 -0
  32. package/dist/chunk-6O7FACKB.js +2 -0
  33. package/dist/{chunk-R6M456QG.js → chunk-6TS3KOXR.js} +2 -2
  34. package/dist/{chunk-7U2YQSDE.js → chunk-76QOU4PK.js} +2 -2
  35. package/dist/{chunk-25GWKRUZ.js → chunk-7DUI77BN.js} +2 -2
  36. package/dist/chunk-7F45LJKI.js +2 -0
  37. package/dist/{chunk-DEAB5TGT.js → chunk-7F7T6DCR.js} +2 -2
  38. package/dist/chunk-7H6VHWWJ.js +2 -0
  39. package/dist/chunk-7HXT6YLU.js +5 -0
  40. package/dist/{chunk-KZYID5KV.js → chunk-7R4V5ES6.js} +4 -4
  41. package/dist/chunk-7RIRIADH.js +7 -0
  42. package/dist/chunk-7ZLWLOGT.js +2 -0
  43. package/dist/{chunk-WHADK6OS.js → chunk-A4WEAK35.js} +2 -2
  44. package/dist/chunk-AADQLOQ4.js +38 -0
  45. package/dist/{chunk-XFMVKFSF.js → chunk-AN76MGUE.js} +2 -2
  46. package/dist/chunk-ANLNLY66.js +2 -0
  47. package/dist/chunk-ATXPTSEI.js +81 -0
  48. package/dist/{chunk-EELG7D3Q.js → chunk-AX7IDVFT.js} +2 -2
  49. package/dist/chunk-B3PYOSCX.js +2 -0
  50. package/dist/chunk-B7MPDEAK.js +3 -0
  51. package/dist/chunk-BBB5FBX4.js +2 -0
  52. package/dist/{chunk-Y2VM4CJC.js → chunk-BHKK5RJY.js} +2 -2
  53. package/dist/chunk-BJWFVAA5.js +2 -0
  54. package/dist/chunk-BKVWUP7Y.js +2 -0
  55. package/dist/{chunk-7XA3OM44.js → chunk-BKZYTLGE.js} +2 -2
  56. package/dist/chunk-BL6DCHQP.js +2 -0
  57. package/dist/chunk-BOW7SSQH.js +43 -0
  58. package/dist/{chunk-KQHJEU6V.js → chunk-C4RHHCKL.js} +2 -2
  59. package/dist/chunk-C7C6AKAT.js +117 -0
  60. package/dist/chunk-CD6M6LS2.js +16 -0
  61. package/dist/chunk-CFE6PSG6.js +2 -0
  62. package/dist/{chunk-GPGRZJ3R.js → chunk-CFNIGQMT.js} +2 -2
  63. package/dist/{chunk-K3XFWJI2.js → chunk-CKBUBRYD.js} +2 -2
  64. package/dist/chunk-CZW5MZ5B.js +2 -0
  65. package/dist/chunk-DBBZ63ZX.js +2 -0
  66. package/dist/chunk-DBN7DMJB.js +18 -0
  67. package/dist/{chunk-CKRWA452.js → chunk-DUULLZHZ.js} +2 -2
  68. package/dist/{chunk-6HRZQLOI.js → chunk-DV5Y5NOS.js} +2 -2
  69. package/dist/chunk-DZOIKCTM.js +3 -0
  70. package/dist/chunk-E4PKTOL3.js +2 -0
  71. package/dist/{chunk-GVOMSPGL.js → chunk-E65ELFKU.js} +2 -2
  72. package/dist/{chunk-VXJJTQYE.js → chunk-E7QR35ST.js} +2 -2
  73. package/dist/{chunk-2RE5OCHZ.js → chunk-EFSXAINW.js} +2 -2
  74. package/dist/{chunk-GY7CCCEZ.js → chunk-EHVEIEQN.js} +2 -2
  75. package/dist/{chunk-BVFYEEBH.js → chunk-EHYDXE3Z.js} +2 -2
  76. package/dist/{chunk-HISEUIL2.js → chunk-EP63Y6LD.js} +2 -2
  77. package/dist/chunk-EPX6NQN6.js +4 -0
  78. package/dist/chunk-ETC674NS.js +5 -0
  79. package/dist/{chunk-5H5WTJSD.js → chunk-F5GSBHC6.js} +2 -2
  80. package/dist/chunk-FH3DGXC6.js +2 -0
  81. package/dist/{chunk-2XCGSDIT.js → chunk-FI7VGOR4.js} +2 -2
  82. package/dist/chunk-FJF6VO2P.js +2 -0
  83. package/dist/{chunk-FELGD32K.js → chunk-FLMTCX5R.js} +2 -2
  84. package/dist/chunk-FVFDOIM3.js +2 -0
  85. package/dist/{chunk-AQ2PORIO.js → chunk-G2HU5WRN.js} +2 -2
  86. package/dist/{chunk-7YQOCABQ.js → chunk-G4ALYS4J.js} +2 -2
  87. package/dist/{chunk-SWK4XPUS.js → chunk-G56I7K4W.js} +2 -2
  88. package/dist/{chunk-JFQBRL3J.js → chunk-GC4DG2V5.js} +2 -2
  89. package/dist/chunk-GG45PK4S.js +4 -0
  90. package/dist/{chunk-XN22RGSR.js → chunk-GHNPACNP.js} +2 -2
  91. package/dist/{chunk-XU75YQN4.js → chunk-GINH3YQU.js} +2 -2
  92. package/dist/chunk-GTZZVLKJ.js +2 -0
  93. package/dist/chunk-GXXW5ZHH.js +2 -0
  94. package/dist/{chunk-RNKPYYYE.js → chunk-HAXXKRTD.js} +2 -2
  95. package/dist/chunk-HEZWBAZY.js +2 -0
  96. package/dist/chunk-HMEWLMML.js +2 -0
  97. package/dist/{chunk-2KVU55CW.js → chunk-HOBOVYPO.js} +2 -2
  98. package/dist/{chunk-2YC7YNKT.js → chunk-HRFQ6GW5.js} +2 -2
  99. package/dist/{chunk-RYOYJMGF.js → chunk-HX4X7KG3.js} +2 -2
  100. package/dist/{chunk-AZS7YPCB.js → chunk-HYT2R7LX.js} +2 -2
  101. package/dist/chunk-IKQVBVQL.js +40 -0
  102. package/dist/chunk-J6GLBBRK.js +4 -0
  103. package/dist/{chunk-TNG2FYS5.js → chunk-J7A4PWFX.js} +2 -2
  104. package/dist/chunk-JCSAZ35V.js +2 -0
  105. package/dist/{chunk-EWWY2ZFL.js → chunk-JDU2IV3A.js} +2 -2
  106. package/dist/{chunk-SB25YMEQ.js → chunk-JFMEXGFE.js} +2 -2
  107. package/dist/chunk-JFMI5SGB.js +4 -0
  108. package/dist/chunk-JJP37RGX.js +57 -0
  109. package/dist/chunk-JZ2A7LDM.js +5 -0
  110. package/dist/chunk-KNLQGXVH.js +80 -0
  111. package/dist/chunk-KVQCECPR.js +2 -0
  112. package/dist/{chunk-F24QUEQP.js → chunk-KXXORBZ2.js} +2 -2
  113. package/dist/{chunk-IKVNEGTW.js → chunk-L5KYH6U3.js} +2 -2
  114. package/dist/chunk-L6XHYJPZ.js +21 -0
  115. package/dist/chunk-L7KTFEAV.js +43 -0
  116. package/dist/{chunk-UAQ4T73O.js → chunk-LDXHR5EL.js} +2 -2
  117. package/dist/chunk-LEECKFCJ.js +2 -0
  118. package/dist/{chunk-LO5JSW2C.js → chunk-MHGDSBFX.js} +2 -2
  119. package/dist/{chunk-JUN5DOAK.js → chunk-MLQVVDG3.js} +2 -2
  120. package/dist/chunk-MOKUWRHO.js +3 -0
  121. package/dist/{chunk-44T4DUAA.js → chunk-MPYAPMNE.js} +2 -2
  122. package/dist/{chunk-ARVO6TTW.js → chunk-MV6SPXCR.js} +2 -2
  123. package/dist/{chunk-NRBNAECH.js → chunk-MWN53KRN.js} +2 -2
  124. package/dist/{chunk-TH6IC56G.js → chunk-MZPXPSUJ.js} +2 -2
  125. package/dist/{chunk-FBCVASUG.js → chunk-N55KIE46.js} +2 -2
  126. package/dist/{chunk-VMWUV6WB.js → chunk-NB4D3BNM.js} +2 -2
  127. package/dist/{chunk-JAT6C3VX.js → chunk-NGKBOT6G.js} +2 -2
  128. package/dist/{chunk-Q6T2CAJL.js → chunk-NJGKXKQF.js} +2 -2
  129. package/dist/chunk-NJQISBL4.js +8 -0
  130. package/dist/chunk-NJT3ZEKY.js +16 -0
  131. package/dist/{chunk-KFVSJX25.js → chunk-NKMKZP6A.js} +2 -2
  132. package/dist/chunk-NODFZ6ED.js +2 -0
  133. package/dist/{chunk-ERCYGVAM.js → chunk-NSM5IEVW.js} +2 -2
  134. package/dist/{chunk-YAGYMBEX.js → chunk-NTGUVNR2.js} +2 -2
  135. package/dist/{chunk-N7FP5H5U.js → chunk-NU3KFF2O.js} +8 -8
  136. package/dist/chunk-NWLVNU66.js +557 -0
  137. package/dist/{chunk-Q55NF3ZG.js → chunk-NYKZMCRC.js} +2 -2
  138. package/dist/{chunk-I6UTXNHU.js → chunk-O6BUXZEH.js} +2 -2
  139. package/dist/chunk-ODPDP7A4.js +3 -0
  140. package/dist/{chunk-ZAZGGSM3.js → chunk-OHIV323X.js} +2 -2
  141. package/dist/chunk-OIAPEKMT.js +3 -0
  142. package/dist/chunk-OIOC5EHF.js +3 -0
  143. package/dist/{chunk-YIHNPKWD.js → chunk-ONPPQM4G.js} +2 -2
  144. package/dist/{chunk-RHHCLWQ6.js → chunk-OUHEZBYI.js} +2 -2
  145. package/dist/{chunk-MSR2QRUE.js → chunk-OVGYW7UD.js} +2 -2
  146. package/dist/{chunk-OPSAW5DT.js → chunk-OYKU4B3Y.js} +2 -2
  147. package/dist/{chunk-5YRQIE2B.js → chunk-POBJ6FR2.js} +2 -2
  148. package/dist/{chunk-ZGW4HLPD.js → chunk-PSZPMMWN.js} +2 -2
  149. package/dist/chunk-PXTRBKRK.js +3 -0
  150. package/dist/{chunk-U2N2KE7A.js → chunk-Q5JRIHT3.js} +2 -2
  151. package/dist/{chunk-GRX7JOXQ.js → chunk-Q7ATHARX.js} +2 -2
  152. package/dist/{chunk-5ZMBRQFC.js → chunk-Q7CSKIDM.js} +2 -2
  153. package/dist/{chunk-HG722PO7.js → chunk-QBQE7ZJ5.js} +2 -2
  154. package/dist/{chunk-Z2PZVKPR.js → chunk-QH22UIXP.js} +2 -2
  155. package/dist/chunk-QXCKQTKR.js +60 -0
  156. package/dist/chunk-RBAD4GJ2.js +13 -0
  157. package/dist/chunk-RMDPFPNW.js +2 -0
  158. package/dist/chunk-ROPJDEJZ.js +4 -0
  159. package/dist/{chunk-56NQAEPJ.js → chunk-RVZC6TJE.js} +2 -2
  160. package/dist/{chunk-XJX6LGHL.js → chunk-S4QZBKSR.js} +2 -2
  161. package/dist/chunk-SCPMZ73U.js +2 -0
  162. package/dist/{chunk-7IQXARSQ.js → chunk-SIAP5RGI.js} +2 -2
  163. package/dist/{chunk-4TQU4TX2.js → chunk-SIX4RFR3.js} +2 -2
  164. package/dist/{chunk-AYPDH2LU.js → chunk-SKKXTABJ.js} +2 -2
  165. package/dist/{chunk-ZYM4HOFA.js → chunk-SSRFUQBD.js} +2 -2
  166. package/dist/chunk-SYVJEEUJ.js +3 -0
  167. package/dist/chunk-T3CZAZSI.js +8 -0
  168. package/dist/chunk-T3I6NHBH.js +2 -0
  169. package/dist/{chunk-GDRJB3SB.js → chunk-T6DWDI5E.js} +2 -2
  170. package/dist/chunk-T6HRIROJ.js +7 -0
  171. package/dist/{chunk-OTSPRVNW.js → chunk-TAA7HXHE.js} +2 -2
  172. package/dist/{chunk-IJMD6BRI.js → chunk-TJ2JQYT3.js} +2 -2
  173. package/dist/chunk-TULNMD5T.js +368 -0
  174. package/dist/chunk-U2FPY5XA.js +3 -0
  175. package/dist/chunk-U3SXIMII.js +38 -0
  176. package/dist/{chunk-ENWQWA2R.js → chunk-U6KCHXJ4.js} +2 -2
  177. package/dist/chunk-UH3XSKS5.js +9 -0
  178. package/dist/{chunk-UDY7MIAW.js → chunk-UIFUZVCC.js} +2 -2
  179. package/dist/{chunk-BDGTPN27.js → chunk-UXKURIVI.js} +2 -2
  180. package/dist/{chunk-FGNCOQUX.js → chunk-V2RBODHL.js} +2 -2
  181. package/dist/chunk-VBKUWB6N.js +2 -0
  182. package/dist/{chunk-PIFTZEEM.js → chunk-VBV6ALJE.js} +2 -2
  183. package/dist/{chunk-2OXVP5U5.js → chunk-VDGFWCQV.js} +2 -2
  184. package/dist/chunk-VDSDOEWF.js +2 -0
  185. package/dist/{chunk-C76O5MDS.js → chunk-VZPWVCLN.js} +2 -2
  186. package/dist/chunk-WDSFQDPN.js +2 -0
  187. package/dist/{chunk-BTVKZGWT.js → chunk-WFA35BGR.js} +2 -2
  188. package/dist/{chunk-H7CG6LOE.js → chunk-WLMP3OCW.js} +2 -2
  189. package/dist/{chunk-WOOAY3PA.js → chunk-WSA52GOR.js} +2 -2
  190. package/dist/chunk-WYPL7GF7.js +2 -0
  191. package/dist/{chunk-RDULNRSJ.js → chunk-X3YVZAKZ.js} +2 -2
  192. package/dist/chunk-X6OGVFIT.js +2 -0
  193. package/dist/{chunk-ISWFRGJ6.js → chunk-XKXTR6ZI.js} +2 -2
  194. package/dist/chunk-Y5DFAW5W.js +4 -0
  195. package/dist/chunk-YSYPDRD5.js +3 -0
  196. package/dist/chunk-ZFVPWH62.js +5 -0
  197. package/dist/chunk-ZGIHTH27.js +2 -0
  198. package/dist/{chunk-QKT4UI2Y.js → chunk-ZGIQN2SX.js} +2 -2
  199. package/dist/chunk-ZHG4WAHR.js +12 -0
  200. package/dist/{chunk-CLG6DWVS.js → chunk-ZKB2XUEN.js} +2 -2
  201. package/dist/chunk-ZLMXIQLC.js +21 -0
  202. package/dist/chunk-ZMCQIHI4.js +2 -0
  203. package/dist/cli-main.js +2 -2
  204. package/dist/code-TAVIKWJI.js +2 -0
  205. package/dist/code-result-json-5FEFQCAQ.js +2 -0
  206. package/dist/command-descriptors-7BKH53Y3.js +343 -0
  207. package/dist/dataflow-GFBTVDH3.js +2 -0
  208. package/dist/dependence-slice-GWGQCODG.js +2 -0
  209. package/dist/deps-4QHVDPYA.js +2 -0
  210. package/dist/direct-navigation-4UBC6HNW.js +3 -0
  211. package/dist/entry-map-QCTF4RVY.js +2 -0
  212. package/dist/files-M2UBF5HJ.js +2 -0
  213. package/dist/frontend-profile-roles-D7eCum8P.d.ts +10 -0
  214. package/dist/{health-CPp2Jf1Z.d.ts → health-BI2a9WPy.d.ts} +60 -2
  215. package/dist/hierarchy-2UIHRLW4.js +2 -0
  216. package/dist/imports-WIE3YZOB.js +2 -0
  217. package/dist/index.d.ts +1 -1
  218. package/dist/index.js +1 -1
  219. package/dist/members-YKD636DA.js +2 -0
  220. package/dist/methods-VDF4IMYG.js +2 -0
  221. package/dist/output-continuation-command-4UMDOOLO.js +3 -0
  222. package/dist/output-pagination-2GME6OPY.js +19 -0
  223. package/dist/postinstall.js +1 -1
  224. package/dist/project-reindex-XEQTRCV5.js +3 -0
  225. package/dist/queries/affected.js +1 -1
  226. package/dist/queries/anchors.d.ts +1 -1
  227. package/dist/queries/anchors.js +1 -1
  228. package/dist/queries/architecture.js +1 -1
  229. package/dist/queries/bottlenecks.js +1 -1
  230. package/dist/queries/by-kind.js +1 -1
  231. package/dist/queries/call-graph.d.ts +2 -0
  232. package/dist/queries/call-graph.js +1 -1
  233. package/dist/queries/change-surface.js +1 -1
  234. package/dist/queries/cleanup-plan.js +1 -1
  235. package/dist/queries/co-change.d.ts +20 -2
  236. package/dist/queries/co-change.js +1 -1
  237. package/dist/queries/code.js +1 -1
  238. package/dist/queries/complexity-hotspots.js +1 -1
  239. package/dist/queries/complexity.js +1 -1
  240. package/dist/queries/context.js +1 -1
  241. package/dist/queries/convergence.js +1 -1
  242. package/dist/queries/coupling.js +1 -1
  243. package/dist/queries/cycles.js +1 -1
  244. package/dist/queries/dataflow.js +1 -1
  245. package/dist/queries/dead.d.ts +2 -0
  246. package/dist/queries/dead.js +1 -1
  247. package/dist/queries/decorative-checkers.js +1 -1
  248. package/dist/queries/deep-chains.js +1 -1
  249. package/dist/queries/dependence-slice.js +1 -1
  250. package/dist/queries/dependency-depth.js +1 -1
  251. package/dist/queries/deps.js +1 -1
  252. package/dist/queries/diff-impact.d.ts +9 -0
  253. package/dist/queries/diff-impact.js +1 -1
  254. package/dist/queries/doc-drift.js +1 -1
  255. package/dist/queries/drift.js +1 -1
  256. package/dist/queries/duplicate-bodies.d.ts +28 -1
  257. package/dist/queries/duplicate-bodies.js +1 -1
  258. package/dist/queries/entry-map.d.ts +1 -1
  259. package/dist/queries/entry-map.js +1 -1
  260. package/dist/queries/evidence.js +1 -1
  261. package/dist/queries/extract-candidates.d.ts +50 -23
  262. package/dist/queries/extract-candidates.js +1 -1
  263. package/dist/queries/fan.js +1 -1
  264. package/dist/queries/files.js +1 -1
  265. package/dist/queries/health.d.ts +1 -1
  266. package/dist/queries/health.js +1 -1
  267. package/dist/queries/hierarchy.js +1 -1
  268. package/dist/queries/hotspots.js +1 -1
  269. package/dist/queries/imports.js +1 -1
  270. package/dist/queries/incomplete-migration.js +1 -1
  271. package/dist/queries/index.d.ts +4 -3
  272. package/dist/queries/index.js +1 -1
  273. package/dist/queries/isolated.js +1 -1
  274. package/dist/queries/locality-candidates.js +1 -1
  275. package/dist/queries/members.js +1 -1
  276. package/dist/queries/methods.js +1 -1
  277. package/dist/queries/not-implemented.js +1 -1
  278. package/dist/queries/outline.js +1 -1
  279. package/dist/queries/passthrough-candidates.d.ts +9 -1
  280. package/dist/queries/passthrough-candidates.js +1 -1
  281. package/dist/queries/plan-context.js +1 -1
  282. package/dist/queries/react-component-duplicates.d.ts +19 -3
  283. package/dist/queries/react-component-duplicates.js +1 -1
  284. package/dist/queries/react-hook-candidates.d.ts +22 -3
  285. package/dist/queries/react-hook-candidates.js +1 -1
  286. package/dist/queries/react-large-component-pressure.d.ts +17 -3
  287. package/dist/queries/react-large-component-pressure.js +1 -1
  288. package/dist/queries/recent-duplicates.js +1 -1
  289. package/dist/queries/redundant-reexports.js +1 -1
  290. package/dist/queries/reference-neighborhood.js +1 -1
  291. package/dist/queries/reference-reachability.js +1 -1
  292. package/dist/queries/refs.js +1 -1
  293. package/dist/queries/self-audit.d.ts +7 -1
  294. package/dist/queries/self-audit.js +1 -1
  295. package/dist/queries/similar-chains.js +1 -1
  296. package/dist/queries/similar-files.js +1 -1
  297. package/dist/queries/similar-signatures.js +1 -1
  298. package/dist/queries/similar.js +1 -1
  299. package/dist/queries/slice.js +1 -1
  300. package/dist/queries/source-inspection.js +1 -1
  301. package/dist/queries/source-search.js +1 -1
  302. package/dist/queries/stale-abstractions.js +1 -1
  303. package/dist/queries/surface.js +1 -1
  304. package/dist/queries/symbols.js +1 -1
  305. package/dist/queries/system-map.d.ts +1 -1
  306. package/dist/queries/system-map.js +1 -1
  307. package/dist/queries/system.js +1 -1
  308. package/dist/queries/test-quality.js +1 -1
  309. package/dist/queries/trace.js +1 -1
  310. package/dist/queries/twin-ab.js +1 -1
  311. package/dist/queries/twin-drift.d.ts +22 -6
  312. package/dist/queries/twin-drift.js +1 -1
  313. package/dist/queries/unused-imports.js +1 -1
  314. package/dist/queries/unused-params.js +1 -1
  315. package/dist/queries/value-flow.js +1 -1
  316. package/dist/queries/vue-component-duplicates.js +1 -1
  317. package/dist/queries/vue-composable-candidates.js +1 -1
  318. package/dist/queries/vue-large-view-pressure.js +1 -1
  319. package/dist/queries/wrapper-candidates.d.ts +16 -1
  320. package/dist/queries/wrapper-candidates.js +1 -1
  321. package/dist/query-service-fastpath.js +5 -5
  322. package/dist/query-service-server.js +3 -3
  323. package/dist/refs-JNK5CLM7.js +2 -0
  324. package/dist/refs-pagination-6BLRYGMV.js +2 -0
  325. package/dist/reindex-worker.js +25 -25
  326. package/dist/reindex.d.ts +3 -2
  327. package/dist/reindex.js +35 -35
  328. package/dist/runtime.d.ts +34 -2
  329. package/dist/runtime.js +4 -4
  330. package/dist/rust-semantic-session-server.js +1 -1
  331. package/dist/rust-semantic-session-worker.js +1 -1
  332. package/dist/rust-semantic-worker.js +1 -1
  333. package/dist/{scip-cli-H-n59izO.d.ts → scip-cli-DOerTq-R.d.ts} +42 -4
  334. package/dist/slice-PHPVNCWX.js +2 -0
  335. package/dist/surface-MQX5MPIV.js +2 -0
  336. package/dist/symbol-resolution-DBLVXLBC.js +2 -0
  337. package/dist/system-JOPKV4OG.js +2 -0
  338. package/dist/trace-I2P2YFH4.js +2 -0
  339. package/dist/typescript-mailbox-worker.js +1 -1
  340. package/dist/value-flow-JJVMF7NP.js +2 -0
  341. package/dist/watch-server.js +3 -3
  342. package/docs/COMMAND_REFERENCE.md +2 -2
  343. package/docs/DETECTOR_GUIDE.md +51 -12
  344. package/docs/accuracy-audit-checklist.md +36 -13
  345. package/docs/locality-analyzer-design.md +9 -9
  346. package/package.json +2 -2
  347. package/skills/conductor/SKILL.md +110 -0
  348. package/skills/conductor/agents/openai.yaml +4 -0
  349. package/skills/principal-maintainability-review/SKILL.md +273 -0
  350. package/skills/principal-maintainability-review/agents/openai.yaml +4 -0
  351. package/skills/scip-calibrate/SKILL.md +102 -0
  352. package/skills/scip-calibrate/agents/openai.yaml +4 -0
  353. package/skills/scip-claim-audit/SKILL.md +113 -0
  354. package/skills/scip-claim-audit/agents/openai.yaml +4 -0
  355. package/skills/scip-probe-reachability/SKILL.md +93 -0
  356. package/skills/scip-probe-reachability/agents/openai.yaml +4 -0
  357. package/skills/scip-root-cause/SKILL.md +160 -0
  358. package/skills/scip-root-cause/agents/openai.yaml +4 -0
  359. package/skills/scip-system-compression/SKILL.md +252 -0
  360. package/skills/scip-system-compression/agents/openai.yaml +4 -0
  361. package/skills/scip-system-compression/references/compression-atlas.md +116 -0
  362. package/skills/scip-system-compression/references/compression-patterns.md +87 -0
  363. package/skills/scip-twin-drift/SKILL.md +109 -0
  364. package/skills/scip-twin-drift/agents/openai.yaml +4 -0
  365. package/dist/by-kind-4IYG2SKW.js +0 -2
  366. package/dist/call-graph-WQNXMNNN.js +0 -2
  367. package/dist/call-graph-evidence-lZa2dwQA.d.ts +0 -11
  368. package/dist/chunk-2BTJALUS.js +0 -454
  369. package/dist/chunk-3QXC54FQ.js +0 -3
  370. package/dist/chunk-3TJY6M3B.js +0 -7
  371. package/dist/chunk-42W3LFUK.js +0 -13
  372. package/dist/chunk-4GAQ6FI4.js +0 -43
  373. package/dist/chunk-6NC3YSPY.js +0 -38
  374. package/dist/chunk-6VEFRPTD.js +0 -5
  375. package/dist/chunk-7C26EKLZ.js +0 -4
  376. package/dist/chunk-7JYHQAH2.js +0 -22
  377. package/dist/chunk-7KSO2OAP.js +0 -2
  378. package/dist/chunk-7XZGZBSQ.js +0 -2
  379. package/dist/chunk-A77SCPW2.js +0 -3
  380. package/dist/chunk-AK3PYTIK.js +0 -5
  381. package/dist/chunk-AMIMMNA4.js +0 -11
  382. package/dist/chunk-AUY5BL74.js +0 -2
  383. package/dist/chunk-BDHFVH2M.js +0 -18
  384. package/dist/chunk-BECZLYNU.js +0 -8
  385. package/dist/chunk-BUTEIZKP.js +0 -10
  386. package/dist/chunk-BWVQP3LB.js +0 -38
  387. package/dist/chunk-BYDAFMSR.js +0 -57
  388. package/dist/chunk-BZYSGZRK.js +0 -2
  389. package/dist/chunk-C7IJMOFP.js +0 -134
  390. package/dist/chunk-CBBHFNLX.js +0 -2
  391. package/dist/chunk-D2MVJSP4.js +0 -21
  392. package/dist/chunk-D35XIZGN.js +0 -2
  393. package/dist/chunk-DKM723YF.js +0 -79
  394. package/dist/chunk-DRENNWRG.js +0 -2
  395. package/dist/chunk-E44IVWIJ.js +0 -367
  396. package/dist/chunk-EDMB6SSO.js +0 -7
  397. package/dist/chunk-EETGXQY7.js +0 -3
  398. package/dist/chunk-FKGQOTKD.js +0 -2
  399. package/dist/chunk-GH5YSGZL.js +0 -5
  400. package/dist/chunk-GQIDEID3.js +0 -2
  401. package/dist/chunk-HCVJR2V4.js +0 -3
  402. package/dist/chunk-IMKZEXZG.js +0 -2
  403. package/dist/chunk-ISIQLPJ2.js +0 -61
  404. package/dist/chunk-IXESDH3J.js +0 -2
  405. package/dist/chunk-JJ62MTQH.js +0 -40
  406. package/dist/chunk-JT6XX7QY.js +0 -8
  407. package/dist/chunk-KFOYCQAJ.js +0 -9
  408. package/dist/chunk-LRI5OMPE.js +0 -2
  409. package/dist/chunk-MHIEP7EG.js +0 -4
  410. package/dist/chunk-NK3JMP22.js +0 -2
  411. package/dist/chunk-NVSZNESQ.js +0 -2
  412. package/dist/chunk-OJNK5ALA.js +0 -2
  413. package/dist/chunk-OXYAWIEA.js +0 -2
  414. package/dist/chunk-OZETODHH.js +0 -2
  415. package/dist/chunk-PBUH2P5S.js +0 -3
  416. package/dist/chunk-PLJUQFQN.js +0 -2
  417. package/dist/chunk-PLYUVM4F.js +0 -2
  418. package/dist/chunk-PXXYQK55.js +0 -2
  419. package/dist/chunk-Q5TA4OY4.js +0 -20
  420. package/dist/chunk-Q7GBK5T7.js +0 -81
  421. package/dist/chunk-QLBSG7U5.js +0 -3
  422. package/dist/chunk-QWKHW6VZ.js +0 -2
  423. package/dist/chunk-RPL3ARU7.js +0 -16
  424. package/dist/chunk-SVHTMVA4.js +0 -4
  425. package/dist/chunk-T6QD2ZQB.js +0 -43
  426. package/dist/chunk-TD7VKJ2Y.js +0 -117
  427. package/dist/chunk-TKDNDQA7.js +0 -3
  428. package/dist/chunk-TQZV7KV4.js +0 -2
  429. package/dist/chunk-TUSPIVZ3.js +0 -4
  430. package/dist/chunk-URSGGIZX.js +0 -2
  431. package/dist/chunk-UT7TADJX.js +0 -2
  432. package/dist/chunk-V4NG5OMS.js +0 -554
  433. package/dist/chunk-VTCIYFEK.js +0 -2
  434. package/dist/chunk-VU6LIWHT.js +0 -2
  435. package/dist/chunk-VUSKPCUB.js +0 -2
  436. package/dist/chunk-WN3TCGJ4.js +0 -2
  437. package/dist/chunk-WSLEJSFR.js +0 -2
  438. package/dist/chunk-WYZIHUPZ.js +0 -16
  439. package/dist/chunk-XE33FV5W.js +0 -2
  440. package/dist/chunk-XGGBK66W.js +0 -4
  441. package/dist/chunk-XSWYJCAK.js +0 -2
  442. package/dist/chunk-Y334QQU5.js +0 -3
  443. package/dist/chunk-Z2AWCTN6.js +0 -2
  444. package/dist/chunk-ZOXKSQQB.js +0 -2
  445. package/dist/chunk-ZPASRBLF.js +0 -2
  446. package/dist/chunk-ZZ3Z7D56.js +0 -2
  447. package/dist/code-EQJFDT6I.js +0 -2
  448. package/dist/code-result-json-7UWIWBOO.js +0 -2
  449. package/dist/command-descriptors-ORNTVNYV.js +0 -342
  450. package/dist/dataflow-6VL54GX5.js +0 -2
  451. package/dist/dependence-slice-DT2NUHD2.js +0 -2
  452. package/dist/deps-DB7H5IKC.js +0 -2
  453. package/dist/direct-navigation-O3LUAYWQ.js +0 -3
  454. package/dist/entry-map-6K62RV3D.js +0 -2
  455. package/dist/files-MSLD7MO6.js +0 -2
  456. package/dist/hierarchy-IVBXAKFA.js +0 -2
  457. package/dist/imports-FRAVZ3Y2.js +0 -2
  458. package/dist/members-KJOJDYGO.js +0 -2
  459. package/dist/methods-2AYABBT3.js +0 -2
  460. package/dist/output-continuation-command-JHMPH6NC.js +0 -3
  461. package/dist/output-pagination-3OFL2MJV.js +0 -19
  462. package/dist/project-reindex-HYO4WD7Z.js +0 -3
  463. package/dist/refs-ARMA6XUJ.js +0 -2
  464. package/dist/refs-pagination-VUGIWN6U.js +0 -2
  465. package/dist/slice-YOB5YFAM.js +0 -2
  466. package/dist/surface-VY5EFWTW.js +0 -2
  467. package/dist/symbol-resolution-DGQN4XIV.js +0 -2
  468. package/dist/system-2KQ3QD2P.js +0 -2
  469. package/dist/trace-HTIPTXAE.js +0 -2
  470. package/dist/value-flow-5FV3VQI7.js +0 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,506 @@ All notable changes to `scip-query` are documented here. This file starts at 0.1
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.24.0]
8
+
9
+ ### Oversized compiler projects are served from file closures
10
+
11
+ - A tsconfig that lists more files than the semantic worker's heap can hold
12
+ (by the same estimate that sizes the heap: 2,560 MB plus 1.25 MB per
13
+ file) is no longer loaded whole and no longer declined. Its compiler
14
+ program starts empty and grows by the import closure of each requested
15
+ file, so callees, callee coverage, signatures, and import usage stay
16
+ exact per file; references and hierarchies, which need every file, are
17
+ declined per request and the cheap paths answer them. The service status
18
+ and provider availability report `projectScope: file-closure`.
19
+
20
+ ### Second-repository review: layering, facades, stubs, and configuration entry points
21
+
22
+ - A member that calls another member of its twin cluster leaves the cluster
23
+ before pairing, so a facade method no longer pairs with its near-name
24
+ siblings either; the delegation check follows one re-export hop, so a
25
+ caller importing through a barrel is recognized. A thin forwarder whose
26
+ single call has a different name than its own (a web client calling
27
+ `apiClient.getData`, a vendor adapter) is a stub over its peer's concept,
28
+ not a twin of it. Overrides of one abstract member and key-qualified
29
+ lookup members (`getBySlug`, `findByEmail`) on unrelated classes are
30
+ convention, not drift.
31
+ - A class whose methods forward to members of several collaborators is a
32
+ composed-service facade even when no single collaborator receives three
33
+ forwards. A body of the form `return handler(async () => {...})(req, res,
34
+ next)` is a curried handler, not a literal passthrough.
35
+ - A wrapper forwarding through a module-private variable
36
+ (`return loadedLanguages.has(lang)`) is a boundary signal: inlining it
37
+ would export the state it hides.
38
+ - Rendered extraction regions grow to element boundaries: a region cut
39
+ inside a JSX element now reaches its closing tag or, when it only
40
+ straddles two elements, fails the size rules instead of reporting a
41
+ fragment. Growth stops at the function's own `return`, and the candidate's
42
+ region is the largest extractable one rather than the largest one, so a
43
+ smaller signal-tier region beside a region that holds the function's
44
+ return is the advice.
45
+ - Concise arrow bodies are read past braces in parameter types and type
46
+ arguments (`(x) => client.patchData<{ ok: true }>(x)`), so arrow-function
47
+ wrappers, twins, and duplicate bodies see the real body. A file of
48
+ wrappers that all forward through one receiver (a copy catalog, a client
49
+ object) is a facade over it and its wrappers are signal tier.
50
+ - Co-change findings carry an action tier. Pairs whose shared commits were
51
+ only broad sweeps, stale pairs with at most two focused co-changes, and
52
+ configuration, schema, documentation, or generated partners are signal
53
+ tier and no longer count toward the hidden-coupling score.
54
+ - Source files a root configuration names by path (`next.config.js`
55
+ `images.loaderFile`, a `package.json` script running `src/scripts/x.ts`)
56
+ are entry surfaces: their exports are invoked by the framework or tool,
57
+ not dead.
58
+ - `duplicate-bodies --json` no longer prints policy-exclusion lines into
59
+ the JSON document or export file; they remain in human output.
60
+ - Label sets for dead code, similar pairs, stale abstractions, complexity
61
+ hotspots, large components, and co-change on Launchpoint, and for twin
62
+ drift, wrappers, passthroughs, and extraction on Vega, live under
63
+ `docs/validation/labels/`.
64
+
65
+ ### Human output redirected to a file is complete
66
+
67
+ - When stdout is a regular file (`scip-query health --full > report.txt`),
68
+ human output is written in full. Page cursors remain for terminals and
69
+ pipes, where the reader is an agent whose context the page budget
70
+ protects from a client that truncates long tool results.
71
+
72
+ ### Call sites the grammar wraps are no longer dropped
73
+
74
+ - `await client.getData<T>(...)` parses with the `await` bound to the member
75
+ expression, and `(a as B).run()`, `a!.run()`, and `(fn)()` wrap the target
76
+ the same way. The call-site extractor now reads through those wrappers,
77
+ so the occurrence and AST callee tiers see the call; source facts carry
78
+ a new payload version. Found by the Vega self-audit's one oracle-only edge.
79
+
80
+ ### Evidence products keyed by build
81
+
82
+ - File and project evidence rows are keyed by the running build's digest
83
+ as well as their payload version, and rows another build wrote are pruned
84
+ when the cache opens. A development build with changed analysis logic
85
+ never reads a previous build's rows; compiler-derived callee and reference
86
+ rows keep their schema-only keys.
87
+
88
+ ### Dependency cycles classified by component content
89
+
90
+ - A cyclic component is classified by what remains after its barrels,
91
+ tests, and entry files are removed: if the product files still cycle,
92
+ that cycle is the finding and its witness is reported; if not, the
93
+ component only cycles through module bookkeeping. Previously the
94
+ verdict followed one witness path, which could run through a barrel that
95
+ a genuine product cycle sat beside.
96
+
97
+ ### Wrapper, passthrough, and twin-drift findings reviewed against source
98
+
99
+ - A wrapper is `forwarding`-shaped only when its body is exactly one call
100
+ with plain-value arguments; a preparatory statement, a callback, a nested
101
+ call, or a literal the body builds now makes it a helper (signal tier, not
102
+ counted by health). The two-statement allowance had classified computed
103
+ keys, reductions, and two-step operations as inline advice.
104
+ - Boundary-term evidence for wrappers and passthroughs reads owner-qualified
105
+ leaf names (`BaseLogger log`) instead of path-qualified short names, so a
106
+ directory both sides live in (`lib/auth/`, `social-providers/`) no longer
107
+ reads as a boundary while an enclosing class still counts, and a term
108
+ present on both sides (`toBaseRate` forwarding to `parseBaseRate`) is
109
+ shared vocabulary rather than a reason to demote the finding.
110
+ - A twin-drift member that calls its same-name counterpart (an operations
111
+ function over its use-case, a component over the function it renders)
112
+ is a layer, not a parallel implementation; the delegation exclusion no
113
+ longer requires the caller to be a thin forwarder, and an aliased import
114
+ of the counterpart counts only under its alias.
115
+ - Reviewed label sets for the three detectors on `launchpoint-backend`
116
+ live under `docs/validation/labels/launchpoint-backend/`; the label
117
+ scorer understands the `direct | signal` tier vocabulary.
118
+
119
+ ### The semantic worker loads one compiler project at a time
120
+
121
+ - Compiler projects are built lazily: a tsconfig's project exists only once a
122
+ request needs one of its files, files are routed to the tsconfig that
123
+ lists them, and a project that was never asked for costs nothing. The
124
+ semantic worker now carries the same soft-memory retirement mark as the
125
+ index worker, restarts once after a failure, and a batch whose worker died
126
+ of memory is retried as file halves down to single files before the
127
+ service counts as failed. Worker heaps are sized to the indexed document
128
+ count, capped by physical memory or the container's cgroup limit,
129
+ whichever is lower.
130
+
131
+ ### Self-audit distinguishes what the compiler cannot see
132
+
133
+ - A cheap-path answer in a file outside every tsconfig (a test excluded from
134
+ the build config) is reported as outside oracle coverage rather than as a
135
+ false positive, and precision is measured over the rest.
136
+
137
+ ### Health report cache keyed by build
138
+
139
+ - The cache key carries a digest of the running entry bundle, so two builds
140
+ under one version string never serve each other's reports.
141
+
142
+ ### Compiler callees resolve imported functions, and self-audit measures callee precision
143
+
144
+ - The compiler callee path bound an imported call to its import alias and then
145
+ looked for a definition at the import statement, so every cross-file call to
146
+ an imported function was dropped from the semantic callee product and from
147
+ the self-audit oracle. Aliases now resolve to their declaration; cached
148
+ compiler callees carry a new schema so they recompute.
149
+ - The compiler now also reports, per definition, how many call and render
150
+ sites it resolved inside the repository, resolved to a library or ambient
151
+ symbol, or could not bind at all. `self-audit` treats a definition with no
152
+ unbound site as a complete oracle and measures callee and render precision
153
+ over those symbols; a cheap-only answer next to a partial oracle stays
154
+ unverified. Scores report `completeOracleSymbols`.
155
+
156
+ ### Whole-project semantic passes stay inside memory
157
+
158
+ - `extract-candidates --full` (and every other full-mode semantic pass) sent
159
+ the whole candidate set to the semantic service in one request; on a large
160
+ repository the service's worker died at its heap limit and the command then
161
+ loaded the compiler in-process and died at its own. Bulk callee requests are
162
+ now sent in bounded per-file batches, a service failure on a large index
163
+ disables semantic enrichment for the run instead of loading the compiler
164
+ in-process (with a stderr notice), a service that merely lacks a request
165
+ kind keeps serving the others, and the service sizes its compiler worker
166
+ heaps from the indexed document count with a machine-memory ceiling.
167
+ Decoded occurrence data is held in a bounded cache instead of per run.
168
+
169
+ ### Extraction candidates require a real block and stay out of control flow
170
+
171
+ - A region must span eight lines, and a region holding a `return` statement
172
+ of the function itself is support tier: it is the function's control flow,
173
+ not a helper. Exclusive call spans inside one multi-line statement (a
174
+ fluent query chain, a large literal) now form one region, since a region
175
+ never cuts through a statement; rendered subtrees keep the proximity rule
176
+ because a subtree is a legitimate cut inside a `return`. A reviewed
177
+ Launchpoint label set
178
+ (`docs/validation/labels/launchpoint-backend/extract-candidates.json`)
179
+ scores against the current output.
180
+
181
+ ### Carried publications keep the deferred-companion marker
182
+
183
+ - A publication that carried every language shard rewrote the metadata
184
+ without the `scipCompanion` marker while its publication record still said
185
+ `deferred`; the marker is now carried from the accepted generation.
186
+
187
+ ### Health reports name the input they were computed from
188
+
189
+ - `health` now records provenance: the immutable index generation identity
190
+ (with its publication time and mode when the generation store has them),
191
+ the git HEAD, branch, and uncommitted-path count, and the computation time.
192
+ The text report prints it as an `Input:` line under the file and symbol
193
+ counts; `health --json` carries it as `provenance`. Two reports whose
194
+ provenance differs were computed from different inputs, which the file and
195
+ symbol counts alone could not show.
196
+
197
+ ### Incremental TypeScript refresh survives a reused-shard publication
198
+
199
+ - A publication that reused the TypeScript shard (only non-TypeScript inputs
200
+ changed) advances the project snapshot without writing a new overlay, so
201
+ the next TypeScript edit looked for an overlay named by the new snapshot,
202
+ found nothing, and every refresh failed with "deferred TypeScript SCIP
203
+ base has no matching overlay generation" until an explicit
204
+ `--allow-expensive-rebuild`. The incremental planner now bases the next
205
+ overlay on the overlay generation the accepted publication carries, which
206
+ is the overlay that exists.
207
+
208
+ ### Extraction candidates are exclusive regions, not line coincidences
209
+
210
+ - `extract-candidates` now reports contiguous line ranges whose callees are
211
+ used nowhere else in the function, grown over the enclosing block's opener
212
+ and closer, and only when the range is at least five lines, at most three
213
+ quarters of the body, and leaves the rest of the function with callees of
214
+ its own. Callees used across the body (loggers, translators) are reported
215
+ as ambient instead of gluing every region together. When the indexer
216
+ emitted local-symbol occurrences, each region lists the bindings an
217
+ extraction would take as parameters and hand back. The previous
218
+ implementation keyed callee co-occurrence on a source line, so its
219
+ "clusters" were names sharing one line and its isolation score was always
220
+ 100%; `ExtractCandidate.clusters` is replaced by `regions` and the kinds
221
+ are now `call-region` and `render-region`.
222
+
223
+ ### Callee edges start from the indexer's own bindings
224
+
225
+ - The cheap callee path now reads the compiler-resolved occurrence the index
226
+ already stores for each call line before falling back to leaf-name
227
+ resolution. Member calls through typed receivers (`this.service.method()`)
228
+ resolve exactly, and a call the indexer bound to a library or ambient symbol
229
+ is no longer guessed onto a same-named repository function. Occurrences are
230
+ decoded per file from the chunk blobs, so no query loads the whole SCIP
231
+ artifact. `CalleeRow.source` gains `scip-occurrence`, `graph` prints it as
232
+ `O`, and `self-audit` reports cheap rows by evidence source. On a NestJS +
233
+ Next.js monorepo, callee recall against the compiler moved from 0.29 to 0.98.
234
+
235
+ ### Eight judgment skills restored to the bundled suite
236
+
237
+ - `install-skills` and `setup` now also link `principal-maintainability-review`,
238
+ `scip-system-compression`, `scip-root-cause`, `scip-claim-audit`,
239
+ `scip-probe-reachability`, `scip-twin-drift`, `scip-calibrate`, and
240
+ `conductor` into Claude Code, Codex, and the shared agent root. Each is the
241
+ last full version from this repository's history, ported to the current
242
+ command surface: retired `diff-gate`, `cleanup-apply`, `plan-context`,
243
+ `effectiveness`, and `symbols` references are replaced with `diff-impact`,
244
+ `architecture`, `outline`, and the standalone detectors, and every
245
+ `metadata.commands` template validates against the live descriptors.
246
+ - The repo-local `.agents/skills/principal-maintainability-review` and
247
+ `.agents/skills/scip-system-compression` stubs are removed; the bundled
248
+ skills supersede them.
249
+
250
+ ## [0.23.0]
251
+
252
+ ### Fresh installs work without Go or the scip binary
253
+
254
+ - The external `scip` binary is no longer required. SCIP is converted to
255
+ SQLite in-process (since 0.22.0), but `reindex` and `setup` still refused to
256
+ run without `scip` on PATH; a fresh machine therefore could not index at all
257
+ unless Go was installed. The requirement now applies only when
258
+ `SCIP_QUERY_SQLITE_CONVERTER=scip-cli` selects the legacy converter, and
259
+ `check-deps` and the setup report say so instead of asking for consent.
260
+ - When the legacy converter is selected, `--install-missing` installs the
261
+ reviewed `scip` release without Go: the pinned archive is downloaded into
262
+ the scip-query cache, verified against its published SHA-256, and extracted;
263
+ the cached reviewed binary then outranks any `scip` on PATH. A PATH binary
264
+ reporting a different version than the pin is reported as unverified, and
265
+ `--install-missing` replaces it with the reviewed release.
266
+ - Tree-sitter grammars and better-sqlite3 ship prebuilt binaries, so npm 11's
267
+ install-script policy skipping their build scripts (which it reports as a
268
+ warning on `npm install -g`) does not affect parsing.
269
+
270
+ ### The watcher stops fighting manual refreshes
271
+
272
+ - The automatic resource budget is charged only to refreshes the watcher
273
+ started itself (`watch-*` triggers). `setup` and manual `reindex` runs no
274
+ longer pause the watcher: on a large repository the first setup build alone
275
+ exceeded the 1 GiB write allowance and left the watcher "budget-paused,
276
+ changes pending" for the whole window.
277
+ - When a generation the watcher did not produce is published while work is
278
+ pending (dirty, cooldown, budget pause, or a debounce wait) and the index
279
+ matches the working tree, the watcher drops the pending refresh, reports
280
+ it as suppressed, and returns to idle, instead of holding "changes pending"
281
+ until the budget window or cooldown expired and then re-running a refresh
282
+ that would only be suppressed as fresh. The check runs on the Git poll
283
+ interval and does not depend on a Git checkout.
284
+
285
+ ### The full-health prewarm runs in parallel shards and parses each file once
286
+
287
+ - The prewarm's three per-file warm sweeps (definitions, imports and
288
+ re-exports, source facts) parsed the repository twice; they are now one
289
+ sweep that computes every product while the file's syntax tree is still
290
+ cached, one parse per file.
291
+ - On a host that can hold several compiler programs, the prewarm now runs as
292
+ parallel shard workers, each warming a deterministic slice of the indexed
293
+ files (definitions, reference fragments, callees) with a 12 GB heap, and
294
+ the parent writes the completion marker once every shard reports its slice
295
+ warm. The plan takes the memory left after an 8 GB host reserve divided by
296
+ 14 GB per worker, capped by cpu count minus one and by four
297
+ (`SCIP_QUERY_HEALTH_PREWARM_SHARDS` overrides it); a machine that cannot
298
+ host two workers runs the single worker as before.
299
+
300
+ ### The fragment warm pass stops recomputing hierarchy targets per batch
301
+
302
+ - Profiled on a 7,800-file repository, the prewarm's reference scans spent
303
+ 258 s across 61 batches, of which 63 s was the per-file scan; the rest was
304
+ building the class-hierarchy target map, about 20 s per compiler session,
305
+ and the pass discarded its session under heap pressure thirteen times.
306
+ The map depends only on the sources and the definition set, so it is now
307
+ memoized per session and persisted per project generation as the
308
+ `typescript-hierarchy-targets` product; a rebuilt session reads it back.
309
+ A new profile span, `typescript.references-map.hierarchy-targets`, records
310
+ each computation and whether it was a hit.
311
+ - The prewarm's default isolated heap may now reach 16 GB on machines with
312
+ at least 32 GB of memory (it stays at half of physical memory below that),
313
+ so a large compiler program crosses the pressure threshold, and rebuilds
314
+ its session, far less often.
315
+
316
+ ### Immutable SCIP shards are hard-linked where reflinks are unavailable
317
+
318
+ - Every reindex staged its SCIP shards into the cache and back with byte
319
+ copies on filesystems without copy-on-write (ext4: ~325 MB per rebuild).
320
+ Cached shards and published index files are never opened for writing, so
321
+ they are now shared by hard link when a reflink is refused; a SQLite
322
+ candidate, which is patched in place, is still a real copy. Every clone
323
+ now removes its target first so no method ever writes through an inode
324
+ another generation still reads. Hard links count as shared bytes in the
325
+ reindex write telemetry, like reflinks.
326
+
327
+ ### Complexity reads branch counts from source facts
328
+
329
+ - The source-facts walk now counts branch points per callable (a branch
330
+ inside a nested function counts toward each enclosing callable, as the
331
+ complexity query's own AST pass defined it), and the facts payload version
332
+ is 7. The complexity phase uses that count for every definition whose
333
+ range matches a callable and parses only the rest, so on a warm cache it
334
+ parses nothing; it parsed 4,287 files before.
335
+ - Caller-file evidence is memoized per symbol within a process. The two
336
+ repository scans behind consumer provenance (indexed callsites and
337
+ source-fallback attribution) answer per symbol independently of which
338
+ other symbols were asked for, so a later call scans only for symbols it
339
+ has not seen; the wrapper phase asked three times.
340
+
341
+ ### Health phases stop rebuilding the compiler program
342
+
343
+ - Measured per child on a 7,800-file repository (cold cache, no watch
344
+ service): three phase children each spent about 17.5 seconds building the
345
+ TypeScript program to compute 118, 8, and 2 callee cache misses, and the
346
+ complexity phase held 1,975 parsed trees at exit because its per-definition
347
+ source-facts reads parsed every cold file synchronously.
348
+ - The prewarm now persists every file's source-facts product in collecting,
349
+ yielding batches, and its callee pass covers the production-callable
350
+ definition sets the phases use (which add interface and class member
351
+ fallback rows the catalog does not carry), so phase children read the
352
+ cache and parse nothing.
353
+
354
+ ### Setup reports what is actually missing
355
+
356
+ - A cold start on a fresh home directory (npm 11, no caches, a fresh clone)
357
+ installed in 7 seconds, indexed 7,780 TypeScript files in 123 seconds, ran
358
+ the full health audit, and answered search, evidence, and diff-impact in
359
+ about 2 seconds each. Its verdict was still `partial`, because setup
360
+ reported two consent skips for things that were not missing and counted
361
+ demand-started watching and an absent Rust toolchain as unavailable.
362
+ - Without consent, the AST parser step now probes which selected-language
363
+ parsers load and reports "nothing to install" when all do; the consent skip
364
+ remains only for a parser that does not load, naming it. Indexer
365
+ remediation reports "nothing to install" when every detected language has a
366
+ runnable indexer. Demand-started watching (the default) is a configured
367
+ state, and its smoke row and the absent-Rust row are optional, so a
368
+ TypeScript repository with everything present reaches `ready`.
369
+ - A wait on a path-change wake also compares each watched path's
370
+ modification time with the last one it settled on, so a change that
371
+ already happened resolves immediately even when the filesystem event
372
+ arrives late.
373
+
374
+ ### Children keep the parent's NODE_OPTIONS
375
+
376
+ - Isolated analysis children (the health prewarm, health phases, diff-impact
377
+ batches) replaced `NODE_OPTIONS` wholesale with their heap bound, dropping
378
+ any `--require` preload, inspector flag, or user-set option the parent
379
+ carried. They now replace only the heap bound, the way reindex already did;
380
+ the helper is shared.
381
+ - The reindex runtime-boundary sweep collects before each of its event-loop
382
+ turns, so the trees it parses are freed as it goes.
383
+ - Callee cache scans now record a sample of miss identities in the profile,
384
+ so a profile can say which definitions a warm pass did not cover.
385
+ - The CLI-spawning contract suites allow 30 seconds per test; they spawn the
386
+ built CLI and timed out under load at the 5-second default.
387
+
388
+ ### Whole-project parses no longer hold every syntax tree at once
389
+
390
+ - A parsed Tree-sitter tree is native memory behind a wrapper of a few bytes.
391
+ V8 never feels its weight, so it rarely collects the wrapper, and the
392
+ finalizer that frees the tree runs only after a collection has found the
393
+ wrapper dead and the event loop has turned. A whole-project parse therefore
394
+ held every tree it made: on a 7,800-file repository the full-health prewarm
395
+ reached 14,000 trees and ~8.5 GB outside the V8 heap while `heapUsed` sat at
396
+ 160 MB. Measured on the same box, forcing a full collection at each batch
397
+ boundary and yielding once keeps a 3,000-file sweep flat at 139 MB across
398
+ three passes; a minor collection frees almost nothing.
399
+ - The prewarm now persists every file's import and re-export products in
400
+ batches that end with a full collection and one event-loop turn, before the
401
+ semantic provider builds, so the provider's synchronous dependency-graph
402
+ build reads products and parses nothing. A non-incremental reindex does the
403
+ same for the previous generation before the affected-set shadow builds its
404
+ graph, and only when that shadow will build one.
405
+ - The native-pressure estimate behind every parse assumed a tree costs 10x its
406
+ source bytes; measured, it is about 23x, so forced collections came several
407
+ gigabytes too late. The estimate is now 24x.
408
+ - The prewarm's first stage read every file's definitions synchronously, and a
409
+ file whose definition product is cold is parsed to compute them: 6,978 trees
410
+ were alive 43 seconds in, before any other stage ran, setting a ~4.7 GB
411
+ high-water mark the process never gave back. Candidate definitions are now
412
+ read in the same collecting, yielding batches; the per-file product they
413
+ persist makes the health phases' later synchronous reads parse nothing.
414
+ - The dependency-graph sweep parsed each file twice, once for imports and
415
+ once for re-exports; the import parse now goes through the exact-bytes tree
416
+ cache, so the re-export pass reuses the same tree.
417
+ - Freed tree memory stays reusable inside the process but is not returned to
418
+ the OS by glibc; the resident high-water mark is now set by one batch plus
419
+ the bounded tree cache rather than by the repository.
420
+
421
+ ### Faster full health and a durable dossier
422
+
423
+ - `health --full` phases run in a memory-gated pool instead of strictly one
424
+ at a time: one isolated child per ~7 GiB of half the machine's memory, at
425
+ most four (`SCIP_QUERY_HEALTH_FULL_CONCURRENCY` still overrides). A 61 GiB
426
+ host runs four phases at once; a 16 GiB laptop keeps one. The pool starts
427
+ the heaviest phases first (wrapper candidates, complexity hotspots,
428
+ passthrough candidates, stale abstractions, similar/extract), so the last
429
+ worker does not finish alone. Measured on a 7,800-file repository with
430
+ warm caches and no watch service: 4:20 → 1:29, peak 5.8 GiB.
431
+ - The health dossier is published atomically, so an interrupted setup leaves
432
+ the previous complete dossier in place instead of a half-written one. Each
433
+ audit first records an attempt marker (`health-dossier.attempt.json`, run
434
+ id, start time, index generation) that is cleared only after the dossier
435
+ is written; a later setup reports an interrupted audit instead of letting
436
+ the older dossier pass as current, and the dossier names the index
437
+ generation and attempt it completed.
438
+ - The project-wide TypeScript reference map assembled from persisted
439
+ fragments is now kept per database for the life of the process, so a child
440
+ that runs several health phases (or `isolated`, `dead`, and consumer
441
+ evidence in one command) builds it once instead of once per consumer.
442
+
443
+ ### Architecture policy is clean again
444
+
445
+ - The file-access recorder moved from `platform` to `domain` (it has no
446
+ dependencies and is consumed by analysis, symbols, and source code), and the
447
+ compiler-shard planner reads bounded files through the `platform` re-export,
448
+ so `scip-query architecture` reports no forbidden edges and the setup-installed
449
+ Stop hook passes again. Both edges were introduced by the 0.22.0 performance
450
+ work.
451
+
452
+ ### Setup no longer replaces symbolic links or misreports configured projects
453
+
454
+ - `setup` (and every other revision-aware file mutation: agent guidance,
455
+ hook files, config, suppressions) now writes through a symbolic link to its
456
+ target instead of renaming a regular file over the link. A repository with
457
+ `CLAUDE.md -> AGENTS.md` keeps the link and receives the guidance block once,
458
+ in `AGENTS.md`; previously the link was silently replaced by a regular copy
459
+ (git mode 120000 → 100644). A dangling link is resolved to the path it names
460
+ so the file is created there.
461
+ - A TypeScript-only project no longer gets a `partial` setup verdict because
462
+ the Rust semantic session was inapplicable, and `watch.enabled=false` or
463
+ `watch.autoStart=false` is reported as a configured state rather than
464
+ incomplete setup. Skips that still mean incomplete setup (no supported
465
+ language, config errors, an incomplete initial refresh) keep `partial`.
466
+
467
+ ### Bounded full-health semantic prewarm
468
+
469
+ - `health --full` no longer assembles the project-wide TypeScript reference
470
+ map inside its isolated prewarm child. The prewarm persists reference
471
+ fragments file by file (existence-checked without reading payloads, written
472
+ one provider batch at a time), materializes the remaining per-definition
473
+ references in persisted file batches, and yields between batches so native
474
+ memory is reclaimed. Those fragment rows are the evidence the health phases
475
+ read, so the warm state is unchanged; only the transient multi-gigabyte map
476
+ is gone. On a ~7,800-file TypeScript repository with no watch service
477
+ running (for example during `setup --health`), the child previously grew
478
+ past 17 GiB and aborted with SIGABRT.
479
+ - Heap-pressure relief forces a collection before deciding to discard the
480
+ compiler session, so batch garbage is no longer mistaken for live pressure,
481
+ and the release threshold is 75% of the isolated heap.
482
+ - The prewarm child's default heap is derived from physical memory (half of
483
+ RAM, bounded to 2–8 GiB) instead of a fixed 8 GiB;
484
+ `SCIP_QUERY_HEALTH_SEMANTIC_PREWARM_HEAP_MB` still overrides it.
485
+ - Every consumer of TypeScript reference fragments (health phases,
486
+ `diff-impact` batches, the prewarm) now relieves heap pressure between
487
+ persisted fragment batches: measure after a forced collection, and discard
488
+ the in-process compiler session when live state still exceeds 75% of the
489
+ isolated heap, so the next batch resolves a fresh session. A cold cache with
490
+ no watch service previously failed `diff-impact` on a large repository with
491
+ "JavaScript heap out of memory" because one batch child hosted the whole
492
+ compiler program without ever releasing it.
493
+ - `diff-impact` batch children also run with a bounded isolated heap (half of
494
+ RAM, bounded to 2–6 GiB; `SCIP_QUERY_DIFF_IMPACT_BATCH_HEAP_MB` overrides
495
+ it) instead of Node's default old-space limit, and get the full-health phase
496
+ time budget (10 minutes; `SCIP_QUERY_DIFF_IMPACT_BATCH_TIMEOUT_MS` overrides
497
+ it) instead of the generic 3-minute analysis timeout.
498
+ - A diff-impact batch no longer computes a whole project's reference fragments
499
+ in-process. When more than 256 files have cold fragments and no watch
500
+ service is running, the semantic consumer tier is reported as failed with
501
+ the remedy (`scip-query health --full` once, or `scip-query watch
502
+ --daemon`) and the source-fallback tier still runs; on a 7,800-file
503
+ repository the in-process computation took longer than the 10-minute batch
504
+ budget while the service or the prewarm warms the same rows in the
505
+ background. With warm fragments the same diff-impact takes seconds.
506
+
7
507
  ## [0.22.0]
8
508
 
9
509
  ### Bounded indexing for large TypeScript repositories
package/README.md CHANGED
@@ -37,6 +37,17 @@ cd your-repository
37
37
  scip-query setup
38
38
  ```
39
39
 
40
+ npm 11 and newer skip dependency install scripts by default and print an
41
+ `install-scripts` warning listing them. For scip-query every listed script is
42
+ a prebuild check (`node-gyp-build`) or the package's own install hint; the
43
+ Tree-sitter grammars and SQLite binding ship prebuilt binaries for macOS,
44
+ Linux, and Windows, so nothing needs to compile and the warning can be
45
+ ignored. The one grammar without prebuilds, Kotlin, falls back to text
46
+ parsing unless a C toolchain is present and the scripts are allowed. To
47
+ silence the warning for global installs, run the `npm config set
48
+ allow-scripts=... --location=user` command npm prints; `--allow-scripts` is
49
+ rejected inside a project directory by design.
50
+
40
51
  Setup detects supported languages, installs or checks their indexers, builds
41
52
  the local index, installs the bundled skills, and writes concise agent guidance.
42
53
  When the repository declares valid architecture rules, setup also installs one
@@ -295,6 +306,8 @@ If output prints `Continue exactly:`, run the emitted command unchanged until
295
306
  transport is complete. Transport completion means every rendered character was
296
307
  retrieved; it does not make bounded analysis exhaustive.
297
308
 
309
+ Output redirected to a regular file (`scip-query health --full > report.txt`) is written in full; page cursors apply to terminals and pipes, where the reader is an agent whose context the page budget protects.
310
+
298
311
  Use `--full` only when complete command coverage can change a decision. Always
299
312
  read a command's coverage note before claiming that every caller, consumer, or
300
313
  finding was considered.
@@ -1,2 +1,2 @@
1
- import{d as t}from"./chunk-FFJQZG6J.js";import"./chunk-YUKYB54I.js";import"./chunk-BJT7LSPK.js";import"./chunk-YXPUP5G2.js";import"./chunk-NRBNAECH.js";import"./chunk-IW5XQG5G.js";import"./chunk-AK3PYTIK.js";import{writeFileSync as s}from"fs";import{workerData as o}from"worker_threads";var r=o;try{let e=t({projectRoot:r.projectRoot,dbPath:r.dbPath,tsconfig:r.tsconfig,vueFiles:r.vueFiles,tasks:r.tasks});s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!0,result:e}))}catch(e){s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!1,error:e instanceof Error?e.message:String(e)}))}
1
+ import{d as t}from"./chunk-3LO4FST5.js";import"./chunk-YUKYB54I.js";import"./chunk-BJT7LSPK.js";import"./chunk-YXPUP5G2.js";import"./chunk-MWN53KRN.js";import"./chunk-IW5XQG5G.js";import"./chunk-7HXT6YLU.js";import"./chunk-7F45LJKI.js";import{writeFileSync as s}from"fs";import{workerData as o}from"worker_threads";var r=o;try{let e=t({projectRoot:r.projectRoot,dbPath:r.dbPath,tsconfig:r.tsconfig,vueFiles:r.vueFiles,tasks:r.tasks});s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!0,result:e}))}catch(e){s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!1,error:e instanceof Error?e.message:String(e)}))}
2
2
  //# sourceMappingURL=augment-vue-worker.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-NGKBOT6G.js";import"./chunk-MTDBHTSF.js";import"./chunk-2VAHDDLM.js";import"./chunk-YXPUP5G2.js";import"./chunk-BL6DCHQP.js";import"./chunk-ATXPTSEI.js";import"./chunk-CKBUBRYD.js";import"./chunk-IW5XQG5G.js";import"./chunk-H5EXS3HM.js";import"./chunk-HGFDYOVB.js";import"./chunk-7HXT6YLU.js";import"./chunk-7F45LJKI.js";export{a as byKind,b as kindCounts};
2
+ //# sourceMappingURL=by-kind-H3P6BR5G.js.map
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-ZGIHTH27.js";import"./chunk-7KCZELVM.js";import"./chunk-BGBBVSH4.js";import"./chunk-AADQLOQ4.js";import"./chunk-MTDBHTSF.js";import"./chunk-WDSFQDPN.js";import"./chunk-ANLNLY66.js";import"./chunk-JCSAZ35V.js";import"./chunk-FI7VGOR4.js";import"./chunk-WRQXLNYE.js";import"./chunk-L7KTFEAV.js";import"./chunk-2USA3S3P.js";import"./chunk-BJT7LSPK.js";import"./chunk-5BIKR67W.js";import"./chunk-CZW5MZ5B.js";import"./chunk-F4FNK44D.js";import"./chunk-ODPDP7A4.js";import"./chunk-MOKUWRHO.js";import"./chunk-FVFDOIM3.js";import"./chunk-2VAHDDLM.js";import"./chunk-YXPUP5G2.js";import"./chunk-BL6DCHQP.js";import"./chunk-EHYDXE3Z.js";import"./chunk-2OOY75BW.js";import"./chunk-U6KCHXJ4.js";import"./chunk-T3I6NHBH.js";import"./chunk-ATXPTSEI.js";import"./chunk-CKBUBRYD.js";import"./chunk-IW5XQG5G.js";import"./chunk-T3CZAZSI.js";import"./chunk-B3PYOSCX.js";import"./chunk-H5EXS3HM.js";import"./chunk-HGFDYOVB.js";import"./chunk-JFMEXGFE.js";import"./chunk-7HXT6YLU.js";import"./chunk-7F45LJKI.js";export{a as callGraph};
2
+ //# sourceMappingURL=call-graph-VTG2CUOQ.js.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Where a callee edge came from. `scip-occurrence` is the indexer's own
3
+ * binding at the call line (compiler-resolved at index time); `ast-callsite`
4
+ * is a leaf-name resolution over imports and local receivers; the other two
5
+ * are the on-demand compiler and chunk co-occurrence paths.
6
+ */
7
+ type CalleeEvidenceSource = 'scip-occurrence' | 'ast-callsite' | 'semantic-callee' | 'scip-chunk';
8
+ interface CalleeRow {
9
+ symbol: string;
10
+ file: string;
11
+ chunkId: number;
12
+ source: CalleeEvidenceSource;
13
+ /** Zero-based source line of the call expression when retained by the evidence source. */
14
+ callsiteLine?: number;
15
+ /** `jsx-render` when the edge is a rendered component element rather than a call expression. */
16
+ kind?: 'jsx-render';
17
+ }
18
+
19
+ export type { CalleeRow as C, CalleeEvidenceSource as a };
@@ -0,0 +1,2 @@
1
+ import{a as L}from"./chunk-BGBBVSH4.js";import{a as I}from"./chunk-BJWFVAA5.js";import{i as fe}from"./chunk-U3SXIMII.js";import{b as te,d as oe,e as re,f as ae,g as se,h as le,j as T,k as ce,l as _}from"./chunk-SKKXTABJ.js";import{d as ie}from"./chunk-KK7GPALL.js";import{f as ee,h as ne}from"./chunk-NJQISBL4.js";import{b as C}from"./chunk-FLMTCX5R.js";import{b as Q}from"./chunk-BOW7SSQH.js";import{a as U,e as W,i as P,j as A,l as X,m as Y,v,w as J,x as Z,y as $,z as N}from"./chunk-C7C6AKAT.js";import{t as z,v as S}from"./chunk-RBAD4GJ2.js";import{A as y,B as O,O as H,a as M}from"./chunk-ZLMXIQLC.js";import{h as B,m as D}from"./chunk-ETC674NS.js";import{d as w,y as G}from"./chunk-KNLQGXVH.js";function j(n,e,t={}){let i=new Map;if(e&&e.length===0)return i;let r=M(n,{includeIgnored:!1}),o=ae(n),a=e??J(n),f=new Set(a.map(m=>m.symbolId)),c=Ce(a);return ge(n,i,r,o,f,c),he(n,i,a,f),ve(n,i,r,o,f,c),t.semantic!==!1&&t.semanticEvidence&&Le(i,t.semanticEvidence.callerMap(n,Ie(a))),i}function ge(n,e,t,i,r,o){for(let a of t){if(!y(a))continue;let f=z(n,a);if(f)for(let c of f){if(o&&!o.has(c.calleeLeaf))continue;let m=oe(a,i.get(c.calleeLeaf)??[]);if(!m||m.length===0)continue;let s=re(n,a,m,c.memberAccess,c.calleeQualifier);s&&r.has(s.symbolId)&&s.file!==a&&K(e,s.symbolId,a)}}}function he(n,e,t,i){let r=Me(t);for(let o of Re(n,i))n.isIgnored(o.relative_path)||De(o,r.get(o.symbol_id))||K(e,o.symbol_id,o.relative_path)}function Re(n,e){return ie(n,e?[...e]:void 0)}function Me(n){let e=new Map;for(let t of n)e.set(t.symbolId,{docId:t.documentId,startLine:t.startLine,endLine:t.endLine});return e}function De(n,e){return!!e&&e.docId===n.document_id&&n.chunk_start>=e.startLine&&n.chunk_end<=e.endLine}function ve(n,e,t,i,r,o){for(let a of t){if(y(a)!=="rust")continue;let f=S(n,a,{includeRustAttributeNames:!0});if(f.length!==0)for(let{name:c}of f){if(o&&!o.has(c))continue;let m=i.get(c);if(m)for(let s of m)r.has(s.symbolId)&&s.file!==a&&K(e,s.symbolId,a)}}}function K(n,e,t){let i=n.get(e);i||(i=new Set,n.set(e,i)),i.add(t)}function Ce(n){let e=new Set;for(let t of n){let i="leaf"in t&&typeof t.leaf=="string"?t.leaf:"symbol"in t&&typeof t.symbol=="string"?W(t.symbol):"";i&&e.add(i)}return e.size>0?e:null}function Ie(n){return n.filter(e=>"relativePath"in e&&"symbol"in e&&"leaf"in e)}function Le(n,e){for(let[t,i]of e){let r=n.get(t);r||(r=new Set,n.set(t,r));for(let o of i)r.add(o)}}var Fe=w("cross-file-caller-files",{clearGroups:["whole-project","source-file"]}),xe=w("source-fallback-caller-files",{clearGroups:["whole-project","source-file"]});function ue(n,e,t){let i=e.filter(o=>!n.has(o.symbolId));if(i.length>0){let o=t(i);for(let a of i)n.set(a.symbolId,o.get(a.symbolId)??new Set)}let r=new Map;for(let o of e){let a=n.get(o.symbolId);a&&a.size>0&&r.set(o.symbolId,new Set(a))}return r}function q(n,e,t={}){if(e===void 0)return j(n,e,t);let i=ue(Fe.get(n,()=>new Map),e,r=>j(n,r,{semantic:!1}));return t.semantic===!1||!t.semanticEvidence?i:me(i,t.semanticEvidence.callerMap(n,e.filter(r=>"relativePath"in r&&"symbol"in r&&"leaf"in r)))}function V(n,e,t={}){return t.skipPath?_(n,e,t):ue(xe.get(n,()=>new Map),e,i=>_(n,i))}function de(n,e,t={}){let i=q(n,e,{semantic:t.semantic,semanticEvidence:t.semanticEvidence});return t.sourceFallback===!1?i:me(i,V(n,e))}function me(n,e){let t=new Map;for(let[i,r]of n)t.set(i,new Set(r));for(let[i,r]of e){let o=t.get(i)??new Set;for(let a of r)o.add(a);t.set(i,o)}return t}function be(n,e,t){let i=e.identifierResolution==="strict"?T:ce,r=e.candidateNames?se(e.candidateNames):null,o=0,a=0,f=0,c=0,m="";for(let s of e.paths)if(o+=1,m=s,!(!y(s)&&!(e.includeVueSfc&&O(s)))&&!n.isIgnored(s)&&!e.skipPath?.(s))try{if(r&&!le(B(n,s),r))continue;a+=1;let h=(u,b,k,g)=>{if(e.candidateNames&&!e.candidateNames.has(u))return;f+=1;let R=e.resolveTargets?e.resolveTargets({sourceFile:s,name:u,kind:b,defaultTargets:g}):g();for(let E of R)c+=1,t({sourceFile:s,name:u,target:E,occurrences:k,kind:b})},x=te(n,s);for(let[u,b]of x)h(u,"identifier",b.length,()=>i(n,s,u));for(let u of S(n,s,{includeCrossLanguageDispatchNames:e.includeCrossLanguageDispatchNames,includeRustAttributeNames:e.includeRustAttributeNames})){let b=u.kind==="cross-language-dispatch"?()=>T(n,s,u.name):()=>i(n,s,u.name);h(u.name,u.kind,u.occurrences,b)}}finally{e.afterPath?.(s),o%10===0&&G("source-reference-scan.progress",()=>{},()=>({scannedPaths:o,currentPath:m,candidateMatchedPaths:a,visitedNames:f,visitedHits:c}))}}function pe(n,e={}){let{scope:t,files:i,minLoc:r=1,maxLoc:o=Number.POSITIVE_INFINITY,excludeSymbol:a,excludeEntrySurfaces:f=!1,excludeTypesFiles:c=!1,excludeRootedSymbols:m=!1,requireFunctionLikeSymbol:s=!1,requireCallableSymbol:F=!1,excludeRustTraitImplMembers:h=!1,includeSuppressed:x=!1,sortByLocDesc:u=!1}=e,b=[],k=ke(n,{scope:t,files:i,requireFunctionLikeSymbol:s,requireCallableSymbol:F}),g=new Map,R=new Map,E=l=>{let d=g.get(l);if(d!==void 0)return d;let p=ee(n,l);return g.set(l,p),p},Se=l=>{let d=R.get(l);if(d!==void 0)return d;let p=C(l);return R.set(l,p),p};for(let l of k){let d=l.relativePath;if(n.isIgnored(d)||f&&E(d)||!Ee(l,{requireFunctionLikeSymbol:s,requireCallableSymbol:F})||a!==void 0&&l.symbol===a)continue;let p=L(l);p<r||p>o||c&&we(d)||m&&ne(n,l.symbol,d)||h&&X(l.symbol)||Se(d)!=="test"&&(Y(l.symbol)||!x&&D(n,d,l.startLine)||b.push(l))}return u?b.sort((l,d)=>L(d)-L(l)):b}function ke(n,e){return e.files!==void 0?[...new Set(e.files.map(i=>i.replace(/\\/g,"/")))].sort().filter(i=>!e.scope||i.includes(e.scope)).flatMap(i=>v(n,i)):e.requireCallableSymbol?N(n,{scope:e.scope,symbolMatches:P,sqlPrefilter:"callable"}):e.requireFunctionLikeSymbol?N(n,{scope:e.scope,symbolMatches:A,sqlPrefilter:"function-like"}):$(n,e.scope)}function Ee(n,e){return e.requireCallableSymbol?P(n.symbol):e.requireFunctionLikeSymbol?A(n.symbol):n.isFunctionLike}function we(n){return(n.split("/").pop()??"").includes("types")}var ye=class{constructor(e){this.db=e}db;scopedDefinitions(e){return Z(this.db,e)}definitionsForFile(e){return v(this.db,e)}productionCallableDefinitions(e={}){return pe(this.db,e)}calleeMap(e,t={}){return fe(this.db,e,{...t,semanticEvidence:I})}crossFileCallerMap(e,t={}){return q(this.db,e,{...t,semanticEvidence:I})}sourceFallbackCallerFiles(e,t={}){return V(this.db,e,t)}callerFileMap(e,t={}){return de(this.db,e,{...t,semanticEvidence:I})}frameworkReferencedSymbolIds(e){let t=new Map;for(let r of e){if(!r.leaf)continue;let o=t.get(r.leaf)??[];o.push(r.symbolId),t.set(r.leaf,o)}let i=new Set;for(let r of M(this.db,{includeIgnored:!1}))if(y(r)==="rust")for(let{name:o}of S(this.db,r,{includeRustAttributeNames:!0}))for(let a of t.get(o)??[])i.add(a);return i}symbolsWithNonSelfCallees(e,t={}){if(e.length===0)return new Set;let i=new Map(e.map(o=>[o.symbolId,o.symbol])),r=this.calleeMap(e,t);return new Set([...r.entries()].filter(([o,a])=>{let f=i.get(o);return a.some(c=>c.symbol!==f)}).map(([o])=>o))}fileDependencyGraph(e){return Q(this.db,e)}fileKind(e){return C(e)}hasSuppressionComment(e){return D(this.db,e.relativePath,e.startLine)}sourceFiles(){return H(this.db)}scanSourceReferences(e,t){be(this.db,e,t)}callableSignature(e){let t=U(this.db).forFile(e.relativePath,{facts:!0}).facts?.callables.find(i=>i.startLine===e.startLine&&i.endLine===e.endLine);return t?{paramCount:t.paramCount}:null}};export{V as a,me as b,ye as c};
2
+ //# sourceMappingURL=chunk-2BMSSRBH.js.map
@@ -1,3 +1,3 @@
1
- import{e as i}from"./chunk-TD7VKJ2Y.js";import{a as o}from"./chunk-42W3LFUK.js";import{E as s}from"./chunk-Q7GBK5T7.js";function u(r,e){let t=s(r,e.relativePath);if(t.length===0)return!1;let n=i(e.symbol);if(!n)return!1;let c=t.slice(Math.max(0,e.startLine-2),e.startLine+1).join(`
1
+ import{e as i}from"./chunk-C7C6AKAT.js";import{a as o}from"./chunk-RBAD4GJ2.js";import{k as s}from"./chunk-ETC674NS.js";function u(r,e){let t=s(r,e.relativePath);if(t.length===0)return!1;let n=i(e.symbol);if(!n)return!1;let c=t.slice(Math.max(0,e.startLine-2),e.startLine+1).join(`
2
2
  `),a=o(n);return new RegExp(`^\\s*export\\s+(?:default\\s+)?(?:(?:async\\s+)?function\\s+${a}\\b|(?:abstract\\s+)?class\\s+${a}\\b|(?:interface|type|enum|namespace|module)\\s+${a}\\b|(?:const|let|var)\\s+${a}\\b)`,"m").test(c)?!0:p(t,n)}function p(r,e){if(!e)return!1;let t=new RegExp(`^\\s*export\\s*\\{[^}\\n]*\\b${o(e)}\\b`);return r.some(n=>t.test(n))}export{u as a};
3
- //# sourceMappingURL=chunk-TAYD3AE7.js.map
3
+ //# sourceMappingURL=chunk-2GJSD5GY.js.map