scip-query 0.21.1 → 0.23.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 (399) hide show
  1. package/CHANGELOG.md +317 -0
  2. package/README.md +11 -0
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/by-kind-XI2CSWEY.js +2 -0
  5. package/dist/call-graph-UONR6JR5.js +2 -0
  6. package/dist/{chunk-JGMD6JGB.js → chunk-2E7CX53V.js} +2 -2
  7. package/dist/chunk-2GRUZAQF.js +43 -0
  8. package/dist/{chunk-RSUH7G5T.js → chunk-2LDBDR6J.js} +2 -2
  9. package/dist/{chunk-4SZJF4GK.js → chunk-2OOY75BW.js} +2 -2
  10. package/dist/{chunk-3YETOKNO.js → chunk-2R3V3PSD.js} +2 -2
  11. package/dist/chunk-2WC2OEDO.js +4 -0
  12. package/dist/{chunk-O4PZFAXA.js → chunk-3AF4TUFK.js} +2 -2
  13. package/dist/{chunk-I2LY3KN7.js → chunk-3D3QG236.js} +2 -2
  14. package/dist/{chunk-DXEJ4FLZ.js → chunk-3FHOF22C.js} +8 -8
  15. package/dist/{chunk-BCTCADNB.js → chunk-3JKSW6LJ.js} +2 -2
  16. package/dist/chunk-3L2ZBPEX.js +133 -0
  17. package/dist/{chunk-4HQYNZ3P.js → chunk-3PJABJSU.js} +2 -2
  18. package/dist/{chunk-GBZCVYWA.js → chunk-3SVF22I5.js} +2 -2
  19. package/dist/{chunk-TP2X2C2Y.js → chunk-3WR4E3A3.js} +2 -2
  20. package/dist/chunk-4FTZ4P5G.js +2 -0
  21. package/dist/{chunk-LJMWILX6.js → chunk-4ILJCCXV.js} +2 -2
  22. package/dist/chunk-4UX2F3JX.js +2 -0
  23. package/dist/chunk-4WNW27SX.js +2 -0
  24. package/dist/chunk-5ENOG4VP.js +61 -0
  25. package/dist/{chunk-YKHL4J3G.js → chunk-64BFSI5I.js} +2 -2
  26. package/dist/chunk-66DVSJQG.js +455 -0
  27. package/dist/{chunk-BYXWXLKM.js → chunk-6HFCYNYE.js} +2 -2
  28. package/dist/{chunk-UBETC3Q2.js → chunk-6I6L7Z62.js} +2 -2
  29. package/dist/{chunk-IZKJQQCQ.js → chunk-6PQNKL3G.js} +2 -2
  30. package/dist/{chunk-ITF3CWS5.js → chunk-6V5CNXL6.js} +2 -2
  31. package/dist/chunk-6VVV4WRR.js +4 -0
  32. package/dist/{chunk-ZQUNCTEZ.js → chunk-7BWFZPPZ.js} +2 -2
  33. package/dist/{chunk-5QM7QT5B.js → chunk-7CYG22FH.js} +2 -2
  34. package/dist/chunk-7F45LJKI.js +2 -0
  35. package/dist/{chunk-QN2AI3D2.js → chunk-7IWV2EG3.js} +2 -2
  36. package/dist/{chunk-5KIJMEPC.js → chunk-AFHTBORT.js} +2 -2
  37. package/dist/chunk-AVRYW5OZ.js +2 -0
  38. package/dist/chunk-B3PYOSCX.js +2 -0
  39. package/dist/{chunk-YF25RQER.js → chunk-B5D7QPBE.js} +2 -2
  40. package/dist/{chunk-PU6XDQ2X.js → chunk-BBCIS4DX.js} +5 -5
  41. package/dist/chunk-BDUVI7TO.js +3 -0
  42. package/dist/{chunk-UXNXOMXJ.js → chunk-BE7ZZTMC.js} +2 -2
  43. package/dist/{chunk-527HV7JY.js → chunk-BHVUJOCQ.js} +2 -2
  44. package/dist/{chunk-4IASLUOP.js → chunk-BJT7LSPK.js} +2 -2
  45. package/dist/chunk-BKVWUP7Y.js +2 -0
  46. package/dist/{chunk-QZCACNV5.js → chunk-BQGB4HBD.js} +2 -2
  47. package/dist/{chunk-QH5Q6M5C.js → chunk-BRV7PIFF.js} +2 -2
  48. package/dist/chunk-CEEZJXEF.js +2 -0
  49. package/dist/{chunk-X5MWO4DM.js → chunk-CIYLO6SI.js} +2 -2
  50. package/dist/chunk-CJZXN4NU.js +2 -0
  51. package/dist/{chunk-V6XENWOF.js → chunk-CNO7TOKL.js} +2 -2
  52. package/dist/{chunk-FUUDUAKM.js → chunk-COF23M5F.js} +2 -2
  53. package/dist/{chunk-GTZFKDP3.js → chunk-CWFP7GM5.js} +2 -2
  54. package/dist/chunk-D2DHWI3D.js +2 -0
  55. package/dist/{chunk-SBFDPHKH.js → chunk-D4N5SQ2M.js} +2 -2
  56. package/dist/{chunk-FCGMQETU.js → chunk-DBRSYFXR.js} +2 -2
  57. package/dist/{chunk-47WX6UC4.js → chunk-DHUIOLDT.js} +2 -2
  58. package/dist/{chunk-KGKCJFWZ.js → chunk-DIRJWYBM.js} +2 -2
  59. package/dist/{chunk-QGVUPYBC.js → chunk-DIUFNHRJ.js} +2 -2
  60. package/dist/{chunk-YLNCTPOI.js → chunk-DTZCKZEU.js} +2 -2
  61. package/dist/{chunk-O3EX5STE.js → chunk-DULC3QFP.js} +2 -2
  62. package/dist/{chunk-B3AREUQK.js → chunk-DYGHBZ2N.js} +2 -2
  63. package/dist/{chunk-AAOEROT3.js → chunk-E5R6AQ73.js} +2 -2
  64. package/dist/{chunk-UM56ZET4.js → chunk-E73UNJTF.js} +2 -2
  65. package/dist/{chunk-6QN4FYQW.js → chunk-EG2CPZMJ.js} +2 -2
  66. package/dist/{chunk-OMVNRPST.js → chunk-EKV5HX33.js} +2 -2
  67. package/dist/{chunk-27OUNZW5.js → chunk-EQHFIL6T.js} +2 -2
  68. package/dist/{chunk-ZGDHC5AT.js → chunk-ESIQ66Z7.js} +2 -2
  69. package/dist/chunk-EVFUMY4R.js +3 -0
  70. package/dist/{chunk-WZRNEVYC.js → chunk-F7DY272B.js} +2 -2
  71. package/dist/chunk-FBN2FGXG.js +2 -0
  72. package/dist/{chunk-HR5JYLVV.js → chunk-FDLOBR6P.js} +2 -2
  73. package/dist/chunk-FESCRNVV.js +5 -0
  74. package/dist/{chunk-MLTKGHD2.js → chunk-FFRKR4EQ.js} +2 -2
  75. package/dist/chunk-FGA2U4OR.js +8 -0
  76. package/dist/{chunk-3KXFB2FM.js → chunk-FIQRSHVM.js} +2 -2
  77. package/dist/{chunk-ZP2WUVZ5.js → chunk-FPYLNQPT.js} +2 -2
  78. package/dist/{chunk-EPLE5O5O.js → chunk-FRUSVINH.js} +2 -2
  79. package/dist/chunk-GAS2LJMP.js +3 -0
  80. package/dist/{chunk-4TOU7HHQ.js → chunk-GSP44ENC.js} +2 -2
  81. package/dist/{chunk-DXYMTQZ4.js → chunk-GUFSG5TX.js} +2 -2
  82. package/dist/chunk-GYIZ4NXB.js +2 -0
  83. package/dist/{chunk-CQVDALWQ.js → chunk-GZIUDL6G.js} +2 -2
  84. package/dist/chunk-HCXEQRFF.js +18 -0
  85. package/dist/{chunk-2LJLEM5B.js → chunk-HEHOQQKH.js} +2 -2
  86. package/dist/{chunk-RNKRYK6B.js → chunk-HKGFPJ4T.js} +2 -2
  87. package/dist/chunk-HLZTEXRA.js +2 -0
  88. package/dist/{chunk-T2PBOVDI.js → chunk-HOENASQM.js} +2 -2
  89. package/dist/{chunk-PX6QNUYF.js → chunk-HVF5VBG6.js} +2 -2
  90. package/dist/{chunk-K2DZCH2K.js → chunk-HYO3NP5Q.js} +2 -2
  91. package/dist/{chunk-MRXBLYRE.js → chunk-I55I7XXP.js} +2 -2
  92. package/dist/{chunk-AQF35NGT.js → chunk-IDFEUFKS.js} +2 -2
  93. package/dist/{chunk-7G2WIVIX.js → chunk-IHGQTTVW.js} +2 -2
  94. package/dist/{chunk-P3UFF22M.js → chunk-IICPE7B2.js} +2 -2
  95. package/dist/{chunk-NT4NVEHU.js → chunk-IL676XCC.js} +2 -2
  96. package/dist/{chunk-OU6SDWAM.js → chunk-ILTDAWEF.js} +2 -2
  97. package/dist/chunk-IW5XQG5G.js +2 -0
  98. package/dist/chunk-IZDPJ2QI.js +2 -0
  99. package/dist/{chunk-J4HUBIVF.js → chunk-J66VOFW6.js} +2 -2
  100. package/dist/chunk-JFMEXGFE.js +2 -0
  101. package/dist/{chunk-DGM2RJ3I.js → chunk-JGKUET5J.js} +2 -2
  102. package/dist/{chunk-BM4OTGSY.js → chunk-JS4PGXMV.js} +2 -2
  103. package/dist/{chunk-OG5UK2K7.js → chunk-JTQVMR42.js} +2 -2
  104. package/dist/chunk-JWTGMPIT.js +80 -0
  105. package/dist/{chunk-3XQLJG7V.js → chunk-JYR66JN5.js} +2 -2
  106. package/dist/chunk-KLFEXGQA.js +2 -0
  107. package/dist/chunk-KYSDI3GE.js +5 -0
  108. package/dist/{chunk-LIWIV26I.js → chunk-L6PJPETJ.js} +2 -2
  109. package/dist/{chunk-6DO3VBLV.js → chunk-LDVT66YM.js} +2 -2
  110. package/dist/chunk-LEECKFCJ.js +2 -0
  111. package/dist/{chunk-BVR44XXB.js → chunk-LMZ5PRUV.js} +2 -2
  112. package/dist/{chunk-KFFQURUZ.js → chunk-LQRQN2XA.js} +2 -2
  113. package/dist/{chunk-YR7VRWNX.js → chunk-LXABEJX3.js} +2 -2
  114. package/dist/{chunk-ARGPDW2Y.js → chunk-M2O5NY6W.js} +2 -2
  115. package/dist/{chunk-7YZGSLW6.js → chunk-MNV5FSBW.js} +2 -2
  116. package/dist/{chunk-XFRHBAIT.js → chunk-MPQ4OTBM.js} +2 -2
  117. package/dist/{chunk-PJBYDCBQ.js → chunk-MV3CDXPI.js} +2 -2
  118. package/dist/{chunk-DK6MB565.js → chunk-MWN53KRN.js} +2 -2
  119. package/dist/chunk-N2ZSIIGR.js +117 -0
  120. package/dist/chunk-N5B2NILC.js +5 -0
  121. package/dist/{chunk-HW7FASEL.js → chunk-NJITK2GP.js} +2 -2
  122. package/dist/{chunk-DUDUIT5P.js → chunk-NOGJXYFO.js} +2 -2
  123. package/dist/chunk-NOYBFVJA.js +554 -0
  124. package/dist/chunk-NWQXSFFU.js +3 -0
  125. package/dist/chunk-ODDUPDP7.js +13 -0
  126. package/dist/chunk-OLIWTZI3.js +3 -0
  127. package/dist/{chunk-JO6FK3Q5.js → chunk-OLNV6I6U.js} +2 -2
  128. package/dist/{chunk-CXT3GZSQ.js → chunk-OR2E3AGZ.js} +2 -2
  129. package/dist/chunk-OSR2GEHQ.js +2 -0
  130. package/dist/{chunk-7MUHSZGN.js → chunk-OSSESPDX.js} +2 -2
  131. package/dist/{chunk-ND3BWIVN.js → chunk-OWOOWNJ5.js} +2 -2
  132. package/dist/{chunk-UEQORB2A.js → chunk-P42EIXTA.js} +2 -2
  133. package/dist/{chunk-PWEQ6CZZ.js → chunk-PJFGPYTU.js} +2 -2
  134. package/dist/{chunk-CNT4ND5O.js → chunk-PP7KNN7L.js} +2 -2
  135. package/dist/{chunk-C52Q3JEQ.js → chunk-PU7T5QYQ.js} +2 -2
  136. package/dist/{chunk-OY7PCALC.js → chunk-PWWAJSKV.js} +2 -2
  137. package/dist/{chunk-LXMW6ZAX.js → chunk-PZL5T7SU.js} +2 -2
  138. package/dist/{chunk-G47MFF47.js → chunk-QBE3YX64.js} +2 -2
  139. package/dist/{chunk-SGSPCEFC.js → chunk-QGVTFRY2.js} +2 -2
  140. package/dist/chunk-QOJONDS7.js +2 -0
  141. package/dist/chunk-QU5XRYB5.js +4 -0
  142. package/dist/{chunk-4ZCLDH6T.js → chunk-QUU5OBVK.js} +2 -2
  143. package/dist/{chunk-N4EFQIRX.js → chunk-RBLQNW26.js} +2 -2
  144. package/dist/chunk-RTQ7NEKG.js +81 -0
  145. package/dist/{chunk-XNF5T4T2.js → chunk-SQXRS7BG.js} +2 -2
  146. package/dist/chunk-SSK6LDPC.js +2 -0
  147. package/dist/chunk-SZHGTCPP.js +7 -0
  148. package/dist/chunk-T4N4P2K5.js +16 -0
  149. package/dist/{chunk-LFWB7TOJ.js → chunk-TA3QKLLU.js} +2 -2
  150. package/dist/chunk-TEBQMNVI.js +43 -0
  151. package/dist/chunk-TPFHAQ2G.js +2 -0
  152. package/dist/chunk-TQPCBMWT.js +5 -0
  153. package/dist/chunk-TQZV7KV4.js +2 -0
  154. package/dist/{chunk-FOP7HD6H.js → chunk-TRNAEQ6P.js} +2 -2
  155. package/dist/chunk-TY7CRN3Z.js +2 -0
  156. package/dist/{chunk-XDOEHEET.js → chunk-UHFYCMZO.js} +2 -2
  157. package/dist/{chunk-E6N6YTVM.js → chunk-UICY4GTQ.js} +2 -2
  158. package/dist/{chunk-AFRS7WJU.js → chunk-UVGEWT4Y.js} +2 -2
  159. package/dist/{chunk-IHGK3SZ7.js → chunk-UXW33INU.js} +2 -2
  160. package/dist/{chunk-RZWBTKXO.js → chunk-VMPRET3I.js} +2 -2
  161. package/dist/{chunk-DZA7MQMU.js → chunk-VNLGKHS6.js} +2 -2
  162. package/dist/chunk-VQILFTEH.js +2 -0
  163. package/dist/chunk-VUPHCS7Y.js +57 -0
  164. package/dist/{chunk-K63CAPS2.js → chunk-VVZSBTSU.js} +2 -2
  165. package/dist/{chunk-IH3K5J6K.js → chunk-VZRNID6A.js} +2 -2
  166. package/dist/{chunk-NSDPPUDY.js → chunk-W5OXRYGE.js} +2 -2
  167. package/dist/chunk-W6STWDQI.js +57 -0
  168. package/dist/chunk-W7CXK74K.js +2 -0
  169. package/dist/chunk-WB3WYIRE.js +4 -0
  170. package/dist/{chunk-WV6R37XV.js → chunk-WDNVY4E7.js} +2 -2
  171. package/dist/{chunk-Z2QB75BS.js → chunk-WIWY3CRX.js} +2 -2
  172. package/dist/chunk-WK46TNUM.js +3 -0
  173. package/dist/chunk-WNTFFKAX.js +12 -0
  174. package/dist/{chunk-U2MNECDU.js → chunk-WOIKCX6A.js} +2 -2
  175. package/dist/{chunk-5BJPJUXF.js → chunk-WUN6KBHV.js} +2 -2
  176. package/dist/chunk-WYCTJDVR.js +2 -0
  177. package/dist/chunk-WYPL7GF7.js +2 -0
  178. package/dist/{chunk-OFZVFIDF.js → chunk-XBGWL66K.js} +2 -2
  179. package/dist/{chunk-3T5U2EQ2.js → chunk-XDQMU3BT.js} +2 -2
  180. package/dist/{chunk-BZCRHP46.js → chunk-XFA4SSO3.js} +2 -2
  181. package/dist/{chunk-4KIPF45P.js → chunk-XGZEP6GR.js} +2 -2
  182. package/dist/chunk-XPDPNWTQ.js +368 -0
  183. package/dist/chunk-XRYABF57.js +8 -0
  184. package/dist/{chunk-KBIC6JHJ.js → chunk-YBGKCQIS.js} +2 -2
  185. package/dist/{chunk-5J3A6RBZ.js → chunk-YEN6CYC7.js} +2 -2
  186. package/dist/{chunk-OA2BO4DR.js → chunk-YF5IB2LF.js} +2 -2
  187. package/dist/{chunk-Q4MRRB3C.js → chunk-YI2AWIHC.js} +2 -2
  188. package/dist/{chunk-YCXQQ3YB.js → chunk-YPWBKGFU.js} +2 -2
  189. package/dist/{chunk-EJHNTAEE.js → chunk-YPWHBBIS.js} +2 -2
  190. package/dist/{chunk-FIO44MVK.js → chunk-YSH6U3L4.js} +2 -2
  191. package/dist/{chunk-HYU4W353.js → chunk-YU5DZUZI.js} +2 -2
  192. package/dist/chunk-YWO5DDRC.js +16 -0
  193. package/dist/{chunk-5Z2H76VD.js → chunk-YXPUP5G2.js} +2 -2
  194. package/dist/{chunk-H2RBDP5S.js → chunk-Z4CDXYNQ.js} +2 -2
  195. package/dist/{chunk-VJAD5WX5.js → chunk-ZF5KHH7C.js} +2 -2
  196. package/dist/chunk-ZOHS7AQV.js +21 -0
  197. package/dist/{chunk-YT4IQBET.js → chunk-ZTI4SBFV.js} +2 -2
  198. package/dist/cli-main.js +2 -2
  199. package/dist/code-MI6F2TTU.js +2 -0
  200. package/dist/code-result-json-FXALY4HE.js +2 -0
  201. package/dist/{command-descriptors-6INSCKLW.js → command-descriptors-P34VABY5.js} +144 -143
  202. package/dist/dataflow-4KEMJPC6.js +2 -0
  203. package/dist/dependence-slice-R7FPWD5M.js +2 -0
  204. package/dist/deps-7EMQUYUT.js +2 -0
  205. package/dist/direct-navigation-6YO234F2.js +3 -0
  206. package/dist/entry-map-KOOLR26E.js +2 -0
  207. package/dist/files-OPIPJIGZ.js +2 -0
  208. package/dist/hierarchy-QPD2CAER.js +2 -0
  209. package/dist/imports-M6HUXRXC.js +2 -0
  210. package/dist/index.js +1 -1
  211. package/dist/members-I5MEFOCT.js +2 -0
  212. package/dist/methods-5JYGGHXA.js +2 -0
  213. package/dist/output-continuation-command-UPQAAKBP.js +3 -0
  214. package/dist/postinstall.js +1 -1
  215. package/dist/project-reindex-UKKQ5PLS.js +3 -0
  216. package/dist/queries/affected.js +1 -1
  217. package/dist/queries/anchors.js +1 -1
  218. package/dist/queries/architecture.js +1 -1
  219. package/dist/queries/bottlenecks.js +1 -1
  220. package/dist/queries/by-kind.js +1 -1
  221. package/dist/queries/call-graph.js +1 -1
  222. package/dist/queries/change-surface.js +1 -1
  223. package/dist/queries/cleanup-plan.js +1 -1
  224. package/dist/queries/co-change.js +1 -1
  225. package/dist/queries/code.js +1 -1
  226. package/dist/queries/complexity-hotspots.js +1 -1
  227. package/dist/queries/complexity.d.ts +11 -0
  228. package/dist/queries/complexity.js +1 -1
  229. package/dist/queries/context.js +1 -1
  230. package/dist/queries/convergence.js +1 -1
  231. package/dist/queries/coupling.js +1 -1
  232. package/dist/queries/cycles.js +1 -1
  233. package/dist/queries/dataflow.js +1 -1
  234. package/dist/queries/dead.js +1 -1
  235. package/dist/queries/decorative-checkers.js +1 -1
  236. package/dist/queries/deep-chains.js +1 -1
  237. package/dist/queries/dependence-slice.js +1 -1
  238. package/dist/queries/dependency-depth.js +1 -1
  239. package/dist/queries/deps.js +1 -1
  240. package/dist/queries/diff-impact.d.ts +9 -0
  241. package/dist/queries/diff-impact.js +1 -1
  242. package/dist/queries/doc-drift.js +1 -1
  243. package/dist/queries/drift.js +1 -1
  244. package/dist/queries/duplicate-bodies.js +1 -1
  245. package/dist/queries/entry-map.js +1 -1
  246. package/dist/queries/evidence.js +1 -1
  247. package/dist/queries/extract-candidates.js +1 -1
  248. package/dist/queries/fan.js +1 -1
  249. package/dist/queries/files.js +1 -1
  250. package/dist/queries/health.js +1 -1
  251. package/dist/queries/hierarchy.js +1 -1
  252. package/dist/queries/hotspots.js +1 -1
  253. package/dist/queries/imports.js +1 -1
  254. package/dist/queries/incomplete-migration.js +1 -1
  255. package/dist/queries/index.js +1 -1
  256. package/dist/queries/isolated.js +1 -1
  257. package/dist/queries/locality-candidates.js +1 -1
  258. package/dist/queries/members.js +1 -1
  259. package/dist/queries/methods.js +1 -1
  260. package/dist/queries/not-implemented.js +1 -1
  261. package/dist/queries/outline.js +1 -1
  262. package/dist/queries/passthrough-candidates.js +1 -1
  263. package/dist/queries/plan-context.js +1 -1
  264. package/dist/queries/react-component-duplicates.js +1 -1
  265. package/dist/queries/react-hook-candidates.js +1 -1
  266. package/dist/queries/react-large-component-pressure.js +1 -1
  267. package/dist/queries/recent-duplicates.js +1 -1
  268. package/dist/queries/redundant-reexports.js +1 -1
  269. package/dist/queries/reference-neighborhood.js +1 -1
  270. package/dist/queries/reference-reachability.js +1 -1
  271. package/dist/queries/refs.js +1 -1
  272. package/dist/queries/self-audit.js +1 -1
  273. package/dist/queries/similar-chains.js +1 -1
  274. package/dist/queries/similar-files.js +1 -1
  275. package/dist/queries/similar-signatures.js +1 -1
  276. package/dist/queries/similar.js +1 -1
  277. package/dist/queries/slice.js +1 -1
  278. package/dist/queries/source-inspection.js +1 -1
  279. package/dist/queries/source-search.js +1 -1
  280. package/dist/queries/stale-abstractions.js +1 -1
  281. package/dist/queries/surface.js +1 -1
  282. package/dist/queries/symbols.js +1 -1
  283. package/dist/queries/system-map.js +1 -1
  284. package/dist/queries/system.js +1 -1
  285. package/dist/queries/test-quality.js +1 -1
  286. package/dist/queries/trace.js +1 -1
  287. package/dist/queries/twin-ab.js +1 -1
  288. package/dist/queries/twin-drift.js +1 -1
  289. package/dist/queries/unused-imports.js +1 -1
  290. package/dist/queries/unused-params.js +1 -1
  291. package/dist/queries/value-flow.js +1 -1
  292. package/dist/queries/vue-component-duplicates.js +1 -1
  293. package/dist/queries/vue-composable-candidates.js +1 -1
  294. package/dist/queries/vue-large-view-pressure.js +1 -1
  295. package/dist/queries/wrapper-candidates.js +1 -1
  296. package/dist/query-service-fastpath.js +5 -5
  297. package/dist/query-service-server.js +3 -3
  298. package/dist/refs-PSU4JZZW.js +2 -0
  299. package/dist/refs-pagination-JG6CJMRC.js +2 -0
  300. package/dist/reindex-worker.js +64 -22
  301. package/dist/reindex.d.ts +3 -2
  302. package/dist/reindex.js +74 -32
  303. package/dist/runtime.d.ts +34 -2
  304. package/dist/runtime.js +4 -4
  305. package/dist/rust-semantic-session-server.js +1 -1
  306. package/dist/rust-semantic-session-worker.js +1 -1
  307. package/dist/rust-semantic-worker.js +1 -1
  308. package/dist/{scip-cli-H-n59izO.d.ts → scip-cli-DOerTq-R.d.ts} +42 -4
  309. package/dist/slice-HYRATV64.js +2 -0
  310. package/dist/surface-VTGDYWF5.js +2 -0
  311. package/dist/symbol-resolution-WD5EU5JE.js +2 -0
  312. package/dist/system-LRQNFOR2.js +2 -0
  313. package/dist/trace-F4B6OLL4.js +2 -0
  314. package/dist/typescript-mailbox-worker.js +1 -1
  315. package/dist/value-flow-VRPZY72V.js +2 -0
  316. package/dist/watch-server.js +3 -3
  317. package/package.json +1 -1
  318. package/dist/by-kind-XXGZGNZ6.js +0 -2
  319. package/dist/call-graph-VGY3R4L3.js +0 -2
  320. package/dist/chunk-3XZELASU.js +0 -2
  321. package/dist/chunk-63TFRBMB.js +0 -2
  322. package/dist/chunk-67FK5KGV.js +0 -3
  323. package/dist/chunk-6LS3IG2I.js +0 -13
  324. package/dist/chunk-6X4KO5A7.js +0 -11
  325. package/dist/chunk-743MEVFJ.js +0 -8
  326. package/dist/chunk-7Z4GMCHM.js +0 -117
  327. package/dist/chunk-ANCHW2R4.js +0 -57
  328. package/dist/chunk-BMKTDJI6.js +0 -16
  329. package/dist/chunk-BZYSGZRK.js +0 -2
  330. package/dist/chunk-C7WSQA6A.js +0 -21
  331. package/dist/chunk-CTO3TRX7.js +0 -2
  332. package/dist/chunk-DNPETNXT.js +0 -2
  333. package/dist/chunk-DZNWXJN2.js +0 -18
  334. package/dist/chunk-E7CJ6O72.js +0 -2
  335. package/dist/chunk-FLSVYEPL.js +0 -2
  336. package/dist/chunk-FSPENGSU.js +0 -4
  337. package/dist/chunk-FYCH2EYQ.js +0 -2
  338. package/dist/chunk-G6VV7ROY.js +0 -2
  339. package/dist/chunk-GSHTVE56.js +0 -3
  340. package/dist/chunk-IGBQVEHE.js +0 -2
  341. package/dist/chunk-IM23CSG5.js +0 -2
  342. package/dist/chunk-IQMGNIGY.js +0 -2
  343. package/dist/chunk-JLZWYDCZ.js +0 -4
  344. package/dist/chunk-JSHDCVUM.js +0 -81
  345. package/dist/chunk-L7WRUNKJ.js +0 -2
  346. package/dist/chunk-LGVTIZPV.js +0 -61
  347. package/dist/chunk-MFBVUQJZ.js +0 -2
  348. package/dist/chunk-MLTSTKXD.js +0 -5
  349. package/dist/chunk-MR4ZKWO6.js +0 -57
  350. package/dist/chunk-NODZYYGC.js +0 -2
  351. package/dist/chunk-NP4JFCLE.js +0 -133
  352. package/dist/chunk-NQXWWE6S.js +0 -8
  353. package/dist/chunk-O2VY47Y5.js +0 -325
  354. package/dist/chunk-PAZSBPJR.js +0 -3
  355. package/dist/chunk-PRLU3I7G.js +0 -79
  356. package/dist/chunk-QLWZUFDT.js +0 -2
  357. package/dist/chunk-SIGVQT43.js +0 -2
  358. package/dist/chunk-SRIZDEWX.js +0 -4
  359. package/dist/chunk-U7DOYZDH.js +0 -2
  360. package/dist/chunk-UAQQR55F.js +0 -2
  361. package/dist/chunk-VRJG7N3I.js +0 -453
  362. package/dist/chunk-W7HN6V4E.js +0 -7
  363. package/dist/chunk-WCIKJ2E3.js +0 -3
  364. package/dist/chunk-WEXQYJY3.js +0 -5
  365. package/dist/chunk-WOPZX5GM.js +0 -2
  366. package/dist/chunk-WZ7V4BQV.js +0 -2
  367. package/dist/chunk-XDQX6LDT.js +0 -4
  368. package/dist/chunk-XIPGCT3D.js +0 -5
  369. package/dist/chunk-XKM5D2XS.js +0 -16
  370. package/dist/chunk-Y2S4YNLH.js +0 -3
  371. package/dist/chunk-YA72ZUKO.js +0 -2
  372. package/dist/chunk-YBWE6J32.js +0 -43
  373. package/dist/chunk-YDTK77JP.js +0 -43
  374. package/dist/chunk-Z2KGMIL4.js +0 -2
  375. package/dist/chunk-Z67JOKRE.js +0 -554
  376. package/dist/chunk-ZMS4YCY7.js +0 -2
  377. package/dist/chunk-ZNW5A5VX.js +0 -3
  378. package/dist/code-AXLJBZ6T.js +0 -2
  379. package/dist/code-result-json-CTZHAQXJ.js +0 -2
  380. package/dist/dataflow-AFXY423Q.js +0 -2
  381. package/dist/dependence-slice-2G4X6VSJ.js +0 -2
  382. package/dist/deps-LMCAV5DO.js +0 -2
  383. package/dist/direct-navigation-2ONV22Y2.js +0 -3
  384. package/dist/entry-map-ZOC3VXO5.js +0 -2
  385. package/dist/files-WJQJLHMH.js +0 -2
  386. package/dist/hierarchy-ASNIHAX4.js +0 -2
  387. package/dist/imports-JICEKDKK.js +0 -2
  388. package/dist/members-C5H2K3MS.js +0 -2
  389. package/dist/methods-KZOZHSD4.js +0 -2
  390. package/dist/output-continuation-command-NX3RH3TP.js +0 -3
  391. package/dist/project-reindex-A2SXUH2H.js +0 -3
  392. package/dist/refs-ZOORVRQC.js +0 -2
  393. package/dist/refs-pagination-SRCUOYRD.js +0 -2
  394. package/dist/slice-NOTBWA7S.js +0 -2
  395. package/dist/surface-BTBCLKNA.js +0 -2
  396. package/dist/symbol-resolution-SVSMX4RN.js +0 -2
  397. package/dist/system-2EIUFP6B.js +0 -2
  398. package/dist/trace-BB2GHQPG.js +0 -2
  399. package/dist/value-flow-OA7AHSUG.js +0 -2
@@ -1,4 +1,4 @@
1
- import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./chunk-PU6XDQ2X.js";import{a as rr}from"./chunk-ILMHV3KM.js";import{a as st,b as nr}from"./chunk-UEQORB2A.js";import{e as In,f as En,g as wn,i as _n}from"./chunk-MR4ZKWO6.js";import"./chunk-XFRHBAIT.js";import{b as vn}from"./chunk-MFBVUQJZ.js";import"./chunk-EPLE5O5O.js";import"./chunk-5J3A6RBZ.js";import"./chunk-WRQXLNYE.js";import{b as Sn,c as Ee,d as Pn,e as xn,f as Rn}from"./chunk-YDTK77JP.js";import"./chunk-T2PBOVDI.js";import"./chunk-YUKYB54I.js";import"./chunk-4IASLUOP.js";import{a as te,b as ve,c as de,d as ln,e as un,f as pn,g as gn,h as fn,j as ar}from"./chunk-CTO3TRX7.js";import{a as Vt,b as Kt}from"./chunk-F4FNK44D.js";import{a as N}from"./chunk-P3UFF22M.js";import{b as re}from"./chunk-UAQQR55F.js";import"./chunk-NP4JFCLE.js";import{a as Ie}from"./chunk-5Z2H76VD.js";import"./chunk-DRENNWRG.js";import{a as Wt,b as Ht,c as be,d as ne,e as jn,f as Fn,h as it,i as Mn,n as ir}from"./chunk-W7HN6V4E.js";import{a as ke,b as Kn,d as Zn}from"./chunk-3KXFB2FM.js";import{a as dt}from"./chunk-MXNGIEPU.js";import{b as er,c as tr,d as ct}from"./chunk-UXNXOMXJ.js";import"./chunk-4SZJF4GK.js";import{A as ot,B as qn,C as Wn,D as Te,E as Hn,F as Jn,G as zn,a as tn,b as C,d as an,g as rt,i as Tn,j as kn,k as Dn,l as On,m as _e,n as Cn,o as An,p as Ln,q as Nn,r as $n,s as Gn,t as Bn,u as je,v as G,w as Fe,y as Un}from"./chunk-SIGVQT43.js";import{a as yn,d as at,k as bn}from"./chunk-PRLU3I7G.js";import{c as V,d as ce,e as Pe,g as Ke,h as Xt}from"./chunk-DXYMTQZ4.js";import"./chunk-DK6MB565.js";import"./chunk-FYCH2EYQ.js";import{b as nn,c as nt,d as rn}from"./chunk-O4PZFAXA.js";import{a as K,c as mn,d as hn,g as Xn,k as Qn,l as Yn,m as Vn}from"./chunk-NQXWWE6S.js";import"./chunk-H5EXS3HM.js";import{a as Qt,e as b,f as q,g as Yt}from"./chunk-HGFDYOVB.js";import{a as ye,b as U,c as $,d as R}from"./chunk-Z2KGMIL4.js";import{$ as Z,D as Ze,M as et,O as xe,S as Re,Z as en,_ as W,a as Ut,aa as ee,c as qt,ea as on,f as me,g as he,h as oe,l as Se,m as Jt,n as Ve,o as zt,oa as sn,pa as cn,q as se,qa as dn,s as F}from"./chunk-XIPGCT3D.js";import{createHash as Bo}from"crypto";import{existsSync as D,mkdirSync as We,mkdtempSync as Uo,readdirSync as ua,renameSync as pa,rmSync as ae,statSync as qo}from"fs";import{basename as qe,dirname as S,extname as Wo,join as _,resolve as ea}from"path";import{platform as Ho}from"os";import{execFileSync as Ua}from"child_process";import{constants as qa,copyFileSync as or,statSync as Wa}from"fs";import{platform as Ha}from"os";var Ja=Object.freeze({size:e=>Wa(e).size,clone:Xa,copy:(e,t)=>or(e,t)}),za=new Set(["ENOSYS","ENOTSUP","EOPNOTSUPP","EINVAL","EXDEV","ENOTTY"]);function H(e,t,n=Ja){let r=n.size(e);try{return n.clone(e,t),{method:"reflink",bytes:r}}catch(a){if(!Ya(a))throw a}return n.copy(e,t),{method:"copy",bytes:r}}function Xa(e,t){if(Ha()!=="darwin"){or(e,t,qa.COPYFILE_FICLONE_FORCE);return}try{Ua("/bin/cp",["-c",e,t],{timeout:6e4,maxBuffer:64*1024,stdio:["ignore","ignore","pipe"]})}catch(n){throw Qa(n)}}function Qa(e){let t=e?.stderr,n=Buffer.isBuffer(t)?t.toString("utf8"):t??"";return/operation not supported|not supported/i.test(n)?Object.assign(e instanceof Error?e:new Error(String(e)),{code:"ENOTSUP"}):/cross-device link/i.test(n)?Object.assign(e instanceof Error?e:new Error(String(e)),{code:"EXDEV"}):e}function Ya(e){let t=e?.code;return t!==void 0&&za.has(t)}function sr(){return{reflinkedBytes:0,fallbackCopiedBytes:0,incrementalWrittenBytes:0}}function J(e,t){t.method==="reflink"?e.reflinkedBytes+=t.bytes:e.fallbackCopiedBytes+=t.bytes}function De(e,t){if(!Number.isSafeInteger(t)||t<0)throw new Error("incremental write bytes must be a non-negative integer");e.incrementalWrittenBytes=(e.incrementalWrittenBytes??0)+t}import{dirname as Va,join as Ka}from"path";function cr(e={}){return{id:"runtime-boundaries",facts:["runtime-boundary-observation","runtime-boundary-link"],run:({projectRoot:t,dbPath:n,onStatus:r})=>{let a=new N({projectRoot:t,dbPath:n,indexPath:e.indexPath??Ka(Va(n),"index.scip"),...e.evidenceDbPath?{evidenceDbPath:e.evidenceDbPath}:{}}),i,o=!1,s=!1;try{let l=e.reuseExisting||e.affectedFiles?_n(a):null;e.reuseExisting&&l?.extractorVersion===In?(i=l,o=!0):(i=En(a,{...l?{previousGraph:l}:{},...e.affectedFiles?{affectedFiles:e.affectedFiles}:{},...e.forceDerivedRebuild?{forceDerivedRebuild:!0}:{},profileSpan:b}),s=(i.coverage.filesReused??0)>0)}finally{a.close()}o||wn(n,i);let c={reused:o,incrementallyUpdated:s,observations:i.observations.length,links:i.links.length,frontiers:i.frontiers.length,filesScanned:i.coverage.filesScanned,errors:i.coverage.extractionErrors.length,phases:i.coverage.phases};return r?.(c.reused?`Reused ${c.observations} cached runtime-boundary observation(s) and ${c.links} link(s).`:c.incrementallyUpdated?`Incrementally refreshed runtime-boundary observations (${c.filesScanned-(i.coverage.filesReused??0)} file(s) extracted, ${i.coverage.filesReused??0} reused) and rebuilt ${c.links} link(s).`:`Extracted ${c.observations} runtime-boundary observation(s), ${c.links} link(s), and ${c.frontiers} unresolved frontier(s).`),!o&&i.coverage.phases&&r?.(`Runtime-boundary phases: ${i.coverage.phases.map(l=>`${l.id} ${l.durationMs.toFixed(0)}ms`).join(", ")}.`),c}}}import{createHash as ei}from"crypto";import{existsSync as ti}from"fs";import{dirname as ni,join as lr}from"path";function lt(e){let t=new Set;for(let n of e.uncertainty)t.add(n);e.projectIdentityChanged&&t.add("project-identity-changed");for(let n of e.changes)n.kind==="added"&&t.add("file-added"),n.kind==="deleted"&&t.add("file-deleted"),n.inputKind==="config"&&t.add("configuration-changed"),n.inputKind==="ambient"&&t.add("ambient-declaration-changed"),n.inputKind==="other"&&t.add("unclassified-input");return{fullProject:t.size>0,reasons:[...t].sort()}}function ue(e,t,n){let r=e.changes.map(s=>s.path).sort();if(r.length===0&&!e.projectIdentityChanged&&e.uncertainty.length===0)return{mode:"none",changedFiles:r,affectedFiles:[],reasons:[]};let a=new Set(n),i=lt(e),o=new Set(i.reasons);return r.some(s=>!a.has(s))&&o.add("changed-file-outside-project"),t===null?(o.add("dependency-graph-unavailable"),dr(r,a,o)):o.size>0?dr(r,a,o):{mode:"closure",changedFiles:r,affectedFiles:Za(r,t,a),reasons:[]}}function dr(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function Za(e,t,n){let r=new Map;for(let[o,s]of t)if(n.has(o))for(let c of s){if(!n.has(c))continue;let l=r.get(c)??new Set;l.add(o),r.set(c,l)}let a=new Set(e),i=[...e];for(let o=0;o<i.length;o+=1){let s=i[o];if(s!==void 0)for(let c of r.get(s)??[])a.has(c)||(a.add(c),i.push(c))}return[...a].sort()}var ri="<global-symbols>";function ai(e){let t=[];for(let n of e.all(`
1
+ import{a as Ce,b as xn,c as En,d as In,e as vn,f as _n,g as Tn,h as wn}from"./chunk-LEECKFCJ.js";import{a as Ne,b as Ae,c as or}from"./chunk-BBCIS4DX.js";import{a as jr}from"./chunk-ILMHV3KM.js";import{a as Pt,b as Cr}from"./chunk-P42EIXTA.js";import{a as dn,b as ln}from"./chunk-BKVWUP7Y.js";import{e as Yn,f as Qn,g as Kn,i as Vn}from"./chunk-W6STWDQI.js";import"./chunk-MPQ4OTBM.js";import{b as Xn}from"./chunk-OSR2GEHQ.js";import"./chunk-FRUSVINH.js";import"./chunk-YEN6CYC7.js";import"./chunk-WRQXLNYE.js";import{b as Wn,c as De,d as Me,e as Hn,f as Jn,g as zn}from"./chunk-2GRUZAQF.js";import"./chunk-HOENASQM.js";import"./chunk-YUKYB54I.js";import"./chunk-BJT7LSPK.js";import{a as de,b as Oe,c as he,d as Nn,e as Ln,f as An,g as $n,h as Gn,j as Or}from"./chunk-4WNW27SX.js";import{a as hn,b as yn}from"./chunk-F4FNK44D.js";import{a as $}from"./chunk-IICPE7B2.js";import{b as ue}from"./chunk-TQZV7KV4.js";import"./chunk-3L2ZBPEX.js";import{a as ke}from"./chunk-YXPUP5G2.js";import"./chunk-DRENNWRG.js";import{a as sn,b as cn,c as ve,d as le,e as Zn,f as er,h as St,i as sr,n as Fr}from"./chunk-SZHGTCPP.js";import{a as qe,b as vr,d as _r}from"./chunk-FIQRSHVM.js";import{a as xt}from"./chunk-MXNGIEPU.js";import{b as Tr,c as wr,d as Rt}from"./chunk-BE7ZZTMC.js";import"./chunk-2OOY75BW.js";import{A as bt,B as hr,C as yr,D as Ue,E as Sr,F as br,G as Pr,c as ht,e as tr,f as Y,g as Q,h as Le,i as nr,j as rr,k as ir,l as ar,m as $e,n as cr,o as dr,p as lr,q as ur,r as pr,s as gr,t as fr,u as Ge,v as W,w as Be,y as mr}from"./chunk-IZDPJ2QI.js";import{a as Sn,b as A,d as Rn}from"./chunk-WYPL7GF7.js";import{a as Un,d as yt,l as qn}from"./chunk-RTQ7NEKG.js";import{c as ae,d as me,e as Te,g as ut,h as gn}from"./chunk-GUFSG5TX.js";import"./chunk-MWN53KRN.js";import"./chunk-IW5XQG5G.js";import{b as bn,c as ft,d as Pn}from"./chunk-3AF4TUFK.js";import{b as Fe,c as Bn,f as Rr,j as xr,k as Er,l as Ir}from"./chunk-FGA2U4OR.js";import{a as oe}from"./chunk-B3PYOSCX.js";import"./chunk-H5EXS3HM.js";import{a as fn,e as E,f as G,g as mn}from"./chunk-HGFDYOVB.js";import{a as Ie,b as z,c as U,d as C}from"./chunk-JFMEXGFE.js";import{B as we,F as je,M as Cn,N as X,O as se,P as ce,Q as jn,R as On,S as mt,V as Fn,a as _e,b as un,c as lt,d as pn,da as kn,ea as Dn,f as q,fa as Mn,h as M,q as pt,z as gt}from"./chunk-KYSDI3GE.js";import{a as an,c as Ee,f as ie,g as ge,h as fe,i as on}from"./chunk-7F45LJKI.js";import{createHash as Rc}from"crypto";import{existsSync as L,mkdirSync as rt,mkdtempSync as xc,readdirSync as ua,renameSync as pa,rmSync as Z,statSync as Qt}from"fs";import{basename as tt,dirname as x,extname as Ec,join as O,resolve as Zi}from"path";import{platform as ea}from"os";import{execFileSync as Ua}from"child_process";import{constants as qa,copyFileSync as kr,linkSync as Wa,rmSync as Ha,statSync as Ja}from"fs";import{platform as za}from"os";var Xa=Object.freeze({size:e=>Ja(e).size,clone:Va,copy:(e,t)=>kr(e,t),link:(e,t)=>Wa(e,t),remove:e=>Ha(e,{force:!0})}),Ya=new Set(["EXDEV","EPERM","EMLINK","ENOTSUP","EOPNOTSUPP","ENOSYS","EINVAL"]),Qa=new Set(["ENOSYS","ENOTSUP","EOPNOTSUPP","EINVAL","EXDEV","ENOTTY"]);function K(e,t,n=Xa,r={}){let a=n.size(e);n.remove?.(t);try{return n.clone(e,t),{method:"reflink",bytes:a}}catch(i){if(!eo(i))throw i}if(r.shareImmutable&&n.link)try{return n.link(e,t),{method:"link",bytes:a}}catch(i){if(!Ka(i))throw i}return n.copy(e,t),{method:"copy",bytes:a}}function Ka(e){let t=e?.code;return typeof t=="string"&&Ya.has(t)}function Va(e,t){if(za()!=="darwin"){kr(e,t,qa.COPYFILE_FICLONE_FORCE);return}try{Ua("/bin/cp",["-c",e,t],{timeout:6e4,maxBuffer:64*1024,stdio:["ignore","ignore","pipe"]})}catch(n){throw Za(n)}}function Za(e){let t=e?.stderr,n=Buffer.isBuffer(t)?t.toString("utf8"):t??"";return/operation not supported|not supported/i.test(n)?Object.assign(e instanceof Error?e:new Error(String(e)),{code:"ENOTSUP"}):/cross-device link/i.test(n)?Object.assign(e instanceof Error?e:new Error(String(e)),{code:"EXDEV"}):e}function eo(e){let t=e?.code;return t!==void 0&&Qa.has(t)}function Dr(){return{reflinkedBytes:0,fallbackCopiedBytes:0,incrementalWrittenBytes:0}}function V(e,t){t.method==="reflink"||t.method==="link"?e.reflinkedBytes+=t.bytes:e.fallbackCopiedBytes+=t.bytes}function We(e,t){if(!Number.isSafeInteger(t)||t<0)throw new Error("incremental write bytes must be a non-negative integer");e.incrementalWrittenBytes=(e.incrementalWrittenBytes??0)+t}import{dirname as to,join as no}from"path";function Mr(e={}){return{id:"runtime-boundaries",facts:["runtime-boundary-observation","runtime-boundary-link"],run:async({projectRoot:t,dbPath:n,onStatus:r})=>{let a=new $({projectRoot:t,dbPath:n,indexPath:e.indexPath??no(to(n),"index.scip"),...e.evidenceDbPath?{evidenceDbPath:e.evidenceDbPath}:{}}),i,o=!1,s=!1;try{let d=e.reuseExisting||e.affectedFiles?Vn(a):null;e.reuseExisting&&d?.extractorVersion===Yn?(i=d,o=!0):(i=await Qn(a,{...d?{previousGraph:d}:{},...e.affectedFiles?{affectedFiles:e.affectedFiles}:{},...e.forceDerivedRebuild?{forceDerivedRebuild:!0}:{},profileSpan:E}),s=(i.coverage.filesReused??0)>0)}finally{a.close()}o||Kn(n,i);let c={reused:o,incrementallyUpdated:s,observations:i.observations.length,links:i.links.length,frontiers:i.frontiers.length,filesScanned:i.coverage.filesScanned,errors:i.coverage.extractionErrors.length,phases:i.coverage.phases};return r?.(c.reused?`Reused ${c.observations} cached runtime-boundary observation(s) and ${c.links} link(s).`:c.incrementallyUpdated?`Incrementally refreshed runtime-boundary observations (${c.filesScanned-(i.coverage.filesReused??0)} file(s) extracted, ${i.coverage.filesReused??0} reused) and rebuilt ${c.links} link(s).`:`Extracted ${c.observations} runtime-boundary observation(s), ${c.links} link(s), and ${c.frontiers} unresolved frontier(s).`),!o&&i.coverage.phases&&r?.(`Runtime-boundary phases: ${i.coverage.phases.map(d=>`${d.id} ${d.durationMs.toFixed(0)}ms`).join(", ")}.`),c}}}function ye(e){let t=new Set;for(let n of e.uncertainty)t.add(n);e.projectIdentityChanged&&t.add("project-identity-changed");for(let n of e.changes)n.kind==="added"&&t.add("file-added"),n.kind==="deleted"&&t.add("file-deleted"),n.inputKind==="config"&&t.add("configuration-changed"),n.inputKind==="ambient"&&t.add("ambient-declaration-changed"),n.inputKind==="other"&&t.add("unclassified-input");return{fullProject:t.size>0,reasons:[...t].sort()}}function Se(e,t,n){let r=e.changes.map(s=>s.path).sort();if(r.length===0&&!e.projectIdentityChanged&&e.uncertainty.length===0)return{mode:"none",changedFiles:r,affectedFiles:[],reasons:[]};let a=new Set(n),i=ye(e),o=new Set(i.reasons);return r.some(s=>!a.has(s))&&o.add("changed-file-outside-project"),t===null?(o.add("dependency-graph-unavailable"),Nr(r,a,o)):o.size>0?Nr(r,a,o):{mode:"closure",changedFiles:r,affectedFiles:ro(r,t,a),reasons:[]}}function Nr(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function ro(e,t,n){let r=new Map;for(let[o,s]of t)if(n.has(o))for(let c of s){if(!n.has(c))continue;let d=r.get(c)??new Set;d.add(o),r.set(c,d)}let a=new Set(e),i=[...e];for(let o=0;o<i.length;o+=1){let s=i[o];if(s!==void 0)for(let c of r.get(s)??[])a.has(c)||(a.add(c),i.push(c))}return[...a].sort()}import{createHash as io}from"crypto";import{existsSync as ao}from"fs";import{dirname as oo,join as Lr}from"path";var so="<global-symbols>";function co(e){let t=[];for(let n of e.all(`
2
2
  SELECT relative_path, language, position_encoding, text
3
3
  FROM documents
4
4
  `))t.push({relativePath:n.relative_path,kind:"document",values:[n.language,n.position_encoding,n.text]});for(let n of e.all(`
@@ -25,7 +25,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
25
25
  FROM defn_enclosing_ranges r
26
26
  JOIN documents d ON d.id = r.document_id
27
27
  JOIN global_symbols g ON g.id = r.symbol_id
28
- `))t.push({relativePath:n.relative_path,kind:"definition",values:ut(n,[n.start_line,n.start_char,n.end_line,n.end_char])});for(let n of e.all(`
28
+ `))t.push({relativePath:n.relative_path,kind:"definition",values:Et(n,[n.start_line,n.start_char,n.end_line,n.end_char])});for(let n of e.all(`
29
29
  SELECT d.relative_path,
30
30
  c.chunk_index,
31
31
  m.role,
@@ -40,7 +40,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
40
40
  JOIN chunks c ON c.id = m.chunk_id
41
41
  JOIN documents d ON d.id = c.document_id
42
42
  JOIN global_symbols g ON g.id = m.symbol_id
43
- `))t.push({relativePath:n.relative_path,kind:"mention",values:ut(n,[n.chunk_index,n.role])});for(let n of e.all(`
43
+ `))t.push({relativePath:n.relative_path,kind:"mention",values:Et(n,[n.chunk_index,n.role])});for(let n of e.all(`
44
44
  SELECT g.symbol,
45
45
  g.display_name,
46
46
  g.kind,
@@ -54,8 +54,8 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
54
54
  ) AND NOT EXISTS (
55
55
  SELECT 1 FROM mentions m WHERE m.symbol_id = g.id
56
56
  )
57
- `))t.push({relativePath:ri,kind:"global-symbol",values:ut(n)});return ii(t)}function ii(e){let t=new Map;for(let r of e){let a=JSON.stringify([r.kind,r.values]),i=t.get(r.relativePath)??[];i.push(a),t.set(r.relativePath,i)}let n=new Map;for(let[r,a]of[...t].sort(([i],[o])=>i.localeCompare(o))){let i=ei("sha256");for(let o of a.sort())i.update(String(Buffer.byteLength(o))),i.update(":"),i.update(o),i.update(`
58
- `);n.set(r,i.digest("hex"))}return n}function oi(e,t){let n=[],r=[],a=[],i=[],o=new Set([...e.keys(),...t.keys()]);for(let s of[...o].sort()){let c=e.get(s),l=t.get(s);c===void 0?n.push(s):l===void 0?a.push(s):c!==l?r.push(s):i.push(s)}return{addedFiles:n,modifiedFiles:r,deletedFiles:a,changedFiles:[...n,...r,...a].sort(),unchangedFiles:i}}function pt(e,t,n){let r=new Set(e.affectedFiles),a=new Set(t.changedFiles),i=e.mode==="full-project"?[]:t.changedFiles.filter(c=>!r.has(c)),o=e.affectedFiles.filter(c=>!a.has(c)).sort(),s=t.changedFiles.length-i.length;return{passed:i.length===0,recall:t.changedFiles.length===0?1:s/t.changedFiles.length,affectedRatio:n===0?0:e.affectedFiles.length/n,predictedFiles:[...e.affectedFiles].sort(),actualFiles:[...t.changedFiles],missingFiles:i,extraFiles:o}}function gt(e,t=pi){let n=t.wallNow===void 0&&t.monotonicNow===void 0,r=t.monotonicNow??t.now,a=t.wallNow??t.now,i=r(),o=(l,d)=>{let g=r();return fr(e.refreshResult,l,n?g:a(),Math.max(0,g-i),d)};if(!t.databaseExists(e.previousDbPath))return o("prior-index-unavailable");if(!t.databaseExists(e.candidateDbPath))return o("candidate-index-unavailable");let s=null,c=null;try{s=t.openDatabase(e.projectRoot,e.previousDbPath,e.previousIndexPath),c=t.openDatabase(e.projectRoot,e.candidateDbPath,e.candidateIndexPath);let l=[...new Set([...t.indexedPaths(s),...t.indexedPaths(c)])].sort(),d=se(e.previousSnapshot,e.currentSnapshot),g=new Set(l),u=d.changes.length>0&&!lt(d).fullProject&&d.changes.every(I=>g.has(I.path)),p=ue(d,u?t.dependencyGraph(s):new Map,l),P=oi(t.factDigests(s),t.factDigests(c)),E=r();return{version:1,status:"evaluated",refreshResult:e.refreshResult,recordedAt:new Date(n?E:a()).toISOString(),durationMs:Math.max(0,E-i),manifest:d,plan:p,comparison:P,evaluation:pt(p,P,l.length)}}catch(l){return o("oracle-error",l instanceof Error?l.message:String(l))}finally{ur(s),ur(c)}}function pr(e,t,n,r=Date.now()){return fr(e,t,r,0,n)}function si(e){let t=ni(e);return{latestPath:lr(t,"affected-shadow-latest.json"),historyPath:lr(t,"affected-shadow.jsonl")}}function gr(e,t,n=gi){let r=si(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var ci=8*1024*1024,di=jn;function li(e){let t={historyVersion:1,sourceVersion:e.version,refreshResult:e.refreshResult,recordedAt:e.recordedAt,durationMs:e.durationMs};return e.status==="unavailable"?{...t,status:"unavailable",reason:e.reason,...e.error?{error:e.error}:{}}:{...t,status:"evaluated",mode:e.plan.mode,passed:e.evaluation.passed,recall:e.evaluation.recall,affectedRatio:e.evaluation.affectedRatio,predictedFileCount:e.evaluation.predictedFiles.length,actualFileCount:e.evaluation.actualFiles.length,missingFileCount:e.evaluation.missingFiles.length,fallbackReasons:[...e.plan.reasons]}}function ui(e,t,n=ci){Fn(e,li(t),{maxSegmentBytes:n,previousSuffix:di})}function ut(e,t=[]){let n=[];for(let r of t)n.push(r);return n.push(e.symbol,e.display_name,e.kind,e.documentation,e.signature_hex,e.enclosing_symbol,e.relationships_hex),n}var pi={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:R,databaseExists:e=>ti(e),openDatabase:(e,t,n)=>new N({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>Ie(e),dependencyGraph:e=>Sn(e),factDigests:e=>ai(e)},gi={appendHistory:ui,writeLatest:(e,t)=>mn(e,t,{spacing:2,trailingNewline:!0})};function fr(e,t,n,r,a){return{version:1,status:"unavailable",refreshResult:e,recordedAt:new Date(n).toISOString(),durationMs:r,reason:t,...a?{error:a}:{}}}function ur(e){try{e?.close()}catch{}}import{readdirSync as fi}from"fs";import{isAbsolute as mr,join as mi,resolve as hi}from"path";var Oe="@sourcegraph/scip-typescript@0.4.0",hr="scip-python-plus@0.7.5",yr="github.com/sourcegraph/scip-go@v0.2.7",br="scip-dotnet@0.2.14",yi="scip_dart@1.6.2",bi={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:t,indexerBinary:n,projectPath:r})=>r?{binary:n,args:["index","--output",e,"--no-progress-bar","--no-global-caches",r]}:t?{binary:n,args:["index","--pnpm-workspaces","--output",e,"--no-progress-bar","--no-global-caches"]}:{binary:n,args:["index","--output",e,"--no-progress-bar","--no-global-caches"]},markerFiles:[...F.typescript],installMethods:[{label:"npm",identity:Oe,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",Oe]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,indexerBinary:t})=>({binary:t,args:["index","--output",e,"--no-progress-bar","--no-global-caches"]}),markerFiles:[...F.javascript],installMethods:[{label:"npm",identity:Oe,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",Oe]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...F.java],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...F.scala],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...F.kotlin],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:te.language,indexerBinary:te.indexerBinary,checkCommand:`${te.indexerBinary} --version`,indexArgs:({outputPath:e})=>({binary:te.indexerBinary,args:["scip",".","--output",e]}),markerFiles:[...F.rust],installMethods:[],installUrl:te.installUrl},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:e,indexerBinary:t})=>({binary:t,args:["index","--output",e,"--project-name","project"]}),markerFiles:[...F.python],installMethods:[{label:"npm",identity:hr,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",hr]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},clojure:{language:"clojure",indexerBinary:"scip-clojure",projectLocalBinaries:["node_modules/.bin/scip-clojure"],checkCommand:"scip-clojure -h",indexArgs:({projectRoot:e,outputPath:t,indexerBinary:n,configPath:r})=>{let a=["-root",e,"-output",t];return r&&a.push("-config",mr(r)?r:hi(e,r)),{binary:n,args:a}},markerFiles:[...F.clojure],installMethods:[],installUrl:"https://github.com/PlunderStruck/scip-clojure"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:[...F.ruby],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:[...F.go],installMethods:[{label:"go install",identity:yr,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",yr]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:[...F.cpp],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:[...F.c],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",Sr(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...F.csharp],installMethods:[{label:"dotnet",identity:br,destination:"dotnet global tool directory",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet","--version","0.2.14"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",Sr(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...F.vb],installMethods:[{label:"dotnet",identity:br,destination:"dotnet global tool directory",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet","--version","0.2.14"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:t})=>({binary:e,args:["--output",t]}),markerFiles:[...F.dart],installMethods:[{label:"dart pub",identity:yi,destination:"Dart pub global cache",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart","1.6.2"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({indexerBinary:e})=>mr(e)?{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",e]}:{binary:e,args:[]},defaultOutputPath:"index.scip",markerFiles:[...F.php],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function Pr(e){if(!(e.projectPath||e.pnpmWorkspaces)){if(e.language==="typescript")return"{}";if(e.language==="javascript")return'{"compilerOptions":{"allowJs":true}}'}}function ft(e){return bi[e]}function Sr(e,t){let n;try{n=fi(e)}catch{return null}for(let r of t)for(let a of n)if(a.endsWith(r))return mi(e,a);return null}import{createHash as Si}from"crypto";import{existsSync as ht,rmSync as xr,statSync as Pi}from"fs";import{resolve as xi}from"path";import Ir from"better-sqlite3";var Ri={documents:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"language",type:"TEXT",notnull:0,pk:0},{name:"relative_path",type:"TEXT",notnull:1,pk:0},{name:"position_encoding",type:"TEXT",notnull:0,pk:0},{name:"text",type:"TEXT",notnull:0,pk:0}],chunks:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"document_id",type:"INTEGER",notnull:1,pk:0},{name:"chunk_index",type:"INTEGER",notnull:1,pk:0},{name:"start_line",type:"INTEGER",notnull:1,pk:0},{name:"end_line",type:"INTEGER",notnull:1,pk:0},{name:"occurrences",type:"BLOB",notnull:1,pk:0}],global_symbols:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"symbol",type:"TEXT",notnull:1,pk:0},{name:"display_name",type:"TEXT",notnull:0,pk:0},{name:"kind",type:"INTEGER",notnull:0,pk:0},{name:"documentation",type:"TEXT",notnull:0,pk:0},{name:"signature",type:"BLOB",notnull:0,pk:0},{name:"enclosing_symbol",type:"TEXT",notnull:0,pk:0},{name:"relationships",type:"BLOB",notnull:0,pk:0}],mentions:[{name:"chunk_id",type:"INTEGER",notnull:1,pk:1},{name:"symbol_id",type:"INTEGER",notnull:1,pk:2},{name:"role",type:"INTEGER",notnull:1,pk:3}],defn_enclosing_ranges:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"document_id",type:"INTEGER",notnull:1,pk:0},{name:"symbol_id",type:"INTEGER",notnull:1,pk:0},{name:"start_line",type:"INTEGER",notnull:1,pk:0},{name:"start_char",type:"INTEGER",notnull:1,pk:0},{name:"end_line",type:"INTEGER",notnull:1,pk:0},{name:"end_char",type:"INTEGER",notnull:1,pk:0}]},vi={idx_chunks_line_range:{table:"chunks",columns:["document_id","start_line","end_line"]},idx_defn_enclosing_ranges_document:{table:"defn_enclosing_ranges",columns:["document_id","start_line","end_line"]},idx_defn_enclosing_ranges_symbol_id:{table:"defn_enclosing_ranges",columns:["symbol_id"]},idx_mentions_symbol_id_role:{table:"mentions",columns:["symbol_id","role"]}};function Er(e){let t=R(),n=Rr(e.affectedFiles),r=Rr(e.deletedFiles??[],!0),a=new Set(n);if(r.some(s=>!a.has(s)))throw new Error("deleted incremental documents must be included in the affected document set");let i=n.length-r.length;if(Ei(e.previousDbPath,e.miniDbPath,e.candidateDbPath),!ht(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!ht(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");b("reindex.publish.sqlite-patch.validate-inputs",()=>{mt(e.previousDbPath,"previous SQLite generation",!1),mt(e.miniDbPath,"incremental SQLite mini database")}),e.reuseCandidate?b("reindex.publish.sqlite-patch.reuse-candidate",()=>mt(e.candidateDbPath,"incremental SQLite candidate",!1)):b("reindex.publish.sqlite-patch.clone",()=>{xr(e.candidateDbPath,{force:!0});let s=H(e.previousDbPath,e.candidateDbPath);e.writeTelemetry&&J(e.writeTelemetry,s)});let o=null;try{o=b("reindex.publish.sqlite-patch.open",()=>{let p=new Ir(e.candidateDbPath,{fileMustExist:!0});return p.pragma("busy_timeout = 5000"),p.pragma("foreign_keys = ON"),p.prepare("ATTACH DATABASE ? AS incremental").run(e.miniDbPath),yt(p,"main","candidate SQLite generation"),yt(p,"incremental","incremental SQLite mini database"),p});let{priorAffectedCount:s,previousFactDigests:c}=b("reindex.publish.sqlite-patch.prepare",()=>(ji(o,n,r),{...Fi(o,n.length,r.length),previousFactDigests:bt(o,"main",!0)})),l=B(o,"SELECT COUNT(*) AS value FROM main.documents"),d=o.transaction(()=>{b("reindex.publish.sqlite-patch.transaction.symbol-ownership",()=>Ti(o)),b("reindex.publish.sqlite-patch.transaction.shared-definitions",()=>ki(o)),b("reindex.publish.sqlite-patch.transaction.delete",()=>Di(o)),e.onStage?.("after-delete"),b("reindex.publish.sqlite-patch.transaction.reconcile-symbols",()=>Oi(o)),e.onStage?.("after-symbol-reconciliation"),b("reindex.publish.sqlite-patch.transaction.insert",()=>Mi(o)),e.onStage?.("after-insert"),b("reindex.publish.sqlite-patch.transaction.prune-symbols",()=>Ci(o,e.trustedPriorGeneration===!0)),b("reindex.publish.sqlite-patch.transaction.validate",()=>Ai(o,i,l,s)),e.onStage?.("before-commit")});b("reindex.publish.sqlite-patch.transaction",()=>d.immediate()),e.writeTelemetry&&De(e.writeTelemetry,2*Ii(e.candidateDbPath)),b("reindex.publish.sqlite-patch.integrity",()=>_i(o,"candidate SQLite generation",!e.deferIntegrity&&e.trustedPriorGeneration!==!0));let g=b("reindex.publish.sqlite-patch.validate-facts",()=>Li(o)),u=[...new Set([...c.keys(),...g.keys()])].filter(p=>c.get(p)!==g.get(p)).sort();return o.exec("DETACH DATABASE incremental"),o.close(),o=null,{candidateDbPath:e.candidateDbPath,affectedDocumentCount:n.length,changedDocumentPaths:u,durationMs:R()-t}}catch(s){try{o?.close()}finally{xr(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${s instanceof Error?s.message:String(s)}`,{cause:s})}}function Ii(e){let t=0;for(let n of["-wal","-journal"]){let r=`${e}${n}`;ht(r)&&(t+=Pi(r).size)}return t}function Rr(e,t=!1){if(!t&&e.length===0)throw new Error("incremental SQLite publication requires affected documents");let n=[...e].sort();for(let r of n)if(!r||r.startsWith("/")||r.includes("\\")||r.split("/").includes(".."))throw new Error(`invalid affected document path: ${r}`);if(new Set(n).size!==n.length)throw new Error("incremental SQLite publication contains duplicate affected documents");return n}function Ei(e,t,n){let r=[e,t,n].map(a=>xi(a));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function mt(e,t,n=!0){let r=new Ir(e,{readonly:!0,fileMustExist:!0});try{yt(r,"main",t),n&&wi(r,"main",t)}finally{r.close()}}function yt(e,t,n){for(let[r,a]of Object.entries(Ri)){let o=e.prepare(`PRAGMA ${t}.table_info('${r}')`).all().map(({name:s,type:c,notnull:l,pk:d})=>({name:s,type:c.toUpperCase(),notnull:l,pk:d}));if(JSON.stringify(o)!==JSON.stringify(a))throw new Error(`${n} schema changed for table ${r}`)}for(let[r,a]of Object.entries(vi)){let i=e.prepare(`SELECT tbl_name FROM ${t}.sqlite_master WHERE type = 'index' AND name = ?`).get(r),o=e.prepare(`PRAGMA ${t}.index_info('${r}')`).all().map(s=>s.name);if(i?.tbl_name!==a.table||JSON.stringify(o)!==JSON.stringify(a.columns))throw new Error(`${n} schema changed for index ${r}`)}vr(e,t,"documents",["relative_path"],n),vr(e,t,"global_symbols",["symbol"],n)}function vr(e,t,n,r,a){if(!e.prepare(`PRAGMA ${t}.index_list('${n}')`).all().some(s=>{if(s.unique!==1)return!1;let c=e.prepare(`PRAGMA ${t}.index_info('${s.name}')`).all().map(l=>l.name);return JSON.stringify(c)===JSON.stringify(r)}))throw new Error(`${a} lost the unique ${n}(${r.join(", ")}) constraint`)}function wi(e,t,n){let r=e.prepare(`PRAGMA ${t}.integrity_check`).pluck().get();if(r!=="ok")throw new Error(`${n} failed integrity_check: ${String(r)}`);if(e.prepare(`PRAGMA ${t}.foreign_key_check`).all().length>0)throw new Error(`${n} failed foreign_key_check`)}function _i(e,t,n){if(e.pragma("foreign_keys",{simple:!0})!==1)throw new Error(`${t} lost foreign-key enforcement`);if(!n)return;let r=e.prepare("PRAGMA main.quick_check").pluck().get();if(r!=="ok")throw new Error(`${t} failed quick_check: ${String(r)}`)}function ji(e,t,n){e.exec("CREATE TEMP TABLE incremental_affected_paths (relative_path TEXT PRIMARY KEY) WITHOUT ROWID"),e.exec("CREATE TEMP TABLE incremental_deleted_paths (relative_path TEXT PRIMARY KEY) WITHOUT ROWID");let r=e.prepare("INSERT INTO temp.incremental_affected_paths(relative_path) VALUES (?)"),a=e.prepare("INSERT INTO temp.incremental_deleted_paths(relative_path) VALUES (?)");e.transaction(o=>{for(let s of o)r.run(s);for(let s of n)a.run(s)})(t)}function Fi(e,t,n){let r=B(e,"SELECT COUNT(*) AS value FROM incremental.documents"),a=B(e,`SELECT COUNT(*) AS value
57
+ `))t.push({relativePath:so,kind:"global-symbol",values:Et(n)});return lo(t)}function lo(e){let t=new Map;for(let r of e){let a=JSON.stringify([r.kind,r.values]),i=t.get(r.relativePath)??[];i.push(a),t.set(r.relativePath,i)}let n=new Map;for(let[r,a]of[...t].sort(([i],[o])=>i.localeCompare(o))){let i=io("sha256");for(let o of a.sort())i.update(String(Buffer.byteLength(o))),i.update(":"),i.update(o),i.update(`
58
+ `);n.set(r,i.digest("hex"))}return n}function uo(e,t){let n=[],r=[],a=[],i=[],o=new Set([...e.keys(),...t.keys()]);for(let s of[...o].sort()){let c=e.get(s),d=t.get(s);c===void 0?n.push(s):d===void 0?a.push(s):c!==d?r.push(s):i.push(s)}return{addedFiles:n,modifiedFiles:r,deletedFiles:a,changedFiles:[...n,...r,...a].sort(),unchangedFiles:i}}function It(e,t,n){let r=new Set(e.affectedFiles),a=new Set(t.changedFiles),i=e.mode==="full-project"?[]:t.changedFiles.filter(c=>!r.has(c)),o=e.affectedFiles.filter(c=>!a.has(c)).sort(),s=t.changedFiles.length-i.length;return{passed:i.length===0,recall:t.changedFiles.length===0?1:s/t.changedFiles.length,affectedRatio:n===0?0:e.affectedFiles.length/n,predictedFiles:[...e.affectedFiles].sort(),actualFiles:[...t.changedFiles],missingFiles:i,extraFiles:o}}function vt(e,t=yo){let n=t.wallNow===void 0&&t.monotonicNow===void 0,r=t.monotonicNow??t.now,a=t.wallNow??t.now,i=r(),o=(d,l)=>{let g=r();return Br(e.refreshResult,d,n?g:a(),Math.max(0,g-i),l)};if(!t.databaseExists(e.previousDbPath))return o("prior-index-unavailable");if(!t.databaseExists(e.candidateDbPath))return o("candidate-index-unavailable");if(e.refreshResult==="rebuilt"&&q(e.previousSnapshot,e.currentSnapshot).changes.length===0)return o("no-input-changes");let s=null,c=null;try{s=t.openDatabase(e.projectRoot,e.previousDbPath,e.previousIndexPath),c=t.openDatabase(e.projectRoot,e.candidateDbPath,e.candidateIndexPath);let d=[...new Set([...t.indexedPaths(s),...t.indexedPaths(c)])].sort(),l=q(e.previousSnapshot,e.currentSnapshot),g=new Set(d),p=l.changes.length>0&&!ye(l).fullProject&&l.changes.every(j=>g.has(j.path)),f=Se(l,p?t.dependencyGraph(s):new Map,d),R=uo(t.factDigests(s),t.factDigests(c)),T=r();return{version:1,status:"evaluated",refreshResult:e.refreshResult,recordedAt:new Date(n?T:a()).toISOString(),durationMs:Math.max(0,T-i),manifest:l,plan:f,comparison:R,evaluation:It(f,R,d.length)}}catch(d){return o("oracle-error",d instanceof Error?d.message:String(d))}finally{Ar(s),Ar(c)}}function $r(e,t,n,r=Date.now()){return Br(e,t,r,0,n)}function po(e){let t=oo(e);return{latestPath:Lr(t,"affected-shadow-latest.json"),historyPath:Lr(t,"affected-shadow.jsonl")}}function Gr(e,t,n=So){let r=po(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var go=8*1024*1024,fo=Zn;function mo(e){let t={historyVersion:1,sourceVersion:e.version,refreshResult:e.refreshResult,recordedAt:e.recordedAt,durationMs:e.durationMs};return e.status==="unavailable"?{...t,status:"unavailable",reason:e.reason,...e.error?{error:e.error}:{}}:{...t,status:"evaluated",mode:e.plan.mode,passed:e.evaluation.passed,recall:e.evaluation.recall,affectedRatio:e.evaluation.affectedRatio,predictedFileCount:e.evaluation.predictedFiles.length,actualFileCount:e.evaluation.actualFiles.length,missingFileCount:e.evaluation.missingFiles.length,fallbackReasons:[...e.plan.reasons]}}function ho(e,t,n=go){er(e,mo(t),{maxSegmentBytes:n,previousSuffix:fo})}function Et(e,t=[]){let n=[];for(let r of t)n.push(r);return n.push(e.symbol,e.display_name,e.kind,e.documentation,e.signature_hex,e.enclosing_symbol,e.relationships_hex),n}var yo={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:C,databaseExists:e=>ao(e),openDatabase:(e,t,n)=>new $({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>ke(e),dependencyGraph:e=>Wn(e),factDigests:e=>co(e)},So={appendHistory:ho,writeLatest:(e,t)=>Fe(e,t,{spacing:2,trailingNewline:!0})};function Br(e,t,n,r,a){return{version:1,status:"unavailable",refreshResult:e,recordedAt:new Date(n).toISOString(),durationMs:r,reason:t,...a?{error:a}:{}}}function Ar(e){try{e?.close()}catch{}}import{readdirSync as bo}from"fs";import{isAbsolute as Ur,join as Po,resolve as Ro}from"path";var He="@sourcegraph/scip-typescript@0.4.0",qr="scip-python-plus@0.7.5",Wr="github.com/sourcegraph/scip-go@v0.2.7",Hr="scip-dotnet@0.2.14",xo="scip_dart@1.6.2",Eo={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:t,indexerBinary:n,projectPath:r})=>r?{binary:n,args:["index","--output",e,"--no-progress-bar","--no-global-caches",r]}:t?{binary:n,args:["index","--pnpm-workspaces","--output",e,"--no-progress-bar","--no-global-caches"]}:{binary:n,args:["index","--output",e,"--no-progress-bar","--no-global-caches"]},markerFiles:[...M.typescript],installMethods:[{label:"npm",identity:He,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",He]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,indexerBinary:t})=>({binary:t,args:["index","--output",e,"--no-progress-bar","--no-global-caches"]}),markerFiles:[...M.javascript],installMethods:[{label:"npm",identity:He,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",He]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...M.java],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...M.scala],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...M.kotlin],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:de.language,indexerBinary:de.indexerBinary,checkCommand:`${de.indexerBinary} --version`,indexArgs:({outputPath:e})=>({binary:de.indexerBinary,args:["scip",".","--output",e]}),markerFiles:[...M.rust],installMethods:[],installUrl:de.installUrl},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:e,indexerBinary:t})=>({binary:t,args:["index","--output",e,"--project-name","project"]}),markerFiles:[...M.python],installMethods:[{label:"npm",identity:qr,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",qr]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},clojure:{language:"clojure",indexerBinary:"scip-clojure",projectLocalBinaries:["node_modules/.bin/scip-clojure"],checkCommand:"scip-clojure -h",indexArgs:({projectRoot:e,outputPath:t,indexerBinary:n,configPath:r})=>{let a=["-root",e,"-output",t];return r&&a.push("-config",Ur(r)?r:Ro(e,r)),{binary:n,args:a}},markerFiles:[...M.clojure],installMethods:[],installUrl:"https://github.com/PlunderStruck/scip-clojure"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:[...M.ruby],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:[...M.go],installMethods:[{label:"go install",identity:Wr,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Wr]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:[...M.cpp],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:[...M.c],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",Jr(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...M.csharp],installMethods:[{label:"dotnet",identity:Hr,destination:"dotnet global tool directory",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet","--version","0.2.14"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",Jr(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...M.vb],installMethods:[{label:"dotnet",identity:Hr,destination:"dotnet global tool directory",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet","--version","0.2.14"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:t})=>({binary:e,args:["--output",t]}),markerFiles:[...M.dart],installMethods:[{label:"dart pub",identity:xo,destination:"Dart pub global cache",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart","1.6.2"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({indexerBinary:e})=>Ur(e)?{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",e]}:{binary:e,args:[]},defaultOutputPath:"index.scip",markerFiles:[...M.php],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function zr(e){if(!(e.projectPath||e.pnpmWorkspaces)){if(e.language==="typescript")return"{}";if(e.language==="javascript")return'{"compilerOptions":{"allowJs":true}}'}}function _t(e){return Eo[e]}function Jr(e,t){let n;try{n=bo(e)}catch{return null}for(let r of t)for(let a of n)if(a.endsWith(r))return Po(e,a);return null}import{createHash as Io}from"crypto";import{existsSync as wt,rmSync as Xr,statSync as vo}from"fs";import{resolve as _o}from"path";import Kr from"better-sqlite3";var To={documents:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"language",type:"TEXT",notnull:0,pk:0},{name:"relative_path",type:"TEXT",notnull:1,pk:0},{name:"position_encoding",type:"TEXT",notnull:0,pk:0},{name:"text",type:"TEXT",notnull:0,pk:0}],chunks:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"document_id",type:"INTEGER",notnull:1,pk:0},{name:"chunk_index",type:"INTEGER",notnull:1,pk:0},{name:"start_line",type:"INTEGER",notnull:1,pk:0},{name:"end_line",type:"INTEGER",notnull:1,pk:0},{name:"occurrences",type:"BLOB",notnull:1,pk:0}],global_symbols:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"symbol",type:"TEXT",notnull:1,pk:0},{name:"display_name",type:"TEXT",notnull:0,pk:0},{name:"kind",type:"INTEGER",notnull:0,pk:0},{name:"documentation",type:"TEXT",notnull:0,pk:0},{name:"signature",type:"BLOB",notnull:0,pk:0},{name:"enclosing_symbol",type:"TEXT",notnull:0,pk:0},{name:"relationships",type:"BLOB",notnull:0,pk:0}],mentions:[{name:"chunk_id",type:"INTEGER",notnull:1,pk:1},{name:"symbol_id",type:"INTEGER",notnull:1,pk:2},{name:"role",type:"INTEGER",notnull:1,pk:3}],defn_enclosing_ranges:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"document_id",type:"INTEGER",notnull:1,pk:0},{name:"symbol_id",type:"INTEGER",notnull:1,pk:0},{name:"start_line",type:"INTEGER",notnull:1,pk:0},{name:"start_char",type:"INTEGER",notnull:1,pk:0},{name:"end_line",type:"INTEGER",notnull:1,pk:0},{name:"end_char",type:"INTEGER",notnull:1,pk:0}]},wo={idx_chunks_line_range:{table:"chunks",columns:["document_id","start_line","end_line"]},idx_defn_enclosing_ranges_document:{table:"defn_enclosing_ranges",columns:["document_id","start_line","end_line"]},idx_defn_enclosing_ranges_symbol_id:{table:"defn_enclosing_ranges",columns:["symbol_id"]},idx_mentions_symbol_id_role:{table:"mentions",columns:["symbol_id","role"]}};function Vr(e){let t=C(),n=Yr(e.affectedFiles),r=Yr(e.deletedFiles??[],!0),a=new Set(n);if(r.some(s=>!a.has(s)))throw new Error("deleted incremental documents must be included in the affected document set");let i=n.length-r.length;if(jo(e.previousDbPath,e.miniDbPath,e.candidateDbPath),!wt(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!wt(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");E("reindex.publish.sqlite-patch.validate-inputs",()=>{Tt(e.previousDbPath,"previous SQLite generation",!1),Tt(e.miniDbPath,"incremental SQLite mini database")}),e.reuseCandidate?E("reindex.publish.sqlite-patch.reuse-candidate",()=>Tt(e.candidateDbPath,"incremental SQLite candidate",!1)):E("reindex.publish.sqlite-patch.clone",()=>{Xr(e.candidateDbPath,{force:!0});let s=K(e.previousDbPath,e.candidateDbPath);e.writeTelemetry&&V(e.writeTelemetry,s)});let o=null;try{o=E("reindex.publish.sqlite-patch.open",()=>{let f=new Kr(e.candidateDbPath,{fileMustExist:!0});return f.pragma("busy_timeout = 5000"),f.pragma("foreign_keys = ON"),f.prepare("ATTACH DATABASE ? AS incremental").run(e.miniDbPath),Ct(f,"main","candidate SQLite generation"),Ct(f,"incremental","incremental SQLite mini database"),f});let{priorAffectedCount:s,previousFactDigests:c}=E("reindex.publish.sqlite-patch.prepare",()=>(ko(o,n,r),{...Do(o,n.length,r.length),previousFactDigests:jt(o,"main",!0)})),d=H(o,"SELECT COUNT(*) AS value FROM main.documents"),l=o.transaction(()=>{E("reindex.publish.sqlite-patch.transaction.symbol-ownership",()=>Mo(o)),E("reindex.publish.sqlite-patch.transaction.shared-definitions",()=>No(o)),E("reindex.publish.sqlite-patch.transaction.delete",()=>Lo(o)),e.onStage?.("after-delete"),E("reindex.publish.sqlite-patch.transaction.reconcile-symbols",()=>Ao(o)),e.onStage?.("after-symbol-reconciliation"),E("reindex.publish.sqlite-patch.transaction.insert",()=>$o(o)),e.onStage?.("after-insert"),E("reindex.publish.sqlite-patch.transaction.prune-symbols",()=>Go(o,e.trustedPriorGeneration===!0)),E("reindex.publish.sqlite-patch.transaction.validate",()=>Bo(o,i,d,s)),e.onStage?.("before-commit")});E("reindex.publish.sqlite-patch.transaction",()=>l.immediate()),e.writeTelemetry&&We(e.writeTelemetry,2*Co(e.candidateDbPath)),E("reindex.publish.sqlite-patch.integrity",()=>Fo(o,"candidate SQLite generation",!e.deferIntegrity&&e.trustedPriorGeneration!==!0));let g=E("reindex.publish.sqlite-patch.validate-facts",()=>Uo(o)),p=[...new Set([...c.keys(),...g.keys()])].filter(f=>c.get(f)!==g.get(f)).sort();return o.exec("DETACH DATABASE incremental"),o.close(),o=null,{candidateDbPath:e.candidateDbPath,affectedDocumentCount:n.length,changedDocumentPaths:p,durationMs:C()-t}}catch(s){try{o?.close()}finally{Xr(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${s instanceof Error?s.message:String(s)}`,{cause:s})}}function Co(e){let t=0;for(let n of["-wal","-journal"]){let r=`${e}${n}`;wt(r)&&(t+=vo(r).size)}return t}function Yr(e,t=!1){if(!t&&e.length===0)throw new Error("incremental SQLite publication requires affected documents");let n=[...e].sort();for(let r of n)if(!r||r.startsWith("/")||r.includes("\\")||r.split("/").includes(".."))throw new Error(`invalid affected document path: ${r}`);if(new Set(n).size!==n.length)throw new Error("incremental SQLite publication contains duplicate affected documents");return n}function jo(e,t,n){let r=[e,t,n].map(a=>_o(a));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function Tt(e,t,n=!0){let r=new Kr(e,{readonly:!0,fileMustExist:!0});try{Ct(r,"main",t),n&&Oo(r,"main",t)}finally{r.close()}}function Ct(e,t,n){for(let[r,a]of Object.entries(To)){let o=e.prepare(`PRAGMA ${t}.table_info('${r}')`).all().map(({name:s,type:c,notnull:d,pk:l})=>({name:s,type:c.toUpperCase(),notnull:d,pk:l}));if(JSON.stringify(o)!==JSON.stringify(a))throw new Error(`${n} schema changed for table ${r}`)}for(let[r,a]of Object.entries(wo)){let i=e.prepare(`SELECT tbl_name FROM ${t}.sqlite_master WHERE type = 'index' AND name = ?`).get(r),o=e.prepare(`PRAGMA ${t}.index_info('${r}')`).all().map(s=>s.name);if(i?.tbl_name!==a.table||JSON.stringify(o)!==JSON.stringify(a.columns))throw new Error(`${n} schema changed for index ${r}`)}Qr(e,t,"documents",["relative_path"],n),Qr(e,t,"global_symbols",["symbol"],n)}function Qr(e,t,n,r,a){if(!e.prepare(`PRAGMA ${t}.index_list('${n}')`).all().some(s=>{if(s.unique!==1)return!1;let c=e.prepare(`PRAGMA ${t}.index_info('${s.name}')`).all().map(d=>d.name);return JSON.stringify(c)===JSON.stringify(r)}))throw new Error(`${a} lost the unique ${n}(${r.join(", ")}) constraint`)}function Oo(e,t,n){let r=e.prepare(`PRAGMA ${t}.integrity_check`).pluck().get();if(r!=="ok")throw new Error(`${n} failed integrity_check: ${String(r)}`);if(e.prepare(`PRAGMA ${t}.foreign_key_check`).all().length>0)throw new Error(`${n} failed foreign_key_check`)}function Fo(e,t,n){if(e.pragma("foreign_keys",{simple:!0})!==1)throw new Error(`${t} lost foreign-key enforcement`);if(!n)return;let r=e.prepare("PRAGMA main.quick_check").pluck().get();if(r!=="ok")throw new Error(`${t} failed quick_check: ${String(r)}`)}function ko(e,t,n){e.exec("CREATE TEMP TABLE incremental_affected_paths (relative_path TEXT PRIMARY KEY) WITHOUT ROWID"),e.exec("CREATE TEMP TABLE incremental_deleted_paths (relative_path TEXT PRIMARY KEY) WITHOUT ROWID");let r=e.prepare("INSERT INTO temp.incremental_affected_paths(relative_path) VALUES (?)"),a=e.prepare("INSERT INTO temp.incremental_deleted_paths(relative_path) VALUES (?)");e.transaction(o=>{for(let s of o)r.run(s);for(let s of n)a.run(s)})(t)}function Do(e,t,n){let r=H(e,"SELECT COUNT(*) AS value FROM incremental.documents"),a=H(e,`SELECT COUNT(*) AS value
59
59
  FROM main.documents d
60
60
  JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`),i=e.prepare(`SELECT p.relative_path
61
61
  FROM temp.incremental_affected_paths p
@@ -69,7 +69,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
69
69
  LIMIT 1`).pluck().get(),s=e.prepare(`SELECT d.relative_path
70
70
  FROM incremental.documents d
71
71
  JOIN temp.incremental_deleted_paths deleted ON deleted.relative_path = d.relative_path
72
- LIMIT 1`).pluck().get();if(r!==t-n||i!==void 0||o!==void 0||s!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set");return{priorAffectedCount:a}}function Ti(e){e.exec(`
72
+ LIMIT 1`).pluck().get();if(r!==t-n||i!==void 0||o!==void 0||s!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set");return{priorAffectedCount:a}}function Mo(e){e.exec(`
73
73
  CREATE TEMP TABLE incremental_old_defined_symbols (symbol TEXT PRIMARY KEY) WITHOUT ROWID;
74
74
  INSERT OR IGNORE INTO temp.incremental_old_defined_symbols(symbol)
75
75
  SELECT g.symbol
@@ -109,7 +109,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
109
109
  CROSS JOIN main.global_symbols g ON g.id = m.symbol_id;
110
110
  INSERT OR IGNORE INTO temp.incremental_touched_symbols(symbol)
111
111
  SELECT symbol FROM incremental.global_symbols;
112
- `)}function ki(e){let t=e.prepare(`WITH changed_symbols AS (
112
+ `)}function No(e){let t=e.prepare(`WITH changed_symbols AS (
113
113
  SELECT symbol FROM temp.incremental_old_defined_symbols
114
114
  UNION
115
115
  SELECT symbol FROM temp.incremental_new_defined_symbols
@@ -131,7 +131,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
131
131
  LEFT JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
132
132
  WHERE m.symbol_id = g.id AND m.role = 1 AND p.relative_path IS NULL
133
133
  )
134
- LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function Di(e){e.exec(`
134
+ LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function Lo(e){e.exec(`
135
135
  DELETE FROM main.mentions
136
136
  WHERE chunk_id IN (
137
137
  SELECT c.id
@@ -153,7 +153,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
153
153
  );
154
154
  DELETE FROM main.documents
155
155
  WHERE relative_path IN (SELECT relative_path FROM temp.incremental_affected_paths);
156
- `)}function Oi(e){e.exec(`
156
+ `)}function Ao(e){e.exec(`
157
157
  UPDATE main.global_symbols
158
158
  SET display_name = NULL,
159
159
  kind = NULL,
@@ -195,7 +195,7 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
195
195
  WHERE source.symbol = main.global_symbols.symbol
196
196
  )
197
197
  WHERE symbol IN (SELECT symbol FROM temp.incremental_new_defined_symbols);
198
- `)}function Mi(e){let t=B(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.documents"),n=B(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.chunks"),r=B(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.defn_enclosing_ranges");e.prepare(`INSERT INTO main.documents(id, language, relative_path, position_encoding, text)
198
+ `)}function $o(e){let t=H(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.documents"),n=H(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.chunks"),r=H(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.defn_enclosing_ranges");e.prepare(`INSERT INTO main.documents(id, language, relative_path, position_encoding, text)
199
199
  SELECT id + ?, language, relative_path, position_encoding, text
200
200
  FROM incremental.documents`).run(t),e.prepare(`INSERT INTO main.chunks(id, document_id, chunk_index, start_line, end_line, occurrences)
201
201
  SELECT id + ?, document_id + ?, chunk_index, start_line, end_line, occurrences
@@ -210,16 +210,16 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
210
210
  r.start_line, r.start_char, r.end_line, r.end_char
211
211
  FROM incremental.defn_enclosing_ranges r
212
212
  CROSS JOIN incremental.global_symbols source ON source.id = r.symbol_id
213
- CROSS JOIN main.global_symbols target ON target.symbol = source.symbol`).run(r,t)}function Ci(e,t){let n=t?"symbol IN (SELECT symbol FROM temp.incremental_touched_symbols) AND":"";e.exec(`
213
+ CROSS JOIN main.global_symbols target ON target.symbol = source.symbol`).run(r,t)}function Go(e,t){let n=t?"symbol IN (SELECT symbol FROM temp.incremental_touched_symbols) AND":"";e.exec(`
214
214
  DELETE FROM main.global_symbols
215
215
  WHERE ${n}
216
216
  NOT EXISTS (SELECT 1 FROM main.mentions m WHERE m.symbol_id = main.global_symbols.id)
217
217
  AND NOT EXISTS (
218
218
  SELECT 1 FROM main.defn_enclosing_ranges r WHERE r.symbol_id = main.global_symbols.id
219
219
  );
220
- `)}function Ai(e,t,n,r){let a=B(e,"SELECT COUNT(*) AS value FROM main.documents"),i=B(e,`SELECT COUNT(*) AS value
220
+ `)}function Bo(e,t,n,r){let a=H(e,"SELECT COUNT(*) AS value FROM main.documents"),i=H(e,`SELECT COUNT(*) AS value
221
221
  FROM main.documents d
222
- JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`),o=n-r+t;if(a!==o||i!==t)throw new Error("candidate SQLite document counts changed unexpectedly")}function Li(e){let t=bt(e,"main",!0),n=bt(e,"incremental",!1);if(JSON.stringify([...t])!==JSON.stringify([...n]))throw new Error("candidate SQLite affected document facts differ from the mini database");return t}function bt(e,t,n){let r=n?"JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path":"",a=e.prepare(`SELECT d.relative_path, d.language, d.position_encoding, d.text
222
+ JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`),o=n-r+t;if(a!==o||i!==t)throw new Error("candidate SQLite document counts changed unexpectedly")}function Uo(e){let t=jt(e,"main",!0),n=jt(e,"incremental",!1);if(JSON.stringify([...t])!==JSON.stringify([...n]))throw new Error("candidate SQLite affected document facts differ from the mini database");return t}function jt(e,t,n){let r=n?"JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path":"",a=e.prepare(`SELECT d.relative_path, d.language, d.position_encoding, d.text
223
223
  FROM ${t}.documents d
224
224
  ${r}
225
225
  ORDER BY d.relative_path`).all(),i=e.prepare(`SELECT d.relative_path, c.chunk_index, c.start_line, c.end_line, hex(c.occurrences) AS occurrences
@@ -241,17 +241,59 @@ import{a as tt,b as Zt}from"./chunk-BZYSGZRK.js";import{a as we,b as le}from"./c
241
241
  JOIN ${t}.documents d ON d.id = c.document_id
242
242
  JOIN ${t}.global_symbols g ON g.id = m.symbol_id
243
243
  ${r}
244
- ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),c=new Map;for(let[d,g]of Object.entries({documents:a,chunks:i,definitions:o,mentions:s}))for(let u of g){let p=JSON.stringify([d,u]),P=c.get(u.relative_path)??[];P.push(p),c.set(u.relative_path,P)}let l=new Map;for(let[d,g]of[...c].sort(([u],[p])=>u.localeCompare(p))){let u=Si("sha256");for(let p of g.sort())u.update(p).update(`
245
- `);l.set(d,u.digest("hex"))}return l}function B(e,t){return e.prepare(t).get().value}import Ni from"better-sqlite3";var Me="idx_mentions_definitions",$i=["symbol_id","chunk_id"];function St(e,t={}){let n=new Ni(e),r=[],a=[],i=[];try{return n.transaction(()=>{Gi(n,r),Ce(n,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&wr(n,"global_symbols").some(c=>c.name!=="idx_global_symbols_symbol"&&c.unique&&c.columns.join("\0")==="symbol")?(n.exec('DROP INDEX "idx_global_symbols_symbol"'),a.push("idx_global_symbols_symbol")):Ce(n,"idx_global_symbols_symbol")&&i.push("idx_global_symbols_symbol");let o=Ce(n,"idx_chunks_doc_id"),s=wr(n,"chunks").some(c=>c.name!=="idx_chunks_doc_id"&&c.columns.length>1&&c.columns[0]==="document_id");o?.join("\0")==="document_id"&&s?(n.exec('DROP INDEX "idx_chunks_doc_id"'),a.push("idx_chunks_doc_id")):o&&i.push("idx_chunks_doc_id"),t.analyze!==!1&&n.exec("ANALYZE")})(),{added:r,removed:a,retained:i,analyzed:t.analyze!==!1}}catch(o){if(o.code==="SQLITE_NOTADB")return{added:[],removed:[],retained:[],analyzed:!1,skippedReason:"not-a-sqlite-database"};throw o}finally{n.close()}}function Gi(e,t){let n=_r(e,Me);if(n){let r=n.columns.join("\0")===$i.join("\0"),a=/\bWHERE\s+role\s*=\s*1\b/iu.test(n.sql??"");if(!r||!a||n.table!=="mentions")throw new Error(`${Me} exists with an incompatible definition`);return}e.exec(`CREATE INDEX "${Me}" ON mentions(symbol_id, chunk_id) WHERE role = 1`),t.push(Me)}function wr(e,t){return e.prepare(`PRAGMA index_list('${t.replaceAll("'","''")}')`).all().map(n=>({name:n.name,unique:n.unique===1,columns:Ce(e,n.name)??[]}))}function Ce(e,t){return _r(e,t)?.columns??null}function _r(e,t){let n=e.prepare("SELECT tbl_name, sql FROM sqlite_master WHERE type = 'index' AND name = ?").get(t);if(!n)return null;let r=e.prepare(`PRAGMA index_info('${t.replaceAll("'","''")}')`).all().map(a=>a.name);return{table:n.tbl_name,sql:n.sql,columns:r}}import{createHash as Bi}from"crypto";import{existsSync as Pt,readdirSync as Ui}from"fs";import{dirname as xt,join as Ae,relative as qi,resolve as Rt,sep as jr}from"path";function Fr(e,t){let n=t.includes("."),r={};for(let i of t)r[i]=[];let a=[];for(let i of e){let o=Or(i.path,t);o?r[o].push(i):n?r["."].push(i):a.push(i)}return{files:r,shared:a}}function Tr(e,t){let n=new Map;for(let a of e){let i=t[a]?.packageName;i&&n.set(i,a)}let r=new Map;for(let a of e)r.set(a,new Set);for(let a of e){let i=t[a],o=r.get(a);if(!i||i.parseFailed){for(let s of e)s!==a&&o.add(s);continue}for(let s of i.dependencyNames){let c=n.get(s);c&&c!==a&&o.add(c)}for(let s of[...i.pathsTargets,...i.referencesPaths]){let c=Or(s,e);c&&c!==a&&o.add(c)}}return Wi(e,r)}function kr(e,t,n){let r={};for(let a of e){let i=new Map;for(let o of t.files[a]??[])i.set(o.path,o);for(let o of n[a]??[])for(let s of t.files[o]??[])i.set(s.path,s);for(let o of t.shared)i.set(o.path,o);r[a]={files:[...i.values()].sort((o,s)=>o.path.localeCompare(s.path))}}return r}function vt(e){if(e===".")return"root";let t=Bi("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function Dr(e,t){let n=Rt(e),r={};for(let a of t)r[a]=Hi(n,a);return r}function Or(e,t){let n;for(let r of t)r!=="."&&(e===r||e.startsWith(`${r}/`))&&(!n||r.length>n.length)&&(n=r);return n}function Wi(e,t){let n={};for(let r of e){let a=new Set,i=[...t.get(r)??[]];for(;i.length>0;){let o=i.pop();if(!(o===r||a.has(o))){a.add(o);for(let s of t.get(o)??[])s!==r&&!a.has(s)&&i.push(s)}}n[r]=[...a].sort((o,s)=>o.localeCompare(s))}return n}function Hi(e,t){let n=t==="."?e:Ae(e,t),r=Ji(n),a=zi(n),i=a?Xi(a,e):{pathsTargets:[],referencesPaths:[],failed:!1};return{packageName:r.name,dependencyNames:r.dependencyNames,pathsTargets:i.pathsTargets,referencesPaths:i.referencesPaths,parseFailed:r.failed||i.failed}}function Ji(e){let t=Ae(e,"package.json");if(!Pt(t))return{name:void 0,dependencyNames:[],failed:!1};let n=It(t);if(!n.ok)return{name:void 0,dependencyNames:[],failed:!0};let r=typeof n.value.name=="string"?n.value.name:void 0,a=new Set;for(let i of["dependencies","devDependencies","peerDependencies"]){let o=n.value[i];if(o&&typeof o=="object"&&!Array.isArray(o))for(let s of Object.keys(o))a.add(s)}return{name:r,dependencyNames:[...a],failed:!1}}function zi(e){let t=Ae(e,"tsconfig.json");if(Pt(t))return t;let n;try{n=Ui(e).filter(r=>/^tsconfig.*\.json$/.test(r))}catch{return}return n.sort((r,a)=>r.localeCompare(a)),n.length>0?Ae(e,n[0]):void 0}function Xi(e,t){let n=It(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=Qi(n.value,e,t),a=Mr(e,n.value,t,0);return{pathsTargets:a.pathsTargets,referencesPaths:r,failed:a.failed}}function Qi(e,t,n){let r=e.references;if(!Array.isArray(r))return[];let a=xt(t),i=new Set;for(let o of r){if(!o||typeof o!="object")continue;let s=o.path;if(typeof s!="string"||s.trim()==="")continue;let c=Cr(s,a,n);c&&i.add(c)}return[...i]}function Mr(e,t,n,r){let a=Yi(t);if(a)return{pathsTargets:Vi(a,xt(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let i=Ki(t.extends,e,n);if(!i)return{pathsTargets:[],failed:!1};let o=It(i);return o.ok?Mr(i,o.value,n,r+1):{pathsTargets:[],failed:!0}}function Yi(e){let t=e.compilerOptions;if(!t||typeof t!="object"||Array.isArray(t))return;let n=t.paths;return n&&typeof n=="object"&&!Array.isArray(n)?n:void 0}function Vi(e,t,n){let r=new Set;for(let a of Object.values(e))if(Array.isArray(a))for(let i of a){if(typeof i!="string")continue;let o=Cr(i,t,n);o&&r.add(o)}return[...r]}function Ki(e,t,n){let r=Array.isArray(e)?e.at(-1):e;if(typeof r!="string"||r.trim()===""||!r.startsWith(".")&&!r.startsWith("/"))return;let a=Rt(xt(t),r);if(a.endsWith(".json")||(a=`${a}.json`),!a.split(jr).includes("node_modules")&&Ze(n,a)&&Pt(a))return a}function Cr(e,t,n){let r=e.replace(/\/?\*+$/,""),a=Rt(t,r===""?".":r);if(!Ze(n,a))return;let o=qi(n,a).split(jr).join("/");return o===""?".":o}function Zi(e){let t="",n=0,r=!1,a=e.length;for(;n<a;){let i=e[n];if(r){if(t+=i,i==="\\"&&n+1<a){t+=e[n+1],n+=2;continue}i==='"'&&(r=!1),n+=1;continue}if(i==='"'){r=!0,t+=i,n+=1;continue}if(i==="/"&&e[n+1]==="/"){for(n+=2;n<a&&e[n]!==`
246
- `;)n+=1;continue}if(i==="/"&&e[n+1]==="*"){for(n+=2;n<a&&!(e[n]==="*"&&e[n+1]==="/");)n+=1;n+=2;continue}t+=i,n+=1}return t}function It(e){try{let t=he(e,{maxBytes:Ut,inputKind:"TypeScript project manifest"}),n=JSON.parse(Zi(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{createHash as _t}from"crypto";import{existsSync as wt,writeFileSync as Br}from"fs";import{join as po}from"path";import{randomUUID as eo}from"crypto";import{existsSync as to,rmSync as no}from"fs";var ro=12e4,ao=5,pe=class extends Error{name="TypeScriptIndexMemoryPressureError"},Le=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;emitLocally;requireService;localHost=null;constructor(t,n={}){this.projectRoot=en(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??lo(),this.runtime=n.runtime??uo,this.mailboxLimits=n.mailboxLimits??{},this.emitLocally=n.emitLocally,this.requireService=n.requireService===!0}request(t){let n=tr(this.cacheDir),r=Kn(this.cacheDir),a=ct(n.statePath);if(!Ar(a,this.projectRoot,this.runtime))return this.requestLocally(t);let i=this.runtime.now(),o=i+this.timeoutMs,s=(this.runtime.monotonicNow??R)()+this.timeoutMs,c=Qn("typescript-index-v5",{baseGeneration:this.baseGeneration,request:t}),l=Yn(c),d=Vn(r,{mailboxVersion:Xn,operationKey:c,clientId:this.runtime.randomId(),enqueuedAtMs:i,deadlineAtMs:o,protocolVersion:ke,id:l,baseGeneration:this.baseGeneration,request:t},{nowMs:i,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??R)()<=s;){if(to(d.responsePath))try{return io(he(d.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),l,c,this.baseGeneration,t.producerIdentity,t.affectedFiles)}finally{no(d.responsePath,{force:!0})}let g=ct(n.statePath);if(!Ar(g,this.projectRoot,this.runtime))return this.requestLocally(t);this.runtime.sleep(ao)}return this.requestLocally(t)}requestLocally(t){if(this.requireService)throw new Error("TypeScript incremental index service unavailable; refusing to load the whole compiler graph inside the reindex process");return this.emitLocally?Et(this.emitLocally(t),t.producerIdentity,t.affectedFiles):(this.localHost??=new nr({projectRoot:this.projectRoot,currentGeneration:()=>this.baseGeneration}),Et(Lr(this.localHost.handle(this.baseGeneration,t),t.producerIdentity),t.producerIdentity,t.affectedFiles))}};function Ar(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null,a=e?Date.parse(e.heartbeatAt):Number.NaN;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===ke&&n.isProcessAlive(e.pid)&&Number.isFinite(a)&&n.now()-a<=er&&(!e.processIdentity||r!=null&&U(e.processIdentity,r))}function io(e,t,n,r,a,i){let o=JSON.parse(e);if(o.protocolVersion!==ke||o.id!==t||o.operationKey!==n||o.ok===!0&&o.baseGeneration!==r)throw new Error("TypeScript index service wrote an incompatible response.");if(o.ok!==!0){let s=typeof o.error=="string"?o.error:"TypeScript index service request failed.";throw oo(s)?new pe(s):new Error(s)}return Et(Lr(o.response,a),a,i)}function oo(e){let t=e.toLowerCase();return t.includes("out of memory")||t.includes("memory limit")||t.includes("allocation failed")||t.includes("err_worker_out_of_memory")}function Et(e,t,n){if(e.producerIdentity!==t)throw new Error("TypeScript index service wrote an invalid response.");let r=[...new Set(n)].sort(),a=e.fragments.map(i=>i.relativePath).sort();if(JSON.stringify(a)!==JSON.stringify(r))throw new Error("TypeScript index service omitted or added an affected document.");return e}function Lr(e,t){if(!e||typeof e!="object")throw new Error("TypeScript index service wrote an invalid response.");let n=e;if(n.producerIdentity!==t||typeof n.cold!="boolean"||typeof n.durationMs!="number"||!Number.isFinite(n.durationMs)||!Array.isArray(n.fragments))throw new Error("TypeScript index service wrote an invalid response.");let r=new Set,a=n.fragments.map(i=>{if(!i||typeof i.relativePath!="string"||i.bytesBase64!==null&&typeof i.bytesBase64!="string"||typeof i.occurrences!="number"||!Number.isInteger(i.occurrences)||i.occurrences<0||typeof i.symbols!="number"||!Number.isInteger(i.symbols)||i.symbols<0||!Array.isArray(i.referenceFragments)||!i.referenceFragments.every(so)||r.has(i.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(i.relativePath);let o=i.bytesBase64===null?null:co(i.bytesBase64);return{relativePath:i.relativePath,bytes:o,occurrences:i.occurrences,symbols:i.symbols,referenceFragments:i.referenceFragments}});return{producerIdentity:n.producerIdentity,cold:n.cold,durationMs:n.durationMs,fragments:a}}function so(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.targetSymbol=="string"&&!!t.location&&typeof t.location.file=="string"&&Number.isInteger(t.location.line)&&Number.isInteger(t.location.column)}function co(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function lo(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:ro}var uo={now:Date.now,monotonicNow:R,randomId:eo,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:K,readProcessIdentity:$};var go=128,fo=256;function mo(e){let t=e.projectMode==="workspace"?e.workspaceProjects??[]:["."],n=Z(t);if(t.length===0)return{eligible:!1,reason:"workspace project roots unavailable"};if(t.length===1&&t[0]==="."&&!e.rootTsconfigExists)return{eligible:!1,reason:"root tsconfig unavailable"};if(!e.previousSnapshot)return{eligible:!1,reason:"prior project snapshot unavailable"};if(e.graph===null)return{eligible:!1,reason:"dependency graph unavailable"};if(e.projectFiles.length===0)return{eligible:!1,reason:"prior TypeScript documents unavailable"};let r=se(e.previousSnapshot,e.currentSnapshot);if(r.changes.length===0)return{eligible:!1,reason:"no changed project inputs"};let a=r.changes.filter(f=>f.inputKind==="source"&&re(f.path)),i=Ur(r,n),o={...r,changes:i},s=a.filter(f=>f.kind==="added").map(f=>f.path),c=a.filter(f=>f.kind==="deleted").map(f=>f.path),l=a.filter(f=>f.kind==="modified"),d=$e(e.currentSnapshot,e.producerIdentity,n),g=$e(e.previousSnapshot,e.producerIdentity,n),u=qr(r,i,d,g),p=!u&&Hr(r);if(a.length===0&&!u)return{eligible:!1,reason:"change does not affect the configured TypeScript project"};let P=e.currentSnapshot.files.filter(f=>Se(f.path,e.currentSnapshot.languages)==="source"&&re(f.path)).map(f=>f.path).sort(),E=new Set(P),I=u?e.projectFiles.filter(f=>!E.has(f)).sort():[...c].sort(),A=u?o:{...r,changes:a},w=u?{eligible:!0,plan:{...ue(o,e.graph,[...new Set([...P,...I])]),mode:"full-project"}}:yo(l,s,I,e.graph,e.projectFiles);if(!w.eligible)return w;let O=w.plan,M=new Set(I),y=bo(O,t,e.graph,M);if(!y)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let m=y.length===1?y[0]:void 0;return{eligible:!0,manifest:A,plan:O,projectIdentity:d,previousFragmentGeneration:Gr(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:Gr(e.currentSnapshot,e.producerIdentity),projects:y,deletedFiles:I,replaceProject:u,dependencyGraphUnchanged:p,...m?{tsconfigPath:m.tsconfigPath,projectArgument:m.projectArgument}:{}}}function Ur(e,t){return e.changes.filter(n=>n.inputKind==="source"&&re(n.path)||n.inputKind==="config"&&(!ee(n.path)||t.has(n.path))&&ho(n)||n.inputKind==="ambient")}function ho(e){return e.kind!=="modified"||e.before.semanticHash===void 0||e.after.semanticHash===void 0||e.before.semanticHash!==e.after.semanticHash}function qr(e,t,n,r){return n!==r||e.projectIdentityChanged||e.uncertainty.length>0||t.length>fo||t.some(a=>a.inputKind==="config"||a.inputKind==="ambient")}function yo(e,t,n,r,a){if(e.length===0)return t.length===0&&n.length===0?{eligible:!1,reason:"empty affected set"}:{eligible:!0,plan:{mode:"closure",changedFiles:[...new Set([...t,...n])].sort(),affectedFiles:[...new Set([...t,...Nr(n,r,a)])].sort(),reasons:[]}};let i=ue({version:1,changes:e.filter(Wr),projectIdentityChanged:!1,uncertainty:[]},r,a);return i.mode==="full-project"?{eligible:!1,reason:i.reasons.length>0?`affected set widened: ${i.reasons.join(", ")}`:"empty affected set"}:{eligible:!0,plan:{mode:"closure",changedFiles:[...new Set([...e.map(o=>o.path),...t,...n])].sort(),affectedFiles:[...new Set([...i.affectedFiles,...e.map(o=>o.path),...t,...Nr(n,r,a)])].sort(),reasons:[]}}}function Wr(e){return e.kind!=="modified"?!0:e.before.semanticHash===void 0||e.after.semanticHash===void 0||e.before.semanticHash!==e.after.semanticHash}function Hr(e){let t=e.changes.filter(n=>n.inputKind==="source"&&re(n.path));return t.length>0&&t.every(n=>n.kind==="modified"&&!Wr(n))}function bo(e,t,n,r){let a=new Map;for(let o of e.affectedFiles){let s=So(o,t);if(!s)return null;let c=a.get(s)??[];c.push(o),a.set(s,c)}let i=[];for(let[o,s]of[...a].sort(([c],[l])=>c.localeCompare(l))){let c=new Set(s),l=e.changedFiles.filter(u=>!r.has(u)&&(c.has(u)||s.some(p=>$r(p,u,n)))),d=e.changedFiles.filter(u=>r.has(u)&&(c.has(u)||s.some(p=>$r(p,u,n)))),g=s.filter(u=>!r.has(u));if(l.length===0&&d.length===0&&g.length===0)return null;i.push({projectArgument:o,tsconfigPath:o==="."?"tsconfig.json":`${o}/tsconfig.json`,modifiedFiles:l,removedFiles:d,affectedFiles:[...g].sort()})}return i}function Nr(e,t,n){let r=new Set(n),a=new Map;for(let[s,c]of t)if(r.has(s))for(let l of c){let d=a.get(l)??new Set;d.add(s),a.set(l,d)}let i=new Set(e),o=[...e];for(let s=0;s<o.length;s+=1){let c=o[s];if(c)for(let l of a.get(c)??[])i.has(l)||(i.add(l),o.push(l))}return[...i].sort()}function So(e,t){let n=t.filter(i=>i==="."||e===i||e.startsWith(`${i}/`));if(n.length===0)return null;let r=[...new Set(n)].sort((i,o)=>Ne(o)-Ne(i)||i.localeCompare(o)),a=r[0];return r[1]&&Ne(r[1])===Ne(a)?null:a}function Ne(e){return e==="."?0:e.split("/").filter(Boolean).length}function $r(e,t,n){let r=new Set,a=[e];for(let i=0;i<a.length;i+=1){let o=a[i];if(!(!o||r.has(o))){r.add(o);for(let s of n.get(o)??[]){if(s===t)return!0;r.has(s)||a.push(s)}}}return!1}function Jr(e){let t=R();try{if(!wt(e.previousDbPath)||!wt(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=st();if(!r.available)throw new Error(r.reason);let a=performance.now()-n;n=performance.now();let i=new N({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),o=xo(e.projectRoot,e.previousSnapshot,e.currentSnapshot),s=e.projectMode==="workspace"?W(e.projectRoot,e.currentSnapshot.typescriptProjects):["."],c=Z(s),l,d,g;try{l=Ie(i,{includeIgnored:!1}).filter(re).sort();let x=o?se(o,e.currentSnapshot):null,v=x&&o&&qr(x,Ur(x,c),$e(e.currentSnapshot,r.producerIdentity,c),$e(o,r.producerIdentity,c)),L=x!==null&&!v&&Hr(x);v?(g=Pn(i,"none")??void 0,d=new Map):L?d=new Map:(g=Ee(i),d=g.graph)}finally{i.close()}let u=performance.now()-n,p=mo({projectMode:e.projectMode,workspaceProjects:e.projectMode==="workspace"?s:void 0,previousSnapshot:o,currentSnapshot:e.currentSnapshot,projectFiles:l,graph:d,producerIdentity:r.producerIdentity,rootTsconfigExists:wt(po(e.projectRoot,"tsconfig.json"))});if(!p.eligible)throw new Error(p.reason);let P=Zn(e.previousDbPath);if(!P)throw new Error("published TypeScript base generation unavailable");n=performance.now();let E=new Le({projectRoot:e.projectRoot,cacheDir:e.cacheDir,baseGeneration:P},{requireService:!0}),I=p.projects.flatMap(x=>{let v=Po(x.affectedFiles,go);return(v.length>0?v:[[]]).map((Ye,Y)=>({project:x,affectedFiles:Ye,removedFiles:Y===0?x.removedFiles:[],firstForProject:Y===0}))}),A=[],w=new Map,O=[],M=!1,y=0,m=0,f=0,j=p.previousFragmentGeneration;for(let[x,v]of I.entries()){let L=E.request({kind:"emit-documents",tsconfigPath:v.project.tsconfigPath,projectArgument:v.project.projectArgument,projectIdentity:p.projectIdentity,producerIdentity:r.producerIdentity,modifiedFiles:v.firstForProject?v.project.modifiedFiles:[],removedFiles:v.firstForProject?v.project.removedFiles:[],affectedFiles:v.affectedFiles});M||=L.cold,O.push(L.durationMs);let Ye=v.removedFiles.map(fe=>({relativePath:fe,bytes:null,occurrences:0,symbols:0,referenceFragments:[]})),Y=[...L.fragments,...Ye];if(!p.replaceProject)for(let fe of Y)w.set(fe.relativePath,fe.referenceFragments);let Na=performance.now(),$a=Cn(L.fragments);y+=performance.now()-Na;let Gt=x===0?e.candidateAffectedScipPath:`${e.candidateAffectedScipPath}.batch-${x}.scip`,Ga=performance.now();Br(Gt,$a),f+=performance.now()-Ga;let Ba=performance.now(),Bt=x===I.length-1?p.nextFragmentGeneration:Ro({previousGenerationIdentity:j,targetGenerationIdentity:p.nextFragmentGeneration,fragments:Y});Ln({cacheDir:e.cacheDir,previousGenerationIdentity:j,nextGenerationIdentity:Bt,producerIdentity:r.producerIdentity,projectIdentity:p.projectIdentity,baseShardCurrent:x===0?e.baseShardCurrent:!1,fragments:Y,allowProjectIdentityChange:p.replaceProject&&x===0,allowLegacyProjectIdentityMigration:!0}),m+=performance.now()-Ba,j=Bt,A.push({scipPath:Gt,affectedFiles:[...v.affectedFiles,...v.removedFiles].sort(),deletedFiles:[...v.removedFiles].sort()})}let T=performance.now()-n,h={scipPath:e.previousShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,affectedBatches:A,completeScipUpdated:!1,durationMs:R()-t,cold:M,changedFiles:p.plan.changedFiles,affectedFiles:p.plan.affectedFiles,deletedFiles:p.deletedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:p.previousFragmentGeneration,nextFragmentGeneration:p.nextFragmentGeneration,manifest:p.manifest,plan:p.plan,projectFileCount:l.length,dependencyGraphSnapshot:g,dependencyGraphUnchanged:p.dependencyGraphUnchanged,referenceFragmentsByFile:w,timings:{runtimeMs:a,graphMs:u,requestMs:T,serviceMs:O.reduce((x,v)=>x+v,0),assemblyMs:y,fragmentStoreMs:m,writeMs:f}};return e.onStatus(`${p.replaceProject?"Bounded TypeScript project refresh":"Incremental TypeScript index"} emitted ${h.affectedFiles.length-h.deletedFiles.length} document(s), removed ${h.deletedFiles.length}, and produced ${A.length} bounded batch(es) across ${p.projects.length} project(s) in ${(h.durationMs/1e3).toFixed(3)}s (${h.cold?"cold":"warm"} service; whole SCIP deferred; runtime ${a.toFixed(0)}ms, graph ${u.toFixed(0)}ms, request ${T.toFixed(0)}ms, assembly ${y.toFixed(0)}ms, fragments ${m.toFixed(0)}ms, write ${f.toFixed(0)}ms).`),h}catch(n){let r=n instanceof Error?n.message:String(n);if(e.onUnavailable?.(r),n instanceof pe)throw e.onStatus(`Incremental TypeScript index stopped after memory pressure survived one cold Worker retry: ${r}. Preserving the accepted index instead of starting a memory-heavier whole-project rebuild.`),n;return e.onStatus(`Incremental TypeScript index unavailable: ${r}.`),null}}function Po(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function xo(e,t,n){if(!t)return null;let r=new Map(n.files.map(o=>[o.path,o])),a=!1,i=t.files.map(o=>{let s=r.get(o.path);if(o.semanticHash!==void 0||s?.semanticHash===void 0)return o;let c=xe(e,o.path,o.hash);return c===void 0?o:(a=!0,{...o,semanticHash:c})});return a?{...t,files:i}:t}function Ro(e){let t=_t("sha256");t.update("typescript-overlay-batch-v1\0"),t.update(e.previousGenerationIdentity),t.update("\0"),t.update(e.targetGenerationIdentity);for(let n of[...e.fragments].sort((r,a)=>r.relativePath.localeCompare(a.relativePath)))t.update("\0path\0"),t.update(n.relativePath),n.bytes===null?t.update("\0deleted"):(t.update("\0bytes\0"),t.update(_t("sha256").update(n.bytes).digest()));return t.digest("hex")}function jt(e){let t=st();if(!t.available)throw new Error(t.reason);let n=Nn({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:me(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:qt}),packageVersion:t.packageVersion});Br(e.candidateShardPath,n)}function $e(e,t,n){let r=e.files.filter(a=>{let i=Se(a.path,e.languages);return i==="ambient"||i==="config"&&(!ee(a.path)||n.has(a.path))}).map(a=>{let o=Se(a.path,e.languages)==="config"?a.semanticHash:void 0;return{path:a.path,size:o===void 0?a.size:0,hash:o??a.hash}}).sort((a,i)=>a.path.localeCompare(i.path));return`typescript-project-v3:${zr(JSON.stringify({version:3,producerIdentity:t,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),nonSourceInputs:r}))}`}function Gr(e,t){return zr(JSON.stringify({version:1,producerIdentity:t,snapshot:zt(e)}))}function zr(e){return _t("sha256").update(e).digest("hex")}import{closeSync as vo,existsSync as Ge,fstatSync as Io,lstatSync as Eo,openSync as wo,renameSync as Tt,rmSync as Be,statSync as _o,writeSync as jo}from"fs";import{cpus as Fo}from"os";import{join as kt}from"path";var Xr=8*1024;function To(e,t){if(e.temporaryRootConfigContent===void 0)return null;let n=kt(t,"tsconfig.json"),r=Buffer.from(e.temporaryRootConfigContent,"utf8"),a;try{a=wo(n,"wx",384)}catch(i){if(i.code==="EEXIST")return null;throw i}try{jo(a,r);let i=Io(a);return{path:n,content:r,device:i.dev,inode:i.ino}}finally{vo(a)}}function ko(e){if(e)try{let t=Eo(e.path);if(!t.isFile()||t.dev!==e.device||t.ino!==e.inode||t.size!==e.content.byteLength)return;let n;try{n=me(e.path,{maxBytes:e.content.byteLength,inputKind:"temporary TypeScript index configuration"})}catch{return}if(!n.equals(e.content))return;Be(e.path)}catch(t){if(t.code!=="ENOENT")throw t}}function Do(e,t,n){if(!e.defaultOutputPath)return;let r=kt(t,e.defaultOutputPath);n!==r&&Ge(r)&&Tt(r,n)}function Oo(e,t,n){if(!e.defaultOutputPath)return null;let r=kt(t,e.defaultOutputPath);if(r===n)return null;let a=`${n}.default-output-backup`;return Be(a,{force:!0}),Ge(r)?(Tt(r,a),{defaultOutputPath:r,backupPath:a}):{defaultOutputPath:r,backupPath:null}}function Mo(e){e&&(Be(e.defaultOutputPath,{force:!0}),e.backupPath&&Ge(e.backupPath)&&Tt(e.backupPath,e.defaultOutputPath))}function Co(e,t){if(e<=1)return 1;let n=Number(process.env.SCIP_QUERY_INDEXER_CONCURRENCY??0),r=Number.isFinite(t)&&t&&t>0?t:Number.isFinite(n)&&n>0?n:Math.min(8,Math.max(1,Fo().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function Yr(e,t,n,r,a){C(a,"Reindex cancelled by its owner.");let i=e.filter(d=>d.config.defaultOutputPath),o=e.filter(d=>!d.config.defaultOutputPath),s=[],c=Co(o.length,r),l=await rr(o,c,d=>Ft(d,t,n,a));if(c>1){let d=new Map;for(let g of l.filter(u=>u.result.skipped&&u.retryable)){let u=o.find(p=>p.id===g.result.id);u&&(n(`Retrying ${u.label} indexer serially after parallel failure...`),C(a,"Reindex cancelled by its owner."),d.set(u.id,(await Ft(u,t,n,a)).result))}s.push(...l.map(({result:g})=>d.get(g.id)??g))}else s.push(...l.map(({result:d})=>d));for(let d of i)C(a,"Reindex cancelled by its owner."),s.push((await Ft(d,t,n,a)).result);return s.sort((d,g)=>e.findIndex(u=>u.id===d.id)-e.findIndex(u=>u.id===g.id))}async function Ft(e,t,n,r){C(r,"Reindex cancelled by its owner."),n(`Indexing ${e.label} with ${e.resolvedBinary}...`),Be(e.scipPath,{force:!0});let a=Oo(e.config,t,e.scipPath),i=To(e,t),o=[e.binary,...e.args].join(" "),s=R();try{e.trustedProjectTool&&gn(t,e.trustedProjectTool);let l=Kt(e.binary,e.args),d=await be({command:l.binary,args:l.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:Ao(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,signal:r});if(d.status!==0){let g=d.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${d.status}${g?`:
247
- ${g}`:""}`)}Do(e.config,t,e.scipPath)}catch(l){if(r?.aborted)throw tn(r,"Reindex cancelled by its owner.");let d=l instanceof Error?l.message:String(l),g=d.length<=Xr?d:`${d.slice(0,Xr)}
248
- [indexer failure detail truncated]`,u=`${e.resolvedBinary} indexer failed: ${g}`,p=e.label===e.language?u:`${e.label}: ${u}`;return n(`Skipping ${e.label}: ${u}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:R()-s,command:o,skipped:{language:e.language,reason:p}},retryable:Lo(l)}}finally{Mo(a),ko(i)}if(!Ge(e.scipPath)){let l=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`,d=e.label===e.language?l:`${e.label}: ${l}`;return n(`Skipping ${e.label}: ${l}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:R()-s,command:o,skipped:{language:e.language,reason:d}},retryable:!1}}let c;try{c=_o(e.scipPath).size}catch{c=void 0}return{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:R()-s,command:o,outputBytes:c},retryable:!1}}function Ao(){let e=Number(process.env.SCIP_QUERY_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):Wt.indexer}function Lo(e){return e instanceof Ht?e.kind==="spawn"&&Qr(e.cause):Qr(e)}function Qr(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as Kr}from"child_process";import{homedir as Vr,platform as No}from"os";import{delimiter as $o,join as Ue}from"path";function Zr(e,t){let n=e.installMethods,r=ve(e);if(!n?.length)return t(`No auto-install method available for ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1;for(let a of n){if(!a.identity||!a.destination){t(`Refusing ${a.label} installation for ${r}: the installer descriptor lacks an immutable identity or destination.`);continue}if(!Vt(a.prerequisite))continue;let i=Go(a);t(`Installing immutable ${a.identity} via ${a.label} into ${i}; expected executable: ${r}.`);try{Kr(a.binary,a.args,{stdio:"inherit",timeout:3e5,env:process.env,shell:No()==="win32"});let o=de(e);if(o){let s=o===e.indexerBinary?"":` (using ${o})`;return t(`Successfully installed ${a.identity} via ${a.label}${s}; resolved executable: ${o}.`),!0}t(`${a.label} command completed but ${r} was not found on PATH`)}catch(o){let s=o instanceof Error?o.message:String(o);t(`${a.label} install failed: ${s}`)}}return t(`Could not auto-install ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function Go(e){if(e.binary==="npm")return Dt("npm",["root","-g"])??e.destination;if(e.binary==="go"){let t=Dt("go",["env","GOBIN"]);if(t)return t;let n=Dt("go",["env","GOPATH"]);if(n)return Ue(n.split($o)[0],"bin")}return e.binary==="dotnet"?Ue(process.env.DOTNET_CLI_HOME??Vr(),".dotnet","tools"):e.binary==="dart"?Ue(process.env.PUB_CACHE??Ue(Vr(),".pub-cache"),"bin"):e.destination}function Dt(e,t){try{return Kr(e,t,{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}async function ga(e){let{projectRoot:t,onStatus:n=console.log}=e,r=e.maxHeapMb??Xo(process.env.NODE_OPTIONS)??8192,a=e.skipAutoInstall===!0||e.installMissing!==!0,i=Yo(e),o=Date.now(),s=R();We(S(i.outputScip),{recursive:!0}),We(S(i.outputDb),{recursive:!0});let c=e.languages??Tn(t);if(c.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");n(`Detected languages: ${c.join(", ")}`);let l=Je(i.metaPath),d=b("reindex.fingerprint",()=>dn(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath},l,e.changeJournal,rt(i.outputDb)),{languages:c.length}),g=d.fingerprint,u=d.mode==="delta"?e.changeJournal?.entries.filter(m=>m.kind!=="add").length??0:0,p=Math.max(0,(l?.files.length??0)-u);n(d.mode==="delta"?`Project fingerprint revalidated ${d.changedPaths.length} changed path(s), reused ${p} accepted file fingerprint(s), and accepted ${g.files.length} input(s)`:`Project fingerprint used full scan: ${d.reason}`);let P=await Jo({opts:e,paths:i,languages:c,fingerprint:g,onStatus:n}),E=P.snapshot,I=P.releaseBuildLock,A=Ea(e.trigger),w=an(_(S(i.outputDb),"cache-lifecycle.lock"),{waitMs:A?1e3:3e4});if(!w)throw I?.(),new ne(A?`Could not acquire scip-query cache lifecycle lock for ${S(i.outputDb)}; another refresh is publishing, so the watcher will retry.`:`Could not acquire scip-query cache lifecycle lock for ${S(i.outputDb)}. A watch daemon or another reindex may hold it. Run "scip-query watch --stop", retry the reindex, then restart with "scip-query watch --daemon".`);let O;try{O=await q("reindex.lock",()=>Es(_(S(i.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:n}),{languages:c.length})}catch(m){throw w.release(),I?.(),m}let M=null,y=sr();try{d.mode==="delta"&&rt(i.outputDb)!==e.changeJournal?.baseGeneration&&(g=sn(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),d={mode:"full",fingerprint:g,reason:"accepted-generation-changed-before-lock"},E=void 0,I?.(),I=void 0,n("Project fingerprint used full scan: accepted-generation-changed-before-lock")),Bn(i.outputDb,i.outputScip,i.metaPath);let m=es(S(i.outputDb));m.removed>0&&n(`Removed ${m.removed} abandoned reindex workspace(s)`);for(let L of m.errors)n(`Could not remove abandoned reindex workspace: ${L}`);let f=null,j=b("reindex.reuse-check",()=>(f=Vo({opts:e,paths:i,languages:c,fingerprint:g,start:o,monotonicStart:s,onStatus:n}),f),()=>({languages:c.length,reused:f!==null}));if(j){na({snapshot:E,paths:i,projectRoot:t,fingerprint:g,onStatus:n});let L=it(i.outputDb,j);return L.state==="failed"&&n(`Warning: reindex succeeded, but activity telemetry was not recorded: ${L.reason}`),et(t,S(i.outputDb)),j}await q("reindex.scip-cli-ready",()=>ys(a,n));let T=Zo(i);M=T.runDir;let h,x=await q("reindex.fresh",async()=>(h=await ts({opts:e,languages:c,projectRoot:t,paths:i,tempPaths:T,fingerprint:g,start:o,monotonicStart:s,maxHeapMb:r,skipAutoInstall:a,onStatus:n,writeTelemetry:y}),h),()=>({languages:c.length,reused:h?.reused,skipped:h?.skipped.length}));na({snapshot:E,paths:i,projectRoot:t,fingerprint:g,onStatus:n});let v=it(i.outputDb,x);return v.state==="failed"&&n(`Warning: reindex succeeded, but activity telemetry was not recorded: ${v.reason}`),et(t,S(i.outputDb)),x}catch(m){let f=Qe({trigger:e.trigger,result:"failed",start:o,monotonicStart:s,error:m instanceof Error?m.message:String(m)});Fa(i.metaPath,f);let j=Mn(i.outputDb,f);throw j.state==="failed"&&n(`Warning: failed reindex activity telemetry was not recorded: ${j.reason}`),m}finally{M&&ae(M,{recursive:!0,force:!0}),O(),w.release(),I?.()}}async function Jo(e){let{opts:t,paths:n,languages:r,fingerprint:a,onStatus:i}=e,o=t.projectRoot;if(!(t.skipIfUnchanged!==!1&&!Un(o,n.outputDb)&&ea(n.outputScip)===ea(_(S(n.outputDb),"index.scip"))))return{snapshot:void 0,releaseBuildLock:void 0};let c=Re(o),l=c?.clean?Fe(c,a):void 0;if(c&&!c.clean&&!ra(n))return ta({context:c,languages:r,opts:t,paths:n,fingerprint:a,projectRoot:o,onStatus:i,successMessage:"dirty worktree reindex",failurePrefix:"Shared baseline fork failed"}),{snapshot:l,releaseBuildLock:void 0};if(!l)return{snapshot:void 0,releaseBuildLock:void 0};let d=ot(l);if(d){if(!zo(n,a))try{Te({snapshot:l,manifest:d,targetCacheDir:S(n.outputDb),targetProjectRoot:o}),i(`Attached shared generation ${l.generationId.slice(0,12)}`)}catch(u){i(`Shared generation attach failed; continuing locally: ${z(u)}`)}return{snapshot:l,releaseBuildLock:void 0}}c&&!ra(n)&&ta({context:c,languages:r,opts:t,paths:n,fingerprint:a,projectRoot:o,onStatus:i,successMessage:"cold worktree reindex",failurePrefix:"Compatible shared baseline fork failed",compatible:!0});let g=await Hn(l);if(g.kind==="owner")return{snapshot:l,releaseBuildLock:g.release};if(g.kind==="generation-ready"){let u=ot(l);if(u)try{Te({snapshot:l,manifest:u,targetCacheDir:S(n.outputDb),targetProjectRoot:o,action:"waited"}),i(`Attached shared generation ${l.generationId.slice(0,12)} after waiting`)}catch(p){i(`Shared generation attach failed after waiting; continuing locally: ${z(p)}`)}}else i("Shared generation build lock timed out; continuing with an isolated local reindex");return{snapshot:l,releaseBuildLock:void 0}}function ta(e){let t=qn(e.context,e.languages,{pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,clojureConfigPath:e.opts.clojureConfigPath},e.fingerprint);if(t)try{Te({snapshot:t.snapshot,manifest:t.manifest,targetCacheDir:S(e.paths.outputDb),targetProjectRoot:e.projectRoot,persistLease:!1}),zn(t.snapshot,S(e.paths.outputDb)),e.onStatus(`Forked ${e.compatible?"compatible ":""}shared baseline ${t.snapshot.generationId.slice(0,12)} for ${e.successMessage}`)}catch(n){e.onStatus(`${e.failurePrefix}; continuing locally: ${z(n)}`)}}function na(e){if(e.snapshot)try{let t=Re(e.projectRoot),n=t?Fe(t,e.fingerprint):void 0;if(!n||n.generationId!==e.snapshot.generationId){e.onStatus("Skipped shared generation publication because the worktree changed during indexing");return}let r=Wn({snapshot:e.snapshot,sourceCacheDir:S(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let a=Re(e.projectRoot);return(a?Fe(a,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});Jn(e.snapshot,S(e.paths.outputDb),"built"),e.onStatus(r.kind==="published"?`Published shared generation ${e.snapshot.generationId.slice(0,12)} (${r.achievedDurability})`:`Shared generation ${e.snapshot.generationId.slice(0,12)} was already available (${r.achievedDurability})`)}catch(t){e.onStatus(`Shared generation publication failed; local index remains valid: ${z(t)}`)}}function zo(e,t){if(!D(e.outputScip)||!D(e.outputDb)||ja(e.metaPath,t)===null)return!1;let n=G(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function ra(e){if(!D(e.outputScip)||!D(e.outputDb)||!Q(e.metaPath))return!1;let t=G(e.outputDb,e.metaPath);return t.state!=="invalid"&&t.state!=="drifted"}function z(e){return e instanceof Error?e.message:String(e)}function Xo(e){let t=e?.match(/--max[-_]old[-_]space[-_]size(?:=|\s+)(\d+)/u);if(!t)return;let n=Number.parseInt(t[1],10);return Number.isInteger(n)&&n>0?n:void 0}function Qo(e,t){return[(e??"").replace(/(?:^|\s)--max[-_]old[-_]space[-_]size(?:=|\s+)\d+/gu," ").trim(),`--max-old-space-size=${t}`].filter(Boolean).join(" ")}function Ct(e,t,n,r,a,i,o,s=!1){try{le(cr({indexPath:n,evidenceDbPath:o,reuseExisting:a,affectedFiles:i,forceDerivedRebuild:s}),{projectRoot:e,dbPath:t,onStatus:r})}catch(c){r(`Runtime-boundary extraction unavailable: ${c instanceof Error?c.message:String(c)}.`)}}function Yo(e){let t=e.outputScip??_(e.projectRoot,"index.scip"),n=e.outputDb??_(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:_(S(n),"meta.json")}}function Vo(e){let t=G(e.paths.outputDb,e.paths.metaPath),n=ja(e.paths.metaPath,e.fingerprint);if(e.opts.skipIfUnchanged===!1||!D(e.paths.outputScip)||!D(e.paths.outputDb)||n===null||t.state==="invalid"||t.state==="drifted")return null;let r=_e(e.paths.outputDb,e.fingerprint,e.languages);if(r.state!=="complete")return e.onStatus(At("Accepted SQLite index",r)),null;le(we(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Ct(e.opts.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0),G(e.paths.outputDb,e.paths.metaPath).state==="drifted"&&(je(e.paths.outputDb,e.paths.metaPath),e.onStatus("Published refreshed SQLite generation after post-index augmentation")),n==="operational-config-compatible"&&(Os(e.paths.metaPath,e.fingerprint,e.languages,e.opts),je(e.paths.outputDb,e.paths.metaPath),e.onStatus("Migrated operational .scipquery.json metadata without rerunning language indexers."));let a=R()-e.monotonicStart,i=Qe({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return Fa(e.paths.metaPath,i),e.onStatus(`Index unchanged; reused existing SQLite index in ${(a/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:a,reused:!0,skipped:[],lastRefresh:i,shards:Ko(e.paths,e.languages,e.opts,e.fingerprint)}}function Ko(e,t,n,r){let a=Lt(r,t,n);return t.map(i=>({id:i,language:i,reused:!0,strategy:"reused",fingerprint:ge(a[i]),outputBytes:X(Nt(e.outputDb,i)),durationMs:0}))}function Zo(e){let t=Uo(_(S(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:_(t,qe(e.outputScip)),tempOutputDb:_(t,qe(e.outputDb)),tempMetaPath:_(t,qe(e.metaPath))}}function es(e){let t=[],n;try{n=ua(e,{withFileTypes:!0})}catch(a){return{removed:0,errors:[z(a)]}}let r=0;for(let a of n)if(!(!a.name.startsWith("reindex-")||!a.isDirectory()))try{ae(_(e,a.name),{recursive:!0,force:!0}),r+=1}catch(i){t.push(`${a.name}: ${z(i)}`)}return{removed:r,errors:t}}async function ts(e){let t={...process.env,NODE_OPTIONS:Qo(process.env.NODE_OPTIONS,e.maxHeapMb)},n,r=await q("reindex.language-indexers",async()=>(n=await rs(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:a,skippedLanguages:i,reusedLanguages:o,languageFingerprints:s,shards:c,typescriptProjectShardContext:l,incrementalTypeScript:d}=r;if(o.length>0&&e.onStatus(`Reused ${o.length} cached language shard(s): ${o.join(", ")}`),ns({run:e,indexedOutputs:a,skippedLanguages:i,reusedLanguages:o})){let p=b("reindex.publish",()=>gs(e,a,i,o,s,l),{mode:"metadata-only",languages:a.length,reused:o.length}),P=p.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(P/1e3).toFixed(1)}s`),{languages:a.map(E=>E.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:P,reused:!0,skipped:i,lastRefresh:p,shards:c,writeTelemetry:e.writeTelemetry}}let g=await q("reindex.publish",()=>us(e,t,a,i,o,s,l,d),{mode:d?"incremental-or-fallback":"full",languages:a.length,reused:o.length,skipped:i.length}),u=g.durationMs;return e.onStatus(`Done in ${(u/1e3).toFixed(1)}s`),{languages:a.map(p=>p.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:u,reused:!1,skipped:i,lastRefresh:g,shards:c,writeTelemetry:e.writeTelemetry}}function ns(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!D(e.run.paths.outputScip)||!D(e.run.paths.outputDb))return!1;let t=G(e.run.paths.outputDb,e.run.paths.metaPath);if(t.state==="invalid"||t.state==="drifted")return!1;let n=new Set(e.reusedLanguages),r=new Set(e.indexedOutputs.map(a=>a.language));return e.run.languages.length>0&&r.size===e.run.languages.length&&e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(a=>n.has(a)&&r.has(a))}async function rs(e,t){let n=cs({paths:e.paths,projectRoot:e.projectRoot,languages:e.languages,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,clojureConfigPath:e.opts.clojureConfigPath,projectFingerprint:e.fingerprint}),r=[],a=new Set;for(let[h,x]of n)x.reused&&(r.push({language:h,scipPath:x.scipPath}),a.add(h));for(let h of a)e.onStatus(`Reusing cached ${h} SCIP shard (language inputs unchanged).`);let i=n.get("typescript"),o=G(e.paths.outputDb,e.paths.metaPath),s=Q(e.paths.metaPath),c=o.state==="legacy"||o.state==="current",l=s?.scipCompanion!=="deferred"&&(o.state!=="current"||o.generation.publication?.scipCompanion!=="deferred"),d,g=i&&!i.reused&&c?Jr({projectRoot:e.projectRoot,cacheDir:S(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:i.scipPath,candidateShardPath:ie(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:ie(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:l,previousSnapshot:Je(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus,onUnavailable:h=>{d=h}}):null,u=new Set(g?["typescript"]:[]);if(e.opts.allowExpensiveRebuild===!1){let h=e.languages.filter(x=>!a.has(x)&&!u.has(x));if(h.length>0){let x=h.length===1&&h[0]==="typescript"&&d?`: ${d}`:"";throw new Error(`Incremental indexing is unavailable for ${h.join(", ")}${x}. The accepted index was preserved because whole-project rebuilds are disabled; run scip-query reindex --allow-expensive-rebuild only when you explicitly want that fallback.`)}}let p=g||a.has("typescript")?void 0:as(e,n),{preparedRuns:P,skippedLanguages:E,languageOutputScipPaths:I}=bs({languages:e.languages.filter(h=>!a.has(h)&&!u.has(h)),tempOutputScip:e.tempPaths.tempOutputScip,projectRoot:e.projectRoot,env:t,skipAutoInstall:e.skipAutoInstall,trustProjectTools:e.opts.trustProjectTools===!0,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,preDiscoveredTypeScriptProjects:p?.allProjects,clojureConfigPath:e.opts.clojureConfigPath,onStatus:e.onStatus}),A=p?P.filter(h=>h.language!=="typescript"||p.missedProjectIds.has(h.id)):P,w=await Yr(A,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal);if(Qt())for(let h of w)Yt({type:"span",name:`reindex.language-indexer.${h.id}`,durationMs:Math.round(h.durationMs),ok:!h.skipped,language:h.language,indexerCommand:h.command,outputBytes:h.outputBytes,measurement:"indexer-run-result"});let O=[];if(p){os(e.paths.outputDb,w,e.writeTelemetry);let h=I.typescript??e.tempPaths.tempOutputScip;O=ss({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:h,reusedProjects:p.reusedProjects,writeTelemetry:e.writeTelemetry})}let M=[...w,...O],{indexedOutputs:y}=Ps(M,E),m=g?[{language:"typescript",scipPath:g.scipPath}]:[],f=[...r,...m,...y];xs(f,E,e.languages,e.opts.allowPartial,e.onStatus);let j=g?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:g.scipPath,outputScipPath:g.scipPath,durationMs:g.durationMs,command:"watch-service:typescript-index",outputBytes:X(g.scipPath)??void 0,producedOutputBytes:X(g.affectedScipPath)??void 0}]:[],T=ds(n,[...w,...j],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0,d);return{indexedOutputs:f,skippedLanguages:E,reusedLanguages:[...a],languageFingerprints:ls(n,e.languages),shards:T,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:g??void 0}}function as(e,t){let n=t.get("typescript");if(!n||n.reused||n.cacheIntegrityFailed||e.opts.typescriptProjectMode!=="workspace")return;let r=W(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let a=Dr(e.projectRoot,r),i=Fr(n.fingerprint.files,r),o=Tr(r,a),s=kr(r,i,o),c=Q(e.paths.metaPath),d=is(c,s,P=>D(ze(e.paths.outputDb,P))),g=[...d.entries()].filter(([,P])=>P.reused).map(([P])=>P),u=new Set(g),p=new Set(r.filter(P=>!u.has(P)).map(P=>`typescript:${P}`));return{allProjects:r,fingerprints:s,classification:d,reusedProjects:g,missedProjectIds:p}}function is(e,t,n){let r=new Map;for(let a of Object.keys(t)){let i=t[a];if(!e){r.set(a,{reused:!1,reason:"no reindex metadata found",fingerprint:i});continue}let o=e.version===V&&Ke(e).typescriptProjectShardReuse?e.typescriptProjectShards?.[a]:void 0;if(!o){r.set(a,{reused:!1,reason:"no cached fingerprint for this project",fingerprint:i});continue}if(!n(a)){r.set(a,{reused:!1,reason:"cached shard file missing on disk",fingerprint:i});continue}if(k(o)!==k(i)){r.set(a,{reused:!1,reason:"project inputs changed since last index",fingerprint:i});continue}r.set(a,{reused:!0,fingerprint:i})}return r}function os(e,t,n){for(let r of t){if(r.skipped||!r.id.startsWith("typescript:"))continue;let a=r.id.slice(11),i=ze(e,a);We(S(i),{recursive:!0}),J(n,H(r.scipPath,i))}}function ss(e){return e.reusedProjects.map((t,n)=>{let r=ze(e.outputDb,t),a=ie(e.tempOutputScip,"typescript-project-cached",n);return J(e.writeTelemetry,H(r,a)),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:a,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:X(a)??void 0}})}function cs(e){let t=Q(e.paths.metaPath),n=Lt(e.projectFingerprint,e.languages,e),r=t&&D(e.paths.outputDb)?_e(e.paths.outputDb,e.projectFingerprint,e.languages):null,a=new Map;for(let i of e.languages){let o=Nt(e.paths.outputDb,i),s=n[i];if(!t){a.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:s,scipPath:o});continue}if(t.version!==V){a.set(i,{reused:!1,reason:`metadata version ${String(t.version??"unknown")} predates per-language shard caching`,fingerprint:s,scipPath:o});continue}if(!Ke(t).languageShardReuse||!t.languageFingerprints){a.set(i,{reused:!1,reason:"no per-language fingerprints recorded in metadata",fingerprint:s,scipPath:o});continue}let c=t.languageFingerprints[i];if(!c){a.set(i,{reused:!1,reason:"no cached fingerprint for this language",fingerprint:s,scipPath:o});continue}if(!D(o)){a.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:s,scipPath:o});continue}let l=i==="typescript"?Ts(e.projectRoot,c):c;if(k(l)!==k(s)){a.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:s,scipPath:o});continue}if(r?.state==="unavailable"||r?.state==="incomplete"&&r.affectedLanguages.includes(i)){a.set(i,{reused:!1,reason:At("accepted SQLite index",r),cacheIntegrityFailed:!0,fingerprint:s,scipPath:o});continue}a.set(i,{reused:!0,fingerprint:s,scipPath:o})}return a}function ds(e,t,n,r){let a=[];for(let[i,o]of e)o.reused&&a.push({id:i,language:i,reused:!0,strategy:"reused",fingerprint:ge(o.fingerprint),outputBytes:X(o.scipPath),durationMs:0});for(let i of t){let o=e.get(i.language),s=n&&i.id.startsWith("typescript:")?i.id.slice(11):null,c=s?n.classification.get(s):void 0;a.push({id:i.id,language:i.language,reused:!1,strategy:i.command==="watch-service:typescript-index"?"incremental":"full",missReason:c?.reason??o?.reason??i.skipped?.reason,fallbackReason:i.language==="typescript"?r:void 0,fingerprint:c?ge(c.fingerprint):o?ge(o.fingerprint):"unknown",outputBytes:i.outputBytes??null,producedOutputBytes:i.producedOutputBytes,durationMs:i.durationMs,command:i.command})}if(n)for(let[i,o]of n.classification)o.reused&&a.push({id:`typescript:${i}`,language:"typescript",reused:!0,strategy:"reused",fingerprint:ge(o.fingerprint),outputBytes:X(ze(n.outputDb,i)),durationMs:0});return a}function ge(e){return Bo("sha256").update(k(e)).digest("hex").slice(0,16)}function X(e){try{return qo(e).size}catch{return null}}function ls(e,t){let n={};for(let r of t){let a=e.get(r);a&&(n[r]=a.fingerprint)}return n}async function us(e,t,n,r,a,i,o,s){C(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,l=!1;c&&(l=b("reindex.publish.scip-output",()=>{let y=hs({run:e,indexedOutputs:n,incrementalTypeScript:s});return aa(e.paths.outputDb,y,e.writeTelemetry),ia(y,e.tempPaths.tempOutputScip,e.onStatus)}));let d=await q("reindex.publish.sqlite-output",()=>Rs({run:e,env:t,indexedOutputs:n,skippedLanguages:r,reusedLanguages:a,incrementalTypeScript:s,completeScipAvailable:c,completeScipSanitized:l,materializeFullFallback:async()=>{if(C(e.opts.signal,"Reindex cancelled by its owner."),!s||s.completeScipUpdated)return l;e.onStatus("Materializing the deferred whole TypeScript SCIP companion for full conversion..."),jt({cacheDir:S(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let y=n.map(m=>m.language==="typescript"?{language:m.language,scipPath:s.candidateScipPath}:m);return aa(e.paths.outputDb,y,e.writeTelemetry),l=ia(y,e.tempPaths.tempOutputScip,e.onStatus),l}}));C(e.opts.signal,"Reindex cancelled by its owner."),b("reindex.publish.auxiliary-documents",()=>{le(we(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus})}),b("reindex.publish.runtime-boundaries",()=>{let y=s?.plan.mode==="full-project",m=s?.dependencyGraphUnchanged===!0;y?e.onStatus("Rebuilding compiler-derived runtime-boundary relationships while retaining unchanged per-file extraction facts."):m&&e.onStatus("Reusing runtime-boundary relationships because TypeScript semantics are unchanged."),Ct(e.projectRoot,e.tempPaths.tempOutputDb,e.tempPaths.tempOutputScip,e.onStatus,m,m?void 0:y?s?.changedFiles:s?.affectedFiles,_(S(e.paths.outputDb),yn),y)});let g=b("reindex.publish.sqlite-layout",()=>St(e.tempPaths.tempOutputDb,{analyze:ps(s,d.mode)}));g.added.length>0&&e.onStatus(`Added SQLite query indexes: ${g.added.join(", ")}`),g.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${g.removed.join(", ")}`),b("reindex.publish.coverage",()=>ya(e,e.tempPaths.tempOutputDb,n.map(y=>y.language)));let u,p=null;d.mode==="incremental"&&s&&b("reindex.publish.reference-fragments",()=>{if(s.dependencyGraphUnchanged){let f=new N({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});try{p=at(f),e.onStatus("Preserved exact TypeScript reference fragments and dependency relationships because only trivia changed.")}finally{f.close()}return}let y=null,m=null;try{y=b("reindex.publish.reference-fragments.open-candidate",()=>new N({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip})),m=b("reindex.publish.reference-fragments.open-evidence",()=>new N({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip})),u=s.dependencyGraphSnapshot?b("reindex.publish.reference-fragments.dependency-graph",()=>Rn(y,s.dependencyGraphSnapshot,s.affectedFiles,s.deletedFiles))??void 0:void 0;let f=new Set(s.deletedFiles),j=f.size===0?s.referenceFragmentsByFile:new Map([...s.referenceFragmentsByFile].filter(([h])=>!f.has(h))),T=b("reindex.publish.reference-fragments.seed",()=>vn(y,e.fingerprint,j,m,u,new Set(s.affectedFiles)));e.onStatus(`Cached exact TypeScript reference fragments for ${T.affectedFiles} affected document(s) and carried ${T.carriedFiles} unaffected document(s) forward.`),T.skippedAffectedFiles>0&&e.onStatus(`Skipped exact TypeScript reference fragment prefill for ${T.skippedAffectedFiles} affected document(s) whose semantic identity was unavailable.`)}catch(f){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${f instanceof Error?f.message:String(f)}.`)}finally{y?.close(),m?.close()}});let P=Je(e.paths.metaPath),E=b("reindex.publish.affected-shadow",()=>d.mode==="incremental"&&s?Is(s,d.changedDocumentPaths):gt({projectRoot:e.projectRoot,previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.tempPaths.tempOutputDb,candidateIndexPath:e.tempPaths.tempOutputScip,previousSnapshot:P,currentSnapshot:e.fingerprint,refreshResult:"rebuilt"})),I=Qe({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(y=>y.language),skipped:[...r]}),A=d.mode==="incremental"&&d.scipCompanion==="deferred",{metadata:w,pruneProjects:O}=ma({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:a,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:I});w.scipCompanion=A?"deferred":"current",b("reindex.publish.metadata",()=>{ha(e),ba(e.paths.outputDb,O),Xe(e.tempPaths.tempMetaPath,w)});let M=b("reindex.publish.generation-handoff",()=>Gn({tempOutputScip:e.tempPaths.tempOutputScip,tempOutputDb:e.tempPaths.tempOutputDb,tempMetaPath:e.tempPaths.tempMetaPath,outputScip:e.paths.outputScip,outputDb:e.paths.outputDb,metaPath:e.paths.metaPath,preserveOutputScip:d.mode==="incremental"&&d.scipCompanion==="deferred",publication:d.mode==="incremental"?{mode:"incremental",validation:"passed",converterDurationMs:d.converterDurationMs,affectedDocumentCount:s?.affectedFiles.length,changedDocumentCount:d.changedDocumentPaths.length,producerDurationMs:s?.timings.serviceMs,materializationDurationMs:s?.durationMs,patchDurationMs:d.patchDurationMs,scipCompanion:d.scipCompanion,...d.scipCompanion==="deferred"&&s?{typescriptOverlayGeneration:s.nextFragmentGeneration}:{}}:{mode:"full",validation:"passed",converterDurationMs:d.converterDurationMs,scipCompanion:"current",...d.fallbackReason?{fallbackReason:d.fallbackReason}:{}}}));return M.achievedDurability==="file-flushed"&&e.onStatus(`Published local generation ${M.currentGeneration.slice(0,12)} (file-flushed; directory sync unsupported)`),d.mode==="incremental"&&s&&b("reindex.publish.dependency-graph",()=>{let y=null;try{y=new N({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let m=s.plan.mode==="full-project"&&s.plan.reasons.length===0?s.changedFiles:s.affectedFiles,f=!1;if(s.dependencyGraphUnchanged){let j=at(y),T=p&&j?bn(y,"file-dependency-graph",p,j):0;f=T>0,e.onStatus(f?`Carried ${T} unchanged dependency graph product(s) forward without rebuilding them.`:"No persisted dependency graph product required rekeying; the next graph consumer can materialize it.")}else s.dependencyGraphSnapshot?f=xn(y,s.dependencyGraphSnapshot,m,u):Ee(y);s.dependencyGraphUnchanged||e.onStatus(f?`Carried the dependency graph forward by replacing ${m.length} changed dependency owner(s).`:"Materialized a fresh dependency graph for the accepted generation because no compatible prior graph was available.")}catch(m){e.onStatus(`Dependency graph carry-forward unavailable: ${m instanceof Error?m.message:String(m)}. The next graph consumer will rebuild it.`)}finally{y?.close()}}),b("reindex.publish.cleanup",()=>{$n(S(e.paths.outputDb),d.mode==="incremental"&&d.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),An(S(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[])}),b("reindex.publish.shadow-telemetry",()=>fa(e.paths.outputDb,E,e.onStatus)),I}function ps(e,t){return t!=="incremental"||!e||e.plan.mode==="full-project"?!0:e.affectedFiles.length*20>=e.projectFileCount}function gs(e,t,n,r,a,i){let o=Je(e.paths.metaPath),s=null;try{J(e.writeTelemetry,H(e.paths.outputDb,e.tempPaths.tempOutputDb))}catch(u){s=pr("reused","oracle-error",`Could not snapshot the prior database: ${u instanceof Error?u.message:String(u)}`)}le(we(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Ct(e.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0);let c=St(e.paths.outputDb);c.added.length>0&&e.onStatus(`Added SQLite query indexes: ${c.added.join(", ")}`),c.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${c.removed.join(", ")}`),ya(e,e.paths.outputDb,t.map(u=>u.language)),s??=gt({projectRoot:e.projectRoot,previousDbPath:e.tempPaths.tempOutputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.paths.outputDb,candidateIndexPath:e.paths.outputScip,previousSnapshot:o,currentSnapshot:e.fingerprint,refreshResult:"reused"});let l=Qe({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(u=>u.language),skipped:[...n]}),{metadata:d,pruneProjects:g}=ma({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:a,typescriptProjectShardContext:i,lastRefresh:l});return ha(e),ba(e.paths.outputDb,g),Xe(e.paths.metaPath,d),je(e.paths.outputDb,e.paths.metaPath),fa(e.paths.outputDb,s,e.onStatus),l}function Je(e){return Ve(Q(e)?.fingerprint)}function fa(e,t,n){try{gr(e,t),t.status==="evaluated"?n(`Affected-set shadow: ${(t.evaluation.recall*100).toFixed(1)}% recall; ${t.plan.affectedFiles.length} predicted, ${t.comparison.changedFiles.length} changed.`):n(`Affected-set shadow unavailable: ${t.reason}.`)}catch(r){n(`Affected-set shadow telemetry unavailable: ${r instanceof Error?r.message:String(r)}`)}}function ma(e){let t=fs({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:V,status:e.skippedLanguages.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.run.fingerprint,sqliteLayoutVersion:1,languageFingerprints:e.languageFingerprints,typescriptProjectShards:t.field,requestedLanguages:e.run.languages,indexedLanguages:e.indexedOutputs.map(n=>n.language),skipped:[...e.skippedLanguages],lastRefresh:e.lastRefresh},pruneProjects:t.pruneProjects}}function ha(e){C(e.opts.signal,"Reindex cancelled by its owner.");let t=cn(e.projectRoot,e.fingerprint);if(k(t)===k(e.fingerprint))return;let n=new Map(e.fingerprint.files.map(i=>[i.path,i])),r=new Map(t.files.map(i=>[i.path,i])),a=[...new Set([...n.keys(),...r.keys()])].filter(i=>k(n.get(i))!==k(r.get(i))).slice(0,5);throw new Error(`Project inputs changed during reindex (${a.join(", ")||"unknown path"}); refusing to publish artifacts built from a different filesystem snapshot.`)}function ya(e,t,n){let r=_e(t,e.fingerprint,n);if(r.state!=="complete")throw new Error(`${At("Candidate SQLite index",r)} Refusing to publish it.`)}function At(e,t){if(t.state==="unavailable")return`${e} document coverage could not be verified (${t.reason}); rebuilding cached language shards.`;let n=t.missingPaths.length>0?` First missing path: ${t.missingPaths[0]}.`:"";return`${e} is missing ${t.missingDocumentCount} fingerprinted source document${t.missingDocumentCount===1?"":"s"}; rebuilding affected language shards.${n}`}function fs(e){if(e.mode!=="workspace")return{field:void 0,pruneProjects:null};if(e.skippedLanguages.some(t=>t.language==="typescript"))return{field:void 0,pruneProjects:null};if(e.reusedLanguages.includes("typescript")){let t=Q(e.metaPath),n=t?.version===V?t.typescriptProjectShards:void 0;return{field:n,pruneProjects:n?Object.keys(n):[]}}return e.context?{field:e.context.fingerprints,pruneProjects:e.context.projects}:{field:void 0,pruneProjects:[]}}function ba(e,t){let n=_a(e);if(t===null){ae(n,{recursive:!0,force:!0});return}let r;try{r=ua(n)}catch{return}for(let a of ms(r,t))ae(_(n,a),{force:!0})}function ms(e,t){let n=new Set(t.map(r=>`${vt(r)}.scip`));return e.filter(r=>!n.has(r))}function hs(e){if(e.incrementalTypeScript?.completeScipUpdated)return[...e.indexedOutputs];let t=e.indexedOutputs.find(o=>o.language==="typescript");if(!t)return[...e.indexedOutputs];let n=G(e.run.paths.outputDb,e.run.paths.metaPath),r=n.state==="current"?n.generation.publication?.typescriptOverlayGeneration:void 0;if(!(n.state==="current"?n.generation.publication?.scipCompanion==="deferred":Q(e.run.paths.metaPath)?.scipCompanion==="deferred")||!r)return[...e.indexedOutputs];let i=ie(e.run.tempPaths.tempOutputScip,"typescript-deferred",0);return e.run.onStatus("Materializing the deferred whole TypeScript SCIP companion for complete publication..."),jt({cacheDir:S(e.run.paths.outputDb),generationIdentity:r,baseShardPath:t.scipPath,candidateShardPath:i}),e.indexedOutputs.map(o=>o.language==="typescript"?{language:o.language,scipPath:i}:o)}function aa(e,t,n){for(let r of t){let a=Nt(e,r.language);We(S(a),{recursive:!0}),r.scipPath!==a&&J(n,H(r.scipPath,a))}}async function ys(e,t){if(!tt()){if(Ho()==="win32")throw new Error("The scip CLI was not found. On Windows it ships via the npm sidecar package scip-query-scip-windows (installed automatically with scip-query). Reinstall scip-query with optional dependencies enabled, or follow 'scip-query setup' guidance for the exact sidecar package version, or set SCIP_QUERY_SCIP_BIN to a local scip.exe path.");if(e)throw new Error(`The scip CLI is required but not found on PATH.
244
+ ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),c=new Map;for(let[l,g]of Object.entries({documents:a,chunks:i,definitions:o,mentions:s}))for(let p of g){let f=JSON.stringify([l,p]),R=c.get(p.relative_path)??[];R.push(f),c.set(p.relative_path,R)}let d=new Map;for(let[l,g]of[...c].sort(([p],[f])=>p.localeCompare(f))){let p=Io("sha256");for(let f of g.sort())p.update(f).update(`
245
+ `);d.set(l,p.digest("hex"))}return d}function H(e,t){return e.prepare(t).get().value}import qo from"better-sqlite3";var Je="idx_mentions_definitions",Wo=["symbol_id","chunk_id"];function Ot(e,t={}){let n=new qo(e),r=[],a=[],i=[];try{return n.transaction(()=>{Ho(n,r),ze(n,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&Zr(n,"global_symbols").some(c=>c.name!=="idx_global_symbols_symbol"&&c.unique&&c.columns.join("\0")==="symbol")?(n.exec('DROP INDEX "idx_global_symbols_symbol"'),a.push("idx_global_symbols_symbol")):ze(n,"idx_global_symbols_symbol")&&i.push("idx_global_symbols_symbol");let o=ze(n,"idx_chunks_doc_id"),s=Zr(n,"chunks").some(c=>c.name!=="idx_chunks_doc_id"&&c.columns.length>1&&c.columns[0]==="document_id");o?.join("\0")==="document_id"&&s?(n.exec('DROP INDEX "idx_chunks_doc_id"'),a.push("idx_chunks_doc_id")):o&&i.push("idx_chunks_doc_id"),t.analyze!==!1&&n.exec("ANALYZE")})(),{added:r,removed:a,retained:i,analyzed:t.analyze!==!1}}catch(o){if(o.code==="SQLITE_NOTADB")return{added:[],removed:[],retained:[],analyzed:!1,skippedReason:"not-a-sqlite-database"};throw o}finally{n.close()}}function Ho(e,t){let n=ei(e,Je);if(n){let r=n.columns.join("\0")===Wo.join("\0"),a=/\bWHERE\s+role\s*=\s*1\b/iu.test(n.sql??"");if(!r||!a||n.table!=="mentions")throw new Error(`${Je} exists with an incompatible definition`);return}e.exec(`CREATE INDEX "${Je}" ON mentions(symbol_id, chunk_id) WHERE role = 1`),t.push(Je)}function Zr(e,t){return e.prepare(`PRAGMA index_list('${t.replaceAll("'","''")}')`).all().map(n=>({name:n.name,unique:n.unique===1,columns:ze(e,n.name)??[]}))}function ze(e,t){return ei(e,t)?.columns??null}function ei(e,t){let n=e.prepare("SELECT tbl_name, sql FROM sqlite_master WHERE type = 'index' AND name = ?").get(t);if(!n)return null;let r=e.prepare(`PRAGMA index_info('${t.replaceAll("'","''")}')`).all().map(a=>a.name);return{table:n.tbl_name,sql:n.sql,columns:r}}import{createHash as Jo}from"crypto";import{existsSync as Ft,readdirSync as zo}from"fs";import{dirname as kt,join as Xe,relative as Xo,resolve as Dt,sep as ti}from"path";function ni(e,t){let n=t.includes("."),r={};for(let i of t)r[i]=[];let a=[];for(let i of e){let o=oi(i.path,t);o?r[o].push(i):n?r["."].push(i):a.push(i)}return{files:r,shared:a}}function ri(e,t){let n=new Map;for(let a of e){let i=t[a]?.packageName;i&&n.set(i,a)}let r=new Map;for(let a of e)r.set(a,new Set);for(let a of e){let i=t[a],o=r.get(a);if(!i||i.parseFailed){for(let s of e)s!==a&&o.add(s);continue}for(let s of i.dependencyNames){let c=n.get(s);c&&c!==a&&o.add(c)}for(let s of[...i.pathsTargets,...i.referencesPaths]){let c=oi(s,e);c&&c!==a&&o.add(c)}}return Yo(e,r)}function ii(e,t,n){let r={};for(let a of e){let i=new Map;for(let o of t.files[a]??[])i.set(o.path,o);for(let o of n[a]??[])for(let s of t.files[o]??[])i.set(s.path,s);for(let o of t.shared)i.set(o.path,o);r[a]={files:[...i.values()].sort((o,s)=>o.path.localeCompare(s.path))}}return r}function Mt(e){if(e===".")return"root";let t=Jo("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function ai(e,t){let n=Dt(e),r={};for(let a of t)r[a]=Qo(n,a);return r}function oi(e,t){let n;for(let r of t)r!=="."&&(e===r||e.startsWith(`${r}/`))&&(!n||r.length>n.length)&&(n=r);return n}function Yo(e,t){let n={};for(let r of e){let a=new Set,i=[...t.get(r)??[]];for(;i.length>0;){let o=i.pop();if(!(o===r||a.has(o))){a.add(o);for(let s of t.get(o)??[])s!==r&&!a.has(s)&&i.push(s)}}n[r]=[...a].sort((o,s)=>o.localeCompare(s))}return n}function Qo(e,t){let n=t==="."?e:Xe(e,t),r=Ko(n),a=Vo(n),i=a?Zo(a,e):{pathsTargets:[],referencesPaths:[],failed:!1};return{packageName:r.name,dependencyNames:r.dependencyNames,pathsTargets:i.pathsTargets,referencesPaths:i.referencesPaths,parseFailed:r.failed||i.failed}}function Ko(e){let t=Xe(e,"package.json");if(!Ft(t))return{name:void 0,dependencyNames:[],failed:!1};let n=Nt(t);if(!n.ok)return{name:void 0,dependencyNames:[],failed:!0};let r=typeof n.value.name=="string"?n.value.name:void 0,a=new Set;for(let i of["dependencies","devDependencies","peerDependencies"]){let o=n.value[i];if(o&&typeof o=="object"&&!Array.isArray(o))for(let s of Object.keys(o))a.add(s)}return{name:r,dependencyNames:[...a],failed:!1}}function Vo(e){let t=Xe(e,"tsconfig.json");if(Ft(t))return t;let n;try{n=zo(e).filter(r=>/^tsconfig.*\.json$/.test(r))}catch{return}return n.sort((r,a)=>r.localeCompare(a)),n.length>0?Xe(e,n[0]):void 0}function Zo(e,t){let n=Nt(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=es(n.value,e,t),a=si(e,n.value,t,0);return{pathsTargets:a.pathsTargets,referencesPaths:r,failed:a.failed}}function es(e,t,n){let r=e.references;if(!Array.isArray(r))return[];let a=kt(t),i=new Set;for(let o of r){if(!o||typeof o!="object")continue;let s=o.path;if(typeof s!="string"||s.trim()==="")continue;let c=ci(s,a,n);c&&i.add(c)}return[...i]}function si(e,t,n,r){let a=ts(t);if(a)return{pathsTargets:ns(a,kt(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let i=rs(t.extends,e,n);if(!i)return{pathsTargets:[],failed:!1};let o=Nt(i);return o.ok?si(i,o.value,n,r+1):{pathsTargets:[],failed:!0}}function ts(e){let t=e.compilerOptions;if(!t||typeof t!="object"||Array.isArray(t))return;let n=t.paths;return n&&typeof n=="object"&&!Array.isArray(n)?n:void 0}function ns(e,t,n){let r=new Set;for(let a of Object.values(e))if(Array.isArray(a))for(let i of a){if(typeof i!="string")continue;let o=ci(i,t,n);o&&r.add(o)}return[...r]}function rs(e,t,n){let r=Array.isArray(e)?e.at(-1):e;if(typeof r!="string"||r.trim()===""||!r.startsWith(".")&&!r.startsWith("/"))return;let a=Dt(kt(t),r);if(a.endsWith(".json")||(a=`${a}.json`),!a.split(ti).includes("node_modules")&&pt(n,a)&&Ft(a))return a}function ci(e,t,n){let r=e.replace(/\/?\*+$/,""),a=Dt(t,r===""?".":r);if(!pt(n,a))return;let o=Xo(n,a).split(ti).join("/");return o===""?".":o}function is(e){let t="",n=0,r=!1,a=e.length;for(;n<a;){let i=e[n];if(r){if(t+=i,i==="\\"&&n+1<a){t+=e[n+1],n+=2;continue}i==='"'&&(r=!1),n+=1;continue}if(i==='"'){r=!0,t+=i,n+=1;continue}if(i==="/"&&e[n+1]==="/"){for(n+=2;n<a&&e[n]!==`
246
+ `;)n+=1;continue}if(i==="/"&&e[n+1]==="*"){for(n+=2;n<a&&!(e[n]==="*"&&e[n+1]==="/");)n+=1;n+=2;continue}t+=i,n+=1}return t}function Nt(e){try{let t=ge(e,{maxBytes:an,inputKind:"TypeScript project manifest"}),n=JSON.parse(is(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import as from"better-sqlite3";import{zstdCompressSync as os}from"zlib";import{setImmediate as di}from"timers/promises";var J=class extends Error{},ss=200,At=2,li=1,cs=2,ds=3,ls=4,us=5,ps=6,mi=1,hi=2,yi=3,gs=7,fs=1,ms=3,hs=5,ys=6,Ss=8,bs=1,ui=64,Ps=[`CREATE TABLE documents (
247
+ id INTEGER PRIMARY KEY,
248
+ language TEXT,
249
+ relative_path TEXT NOT NULL UNIQUE,
250
+ position_encoding TEXT,
251
+ text TEXT
252
+ )`,`CREATE TABLE chunks (
253
+ id INTEGER PRIMARY KEY,
254
+ document_id INTEGER NOT NULL,
255
+ chunk_index INTEGER NOT NULL,
256
+ start_line INTEGER NOT NULL,
257
+ end_line INTEGER NOT NULL,
258
+ occurrences BLOB NOT NULL,
259
+ FOREIGN KEY (document_id) REFERENCES documents(id)
260
+ )`,`CREATE TABLE global_symbols (
261
+ id INTEGER PRIMARY KEY,
262
+ symbol TEXT NOT NULL UNIQUE,
263
+ display_name TEXT,
264
+ kind INTEGER,
265
+ documentation TEXT,
266
+ signature BLOB,
267
+ enclosing_symbol TEXT,
268
+ relationships BLOB
269
+ )`,`CREATE TABLE mentions (
270
+ chunk_id INTEGER NOT NULL,
271
+ symbol_id INTEGER NOT NULL,
272
+ role INTEGER NOT NULL,
273
+ PRIMARY KEY (chunk_id, symbol_id, role),
274
+ FOREIGN KEY (chunk_id) REFERENCES chunks(id),
275
+ FOREIGN KEY (symbol_id) REFERENCES global_symbols(id)
276
+ )`,`CREATE TABLE defn_enclosing_ranges (
277
+ id INTEGER PRIMARY KEY,
278
+ document_id INTEGER NOT NULL,
279
+ symbol_id INTEGER NOT NULL,
280
+ start_line INTEGER NOT NULL,
281
+ start_char INTEGER NOT NULL,
282
+ end_line INTEGER NOT NULL,
283
+ end_char INTEGER NOT NULL,
284
+ FOREIGN KEY (document_id) REFERENCES documents(id),
285
+ FOREIGN KEY (symbol_id) REFERENCES global_symbols(id)
286
+ )`],Rs=["CREATE INDEX idx_chunks_line_range ON chunks(document_id, start_line, end_line)","CREATE INDEX idx_mentions_symbol_id_role ON mentions(symbol_id, role)","CREATE INDEX idx_defn_enclosing_ranges_symbol_id ON defn_enclosing_ranges(symbol_id)","CREATE INDEX idx_defn_enclosing_ranges_document ON defn_enclosing_ranges(document_id, start_line, end_line)","CREATE INDEX idx_chunks_doc_id ON chunks(document_id)","CREATE INDEX idx_global_symbols_symbol ON global_symbols(symbol)"];function Lt(e){return e.startsWith("local ")}function pi(e,t,n,r){let a=t,i=0,o=0;for(;a<n;){let s=e[a];a+=1,o<53&&(i+=(s&127)*2**o),(s&128)===0?(r.push(i),i=0,o=0):o+=7}}function gi(e){return e.length===3?[e[0],e[1],e[0],e[2]]:e.length===4?[e[0],e[1],e[2],e[3]]:null}function xs(e,t){return e.startLine!==t.startLine?e.startLine-t.startLine:e.startChar!==t.startChar?e.startChar-t.startChar:e.endLine!==t.endLine?e.endLine-t.endLine:e.endChar!==t.endChar?e.endChar-t.endChar:e.symbol<t.symbol?-1:e.symbol>t.symbol?1:0}function Es(e,t,n,r){let a=[],i=[],o="",s=0;for(let d of Y(e,n,r))d.fieldNumber===mi?d.wireType===2?pi(e,d.valueStart,d.valueEnd,a):d.wireType===0&&a.push(d.varint):d.fieldNumber===hi&&d.wireType===2?o=pe.decode(e.subarray(d.valueStart,d.valueEnd)):d.fieldNumber===yi&&d.wireType===0?s=d.varint:d.fieldNumber===gs&&(d.wireType===2?pi(e,d.valueStart,d.valueEnd,i):d.wireType===0&&i.push(d.varint));let c=gi(a);return c?{startLine:c[0],startChar:c[1],endLine:c[2],endChar:c[3],symbol:o,roles:s,frameStart:t,frameEnd:r,merged:!1,enclosing:gi(i)}:null}function Is(e,t,n){let r={symbol:"",displayName:null,kind:null,documentation:[],enclosingSymbol:null};for(let a of Y(e,t,n))if(a.wireType===2){let i=()=>pe.decode(e.subarray(a.valueStart,a.valueEnd));a.fieldNumber===fs?r.symbol=i():a.fieldNumber===ms?r.documentation.push(i()):a.fieldNumber===ys?r.displayName=i():a.fieldNumber===Ss&&(r.enclosingSymbol=i())}else a.fieldNumber===hs&&a.wireType===0&&(r.kind=a.varint);return r}var pe=new TextDecoder;function vs(e,t){if(e.length===0)return[];let n=[],r=Math.min(e.length,t);for(let a=0;a<r&&r<=e.length;){for(;r<=e.length-1&&e[r-1].startLine===e[r].startLine;)r+=1;n.push(e.slice(a,r)),a=r,r=Math.min(e.length,r+t)}return n}function _s(e){let t=e.startLine===e.endLine?[e.startLine,e.startChar,e.endChar]:[e.startLine,e.startChar,e.endLine,e.endChar],n=[],r=Buffer.concat(t.map(o=>Q(o)));n.push(Le(mi),Q(r.length),r);let a=Buffer.from(e.symbol,"utf8");n.push(Le(hi),Q(a.length),a),e.roles!==0&&n.push(Q(yi*8),Q(e.roles));let i=Buffer.concat(n);return Buffer.concat([Le(At),Q(i.length),i])}function Ts(e,t){let n=[];for(let r of t)r.merged?n.push(_s(r)):n.push(e.subarray(r.frameStart,r.frameEnd));return os(Buffer.concat(n))}async function Si(e,t,n={}){let r=n.chunkSize??ss,a={documents:0,duplicateDocumentsSkipped:0,occurrences:0,illegalOccurrencesDropped:0,mergedOccurrences:0,chunks:0,mentions:0,globalSymbols:0,enclosingRanges:0},i=new as(t);try{i.pragma("synchronous = normal"),i.pragma("temp_store = memory"),i.pragma("foreign_keys = ON"),i.pragma("journal_mode = WAL");for(let v of Ps)i.exec(v);let o=i.prepare("INSERT INTO documents (id, language, relative_path, position_encoding, text) VALUES (?, ?, ?, ?, ?)"),s=i.prepare("INSERT INTO chunks (id, document_id, chunk_index, start_line, end_line, occurrences) VALUES (?, ?, ?, ?, ?, ?)"),c=i.prepare("INSERT INTO defn_enclosing_ranges (document_id, symbol_id, start_line, start_char, end_line, end_char) VALUES (?, ?, ?, ?, ?, ?)"),d=i.prepare("INSERT INTO global_symbols (id, symbol, display_name, kind, documentation, enclosing_symbol) VALUES (?, ?, ?, ?, ?, ?)"),l=i.prepare("INSERT INTO mentions (chunk_id, symbol_id, role) VALUES (?, ?, ?)"),g=new Map,p=new Map,f=1,R=1,T=1,j=(v,F,_,h,y)=>{let m=T;return T+=1,p.set(v,m),d.run(m,v,F,_,h,y),a.globalSymbols+=1,m};i.exec("BEGIN IMMEDIATE");let D=!1;try{let v=0;for(let _ of Y(e)){if(_.fieldNumber!==At||_.wireType!==2)continue;fi(n.signal),v+=1,v>=ui&&(v=0,await di());let h="",y=null,m=null,w=null,S=[];for(let u of Y(e,_.valueStart,_.valueEnd))u.wireType===2?u.fieldNumber===li?h=pe.decode(e.subarray(u.valueStart,u.valueEnd)):u.fieldNumber===ds?S.push(Is(e,u.valueStart,u.valueEnd)):u.fieldNumber===ls?y=pe.decode(e.subarray(u.valueStart,u.valueEnd)):u.fieldNumber===us&&(m=pe.decode(e.subarray(u.valueStart,u.valueEnd))):u.fieldNumber===ps&&u.wireType===0&&(w=ws(u.varint));if(h==="")throw new J("relative path must not be empty");if(g.has(h)){a.duplicateDocumentsSkipped+=1;continue}let P=f;f+=1,o.run(P,y===""?null:y,h,w,m===""?null:m),g.set(h,P),a.documents+=1;let I=new Map;for(let u of S){if(u.symbol==="")throw new J(`empty symbol in SymbolInformation for document ${h}`);let b=I.get(u.symbol);if(!b){I.set(u.symbol,u);continue}for(let k of u.documentation)b.documentation.includes(k)||b.documentation.push(k)}for(let u of[...I.values()].sort((b,k)=>b.symbol<k.symbol?-1:b.symbol>k.symbol?1:0))Lt(u.symbol)||p.has(u.symbol)||j(u.symbol,u.displayName===""?null:u.displayName,u.kind===0?null:u.kind,u.documentation.length===0?null:u.documentation.join(`
287
+ `),u.enclosingSymbol===""?null:u.enclosingSymbol)}let F=new Set;v=0;for(let _ of Y(e)){if(_.fieldNumber!==At||_.wireType!==2)continue;fi(n.signal),v+=1,v>=ui&&(v=0,await di());let h="",y=[];for(let S of Y(e,_.valueStart,_.valueEnd))if(S.wireType===2){if(S.fieldNumber===li)h=pe.decode(e.subarray(S.valueStart,S.valueEnd));else if(S.fieldNumber===cs){let P=Es(e,S.fieldStart,S.valueStart,S.valueEnd);P?y.push(P):a.illegalOccurrencesDropped+=1}}if(F.has(h))continue;F.add(h);let m=g.get(h);if(m===void 0)continue;y.sort(xs);let w=[];for(let S of y){let P=w[w.length-1];if(P&&P.startLine===S.startLine&&P.startChar===S.startChar&&P.endLine===S.endLine&&P.endChar===S.endChar&&P.symbol===S.symbol){P.roles|=S.roles,P.merged=!0,a.mergedOccurrences+=1;continue}w.push(S)}a.occurrences+=w.length;for(let S of w){if((S.roles&bs)===0||Lt(S.symbol)||!S.enclosing)continue;let[P,I,u,b]=S.enclosing;if(P<0||I<0||u<P||u===P&&b<I)throw new J(`bad enclosing range for symbol ${S.symbol} in ${h}`);let k=p.get(S.symbol);if(k===void 0)throw new J(`symbol ${S.symbol} has definition occurrence, but no SymbolInformation`);c.run(m,k,P,I,u,b),a.enclosingRanges+=1}for(let[S,P]of vs(w,r).entries()){let I=R;R+=1,s.run(I,m,S,P[0].startLine,P[P.length-1].startLine,Ts(e,P)),a.chunks+=1;let u=new Map;for(let b of P){if(Lt(b.symbol))continue;let k=u.get(b.symbol);k||u.set(b.symbol,k=new Set),k.add(b.roles),p.has(b.symbol)||j(b.symbol,null,null,null,null)}for(let[b,k]of u){let B=p.get(b);for(let dt of k)l.run(I,B,dt),a.mentions+=1}}}i.exec("COMMIT"),D=!0}finally{if(!D)try{i.exec("ROLLBACK")}catch{}}i.exec("BEGIN IMMEDIATE");for(let v of Rs)i.exec(v);i.exec("COMMIT"),i.pragma("wal_checkpoint(TRUNCATE)")}finally{i.close()}return a}function ws(e){if(e===0)return null;if(e===1)return"UTF-8";if(e===2)return"UTF-16";if(e===3)return"UTF-32";throw new J(`unknown position encoding ${e}`)}function fi(e){if(e?.aborted)throw new J("SCIP SQLite conversion aborted")}import{readdirSync as Cs,rmSync as js}from"fs";import{cpus as Os,totalmem as Fs}from"os";import{join as Ye}from"path";var ks=2048,Ds=6*1024**3,Ms=4;function $t(e=process.env){let t=Number.parseInt(e.SCIP_QUERY_TS_COMPILER_SHARD_FILES??"",10);return Number.isSafeInteger(t)&&t>0?t:ks}function Pi(e,t){return e>Math.floor(t*1.5)}var Ns=1.25;function Ri(e,t,n){if(!Number.isSafeInteger(t)||t<1)throw new Error(`TypeScript compiler shard targetFiles must be a positive safe integer; received ${t}.`);let r=Math.max(1,Math.ceil(e/t));if(r<=1||n<=1)return r;let a=Math.floor(t*Ns),i=new Set([r,n*Math.floor(r/n),n*Math.ceil(r/n)]),o=c=>Math.ceil(c/n)*Math.ceil(e/c),s=r;for(let c of i)c<1||Math.ceil(e/c)>a||(o(c)<o(s)||o(c)===o(s)&&c<s)&&(s=c);return s}function Ls(e,t,n=()=>1){if(!Number.isSafeInteger(t)||t<1)throw new Error(`TypeScript compiler shard count must be a positive safe integer; received ${t}.`);let r=[...new Set(e)].sort((d,l)=>d.localeCompare(l));if(t===1||r.length<=t)return r.length<=t&&t>1?r.map(d=>[d]):r.length>0?[r]:[];let a=r.map(d=>Math.max(1,n(d))),i=a.reduce((d,l)=>d+l,0),o=[],s=[],c=0;for(let d=0;d<r.length;d+=1){s.push(r[d]),c+=a[d];let l=t-o.length-1,g=r.length-d-1;l>0&&g>=l&&(c>=i*(o.length+1)/t||g===l)&&(o.push(s),s=[])}return s.length>0&&o.push(s),o}function xi(e){let t=e.targetFiles??$t(),n=e.shardCount??Math.max(1,Math.ceil(new Set(e.inputPaths).size/Math.max(1,t)));return Ls(e.inputPaths,n,e.weightOf).map((r,a)=>{let i=Ye(e.projectRoot,jn(a)),o=`${JSON.stringify({extends:`./${e.rootConfigPath}`,compilerOptions:{incremental:!1},files:r.map(s=>`./${s}`),include:[],exclude:[]},null,2)}
288
+ `;return{configPath:i,content:o,inputPaths:r}})}var Ei="typescript-shard-costs.json",bi=4;function Ii(e){let t;try{t=JSON.parse(on(Ye(e,Ei),"shard cost model"))}catch{return null}if(typeof t!="object"||t===null||t.version!==1)return null;let n=t.samples;return Array.isArray(n)&&n.every(a=>typeof a=="object"&&a!==null&&typeof a.firstPath=="string"&&typeof a.lastPath=="string"&&Number.isFinite(a.totalBytes)&&a.totalBytes>0&&Number.isFinite(a.durationMs)&&a.durationMs>0)?{version:1,samples:n}:null}function vi(e,t){Fe(Ye(e,Ei),t)}function _i(e){let t=(e?.samples??[]).filter(i=>i.totalBytes>0&&i.durationMs>0);if(t.length<2)return(i,o)=>o;let n=t.map(i=>i.durationMs/i.totalBytes).sort((i,o)=>i-o),r=n[Math.floor(n.length/2)];if(!(r>0))return(i,o)=>o;let a=[...t].sort((i,o)=>i.firstPath.localeCompare(o.firstPath));return(i,o)=>{for(let s of a){if(i.localeCompare(s.firstPath)<0)break;if(i.localeCompare(s.lastPath)>0)continue;let c=s.durationMs/s.totalBytes/r;return o*Math.min(bi,Math.max(1/bi,c))}return o}}function Ti(e,t){let n=[];for(let r of e){let a=r.inputPaths[0],i=r.inputPaths[r.inputPaths.length-1];if(a===void 0||i===void 0||!(r.durationMs>0))return null;let o=r.inputPaths.reduce((s,c)=>s+Math.max(1,t(c)),0);n.push({firstPath:a,lastPath:i,totalBytes:o,durationMs:r.durationMs})}return n.length>0?{version:1,samples:n}:null}function wi(e=process.env,t={totalmemBytes:Fs(),cpuCount:Os().length}){let n=Number.parseInt(e.SCIP_QUERY_TS_COMPILER_SHARD_CONCURRENCY??"",10);if(Number.isSafeInteger(n)&&n>0)return n;let r=Math.floor(t.totalmemBytes/2/Ds),a=Math.floor(t.cpuCount/2);return Math.max(1,Math.min(Ms,r,a))}function Ci(e){let t;try{t=Cs(e)}catch{return}for(let n of t)if(On(n))try{js(Ye(e,n))}catch{}}import{createHash as qt}from"crypto";import{existsSync as Ut,writeFileSync as Li}from"fs";import{join as zs}from"path";import{randomUUID as As}from"crypto";import{existsSync as ji,rmSync as Gt}from"fs";import{join as $s}from"path";var Gs=12e4,Bs=5,be=class extends Error{name="TypeScriptIndexMemoryPressureError"},Qe=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;emitLocally;requireService;localHost=null;constructor(t,n={}){this.projectRoot=Cn(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??Hs(),this.runtime=n.runtime??Js,this.mailboxLimits=n.mailboxLimits??{},this.emitLocally=n.emitLocally,this.requireService=n.requireService===!0}request(t){let n=wr(this.cacheDir),r=vr(this.cacheDir),a=Rt(n.statePath);if(!Oi(a,this.projectRoot,this.runtime))return this.requestLocally(t);let i=this.runtime.now(),o=i+this.timeoutMs,s=(this.runtime.monotonicNow??C)()+this.timeoutMs,c=xr("typescript-index-v5",{baseGeneration:this.baseGeneration,request:t}),d=Er(c),l=Ir(r,{mailboxVersion:Rr,operationKey:c,clientId:this.runtime.randomId(),enqueuedAtMs:i,deadlineAtMs:o,protocolVersion:qe,id:d,baseGeneration:this.baseGeneration,request:t},{nowMs:i,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??C)()<=s;){if(ji(l.responsePath))try{return Fi(ge(l.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),d,c,this.baseGeneration,t.producerIdentity,t.affectedFiles)}finally{Gt(l.responsePath,{force:!0})}let g=Rt(n.statePath);if(!Oi(g,this.projectRoot,this.runtime))return this.abandonPendingRequest(r,d),this.requestLocally(t);this.runtime.sleep(Bs)}if(ji(l.responsePath))try{return Fi(ge(l.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),d,c,this.baseGeneration,t.producerIdentity,t.affectedFiles)}finally{Gt(l.responsePath,{force:!0})}return this.abandonPendingRequest(r,d),this.requestLocally(t)}abandonPendingRequest(t,n){try{Gt($s(t.pendingDir,`${n}.json`),{force:!0})}catch{}}requestLocally(t){if(this.requireService)throw new Error("TypeScript incremental index service unavailable; refusing to load the whole compiler graph inside the reindex process");return this.emitLocally?Bt(this.emitLocally(t),t.producerIdentity,t.affectedFiles):(this.localHost??=new Cr({projectRoot:this.projectRoot,currentGeneration:()=>this.baseGeneration}),Bt(ki(this.localHost.handle(this.baseGeneration,t),t.producerIdentity),t.producerIdentity,t.affectedFiles))}};function Oi(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null,a=e?Date.parse(e.heartbeatAt):Number.NaN;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===qe&&n.isProcessAlive(e.pid)&&Number.isFinite(a)&&n.now()-a<=Tr&&(!e.processIdentity||r!=null&&z(e.processIdentity,r))}function Fi(e,t,n,r,a,i){let o=JSON.parse(e);if(o.protocolVersion!==qe||o.id!==t||o.operationKey!==n||o.ok===!0&&o.baseGeneration!==r)throw new Error("TypeScript index service wrote an incompatible response.");if(o.ok!==!0){let s=typeof o.error=="string"?o.error:"TypeScript index service request failed.";throw Us(s)?new be(s):new Error(s)}return Bt(ki(o.response,a),a,i)}function Us(e){let t=e.toLowerCase();return t.includes("out of memory")||t.includes("memory limit")||t.includes("allocation failed")||t.includes("err_worker_out_of_memory")}function Bt(e,t,n){if(e.producerIdentity!==t)throw new Error("TypeScript index service wrote an invalid response.");let r=[...new Set(n)].sort(),a=e.fragments.map(i=>i.relativePath).sort();if(JSON.stringify(a)!==JSON.stringify(r))throw new Error("TypeScript index service omitted or added an affected document.");return e}function ki(e,t){if(!e||typeof e!="object")throw new Error("TypeScript index service wrote an invalid response.");let n=e;if(n.producerIdentity!==t||typeof n.cold!="boolean"||typeof n.durationMs!="number"||!Number.isFinite(n.durationMs)||!Array.isArray(n.fragments))throw new Error("TypeScript index service wrote an invalid response.");let r=new Set,a=n.fragments.map(i=>{if(!i||typeof i.relativePath!="string"||i.bytesBase64!==null&&typeof i.bytesBase64!="string"||typeof i.occurrences!="number"||!Number.isInteger(i.occurrences)||i.occurrences<0||typeof i.symbols!="number"||!Number.isInteger(i.symbols)||i.symbols<0||!Array.isArray(i.referenceFragments)||!i.referenceFragments.every(qs)||r.has(i.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(i.relativePath);let o=i.bytesBase64===null?null:Ws(i.bytesBase64);return{relativePath:i.relativePath,bytes:o,occurrences:i.occurrences,symbols:i.symbols,referenceFragments:i.referenceFragments}});return{producerIdentity:n.producerIdentity,cold:n.cold,durationMs:n.durationMs,fragments:a}}function qs(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.targetSymbol=="string"&&!!t.location&&typeof t.location.file=="string"&&Number.isInteger(t.location.line)&&Number.isInteger(t.location.column)}function Ws(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function Hs(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:Gs}var Js={now:Date.now,monotonicNow:C,randomId:As,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:oe,readProcessIdentity:U};var Xs=128,Ys=256;function Qs(e){let t=e.projectMode==="workspace"?e.workspaceProjects??[]:["."],n=se(t);if(t.length===0)return{eligible:!1,reason:"workspace project roots unavailable"};if(t.length===1&&t[0]==="."&&!e.rootTsconfigExists)return{eligible:!1,reason:"root tsconfig unavailable"};if(!e.previousSnapshot)return{eligible:!1,reason:"prior project snapshot unavailable"};if(e.graph===null)return{eligible:!1,reason:"dependency graph unavailable"};if(e.projectFiles.length===0)return{eligible:!1,reason:"prior TypeScript documents unavailable"};let r=q(e.previousSnapshot,e.currentSnapshot);if(r.changes.length===0)return{eligible:!1,reason:"no changed project inputs"};let a=r.changes.filter(m=>m.inputKind==="source"&&ue(m.path)),i=Ai(r,n),o={...r,changes:i},s=a.filter(m=>m.kind==="added").map(m=>m.path),c=a.filter(m=>m.kind==="deleted").map(m=>m.path),d=a.filter(m=>m.kind==="modified"),l=Ve(e.currentSnapshot,e.producerIdentity,n),g=Ve(e.previousSnapshot,e.producerIdentity,n),p=$i(r,i,l,g),f=!p&&Bi(r);if(a.length===0&&!p)return{eligible:!1,reason:"change does not affect the configured TypeScript project"};let R=e.currentSnapshot.files.filter(m=>_e(m.path,e.currentSnapshot.languages)==="source"&&ue(m.path)).map(m=>m.path).sort(),T=new Set(R),j=p?e.projectFiles.filter(m=>!T.has(m)).sort():[...c].sort(),D=p?o:{...r,changes:a},v=p?{eligible:!0,plan:{...Se(o,e.graph,[...new Set([...R,...j])]),mode:"full-project"}}:Vs(d,s,j,e.graph,e.projectFiles);if(!v.eligible)return v;let F=v.plan,_=new Set(j),h=Zs(F,t,e.graph,_);if(!h)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let y=h.length===1?h[0]:void 0;return{eligible:!0,manifest:D,plan:F,projectIdentity:l,previousFragmentGeneration:Ni(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:Ni(e.currentSnapshot,e.producerIdentity),projects:h,deletedFiles:j,replaceProject:p,dependencyGraphUnchanged:f,...y?{tsconfigPath:y.tsconfigPath,projectArgument:y.projectArgument}:{}}}function Ai(e,t){return e.changes.filter(n=>n.inputKind==="source"&&ue(n.path)||n.inputKind==="config"&&(!ce(n.path)||t.has(n.path))&&Ks(n)||n.inputKind==="ambient")}function Ks(e){return e.kind!=="modified"||e.before.semanticHash===void 0||e.after.semanticHash===void 0||e.before.semanticHash!==e.after.semanticHash}function $i(e,t,n,r){return n!==r||e.projectIdentityChanged||e.uncertainty.length>0||t.length>Ys||t.some(a=>a.inputKind==="config"||a.inputKind==="ambient")}function Vs(e,t,n,r,a){if(e.length===0)return t.length===0&&n.length===0?{eligible:!1,reason:"empty affected set"}:{eligible:!0,plan:{mode:"closure",changedFiles:[...new Set([...t,...n])].sort(),affectedFiles:[...new Set([...t,...Di(n,r,a)])].sort(),reasons:[]}};let i=Se({version:1,changes:e.filter(Gi),projectIdentityChanged:!1,uncertainty:[]},r,a);return i.mode==="full-project"?{eligible:!1,reason:i.reasons.length>0?`affected set widened: ${i.reasons.join(", ")}`:"empty affected set"}:{eligible:!0,plan:{mode:"closure",changedFiles:[...new Set([...e.map(o=>o.path),...t,...n])].sort(),affectedFiles:[...new Set([...i.affectedFiles,...e.map(o=>o.path),...t,...Di(n,r,a)])].sort(),reasons:[]}}}function Gi(e){return e.kind!=="modified"?!0:e.before.semanticHash===void 0||e.after.semanticHash===void 0||e.before.semanticHash!==e.after.semanticHash}function Bi(e){let t=e.changes.filter(n=>n.inputKind==="source"&&ue(n.path));return t.length>0&&t.every(n=>n.kind==="modified"&&!Gi(n))}function Zs(e,t,n,r){let a=new Map;for(let o of e.affectedFiles){let s=ec(o,t);if(!s)return null;let c=a.get(s)??[];c.push(o),a.set(s,c)}let i=[];for(let[o,s]of[...a].sort(([c],[d])=>c.localeCompare(d))){let c=new Set(s),d=e.changedFiles.filter(p=>!r.has(p)&&(c.has(p)||s.some(f=>Mi(f,p,n)))),l=e.changedFiles.filter(p=>r.has(p)&&(c.has(p)||s.some(f=>Mi(f,p,n)))),g=s.filter(p=>!r.has(p));if(d.length===0&&l.length===0&&g.length===0)return null;i.push({projectArgument:o,tsconfigPath:o==="."?"tsconfig.json":`${o}/tsconfig.json`,modifiedFiles:d,removedFiles:l,affectedFiles:[...g].sort()})}return i}function Di(e,t,n){let r=new Set(n),a=new Map;for(let[s,c]of t)if(r.has(s))for(let d of c){let l=a.get(d)??new Set;l.add(s),a.set(d,l)}let i=new Set(e),o=[...e];for(let s=0;s<o.length;s+=1){let c=o[s];if(c)for(let d of a.get(c)??[])i.has(d)||(i.add(d),o.push(d))}return[...i].sort()}function ec(e,t){let n=t.filter(i=>i==="."||e===i||e.startsWith(`${i}/`));if(n.length===0)return null;let r=[...new Set(n)].sort((i,o)=>Ke(o)-Ke(i)||i.localeCompare(o)),a=r[0];return r[1]&&Ke(r[1])===Ke(a)?null:a}function Ke(e){return e==="."?0:e.split("/").filter(Boolean).length}function Mi(e,t,n){let r=new Set,a=[e];for(let i=0;i<a.length;i+=1){let o=a[i];if(!(!o||r.has(o))){r.add(o);for(let s of n.get(o)??[]){if(s===t)return!0;r.has(s)||a.push(s)}}}return!1}function Ui(e){let t=C();try{if(!Ut(e.previousDbPath)||!Ut(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=Pt();if(!r.available)throw new Error(r.reason);let a=performance.now()-n;n=performance.now();let i=new $({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),o=nc(e.projectRoot,e.previousSnapshot,e.currentSnapshot),s=e.projectMode==="workspace"?X(e.projectRoot,e.currentSnapshot.typescriptProjects):["."],c=se(s),d,l,g;try{d=ke(i,{includeIgnored:!1}).filter(ue).sort();let I=o?q(o,e.currentSnapshot):null,u=I&&o&&$i(I,Ai(I,c),Ve(e.currentSnapshot,r.producerIdentity,c),Ve(o,r.producerIdentity,c)),b=I!==null&&!u&&Bi(I);u?(g=Me(i,"none")??void 0,l=new Map):b?l=new Map:(g=De(i),l=g.graph)}finally{i.close()}let p=performance.now()-n,f=Qs({projectMode:e.projectMode,workspaceProjects:e.projectMode==="workspace"?s:void 0,previousSnapshot:o,currentSnapshot:e.currentSnapshot,projectFiles:d,graph:l,producerIdentity:r.producerIdentity,rootTsconfigExists:Ut(zs(e.projectRoot,"tsconfig.json"))});if(!f.eligible)throw new Error(f.reason);let R=_r(e.previousDbPath);if(!R)throw new Error("published TypeScript base generation unavailable");n=performance.now();let T=new Qe({projectRoot:e.projectRoot,cacheDir:e.cacheDir,baseGeneration:R},{requireService:!0}),j=f.projects.flatMap(I=>{let u=tc(I.affectedFiles,Xs);return(u.length>0?u:[[]]).map((k,B)=>({project:I,affectedFiles:k,removedFiles:B===0?I.removedFiles:[],firstForProject:B===0}))}),D=[],v=new Map,F=[],_=!1,h=0,y=0,m=0,w=f.previousFragmentGeneration;for(let[I,u]of j.entries()){let b=T.request({kind:"emit-documents",tsconfigPath:u.project.tsconfigPath,projectArgument:u.project.projectArgument,projectIdentity:f.projectIdentity,producerIdentity:r.producerIdentity,modifiedFiles:u.firstForProject?u.project.modifiedFiles:[],removedFiles:u.firstForProject?u.project.removedFiles:[],affectedFiles:u.affectedFiles});_||=b.cold,F.push(b.durationMs);let k=u.removedFiles.map(xe=>({relativePath:xe,bytes:null,occurrences:0,symbols:0,referenceFragments:[]})),B=[...b.fragments,...k];if(!f.replaceProject)for(let xe of B)v.set(xe.relativePath,xe.referenceFragments);let dt=performance.now(),$a=cr(b.fragments);h+=performance.now()-dt;let nn=I===0?e.candidateAffectedScipPath:`${e.candidateAffectedScipPath}.batch-${I}.scip`,Ga=performance.now();Li(nn,$a),m+=performance.now()-Ga;let Ba=performance.now(),rn=I===j.length-1?f.nextFragmentGeneration:rc({previousGenerationIdentity:w,targetGenerationIdentity:f.nextFragmentGeneration,fragments:B});lr({cacheDir:e.cacheDir,previousGenerationIdentity:w,nextGenerationIdentity:rn,producerIdentity:r.producerIdentity,projectIdentity:f.projectIdentity,baseShardCurrent:I===0?e.baseShardCurrent:!1,fragments:B,allowProjectIdentityChange:f.replaceProject&&I===0,allowLegacyProjectIdentityMigration:!0}),y+=performance.now()-Ba,w=rn,D.push({scipPath:nn,affectedFiles:[...u.affectedFiles,...u.removedFiles].sort(),deletedFiles:[...u.removedFiles].sort()})}let S=performance.now()-n,P={scipPath:e.previousShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,affectedBatches:D,completeScipUpdated:!1,durationMs:C()-t,cold:_,changedFiles:f.plan.changedFiles,affectedFiles:f.plan.affectedFiles,deletedFiles:f.deletedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:f.previousFragmentGeneration,nextFragmentGeneration:f.nextFragmentGeneration,manifest:f.manifest,plan:f.plan,projectFileCount:d.length,dependencyGraphSnapshot:g,dependencyGraphUnchanged:f.dependencyGraphUnchanged,referenceFragmentsByFile:v,timings:{runtimeMs:a,graphMs:p,requestMs:S,serviceMs:F.reduce((I,u)=>I+u,0),assemblyMs:h,fragmentStoreMs:y,writeMs:m}};return e.onStatus(`${f.replaceProject?"Bounded TypeScript project refresh":"Incremental TypeScript index"} emitted ${P.affectedFiles.length-P.deletedFiles.length} document(s), removed ${P.deletedFiles.length}, and produced ${D.length} bounded batch(es) across ${f.projects.length} project(s) in ${(P.durationMs/1e3).toFixed(3)}s (${P.cold?"cold":"warm"} service; whole SCIP deferred; runtime ${a.toFixed(0)}ms, graph ${p.toFixed(0)}ms, request ${S.toFixed(0)}ms, assembly ${h.toFixed(0)}ms, fragments ${y.toFixed(0)}ms, write ${m.toFixed(0)}ms).`),P}catch(n){let r=n instanceof Error?n.message:String(n);if(e.onUnavailable?.(r),n instanceof be)throw e.onStatus(`Incremental TypeScript index stopped after memory pressure survived one cold Worker retry: ${r}. Preserving the accepted index instead of starting a memory-heavier whole-project rebuild.`),n;return e.onStatus(`Incremental TypeScript index unavailable: ${r}.`),null}}function tc(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function nc(e,t,n){if(!t)return null;let r=new Map(n.files.map(o=>[o.path,o])),a=!1,i=t.files.map(o=>{let s=r.get(o.path);if(o.semanticHash!==void 0||s?.semanticHash===void 0)return o;let c=we(e,o.path,o.hash);return c===void 0?o:(a=!0,{...o,semanticHash:c})});return a?{...t,files:i}:t}function rc(e){let t=qt("sha256");t.update("typescript-overlay-batch-v1\0"),t.update(e.previousGenerationIdentity),t.update("\0"),t.update(e.targetGenerationIdentity);for(let n of[...e.fragments].sort((r,a)=>r.relativePath.localeCompare(a.relativePath)))t.update("\0path\0"),t.update(n.relativePath),n.bytes===null?t.update("\0deleted"):(t.update("\0bytes\0"),t.update(qt("sha256").update(n.bytes).digest()));return t.digest("hex")}function Wt(e){let t=Pt();if(!t.available)throw new Error(t.reason);let n=ur({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:ie(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:Ee}),packageVersion:t.packageVersion});Li(e.candidateShardPath,n)}function Ve(e,t,n){let r=e.files.filter(a=>{let i=_e(a.path,e.languages);return i==="ambient"||i==="config"&&(!ce(a.path)||n.has(a.path))}).map(a=>{let o=_e(a.path,e.languages)==="config"?a.semanticHash:void 0;return{path:a.path,size:o===void 0?a.size:0,hash:o??a.hash}}).sort((a,i)=>a.path.localeCompare(i.path));return`typescript-project-v3:${qi(JSON.stringify({version:3,producerIdentity:t,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),nonSourceInputs:r}))}`}function Ni(e,t){return qi(JSON.stringify({version:1,producerIdentity:t,snapshot:pn(e)}))}function qi(e){return qt("sha256").update(e).digest("hex")}import{closeSync as ic,existsSync as Ze,fstatSync as ac,lstatSync as oc,openSync as sc,renameSync as Jt,rmSync as Pe,statSync as cc,writeSync as dc}from"fs";import{cpus as lc}from"os";import{join as zt}from"path";var Wi=8*1024;function Hi(e,t,n){let r=Buffer.from(t,"utf8"),a=()=>sc(e,"wx",384),i;try{i=a()}catch(o){if(o.code!=="EEXIST")throw o;if(n==="skip")return null;Pe(e,{force:!0}),i=a()}try{dc(i,r);let o=ac(i);return{path:e,content:r,device:o.dev,inode:o.ino}}finally{ic(i)}}function uc(e,t){let n=[];try{if(e.temporaryRootConfigContent!==void 0){let r=Hi(zt(t,"tsconfig.json"),e.temporaryRootConfigContent,"skip");r&&n.push(r)}for(let r of e.temporaryProjectConfigs??[]){let a=Hi(r.path,r.content,"replace");a&&n.push(a)}return n}catch(r){for(let a of n.reverse())Xi(a);throw r}}function Xi(e){if(e)try{let t=oc(e.path);if(!t.isFile()||t.dev!==e.device||t.ino!==e.inode||t.size!==e.content.byteLength)return;let n;try{n=ie(e.path,{maxBytes:e.content.byteLength,inputKind:"temporary TypeScript index configuration"})}catch{return}if(!n.equals(e.content))return;Pe(e.path)}catch(t){if(t.code!=="ENOENT")throw t}}function pc(e,t,n){if(!e.defaultOutputPath)return;let r=zt(t,e.defaultOutputPath);n!==r&&Ze(r)&&Jt(r,n)}function gc(e,t,n){if(!e.defaultOutputPath)return null;let r=zt(t,e.defaultOutputPath);if(r===n)return null;let a=`${n}.default-output-backup`;return Pe(a,{force:!0}),Ze(r)?(Jt(r,a),{defaultOutputPath:r,backupPath:a}):{defaultOutputPath:r,backupPath:null}}function fc(e){e&&(Pe(e.defaultOutputPath,{force:!0}),e.backupPath&&Ze(e.backupPath)&&Jt(e.backupPath,e.defaultOutputPath))}function mc(e,t){if(e<=1)return 1;let n=Number(process.env.SCIP_QUERY_INDEXER_CONCURRENCY??0),r=Number.isFinite(t)&&t&&t>0?t:Number.isFinite(n)&&n>0?n:Math.min(8,Math.max(1,lc().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function Yi(e,t,n,r,a){A(a,"Reindex cancelled by its owner.");let i=e.filter(d=>d.config.defaultOutputPath),o=e.filter(d=>!d.config.defaultOutputPath&&d.boundedConcurrency!==void 0),s=e.filter(d=>!d.config.defaultOutputPath&&d.boundedConcurrency===void 0),c=[];if(c.push(...await Ji(s,mc(s.length,r),t,n,a)),o.length>0){let d=Math.max(1,Math.min(...o.map(l=>l.boundedConcurrency)));c.push(...await Ji(o,d,t,n,a))}for(let d of i)A(a,"Reindex cancelled by its owner."),c.push((await Ht(d,t,n,a)).result);return c.sort((d,l)=>e.findIndex(g=>g.id===d.id)-e.findIndex(g=>g.id===l.id))}async function Ji(e,t,n,r,a){let i=await jr(e,Math.max(1,t),s=>Ht(s,n,r,a));if(t<=1)return i.map(({result:s})=>s);let o=new Map;for(let s of i.filter(c=>c.result.skipped&&c.retryable)){let c=e.find(d=>d.id===s.result.id);c&&(r(`Retrying ${c.label} indexer serially after parallel failure...`),A(a,"Reindex cancelled by its owner."),o.set(c.id,(await Ht(c,n,r,a)).result))}return i.map(({result:s})=>o.get(s.id)??s)}async function Ht(e,t,n,r){A(r,"Reindex cancelled by its owner."),n(`Indexing ${e.label} with ${e.resolvedBinary}...`),Pe(e.scipPath,{force:!0});let a=gc(e.config,t,e.scipPath),i=[],o=[e.binary,...e.args].join(" "),s=C();try{i=uc(e,t),e.trustedProjectTool&&$n(t,e.trustedProjectTool);let d=yn(e.binary,e.args),l=await ve({command:d.binary,args:d.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:hc(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,signal:r});if(l.status!==0){let g=l.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${l.status}${g?`:
289
+ ${g}`:""}`)}pc(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw Sn(r,"Reindex cancelled by its owner.");let l=d instanceof Error?d.message:String(d),g=l.length<=Wi?l:`${l.slice(0,Wi)}
290
+ [indexer failure detail truncated]`,p=`${e.resolvedBinary} indexer failed: ${g}`,f=e.label===e.language?p:`${e.label}: ${p}`;return n(`Skipping ${e.label}: ${p}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:C()-s,command:o,...e.outputComposition?{outputComposition:e.outputComposition}:{},skipped:{language:e.language,reason:f}},retryable:yc(d)}}finally{fc(a);for(let d of i.reverse())Xi(d)}if(!Ze(e.scipPath)){let d=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`,l=e.label===e.language?d:`${e.label}: ${d}`;return n(`Skipping ${e.label}: ${d}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:C()-s,command:o,...e.outputComposition?{outputComposition:e.outputComposition}:{},skipped:{language:e.language,reason:l}},retryable:!1}}let c;try{c=cc(e.scipPath).size}catch{c=void 0}return{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:C()-s,command:o,...e.outputComposition?{outputComposition:e.outputComposition}:{},outputBytes:c},retryable:!1}}function hc(){let e=Number(process.env.SCIP_QUERY_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):sn.indexer}function yc(e){return e instanceof cn?e.kind==="spawn"&&zi(e.cause):zi(e)}function zi(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as Ki}from"child_process";import{homedir as Qi,platform as Sc}from"os";import{delimiter as bc,join as et}from"path";function Vi(e,t){let n=e.installMethods,r=Oe(e);if(!n?.length)return t(`No auto-install method available for ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1;for(let a of n){if(!a.identity||!a.destination){t(`Refusing ${a.label} installation for ${r}: the installer descriptor lacks an immutable identity or destination.`);continue}if(!hn(a.prerequisite))continue;let i=Pc(a);t(`Installing immutable ${a.identity} via ${a.label} into ${i}; expected executable: ${r}.`);try{Ki(a.binary,a.args,{stdio:"inherit",timeout:3e5,env:process.env,shell:Sc()==="win32"});let o=he(e);if(o){let s=o===e.indexerBinary?"":` (using ${o})`;return t(`Successfully installed ${a.identity} via ${a.label}${s}; resolved executable: ${o}.`),!0}t(`${a.label} command completed but ${r} was not found on PATH`)}catch(o){let s=o instanceof Error?o.message:String(o);t(`${a.label} install failed: ${s}`)}}return t(`Could not auto-install ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function Pc(e){if(e.binary==="npm")return Xt("npm",["root","-g"])??e.destination;if(e.binary==="go"){let t=Xt("go",["env","GOBIN"]);if(t)return t;let n=Xt("go",["env","GOPATH"]);if(n)return et(n.split(bc)[0],"bin")}return e.binary==="dotnet"?et(process.env.DOTNET_CLI_HOME??Qi(),".dotnet","tools"):e.binary==="dart"?et(process.env.PUB_CACHE??et(Qi(),".pub-cache"),"bin"):e.destination}function Xt(e,t){try{return Ki(e,t,{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}async function ga(e){let{projectRoot:t,onStatus:n=console.log}=e,r=e.maxHeapMb??dn(process.env.NODE_OPTIONS)??8192,a=e.skipAutoInstall===!0||e.installMissing!==!0,i=_c(e),o=Date.now(),s=C();rt(x(i.outputScip),{recursive:!0}),rt(x(i.outputDb),{recursive:!0});let c=e.languages??tr(t);if(c.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");n(`Detected languages: ${c.join(", ")}`);let d=at(i.metaPath),l=E("reindex.fingerprint",()=>Mn(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath},d,e.changeJournal,ht(i.outputDb)),{languages:c.length}),g=l.fingerprint,p=l.mode==="delta"?e.changeJournal?.entries.filter(y=>y.kind!=="add").length??0:0,f=Math.max(0,(d?.files.length??0)-p);n(l.mode==="delta"?`Project fingerprint revalidated ${l.changedPaths.length} changed path(s), reused ${f} accepted file fingerprint(s), and accepted ${g.files.length} input(s)`:`Project fingerprint used full scan: ${l.reason}`);let R=await Ic({opts:e,paths:i,languages:c,fingerprint:g,onStatus:n}),T=R.snapshot,j=R.releaseBuildLock,D=_a(e.trigger),v=Rn(O(x(i.outputDb),"cache-lifecycle.lock"),{waitMs:D?1e3:3e4});if(!v)throw j?.(),new le(D?`Could not acquire scip-query cache lifecycle lock for ${x(i.outputDb)}; another refresh is publishing, so the watcher will retry.`:`Could not acquire scip-query cache lifecycle lock for ${x(i.outputDb)}. A watch daemon or another reindex may hold it. Run "scip-query watch --stop", retry the reindex, then restart with "scip-query watch --daemon".`);let F;try{F=await G("reindex.lock",()=>rd(O(x(i.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:n}),{languages:c.length})}catch(y){throw v.release(),j?.(),y}let _=null,h=Dr();try{l.mode==="delta"&&ht(i.outputDb)!==e.changeJournal?.baseGeneration&&(g=kn(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),l={mode:"full",fingerprint:g,reason:"accepted-generation-changed-before-lock"},T=void 0,j?.(),j=void 0,n("Project fingerprint used full scan: accepted-generation-changed-before-lock")),fr(i.outputDb,i.outputScip,i.metaPath);let y=jc(x(i.outputDb));y.removed>0&&n(`Removed ${y.removed} abandoned reindex workspace(s)`);for(let b of y.errors)n(`Could not remove abandoned reindex workspace: ${b}`);let m=null,w=await G("reindex.reuse-check",async()=>(m=await Tc({opts:e,paths:i,languages:c,fingerprint:g,start:o,monotonicStart:s,onStatus:n}),m),()=>({languages:c.length,reused:m!==null}));if(w){na({snapshot:T,paths:i,projectRoot:t,fingerprint:g,onStatus:n});let b=St(i.outputDb,w);return b.state==="failed"&&n(`Warning: reindex succeeded, but activity telemetry was not recorded: ${b.reason}`),gt(t,x(i.outputDb)),w}xn()&&await G("reindex.scip-cli-ready",()=>zc(a,n));let S=Cc(i);_=S.runDir;let P,I=await G("reindex.fresh",async()=>(P=await Oc({opts:e,languages:c,projectRoot:t,paths:i,tempPaths:S,fingerprint:g,start:o,monotonicStart:s,maxHeapMb:r,skipAutoInstall:a,onStatus:n,writeTelemetry:h}),P),()=>({languages:c.length,reused:P?.reused,skipped:P?.skipped.length}));na({snapshot:T,paths:i,projectRoot:t,fingerprint:g,onStatus:n});let u=St(i.outputDb,I);return u.state==="failed"&&n(`Warning: reindex succeeded, but activity telemetry was not recorded: ${u.reason}`),gt(t,x(i.outputDb)),I}catch(y){let m=ct({trigger:e.trigger,result:"failed",start:o,monotonicStart:s,error:y instanceof Error?y.message:String(y)});ja(i.metaPath,m);let w=sr(i.outputDb,m);throw w.state==="failed"&&n(`Warning: failed reindex activity telemetry was not recorded: ${w.reason}`),y}finally{_&&Z(_,{recursive:!0,force:!0}),F(),v.release(),j?.()}}async function Ic(e){let{opts:t,paths:n,languages:r,fingerprint:a,onStatus:i}=e,o=t.projectRoot;if(!(t.skipIfUnchanged!==!1&&!mr(o,n.outputDb)&&Zi(n.outputScip)===Zi(O(x(n.outputDb),"index.scip"))))return{snapshot:void 0,releaseBuildLock:void 0};let c=je(o),d=c?.clean?Be(c,a):void 0;if(c&&!c.clean&&!ra(n))return ta({context:c,languages:r,opts:t,paths:n,fingerprint:a,projectRoot:o,onStatus:i,successMessage:"dirty worktree reindex",failurePrefix:"Shared baseline fork failed"}),{snapshot:d,releaseBuildLock:void 0};if(!d)return{snapshot:void 0,releaseBuildLock:void 0};let l=bt(d);if(l){if(!vc(n,a))try{Ue({snapshot:d,manifest:l,targetCacheDir:x(n.outputDb),targetProjectRoot:o}),i(`Attached shared generation ${d.generationId.slice(0,12)}`)}catch(p){i(`Shared generation attach failed; continuing locally: ${ee(p)}`)}return{snapshot:d,releaseBuildLock:void 0}}c&&!ra(n)&&ta({context:c,languages:r,opts:t,paths:n,fingerprint:a,projectRoot:o,onStatus:i,successMessage:"cold worktree reindex",failurePrefix:"Compatible shared baseline fork failed",compatible:!0});let g=await Sr(d);if(g.kind==="owner")return{snapshot:d,releaseBuildLock:g.release};if(g.kind==="generation-ready"){let p=bt(d);if(p)try{Ue({snapshot:d,manifest:p,targetCacheDir:x(n.outputDb),targetProjectRoot:o,action:"waited"}),i(`Attached shared generation ${d.generationId.slice(0,12)} after waiting`)}catch(f){i(`Shared generation attach failed after waiting; continuing locally: ${ee(f)}`)}}else i("Shared generation build lock timed out; continuing with an isolated local reindex");return{snapshot:d,releaseBuildLock:void 0}}function ta(e){let t=hr(e.context,e.languages,{pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,clojureConfigPath:e.opts.clojureConfigPath},e.fingerprint);if(t)try{Ue({snapshot:t.snapshot,manifest:t.manifest,targetCacheDir:x(e.paths.outputDb),targetProjectRoot:e.projectRoot,persistLease:!1}),Pr(t.snapshot,x(e.paths.outputDb)),e.onStatus(`Forked ${e.compatible?"compatible ":""}shared baseline ${t.snapshot.generationId.slice(0,12)} for ${e.successMessage}`)}catch(n){e.onStatus(`${e.failurePrefix}; continuing locally: ${ee(n)}`)}}function na(e){if(e.snapshot)try{let t=je(e.projectRoot),n=t?Be(t,e.fingerprint):void 0;if(!n||n.generationId!==e.snapshot.generationId){e.onStatus("Skipped shared generation publication because the worktree changed during indexing");return}let r=yr({snapshot:e.snapshot,sourceCacheDir:x(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let a=je(e.projectRoot);return(a?Be(a,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});br(e.snapshot,x(e.paths.outputDb),"built"),e.onStatus(r.kind==="published"?`Published shared generation ${e.snapshot.generationId.slice(0,12)} (${r.achievedDurability})`:`Shared generation ${e.snapshot.generationId.slice(0,12)} was already available (${r.achievedDurability})`)}catch(t){e.onStatus(`Shared generation publication failed; local index remains valid: ${ee(t)}`)}}function vc(e,t){if(!L(e.outputScip)||!L(e.outputDb)||Ca(e.metaPath,t)===null)return!1;let n=W(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function ra(e){if(!L(e.outputScip)||!L(e.outputDb)||!re(e.metaPath))return!1;let t=W(e.outputDb,e.metaPath);return t.state!=="invalid"&&t.state!=="drifted"}function ee(e){return e instanceof Error?e.message:String(e)}async function Kt(e,t,n,r,a,i,o,s=!1){try{await or(Mr({indexPath:n,evidenceDbPath:o,reuseExisting:a,affectedFiles:i,forceDerivedRebuild:s}),{projectRoot:e,dbPath:t,onStatus:r})}catch(c){r(`Runtime-boundary extraction unavailable: ${c instanceof Error?c.message:String(c)}.`)}}function _c(e){let t=e.outputScip??O(e.projectRoot,"index.scip"),n=e.outputDb??O(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:O(x(n),"meta.json")}}async function Tc(e){let t=W(e.paths.outputDb,e.paths.metaPath),n=Ca(e.paths.metaPath,e.fingerprint);if(e.opts.skipIfUnchanged===!1||!L(e.paths.outputScip)||!L(e.paths.outputDb)||n===null||t.state==="invalid"||t.state==="drifted")return null;let r=$e(e.paths.outputDb,e.fingerprint,e.languages);if(r.state!=="complete")return e.onStatus(Vt("Accepted SQLite index",r)),null;Ae(Ne(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),await Kt(e.opts.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0),W(e.paths.outputDb,e.paths.metaPath).state==="drifted"&&(Ge(e.paths.outputDb,e.paths.metaPath),e.onStatus("Published refreshed SQLite generation after post-index augmentation")),n==="operational-config-compatible"&&(ud(e.paths.metaPath,e.fingerprint,e.languages,e.opts),Ge(e.paths.outputDb,e.paths.metaPath),e.onStatus("Migrated operational .scipquery.json metadata without rerunning language indexers."));let a=C()-e.monotonicStart,i=ct({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return ja(e.paths.metaPath,i),e.onStatus(`Index unchanged; reused existing SQLite index in ${(a/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:a,reused:!0,skipped:[],lastRefresh:i,shards:wc(e.paths,e.languages,e.opts,e.fingerprint)}}function wc(e,t,n,r){let a=Zt(r,t,n);return t.map(i=>({id:i,language:i,reused:!0,strategy:"reused",fingerprint:Re(a[i]),outputBytes:te(en(e.outputDb,i)),durationMs:0}))}function Cc(e){let t=xc(O(x(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:O(t,tt(e.outputScip)),tempOutputDb:O(t,tt(e.outputDb)),tempMetaPath:O(t,tt(e.metaPath))}}function jc(e){let t=[],n;try{n=ua(e,{withFileTypes:!0})}catch(a){return{removed:0,errors:[ee(a)]}}let r=0;for(let a of n)if(!(!a.name.startsWith("reindex-")||!a.isDirectory()))try{Z(O(e,a.name),{recursive:!0,force:!0}),r+=1}catch(i){t.push(`${a.name}: ${ee(i)}`)}return{removed:r,errors:t}}async function Oc(e){let t={...process.env,NODE_OPTIONS:ln(process.env.NODE_OPTIONS,e.maxHeapMb)},n,r=await G("reindex.language-indexers",async()=>(n=await kc(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:a,skippedLanguages:i,reusedLanguages:o,languageFingerprints:s,shards:c,typescriptProjectShardContext:d,incrementalTypeScript:l}=r;if(o.length>0&&e.onStatus(`Reused ${o.length} cached language shard(s): ${o.join(", ")}`),Fc({run:e,indexedOutputs:a,skippedLanguages:i,reusedLanguages:o})){let f=await G("reindex.publish",()=>qc(e,a,i,o,s,d),{mode:"metadata-only",languages:a.length,reused:o.length}),R=f.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(R/1e3).toFixed(1)}s`),{languages:a.map(T=>T.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:R,reused:!0,skipped:i,lastRefresh:f,shards:c,writeTelemetry:e.writeTelemetry}}let g=await G("reindex.publish",()=>Bc(e,t,a,i,o,s,d,l),{mode:l?"incremental-or-fallback":"full",languages:a.length,reused:o.length,skipped:i.length}),p=g.durationMs;return e.onStatus(`Done in ${(p/1e3).toFixed(1)}s`),{languages:a.map(f=>f.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:i,lastRefresh:g,shards:c,writeTelemetry:e.writeTelemetry}}function Fc(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!L(e.run.paths.outputScip)||!L(e.run.paths.outputDb))return!1;let t=W(e.run.paths.outputDb,e.run.paths.metaPath);if(t.state==="invalid"||t.state==="drifted")return!1;let n=new Set(e.reusedLanguages),r=new Set(e.indexedOutputs.map(a=>a.language));return e.run.languages.length>0&&r.size===e.run.languages.length&&e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(a=>n.has(a)&&r.has(a))}async function kc(e,t){let n=e.opts.skipIfUnchanged===!1,r=Ac({paths:e.paths,projectRoot:e.projectRoot,languages:e.languages,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,clojureConfigPath:e.opts.clojureConfigPath,projectFingerprint:e.fingerprint});if(n)for(let[u,b]of r)b.reused&&r.set(u,{...b,reused:!1,reason:"forced reindex requested"});let a=[],i=new Set;for(let[u,b]of r)b.reused&&(a.push({language:u,scipPath:b.scipPath}),i.add(u));for(let u of i)e.onStatus(`Reusing cached ${u} SCIP shard (language inputs unchanged).`);let o=r.get("typescript"),s=W(e.paths.outputDb,e.paths.metaPath),c=re(e.paths.metaPath),d=s.state==="legacy"||s.state==="current",l=c?.scipCompanion!=="deferred"&&(s.state!=="current"||s.generation.publication?.scipCompanion!=="deferred"),g;n&&o&&!o.reused&&(g="forced reindex rebuilds from the compilers");let p=!n&&o&&!o.reused&&d?Ui({projectRoot:e.projectRoot,cacheDir:x(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:o.scipPath,candidateShardPath:ne(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:ne(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:l,previousSnapshot:at(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus,onUnavailable:u=>{g=u}}):null,f=new Set(p?["typescript"]:[]);if(e.opts.allowExpensiveRebuild===!1){let u=e.languages.filter(b=>!i.has(b)&&!f.has(b));if(u.length>0){let b=u.length===1&&u[0]==="typescript"&&g?`: ${g}`:"";throw new Error(`Incremental indexing is unavailable for ${u.join(", ")}${b}. The accepted index was preserved because whole-project rebuilds are disabled; run scip-query reindex --allow-expensive-rebuild only when you explicitly want that fallback.`)}}let R=p||i.has("typescript")?void 0:Dc(e,r),T=R&&n?{...R,classification:new Map([...R.classification].map(([u,b])=>[u,b.reused?{...b,reused:!1,reason:"forced reindex requested"}:b])),reusedProjects:[],missedProjectIds:new Set(R.allProjects.map(u=>`typescript:${u}`))}:R,{preparedRuns:j,skippedLanguages:D,languageOutputScipPaths:v}=Xc({languages:e.languages.filter(u=>!i.has(u)&&!f.has(u)),tempOutputScip:e.tempPaths.tempOutputScip,projectRoot:e.projectRoot,env:t,skipAutoInstall:e.skipAutoInstall,trustProjectTools:e.opts.trustProjectTools===!0,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,preDiscoveredTypeScriptProjects:T?.allProjects,typescriptShardCostDir:x(e.paths.outputDb),clojureConfigPath:e.opts.clojureConfigPath,onStatus:e.onStatus}),F=T?j.filter(u=>u.language!=="typescript"||T.missedProjectIds.has(u.id)):j,_=await Yi(F,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal);if(fn())for(let u of _)mn({type:"span",name:`reindex.language-indexer.${u.id}`,durationMs:Math.round(u.durationMs),ok:!u.skipped,language:u.language,indexerCommand:u.command,outputBytes:u.outputBytes,measurement:"indexer-run-result"});Qc(x(e.paths.outputDb),e.projectRoot,F,_);let h=[];if(T){Nc(e.paths.outputDb,_,e.writeTelemetry);let u=v.typescript??e.tempPaths.tempOutputScip;h=Lc({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:u,reusedProjects:T.reusedProjects,writeTelemetry:e.writeTelemetry})}let y=[..._,...h],{indexedOutputs:m}=Vc(y,D),w=p?[{language:"typescript",scipPath:p.scipPath}]:[],S=[...a,...w,...m];Zc(S,D,e.languages,e.opts.allowPartial,e.onStatus);let P=p?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:p.scipPath,outputScipPath:p.scipPath,durationMs:p.durationMs,command:"watch-service:typescript-index",outputBytes:te(p.scipPath)??void 0,producedOutputBytes:te(p.affectedScipPath)??void 0}]:[],I=$c(r,[..._,...P],T?{outputDb:e.paths.outputDb,classification:T.classification}:void 0,g);return{indexedOutputs:S,skippedLanguages:D,reusedLanguages:[...i],languageFingerprints:Gc(r,e.languages),shards:I,typescriptProjectShardContext:T?{projects:T.allProjects,fingerprints:T.fingerprints}:void 0,incrementalTypeScript:p??void 0}}function Dc(e,t){let n=t.get("typescript");if(!n||n.reused||n.cacheIntegrityFailed||e.opts.typescriptProjectMode!=="workspace")return;let r=X(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let a=ai(e.projectRoot,r),i=ni(n.fingerprint.files,r),o=ri(r,a),s=ii(r,i,o),c=re(e.paths.metaPath),l=Mc(c,s,R=>L(ot(e.paths.outputDb,R))),g=[...l.entries()].filter(([,R])=>R.reused).map(([R])=>R),p=new Set(g),f=new Set(r.filter(R=>!p.has(R)).map(R=>`typescript:${R}`));return{allProjects:r,fingerprints:s,classification:l,reusedProjects:g,missedProjectIds:f}}function Mc(e,t,n){let r=new Map;for(let a of Object.keys(t)){let i=t[a];if(!e){r.set(a,{reused:!1,reason:"no reindex metadata found",fingerprint:i});continue}let o=e.version===ae&&ut(e).typescriptProjectShardReuse?e.typescriptProjectShards?.[a]:void 0;if(!o){r.set(a,{reused:!1,reason:"no cached fingerprint for this project",fingerprint:i});continue}if(!n(a)){r.set(a,{reused:!1,reason:"cached shard file missing on disk",fingerprint:i});continue}if(N(o)!==N(i)){r.set(a,{reused:!1,reason:"project inputs changed since last index",fingerprint:i});continue}r.set(a,{reused:!0,fingerprint:i})}return r}function Nc(e,t,n){for(let r of t){if(r.skipped||!r.id.startsWith("typescript:"))continue;let a=r.id.slice(11),i=ot(e,a);rt(x(i),{recursive:!0}),V(n,K(r.scipPath,i,void 0,{shareImmutable:!0}))}}function Lc(e){return e.reusedProjects.map((t,n)=>{let r=ot(e.outputDb,t),a=ne(e.tempOutputScip,"typescript-project-cached",n);return V(e.writeTelemetry,K(r,a,void 0,{shareImmutable:!0})),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:a,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:te(a)??void 0}})}function Ac(e){let t=re(e.paths.metaPath),n=Zt(e.projectFingerprint,e.languages,e),r=t&&L(e.paths.outputDb)?$e(e.paths.outputDb,e.projectFingerprint,e.languages):null,a=new Map;for(let i of e.languages){let o=en(e.paths.outputDb,i),s=n[i];if(!t){a.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:s,scipPath:o});continue}if(t.version!==ae){a.set(i,{reused:!1,reason:`metadata version ${String(t.version??"unknown")} predates per-language shard caching`,fingerprint:s,scipPath:o});continue}if(!ut(t).languageShardReuse||!t.languageFingerprints){a.set(i,{reused:!1,reason:"no per-language fingerprints recorded in metadata",fingerprint:s,scipPath:o});continue}let c=t.languageFingerprints[i];if(!c){a.set(i,{reused:!1,reason:"no cached fingerprint for this language",fingerprint:s,scipPath:o});continue}if(!L(o)){a.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:s,scipPath:o});continue}let d=i==="typescript"?cd(e.projectRoot,c):c;if(N(d)!==N(s)){a.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:s,scipPath:o});continue}if(r?.state==="unavailable"||r?.state==="incomplete"&&r.affectedLanguages.includes(i)){a.set(i,{reused:!1,reason:Vt("accepted SQLite index",r),cacheIntegrityFailed:!0,fingerprint:s,scipPath:o});continue}a.set(i,{reused:!0,fingerprint:s,scipPath:o})}return a}function $c(e,t,n,r){let a=[];for(let[i,o]of e)o.reused&&a.push({id:i,language:i,reused:!0,strategy:"reused",fingerprint:Re(o.fingerprint),outputBytes:te(o.scipPath),durationMs:0});for(let i of t){let o=e.get(i.language),s=n&&i.id.startsWith("typescript:")?i.id.slice(11):null,c=s?n.classification.get(s):void 0;a.push({id:i.id,language:i.language,reused:!1,strategy:i.command==="watch-service:typescript-index"?"incremental":"full",missReason:c?.reason??o?.reason??i.skipped?.reason,fallbackReason:i.language==="typescript"?r:void 0,fingerprint:c?Re(c.fingerprint):o?Re(o.fingerprint):"unknown",outputBytes:i.outputBytes??null,producedOutputBytes:i.producedOutputBytes,durationMs:i.durationMs,command:i.command})}if(n)for(let[i,o]of n.classification)o.reused&&a.push({id:`typescript:${i}`,language:"typescript",reused:!0,strategy:"reused",fingerprint:Re(o.fingerprint),outputBytes:te(ot(n.outputDb,i)),durationMs:0});return a}function Re(e){return Rc("sha256").update(N(e)).digest("hex").slice(0,16)}function te(e){try{return Qt(e).size}catch{return null}}function Gc(e,t){let n={};for(let r of t){let a=e.get(r);a&&(n[r]=a.fingerprint)}return n}async function Bc(e,t,n,r,a,i,o,s){A(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,d=!1;c&&(d=E("reindex.publish.scip-output",()=>{let h=Jc({run:e,indexedOutputs:n,incrementalTypeScript:s,typescriptReused:a.includes("typescript")});return ia(e.paths.outputDb,h,e.writeTelemetry),aa(h,e.tempPaths.tempOutputScip,e.onStatus)}));let l=await G("reindex.publish.sqlite-output",()=>ed({run:e,env:t,indexedOutputs:n,skippedLanguages:r,reusedLanguages:a,incrementalTypeScript:s,completeScipAvailable:c,completeScipSanitized:d,materializeFullFallback:async()=>{if(A(e.opts.signal,"Reindex cancelled by its owner."),!s||s.completeScipUpdated)return d;e.onStatus("Materializing the deferred whole TypeScript SCIP companion for full conversion..."),Wt({cacheDir:x(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let h=n.map(y=>y.language==="typescript"?{language:y.language,scipPath:s.candidateScipPath}:y);return ia(e.paths.outputDb,h,e.writeTelemetry),d=aa(h,e.tempPaths.tempOutputScip,e.onStatus),d}}));A(e.opts.signal,"Reindex cancelled by its owner."),E("reindex.publish.auxiliary-documents",()=>{Ae(Ne(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus})}),await G("reindex.publish.runtime-boundaries",async()=>{let h=s?.plan.mode==="full-project",y=s?.dependencyGraphUnchanged===!0;h?e.onStatus("Rebuilding compiler-derived runtime-boundary relationships while retaining unchanged per-file extraction facts."):y&&e.onStatus("Reusing runtime-boundary relationships because TypeScript semantics are unchanged."),await Kt(e.projectRoot,e.tempPaths.tempOutputDb,e.tempPaths.tempOutputScip,e.onStatus,y,y?void 0:h?s?.changedFiles:s?.affectedFiles,O(x(e.paths.outputDb),Un),h)});let g=E("reindex.publish.sqlite-layout",()=>Ot(e.tempPaths.tempOutputDb,{analyze:Uc(s,l.mode)}));g.added.length>0&&e.onStatus(`Added SQLite query indexes: ${g.added.join(", ")}`),g.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${g.removed.join(", ")}`),E("reindex.publish.coverage",()=>Sa(e,e.tempPaths.tempOutputDb,n.map(h=>h.language)));let p,f=null;l.mode==="incremental"&&s&&E("reindex.publish.reference-fragments",()=>{if(s.dependencyGraphUnchanged){let m=new $({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});try{f=yt(m),e.onStatus("Preserved exact TypeScript reference fragments and dependency relationships because only trivia changed.")}finally{m.close()}return}let h=null,y=null;try{h=E("reindex.publish.reference-fragments.open-candidate",()=>new $({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip})),y=E("reindex.publish.reference-fragments.open-evidence",()=>new $({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip})),p=s.dependencyGraphSnapshot?E("reindex.publish.reference-fragments.dependency-graph",()=>Jn(h,s.dependencyGraphSnapshot,s.affectedFiles,s.deletedFiles))??void 0:void 0;let m=new Set(s.deletedFiles),w=m.size===0?s.referenceFragmentsByFile:new Map([...s.referenceFragmentsByFile].filter(([P])=>!m.has(P))),S=E("reindex.publish.reference-fragments.seed",()=>Xn(h,e.fingerprint,w,y,p,new Set(s.affectedFiles)));e.onStatus(`Cached exact TypeScript reference fragments for ${S.affectedFiles} affected document(s) and carried ${S.carriedFiles} unaffected document(s) forward.`),S.skippedAffectedFiles>0&&e.onStatus(`Skipped exact TypeScript reference fragment prefill for ${S.skippedAffectedFiles} affected document(s) whose semantic identity was unavailable.`)}catch(m){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${m instanceof Error?m.message:String(m)}.`)}finally{h?.close(),y?.close()}});let R=at(e.paths.metaPath);l.mode==="incremental"&&s||await fa({projectRoot:e.projectRoot,previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousSnapshot:R,currentSnapshot:e.fingerprint,onStatus:e.onStatus});let T=E("reindex.publish.affected-shadow",()=>l.mode==="incremental"&&s?nd(s,l.changedDocumentPaths):vt({projectRoot:e.projectRoot,previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.tempPaths.tempOutputDb,candidateIndexPath:e.tempPaths.tempOutputScip,previousSnapshot:R,currentSnapshot:e.fingerprint,refreshResult:"rebuilt"})),j=ct({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(h=>h.language),skipped:[...r]}),D=l.mode==="incremental"&&l.scipCompanion==="deferred",{metadata:v,pruneProjects:F}=ha({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:a,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:j});v.scipCompanion=D?"deferred":"current",E("reindex.publish.metadata",()=>{ya(e),ba(e.paths.outputDb,F),st(e.tempPaths.tempMetaPath,v)});let _=E("reindex.publish.generation-handoff",()=>gr({tempOutputScip:e.tempPaths.tempOutputScip,tempOutputDb:e.tempPaths.tempOutputDb,tempMetaPath:e.tempPaths.tempMetaPath,outputScip:e.paths.outputScip,outputDb:e.paths.outputDb,metaPath:e.paths.metaPath,preserveOutputScip:l.mode==="incremental"&&l.scipCompanion==="deferred",publication:l.mode==="incremental"?{mode:"incremental",validation:"passed",converterDurationMs:l.converterDurationMs,affectedDocumentCount:s?.affectedFiles.length,changedDocumentCount:l.changedDocumentPaths.length,producerDurationMs:s?.timings.serviceMs,materializationDurationMs:s?.durationMs,patchDurationMs:l.patchDurationMs,scipCompanion:l.scipCompanion,...l.scipCompanion==="deferred"&&s?{typescriptOverlayGeneration:s.nextFragmentGeneration}:{}}:{mode:"full",validation:"passed",converterDurationMs:l.converterDurationMs,scipCompanion:"current",...l.fallbackReason?{fallbackReason:l.fallbackReason}:{}}}));return _.achievedDurability==="file-flushed"&&e.onStatus(`Published local generation ${_.currentGeneration.slice(0,12)} (file-flushed; directory sync unsupported)`),l.mode==="incremental"&&s&&E("reindex.publish.dependency-graph",()=>{let h=null;try{h=new $({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let y=s.plan.mode==="full-project"&&s.plan.reasons.length===0?s.changedFiles:s.affectedFiles,m=!1;if(s.dependencyGraphUnchanged){let w=yt(h),S=f&&w?qn(h,"file-dependency-graph",f,w):0;m=S>0,e.onStatus(m?`Carried ${S} unchanged dependency graph product(s) forward without rebuilding them.`:"No persisted dependency graph product required rekeying; the next graph consumer can materialize it.")}else s.dependencyGraphSnapshot?m=Hn(h,s.dependencyGraphSnapshot,y,p):De(h);s.dependencyGraphUnchanged||e.onStatus(m?`Carried the dependency graph forward by replacing ${y.length} changed dependency owner(s).`:"Materialized a fresh dependency graph for the accepted generation because no compatible prior graph was available.")}catch(y){e.onStatus(`Dependency graph carry-forward unavailable: ${y instanceof Error?y.message:String(y)}. The next graph consumer will rebuild it.`)}finally{h?.close()}}),E("reindex.publish.cleanup",()=>{pr(x(e.paths.outputDb),l.mode==="incremental"&&l.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),dr(x(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[])}),E("reindex.publish.shadow-telemetry",()=>ma(e.paths.outputDb,T,e.onStatus)),j}function Uc(e,t){return t!=="incremental"||!e||e.plan.mode==="full-project"?!0:e.affectedFiles.length*20>=e.projectFileCount}async function qc(e,t,n,r,a,i){let o=at(e.paths.metaPath),s=null;try{V(e.writeTelemetry,K(e.paths.outputDb,e.tempPaths.tempOutputDb))}catch(p){s=$r("reused","oracle-error",`Could not snapshot the prior database: ${p instanceof Error?p.message:String(p)}`)}Ae(Ne(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),await Kt(e.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0);let c=Ot(e.paths.outputDb);c.added.length>0&&e.onStatus(`Added SQLite query indexes: ${c.added.join(", ")}`),c.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${c.removed.join(", ")}`),Sa(e,e.paths.outputDb,t.map(p=>p.language)),s==null&&await fa({projectRoot:e.projectRoot,previousDbPath:e.tempPaths.tempOutputDb,previousIndexPath:e.paths.outputScip,previousSnapshot:o,currentSnapshot:e.fingerprint,onStatus:e.onStatus}),s??=vt({projectRoot:e.projectRoot,previousDbPath:e.tempPaths.tempOutputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.paths.outputDb,candidateIndexPath:e.paths.outputScip,previousSnapshot:o,currentSnapshot:e.fingerprint,refreshResult:"reused"});let d=ct({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(p=>p.language),skipped:[...n]}),{metadata:l,pruneProjects:g}=ha({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:a,typescriptProjectShardContext:i,lastRefresh:d});return ya(e),ba(e.paths.outputDb,g),st(e.paths.metaPath,l),Ge(e.paths.outputDb,e.paths.metaPath),ma(e.paths.outputDb,s,e.onStatus),d}async function fa(e){if(!L(e.previousDbPath))return;let t=q(e.previousSnapshot,e.currentSnapshot);if(t.changes.length===0||ye(t).fullProject)return;let n=null;try{if(n=new $({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),Me(n))return;let r=await G("reindex.publish.affected-shadow.warm-sources",()=>zn(n,{yieldToEventLoop:()=>new Promise(a=>setImmediate(a))}));e.onStatus(`Persisted import products for ${r.files} document(s) before the affected-set shadow.`)}catch(r){e.onStatus(`Affected-set shadow import warm-up unavailable: ${r instanceof Error?r.message:String(r)}.`)}finally{n?.close()}}function at(e){return lt(re(e)?.fingerprint)}function ma(e,t,n){try{Gr(e,t),t.status==="evaluated"?n(`Affected-set shadow: ${(t.evaluation.recall*100).toFixed(1)}% recall; ${t.plan.affectedFiles.length} predicted, ${t.comparison.changedFiles.length} changed.`):n(`Affected-set shadow unavailable: ${t.reason}.`)}catch(r){n(`Affected-set shadow telemetry unavailable: ${r instanceof Error?r.message:String(r)}`)}}function ha(e){let t=Wc({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:ae,status:e.skippedLanguages.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.run.fingerprint,sqliteLayoutVersion:1,languageFingerprints:e.languageFingerprints,typescriptProjectShards:t.field,requestedLanguages:e.run.languages,indexedLanguages:e.indexedOutputs.map(n=>n.language),skipped:[...e.skippedLanguages],lastRefresh:e.lastRefresh},pruneProjects:t.pruneProjects}}function ya(e){A(e.opts.signal,"Reindex cancelled by its owner.");let t=Dn(e.projectRoot,e.fingerprint);if(N(t)===N(e.fingerprint))return;let n=new Map(e.fingerprint.files.map(i=>[i.path,i])),r=new Map(t.files.map(i=>[i.path,i])),a=[...new Set([...n.keys(),...r.keys()])].filter(i=>N(n.get(i))!==N(r.get(i))).slice(0,5);throw new Error(`Project inputs changed during reindex (${a.join(", ")||"unknown path"}); refusing to publish artifacts built from a different filesystem snapshot.`)}function Sa(e,t,n){let r=$e(t,e.fingerprint,n);if(r.state!=="complete")throw new Error(`${Vt("Candidate SQLite index",r)} Refusing to publish it.`)}function Vt(e,t){if(t.state==="unavailable")return`${e} document coverage could not be verified (${t.reason}); rebuilding cached language shards.`;let n=t.missingPaths.length>0?` First missing path: ${t.missingPaths[0]}.`:"";return`${e} is missing ${t.missingDocumentCount} fingerprinted source document${t.missingDocumentCount===1?"":"s"}; rebuilding affected language shards.${n}`}function Wc(e){if(e.mode!=="workspace")return{field:void 0,pruneProjects:null};if(e.skippedLanguages.some(t=>t.language==="typescript"))return{field:void 0,pruneProjects:null};if(e.reusedLanguages.includes("typescript")){let t=re(e.metaPath),n=t?.version===ae?t.typescriptProjectShards:void 0;return{field:n,pruneProjects:n?Object.keys(n):[]}}return e.context?{field:e.context.fingerprints,pruneProjects:e.context.projects}:{field:void 0,pruneProjects:[]}}function ba(e,t){let n=wa(e);if(t===null){Z(n,{recursive:!0,force:!0});return}let r;try{r=ua(n)}catch{return}for(let a of Hc(r,t))Z(O(n,a),{force:!0})}function Hc(e,t){let n=new Set(t.map(r=>`${Mt(r)}.scip`));return e.filter(r=>!n.has(r))}function Jc(e){if(e.incrementalTypeScript?.completeScipUpdated)return[...e.indexedOutputs];let t=e.indexedOutputs.find(o=>o.language==="typescript");if(!t)return[...e.indexedOutputs];if(!e.typescriptReused)return[...e.indexedOutputs];let n=W(e.run.paths.outputDb,e.run.paths.metaPath),r=n.state==="current"?n.generation.publication?.typescriptOverlayGeneration:void 0;if(!(n.state==="current"?n.generation.publication?.scipCompanion==="deferred":re(e.run.paths.metaPath)?.scipCompanion==="deferred")||!r)return[...e.indexedOutputs];let i=ne(e.run.tempPaths.tempOutputScip,"typescript-deferred",0);return e.run.onStatus("Materializing the deferred whole TypeScript SCIP companion for complete publication..."),Wt({cacheDir:x(e.run.paths.outputDb),generationIdentity:r,baseShardPath:t.scipPath,candidateShardPath:i}),e.indexedOutputs.map(o=>o.language==="typescript"?{language:o.language,scipPath:i}:o)}function ia(e,t,n){for(let r of t){let a=en(e,r.language);rt(x(a),{recursive:!0}),r.scipPath!==a&&V(n,K(r.scipPath,a,void 0,{shareImmutable:!0}))}}async function zc(e,t){let n=In();if(n){if(n.source==="path"&&ea()!=="win32"){let r=_n();vn(r)||(e?t(`scip on PATH reports ${r??"an unknown version"}; the reviewed version is ${Ce} and compatibility is unverified. Run scip-query setup --install-missing to install the reviewed release.`):(t(`scip on PATH reports ${r??"an unknown version"}; installing the reviewed ${Ce}.`),await Tn(t)))}return}if(ea()==="win32")throw new Error("The scip CLI was not found. On Windows it ships via the npm sidecar package scip-query-scip-windows (installed automatically with scip-query). Reinstall scip-query with optional dependencies enabled, or follow 'scip-query setup' guidance for the exact sidecar package version, or set SCIP_QUERY_SCIP_BIN to a local scip.exe path.");if(e)throw new Error(`The scip CLI is required but not found on PATH.
249
291
  To install the reviewed version, run: scip-query reindex --install-missing
250
- Or install manually from: https://github.com/sourcegraph/scip/releases`);if(t("scip CLI not found on PATH. Attempting auto-install..."),!Zt(t))throw new Error(`The scip CLI is required but could not be installed.
251
- Install manually from: https://github.com/sourcegraph/scip/releases`)}}function bs(e){let t=[],n=[],r=e.languages.map((i,o)=>({language:i,scipPath:e.languages.length>1?ie(e.tempOutputScip,i,o):e.tempOutputScip})),a=Object.fromEntries(r.map(({language:i,scipPath:o})=>[i,o]));for(let{language:i,scipPath:o}of r){let s=Ss({...e,language:i,scipPath:o});for(let c of s)"skipped"in c?Sa(n,c.skipped):t.push(c.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:a}}function Ss(e){if(e.language!=="typescript"||e.typescriptProjectMode!=="workspace")return[Ot({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})];let t=e.preDiscoveredTypeScriptProjects??W(e.projectRoot,e.typescriptProjects);return t.length===0?[Ot({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})]:(e.onStatus(`Indexing TypeScript workspace as ${t.length} project shard(s).`),t.map((n,r)=>Ot({...e,id:`typescript:${n}`,label:`typescript (${n})`,scipPath:ie(e.tempOutputScip,"typescript-project",r),outputScipPath:e.scipPath,pnpmWorkspaces:!1,projectPath:n})))}function Ot(e){let t=ft(e.language),n=ve(t),r=un(t,e.projectRoot),a=e.trustProjectTools&&r?pn(t,e.projectRoot):null,i=de(t);if(!a&&!i&&r){let d=`${n} is available only as repository-local code at ${r}. Review that exact tool and rerun with --trust-project-tools.`;return e.onStatus(`Skipping ${e.language}: ${d}`),{skipped:{language:e.language,reason:d}}}if(!a&&!i&&!ln(t)){if(e.skipAutoInstall){let d=`${n} not found on PATH. To install the reviewed version, run: scip-query reindex --install-missing${t.installUrl?` (manual source: ${t.installUrl})`:""}`;return e.onStatus(`Skipping ${e.language}: ${d}`),{skipped:{language:e.language,reason:d}}}if(e.onStatus(`${n} not found. Attempting auto-install...`),!Zr(t,e.onStatus)){let d=`${n} could not be auto-installed. ${t.installUrl?`Install manually from ${t.installUrl}`:`Install ${n} and put it on PATH.`}`;return e.onStatus(`Skipping ${e.language}: ${d}`),{skipped:{language:e.language,reason:d}}}}let o=a?.canonicalPath??de(t);if(!o){let d=`${n} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${d}`),{skipped:{language:e.language,reason:d}}}let{binary:s,args:c}=t.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:o,projectPath:e.projectPath,configPath:e.language==="clojure"?e.clojureConfigPath:void 0}),l=Pr({language:e.language,projectPath:e.projectPath,pnpmWorkspaces:e.pnpmWorkspaces});if(a&&!a.executable){let d=`${a.relativePath} is not executable; refusing project-local indexer.`;return e.onStatus(`Skipping ${e.language}: ${d}`),{skipped:{language:e.language,reason:d}}}return a&&e.onStatus(`Trusted project-local ${e.language} indexer ${a.relativePath} (${a.sha256.slice(0,12)}\u2026, ${a.canonicalPath}).`),{prepared:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,config:t,resolvedBinary:o,binary:s,args:c,env:fn(t,e.env,o),...l===void 0?{}:{temporaryRootConfigContent:l},...a?{trustedProjectTool:a}:{}}}}function Ps(e,t){let n=new Map;for(let a of e)if(a.skipped)Sa(t,a.skipped);else{let i=`${a.language}\0${a.outputScipPath}`,o=n.get(i)??{language:a.language,outputScipPath:a.outputScipPath,scipPaths:[]};o.scipPaths.push(a.scipPath),n.set(i,o)}let r=[];for(let a of n.values())if(a.scipPaths.length>1)Dn(a.scipPaths,a.outputScipPath),r.push({language:a.language,scipPath:a.outputScipPath});else{let i=a.scipPaths[0];i!==a.outputScipPath&&pa(i,a.outputScipPath),r.push({language:a.language,scipPath:a.outputScipPath})}return{indexedOutputs:r}}function Sa(e,t){let n=e.find(r=>r.language===t.language);if(!n){e.push(t);return}n.reason.includes(t.reason)||(n.reason=`${n.reason}; ${t.reason}`)}function xs(e,t,n,r,a){if(e.length===0){let i=t.map(o=>` - ${o.language}: ${o.reason}`).join(`
292
+ Or install manually from: https://github.com/sourcegraph/scip/releases`);if(t("scip CLI not found on PATH. Attempting auto-install..."),!await wn(t))throw new Error(`The scip CLI is required but could not be installed.
293
+ Install manually from: https://github.com/sourcegraph/scip/releases/tag/${Ce}`)}function Xc(e){let t=[],n=[],r=e.languages.map((i,o)=>({language:i,scipPath:e.languages.length>1?ne(e.tempOutputScip,i,o):e.tempOutputScip})),a=Object.fromEntries(r.map(({language:i,scipPath:o})=>[i,o]));for(let{language:i,scipPath:o}of r){let s=Yc({...e,language:i,scipPath:o});for(let c of s)"skipped"in c?Pa(n,c.skipped):t.push(c.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:a}}function Yc(e){if(e.language!=="typescript")return[nt({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})];let t=e.typescriptProjectMode==="workspace",n=t?e.preDiscoveredTypeScriptProjects??X(e.projectRoot,e.typescriptProjects):["."];return n.length===0?[nt({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})]:(t&&e.onStatus(`Indexing TypeScript workspace as ${n.length} project shard(s).`),n.flatMap((r,a)=>{let i=t?`typescript:${r}`:"typescript",o=t?`typescript (${r})`:"typescript",s=t?ne(e.tempOutputScip,"typescript-project",a):e.scipPath,c={...e,id:i,label:o,scipPath:s,outputScipPath:e.scipPath,pnpmWorkspaces:!1};if(!t&&r==="."&&!e.pnpmWorkspaces){let d=Kc(e,c);if(d)return d}return[nt({...c,...t?{projectPath:r}:{}})]}))}function Qc(e,t,n,r){let a=n.filter(s=>s.shardInputPaths!==void 0);if(a.length===0)return;let i=new Map(r.filter(s=>!s.skipped).map(s=>[s.id,s.durationMs])),o=[];for(let s of a){let c=i.get(s.id);if(c===void 0||!(c>0))return;o.push({inputPaths:s.shardInputPaths,durationMs:c})}try{let s=Ti(o,c=>{try{return Qt(O(t,c)).size}catch{return 1}});s&&vi(e,s)}catch{}}function Kc(e,t){let n=$t(),r=mt(e.projectRoot,"single");if(!r||!Pi(r.size,n))return null;Ci(e.projectRoot);let a=wi(),i=Ri(r.size,n,a),o=e.typescriptShardCostDir?Ii(e.typescriptShardCostDir):null,s=_i(o),c=xi({projectRoot:e.projectRoot,rootConfigPath:"tsconfig.json",inputPaths:[...r],targetFiles:n,shardCount:i,weightOf:l=>{let g=1;try{g=Qt(O(e.projectRoot,l)).size}catch{}return s(l,g)}}),d=Math.min(a,c.length);return e.onStatus(`Indexing ${r.size} TypeScript inputs as ${c.length} ${o?"cost-balanced":"byte-balanced"} compiler shard(s), ${d} at a time.`),c.map((l,g)=>nt({...t,id:`typescript-compiler-shard:${g}`,label:`typescript compiler shard ${g+1}/${c.length}`,scipPath:ne(e.tempOutputScip,"typescript-compiler-shard",g),projectPath:l.configPath,temporaryProjectConfigs:[{path:l.configPath,content:l.content}],boundedConcurrency:d,outputComposition:"protobuf-concatenate",shardInputPaths:l.inputPaths}))}function nt(e){let t=_t(e.language),n=Oe(t),r=Ln(t,e.projectRoot),a=e.trustProjectTools&&r?An(t,e.projectRoot):null,i=he(t);if(!a&&!i&&r){let l=`${n} is available only as repository-local code at ${r}. Review that exact tool and rerun with --trust-project-tools.`;return e.onStatus(`Skipping ${e.language}: ${l}`),{skipped:{language:e.language,reason:l}}}if(!a&&!i&&!Nn(t)){if(e.skipAutoInstall){let l=`${n} not found on PATH. To install the reviewed version, run: scip-query reindex --install-missing${t.installUrl?` (manual source: ${t.installUrl})`:""}`;return e.onStatus(`Skipping ${e.language}: ${l}`),{skipped:{language:e.language,reason:l}}}if(e.onStatus(`${n} not found. Attempting auto-install...`),!Vi(t,e.onStatus)){let l=`${n} could not be auto-installed. ${t.installUrl?`Install manually from ${t.installUrl}`:`Install ${n} and put it on PATH.`}`;return e.onStatus(`Skipping ${e.language}: ${l}`),{skipped:{language:e.language,reason:l}}}}let o=a?.canonicalPath??he(t);if(!o){let l=`${n} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${l}`),{skipped:{language:e.language,reason:l}}}let{binary:s,args:c}=t.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:o,projectPath:e.projectPath,configPath:e.language==="clojure"?e.clojureConfigPath:void 0}),d=zr({language:e.language,projectPath:e.projectPath,pnpmWorkspaces:e.pnpmWorkspaces});if(a&&!a.executable){let l=`${a.relativePath} is not executable; refusing project-local indexer.`;return e.onStatus(`Skipping ${e.language}: ${l}`),{skipped:{language:e.language,reason:l}}}return a&&e.onStatus(`Trusted project-local ${e.language} indexer ${a.relativePath} (${a.sha256.slice(0,12)}\u2026, ${a.canonicalPath}).`),{prepared:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,config:t,resolvedBinary:o,binary:s,args:c,env:Gn(t,e.env,o),...d===void 0?{}:{temporaryRootConfigContent:d},...e.temporaryProjectConfigs===void 0?{}:{temporaryProjectConfigs:e.temporaryProjectConfigs},...e.boundedConcurrency===void 0?{}:{boundedConcurrency:e.boundedConcurrency},...e.outputComposition?{outputComposition:e.outputComposition}:{},...e.shardInputPaths===void 0?{}:{shardInputPaths:e.shardInputPaths},...a?{trustedProjectTool:a}:{}}}}function Vc(e,t){let n=new Set(e.filter(i=>i.skipped&&i.outputComposition).map(i=>`${i.language}\0${i.outputScipPath}`)),r=new Map;for(let i of e)if(i.skipped)Pa(t,i.skipped);else{let o=`${i.language}\0${i.outputScipPath}`;if(n.has(o))continue;let s=r.get(o)??{language:i.language,outputScipPath:i.outputScipPath,scipPaths:[],concatenate:!0};s.scipPaths.push(i.scipPath),i.outputComposition!=="protobuf-concatenate"&&(s.concatenate=!1),r.set(o,s)}let a=[];for(let i of r.values())if(i.scipPaths.length>1)i.concatenate?ir(i.scipPaths,i.outputScipPath):rr(i.scipPaths,i.outputScipPath),a.push({language:i.language,scipPath:i.outputScipPath});else{let o=i.scipPaths[0];o!==i.outputScipPath&&pa(o,i.outputScipPath),a.push({language:i.language,scipPath:i.outputScipPath})}return{indexedOutputs:a}}function Pa(e,t){let n=e.find(r=>r.language===t.language);if(!n){e.push(t);return}n.reason.includes(t.reason)||(n.reason=`${n.reason}; ${t.reason}`)}function Zc(e,t,n,r,a){if(e.length===0){let i=t.map(o=>` - ${o.language}: ${o.reason}`).join(`
252
294
  `);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
253
295
  `+i)}if(t.length!==0&&(a(`Indexed ${e.length} language output(s); skipped or incomplete: ${t.map(i=>i.language).join(", ")}.`),!r))throw new Error(`Failed to index all required languages; preserving the previous index. Pass --allow-partial to intentionally write an incomplete index.
254
296
  `+t.map(i=>` - ${i.language}: ${i.reason}`).join(`
255
- `))}function ia(e,t,n){if(e.length>1){n(`Merging ${e.length} language indexes...`);let r=performance.now(),a=On(e.map(i=>i.scipPath),t);return xa(a,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&pa(e[0].scipPath,t);return!1}async function Rs(e){let t;if(vs(e))try{let a=e.incrementalTypeScript.affectedBatches.length>0?e.incrementalTypeScript.affectedBatches:[{scipPath:e.incrementalTypeScript.affectedScipPath,affectedFiles:e.incrementalTypeScript.affectedFiles,deletedFiles:e.incrementalTypeScript.deletedFiles}],i=new Set,o=0,s=0;for(let[c,l]of a.entries()){let d=_(e.run.tempPaths.runDir,`typescript-affected-${c}.db`);Pa(l.scipPath,e.run.onStatus),e.run.onStatus(`Converting bounded TypeScript batch ${c+1}/${a.length} (${l.affectedFiles.length-l.deletedFiles.length} emitted, ${l.deletedFiles.length} removed) to SQLite...`);let g=performance.now();await oa(l.scipPath,d,e.env,e.run.onStatus,!0,e.run.opts.signal),o+=performance.now()-g,De(e.run.writeTelemetry,X(d)??0);let u=Er({previousDbPath:e.run.paths.outputDb,miniDbPath:d,candidateDbPath:e.run.tempPaths.tempOutputDb,affectedFiles:l.affectedFiles,deletedFiles:l.deletedFiles,reuseCandidate:c>0,deferIntegrity:c<a.length-1,trustedPriorGeneration:!0,writeTelemetry:e.run.writeTelemetry});s+=u.durationMs;for(let p of u.changedDocumentPaths)i.add(p);ae(d,{force:!0})}return e.run.onStatus(`Patched ${e.incrementalTypeScript.affectedFiles.length} SQLite document path(s) across ${a.length} bounded batch(es) in ${(s/1e3).toFixed(3)}s.`),{mode:"incremental",changedDocumentPaths:[...i].sort(),patchDurationMs:s,converterDurationMs:o,scipCompanion:e.incrementalTypeScript.completeScipUpdated?"current":"deferred"}}catch(a){if(C(e.run.opts.signal,"Reindex cancelled by its owner."),t=a instanceof Error?a.message:String(a),ae(e.run.tempPaths.tempOutputDb,{force:!0}),e.run.opts.allowExpensiveRebuild===!1)throw new Error(`Bounded incremental SQLite publication failed and the whole-project fallback is disabled: ${t}`,{cause:a});e.run.onStatus(`Incremental SQLite publication unavailable: ${t}. Falling back to complete conversion.`)}let n=e.completeScipSanitized;e.completeScipAvailable||(n=await e.materializeFullFallback());let r=performance.now();return await oa(e.run.tempPaths.tempOutputScip,e.run.tempPaths.tempOutputDb,e.env,e.run.onStatus,n,e.run.opts.signal),{mode:"full",converterDurationMs:performance.now()-r,...t?{fallbackReason:t}:{}}}function vs(e){if(!e.incrementalTypeScript||e.skippedLanguages.length>0||!D(e.run.paths.outputDb)||!D(e.run.paths.outputScip))return!1;let t=new Set(e.reusedLanguages);return e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(n=>n==="typescript"||t.has(n))}function Is(e,t){let n=R(),r=[...t].sort(),a=new Set(r),i={addedFiles:[],modifiedFiles:r,deletedFiles:[],changedFiles:r,unchangedFiles:e.affectedFiles.filter(o=>!a.has(o)).sort()};return{version:1,status:"evaluated",refreshResult:"rebuilt",recordedAt:new Date().toISOString(),durationMs:R()-n,manifest:e.manifest,plan:e.plan,comparison:i,evaluation:pt(e.plan,i,e.projectFileCount)}}async function oa(e,t,n,r,a=!1,i){if(C(i,"Reindex cancelled by its owner."),r("Converting to SQLite..."),!D(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{a||Pa(e,r);let o=tt();if(!o)throw new Error("scip CLI is not available");let s=await be({command:o,args:["expt-convert","--output",t,e],label:"SCIP SQLite conversion",env:n,maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,timeoutMs:3e5,signal:i});if(s.status!==0)throw new Error(`scip expt-convert exited with ${s.status}${s.stderr.trim()?`: ${s.stderr.trim()}`:""}`)}catch(o){C(i,"Reindex cancelled by its owner.");let s=o instanceof Error?o.message:String(o);throw new Error(`Failed to convert SCIP index to SQLite: ${s}`,{cause:o})}}function Pa(e,t){let n=kn(e);xa(n,t)}function xa(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function ie(e,t,n){let r=Wo(e)||".scip",a=qe(e,r);return _(S(e),`${a}.${n+1}.${t}${r}`)}async function Es(e,t){for(let n=0;n<2;n++){let r=ws(e,t);if(r)return r;let a=_s(e);if(a&&Ia(t.trigger,a)){t.onStatus(`Manual reindex preempting watcher refresh started at ${a.startedAt}.`);let i;try{i=await js(a)}catch(s){throw new Error(`Could not verify the watcher's in-progress reindex owner (pid ${a.pid}); refusing to steal an active lock: ${z(s)}`,{cause:s})}if(!i)throw new Error(`Could not confirm the watcher's in-progress reindex (pid ${a.pid}) terminated for ${S(e)}; refusing to steal an active lock.`);let o=nt(e,{parseLegacy:He});if(!rn(e,o,{parseLegacy:He}))throw new Error(`Reindex lock ownership changed before preemption completed for ${S(e)}.`);continue}throw new ne(`Another scip-query reindex is already running for ${S(e)}.`)}throw new ne(`Could not acquire scip-query reindex lock for ${S(e)}.`)}function ws(e,t){let n=$(process.pid),r=nn(e,{kind:"reindex",processIdentity:n,detail:{projectRoot:t.projectRoot,...process.env.SCIP_REINDEX_PROCESS_GROUP_LEADER==="1"?{processGroupLeader:!0}:{},...t.trigger?{trigger:t.trigger}:{}},parseLegacy:He});if(r.kind==="acquired"&&r.reclaimed){let a=Ra(r.reclaimed,e);a&&Ia(t.trigger,a)?t.onStatus(`Manual reindex preempting watcher refresh started at ${a.startedAt}; its prior owner was already stale.`):t.onStatus(`Recovered an abandoned or incomplete reindex lock for ${S(e)}.`)}return r.kind==="acquired"?()=>{r.lock.release()}:null}function _s(e){return Ra(nt(e,{parseLegacy:He}),e)}var He=e=>{let t=va(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function Ra(e,t){if(e.state==="valid"&&e.record?.kind==="reindex"){let n=e.record.detail??{};return{version:2,pid:e.record.pid,...e.record.processIdentity?{processIdentity:e.record.processIdentity}:{},...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:S(t),startedAt:e.record.startedAt,trigger:n.trigger}}return va(e.parsed,t)}function va(e,t){try{let n=e;return typeof n.pid!="number"||!Number.isInteger(n.pid)||n.pid<=0?null:{version:n.version===2?2:1,pid:n.pid,...n.processIdentity===void 0?{}:(()=>{let r=ye(n.processIdentity);return r?.pid===n.pid?{processIdentity:r}:{}})(),...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:S(t),startedAt:typeof n.startedAt=="string"?n.startedAt:"unknown",trigger:n.trigger}}catch{return null}}function Ia(e,t){return e?.kind==="manual-cli"&&Ea(t?.trigger)}function Ea(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function js(e){return!K(e.pid)||(Mt(e),sa(e,"SIGTERM"),await ca(e,2e3))?!0:(Mt(e),sa(e,"SIGKILL"),ca(e,1e3))}function sa(e,t){if(e.processGroupLeader)try{process.kill(-e.pid,t);return}catch{if(!K(e.pid))return;Mt(e)}try{process.kill(e.pid,t)}catch{}}async function ca(e,t){let n=R()+t;for(;R()<n;){if(da(e))return!0;await Fs(50)}return da(e)}function Mt(e){if(!e.processIdentity)throw new Error(`Refusing to signal reindex pid ${e.pid}: its ownership record has no process identity.`);let t=$(e.pid);if(!t)throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity is unavailable.`);if(!U(e.processIdentity,t))throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity does not match the ownership record.`)}function da(e){if(!K(e.pid))return!0;if(!e.processIdentity)return!1;let t=$(e.pid);return t!==null&&!U(e.processIdentity,t)}function Fs(e){return new Promise(t=>setTimeout(t,e))}function Lt(e,t,n){return Object.fromEntries(t.map(r=>{let a=r==="typescript"?on(n.typescriptProjects):[],i=r==="clojure"?ks(n.clojureConfigPath):void 0,o=[...ft(r).markerFiles,...a,...i?[i]:[]],s=r==="typescript"?{typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:a}:{typescriptProjectMode:"single",typescriptProjects:[]};return[r,{version:2,languages:[r],pnpmWorkspaces:r==="typescript"&&Ds(n),...s,clojureConfigPath:i,files:e.files.filter(c=>Jt(c.path,r,o)).map(c=>wa(c,r))}]}))}function wa(e,t){let n=t==="typescript"&&/(?:^|\/)package\.json$/iu.test(e.path)?e.semanticHash:void 0;return{path:e.path,size:n===void 0?e.size:0,hash:n??e.hash}}function Ts(e,t){let n=Ve(t);if(!n)return t;let r=n.typescriptProjectMode==="workspace"?W(e,n.typescriptProjects):["."],a=Z(r);return{...n,files:n.files.filter(i=>!ee(i.path)||a.has(i.path)).map(i=>{let o=i.semanticHash??xe(e,i.path,i.hash);return wa(o===void 0?i:{...i,semanticHash:o},"typescript")})}}function ks(e){return e?.trim()||void 0}function Ds(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function Nt(e,t){return _(S(e),"language-indexes",`${t}.scip`)}function _a(e){return _(S(e),"language-indexes","typescript-projects")}function ze(e,t){return _(_a(e),`${vt(t)}.scip`)}function Q(e){try{return Pe(ce(oe(e,"reindex metadata")))}catch{return null}}function ja(e,t){try{let n=ce(oe(e,"reindex metadata"));if(n.kind!=="legacy"&&n.kind!=="supported")return null;let r=n.metadata;return!n.capabilities.publishableGeneration||!Xt(r)||k([...r.indexedLanguages??[]].sort())!==k(t.languages)?null:k(r.fingerprint)===k(t)?"exact":k(la(r.fingerprint))===k(la(t))?"operational-config-compatible":null}catch{return null}}function la(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let t=e;return Array.isArray(t.files)?{...t,files:t.files.filter(n=>typeof n!="object"||n===null||Array.isArray(n)||n.path!==".scipquery.json")}:e}function Os(e,t,n,r){let a=Pe(ce(oe(e,"reindex metadata")));a&&Xe(e,{...a,fingerprint:t,...a.version===V?{languageFingerprints:Lt(t,n,r)}:{}})}function Xe(e,t){hn(e,t,{spacing:2,trailingNewline:!0})}function Fa(e,t){try{let n=Pe(ce(oe(e,"reindex metadata")));if(!n)return;Xe(e,{...n,lastRefresh:t})}catch{}}function Qe(e){return{trigger:e.trigger??{kind:"unknown"},result:e.result,startedAt:new Date(e.start).toISOString(),completedAt:new Date().toISOString(),durationMs:R()-e.monotonicStart,indexedLanguages:e.languages?[...e.languages]:void 0,skipped:e.skipped?[...e.skipped]:void 0,error:e.error}}function k(e){return JSON.stringify(e)}var Ms={readIdentity:$,setInterval(e,t){let n=setInterval(e,t);return n.unref(),n},clearInterval};function Ta(e,t,n={}){let r=n.runtime??Ms,a=n.intervalMs??1e3;if(!Number.isSafeInteger(a)||a<=0)throw new TypeError("parent process monitor interval must be a positive safe integer");let i=!0,o,s=()=>{if(!i)return;let c=r.readIdentity(e.pid);c&&U(e,c)||(i=!1,o&&r.clearInterval(o),t(c?`parent process ${e.pid} changed identity`:`parent process ${e.pid} exited`))};return s(),i&&(o=r.setInterval(s,a)),{stop(){i&&(i=!1,o&&r.clearInterval(o))}}}var Oa=process.env.SCIP_REINDEX_PROJECT_ROOT,Ma=process.env.SCIP_REINDEX_OUTPUT_SCIP,Ca=process.env.SCIP_REINDEX_OUTPUT_DB,ka=process.env.SCIP_REINDEX_LANGUAGES,As=ar(process.env.SCIP_REINDEX_INDEXER_CONCURRENCY),Ls=process.env.SCIP_REINDEX_PNPM_WORKSPACES==="1",$t=Vs(process.env.SCIP_REINDEX_TYPESCRIPT_CONFIG),Ns=process.env.SCIP_REINDEX_CLOJURE_CONFIG_PATH||void 0,$s=Ys(process.env.SCIP_REINDEX_TRIGGER_KIND),Gs=process.env.SCIP_REINDEX_TRIGGER_DETAIL,Bs=ir(process.env.SCIP_REINDEX_CHANGE_JOURNAL),Us=process.env.SCIP_REINDEX_ALLOW_EXPENSIVE!=="0",Aa=Qs(process.env.SCIP_REINDEX_PARENT_IDENTITY);(!Oa||!Ma||!Ca||!Aa)&&(console.error("reindex-worker: missing required env vars"),process.exit(1));var qs=Oa,Ws=Ma,Hs=Ca,Js=Aa,Da=ka?ka.split(",").filter(Boolean):void 0,La=new AbortController,zs=Ta(Js,e=>{La.abort(new Error(`Reindex worker owner lost: ${e}`))});Xs();async function Xs(){try{await ga({projectRoot:qs,outputScip:Ws,outputDb:Hs,languages:Da?.length?Da:void 0,pnpmWorkspaces:Ls,typescriptProjectMode:$t.projectMode,typescriptProjects:$t.projects,maxHeapMb:$t.maxHeapMb,clojureConfigPath:Ns,indexerConcurrency:As,trigger:{kind:$s,detail:Gs||void 0},changeJournal:Bs,allowExpensiveRebuild:Us,signal:La.signal,onStatus:e=>process.stderr.write(`[reindex] ${dt(e)}
256
- `)})}catch(e){console.error(`reindex-worker error: ${dt(String(e))}`),process.exitCode=e instanceof ne?75:1}finally{zs.stop()}}function Qs(e){if(!e)return null;try{return ye(JSON.parse(e))}catch{return null}}function Ys(e){switch(e){case"manual-cli":case"setup":case"watch-source":case"watch-git-head":case"watch-git-index":case"watch-git-state":return e;default:return"unknown"}}function Vs(e){if(!e)return{};try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))return{};let n=t,r=n.projectMode==="single"||n.projectMode==="workspace"?n.projectMode:void 0,a=Array.isArray(n.projects)?n.projects.filter(o=>typeof o=="string"&&o.trim()!==""):void 0,i=typeof n.maxHeapMb=="number"&&Number.isInteger(n.maxHeapMb)&&n.maxHeapMb>0?n.maxHeapMb:void 0;return{projectMode:r,projects:a&&a.length>0?a:void 0,maxHeapMb:i}}catch{return{}}}
297
+ `))}function aa(e,t,n){if(e.length>1){n(`Merging ${e.length} language indexes...`);let r=performance.now(),a=ar(e.map(i=>i.scipPath),t);return xa(a,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&pa(e[0].scipPath,t);return!1}async function ed(e){let t;if(td(e))try{let a=e.incrementalTypeScript.affectedBatches.length>0?e.incrementalTypeScript.affectedBatches:[{scipPath:e.incrementalTypeScript.affectedScipPath,affectedFiles:e.incrementalTypeScript.affectedFiles,deletedFiles:e.incrementalTypeScript.deletedFiles}],i=new Set,o=0,s=0;for(let[c,d]of a.entries()){let l=O(e.run.tempPaths.runDir,`typescript-affected-${c}.db`);Ra(d.scipPath,e.run.onStatus),e.run.onStatus(`Converting bounded TypeScript batch ${c+1}/${a.length} (${d.affectedFiles.length-d.deletedFiles.length} emitted, ${d.deletedFiles.length} removed) to SQLite...`);let g=performance.now();await oa(d.scipPath,l,e.env,e.run.onStatus,!0,e.run.opts.signal),o+=performance.now()-g,We(e.run.writeTelemetry,te(l)??0);let p=Vr({previousDbPath:e.run.paths.outputDb,miniDbPath:l,candidateDbPath:e.run.tempPaths.tempOutputDb,affectedFiles:d.affectedFiles,deletedFiles:d.deletedFiles,reuseCandidate:c>0,deferIntegrity:c<a.length-1,trustedPriorGeneration:!0,writeTelemetry:e.run.writeTelemetry});s+=p.durationMs;for(let f of p.changedDocumentPaths)i.add(f);Z(l,{force:!0})}return e.run.onStatus(`Patched ${e.incrementalTypeScript.affectedFiles.length} SQLite document path(s) across ${a.length} bounded batch(es) in ${(s/1e3).toFixed(3)}s.`),{mode:"incremental",changedDocumentPaths:[...i].sort(),patchDurationMs:s,converterDurationMs:o,scipCompanion:e.incrementalTypeScript.completeScipUpdated?"current":"deferred"}}catch(a){if(A(e.run.opts.signal,"Reindex cancelled by its owner."),t=a instanceof Error?a.message:String(a),Z(e.run.tempPaths.tempOutputDb,{force:!0}),e.run.opts.allowExpensiveRebuild===!1)throw new Error(`Bounded incremental SQLite publication failed and the whole-project fallback is disabled: ${t}`,{cause:a});e.run.onStatus(`Incremental SQLite publication unavailable: ${t}. Falling back to complete conversion.`)}let n=e.completeScipSanitized;e.completeScipAvailable||(n=await e.materializeFullFallback());let r=performance.now();return await oa(e.run.tempPaths.tempOutputScip,e.run.tempPaths.tempOutputDb,e.env,e.run.onStatus,n,e.run.opts.signal),{mode:"full",converterDurationMs:performance.now()-r,...t?{fallbackReason:t}:{}}}function td(e){if(!e.incrementalTypeScript||e.skippedLanguages.length>0||!L(e.run.paths.outputDb)||!L(e.run.paths.outputScip))return!1;let t=new Set(e.reusedLanguages);return e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(n=>n==="typescript"||t.has(n))}function nd(e,t){let n=C(),r=[...t].sort(),a=new Set(r),i={addedFiles:[],modifiedFiles:r,deletedFiles:[],changedFiles:r,unchangedFiles:e.affectedFiles.filter(o=>!a.has(o)).sort()};return{version:1,status:"evaluated",refreshResult:"rebuilt",recordedAt:new Date().toISOString(),durationMs:C()-n,manifest:e.manifest,plan:e.plan,comparison:i,evaluation:It(e.plan,i,e.projectFileCount)}}async function oa(e,t,n,r,a=!1,i){if(A(i,"Reindex cancelled by its owner."),r("Converting to SQLite..."),!L(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{if(a||Ra(e,r),n.SCIP_QUERY_SQLITE_CONVERTER==="scip-cli"){let o=En();if(!o)throw new Error("scip CLI is not available");let s=await ve({command:o,args:["expt-convert","--output",t,e],label:"SCIP SQLite conversion",env:n,maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,timeoutMs:3e5,signal:i});if(s.status!==0)throw new Error(`scip expt-convert exited with ${s.status}${s.stderr.trim()?`: ${s.stderr.trim()}`:""}`)}else Z(t,{force:!0}),await Si(ie(e,{maxBytes:Ee,inputKind:"SCIP index"}),t,{signal:i})}catch(o){A(i,"Reindex cancelled by its owner.");let s=o instanceof Error?o.message:String(o);throw new Error(`Failed to convert SCIP index to SQLite: ${s}`,{cause:o})}}function Ra(e,t){let n=nr(e);xa(n,t)}function xa(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function ne(e,t,n){let r=Ec(e)||".scip",a=tt(e,r);return O(x(e),`${a}.${n+1}.${t}${r}`)}async function rd(e,t){for(let n=0;n<2;n++){let r=id(e,t);if(r)return r;let a=ad(e);if(a&&va(t.trigger,a)){t.onStatus(`Manual reindex preempting watcher refresh started at ${a.startedAt}.`);let i;try{i=await od(a)}catch(s){throw new Error(`Could not verify the watcher's in-progress reindex owner (pid ${a.pid}); refusing to steal an active lock: ${ee(s)}`,{cause:s})}if(!i)throw new Error(`Could not confirm the watcher's in-progress reindex (pid ${a.pid}) terminated for ${x(e)}; refusing to steal an active lock.`);let o=ft(e,{parseLegacy:it});if(!Pn(e,o,{parseLegacy:it}))throw new Error(`Reindex lock ownership changed before preemption completed for ${x(e)}.`);continue}throw new le(`Another scip-query reindex is already running for ${x(e)}.`)}throw new le(`Could not acquire scip-query reindex lock for ${x(e)}.`)}function id(e,t){let n=U(process.pid),r=bn(e,{kind:"reindex",processIdentity:n,detail:{projectRoot:t.projectRoot,...process.env.SCIP_REINDEX_PROCESS_GROUP_LEADER==="1"?{processGroupLeader:!0}:{},...t.trigger?{trigger:t.trigger}:{}},parseLegacy:it});if(r.kind==="acquired"&&r.reclaimed){let a=Ea(r.reclaimed,e);a&&va(t.trigger,a)?t.onStatus(`Manual reindex preempting watcher refresh started at ${a.startedAt}; its prior owner was already stale.`):t.onStatus(`Recovered an abandoned or incomplete reindex lock for ${x(e)}.`)}return r.kind==="acquired"?()=>{r.lock.release()}:null}function ad(e){return Ea(ft(e,{parseLegacy:it}),e)}var it=e=>{let t=Ia(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function Ea(e,t){if(e.state==="valid"&&e.record?.kind==="reindex"){let n=e.record.detail??{};return{version:2,pid:e.record.pid,...e.record.processIdentity?{processIdentity:e.record.processIdentity}:{},...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:x(t),startedAt:e.record.startedAt,trigger:n.trigger}}return Ia(e.parsed,t)}function Ia(e,t){try{let n=e;return typeof n.pid!="number"||!Number.isInteger(n.pid)||n.pid<=0?null:{version:n.version===2?2:1,pid:n.pid,...n.processIdentity===void 0?{}:(()=>{let r=Ie(n.processIdentity);return r?.pid===n.pid?{processIdentity:r}:{}})(),...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:x(t),startedAt:typeof n.startedAt=="string"?n.startedAt:"unknown",trigger:n.trigger}}catch{return null}}function va(e,t){return e?.kind==="manual-cli"&&_a(t?.trigger)}function _a(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function od(e){return!oe(e.pid)||(Yt(e),sa(e,"SIGTERM"),await ca(e,2e3))?!0:(Yt(e),sa(e,"SIGKILL"),ca(e,1e3))}function sa(e,t){if(e.processGroupLeader)try{process.kill(-e.pid,t);return}catch{if(!oe(e.pid))return;Yt(e)}try{process.kill(e.pid,t)}catch{}}async function ca(e,t){let n=C()+t;for(;C()<n;){if(da(e))return!0;await sd(50)}return da(e)}function Yt(e){if(!e.processIdentity)throw new Error(`Refusing to signal reindex pid ${e.pid}: its ownership record has no process identity.`);let t=U(e.pid);if(!t)throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity is unavailable.`);if(!z(e.processIdentity,t))throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity does not match the ownership record.`)}function da(e){if(!oe(e.pid))return!0;if(!e.processIdentity)return!1;let t=U(e.pid);return t!==null&&!z(e.processIdentity,t)}function sd(e){return new Promise(t=>setTimeout(t,e))}function Zt(e,t,n){return Object.fromEntries(t.map(r=>{let a=r==="typescript"?Fn(n.typescriptProjects):[],i=r==="clojure"?dd(n.clojureConfigPath):void 0,o=[..._t(r).markerFiles,...a,...i?[i]:[]],s=r==="typescript"?{typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:a}:{typescriptProjectMode:"single",typescriptProjects:[]};return[r,{version:2,languages:[r],pnpmWorkspaces:r==="typescript"&&ld(n),...s,clojureConfigPath:i,files:e.files.filter(c=>un(c.path,r,o)).map(c=>Ta(c,r))}]}))}function Ta(e,t){let n=t==="typescript"&&/(?:^|\/)package\.json$/iu.test(e.path)?e.semanticHash:void 0;return{path:e.path,size:n===void 0?e.size:0,hash:n??e.hash}}function cd(e,t){let n=lt(t);if(!n)return t;let r=n.typescriptProjectMode==="workspace"?X(e,n.typescriptProjects):["."],a=se(r);return{...n,files:n.files.filter(i=>!ce(i.path)||a.has(i.path)).map(i=>{let o=i.semanticHash??we(e,i.path,i.hash);return Ta(o===void 0?i:{...i,semanticHash:o},"typescript")})}}function dd(e){return e?.trim()||void 0}function ld(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function en(e,t){return O(x(e),"language-indexes",`${t}.scip`)}function wa(e){return O(x(e),"language-indexes","typescript-projects")}function ot(e,t){return O(wa(e),`${Mt(t)}.scip`)}function re(e){try{return Te(me(fe(e,"reindex metadata")))}catch{return null}}function Ca(e,t){try{let n=me(fe(e,"reindex metadata"));if(n.kind!=="legacy"&&n.kind!=="supported")return null;let r=n.metadata;return!n.capabilities.publishableGeneration||!gn(r)||N([...r.indexedLanguages??[]].sort())!==N(t.languages)?null:N(r.fingerprint)===N(t)?"exact":N(la(r.fingerprint))===N(la(t))?"operational-config-compatible":null}catch{return null}}function la(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let t=e;return Array.isArray(t.files)?{...t,files:t.files.filter(n=>typeof n!="object"||n===null||Array.isArray(n)||n.path!==".scipquery.json")}:e}function ud(e,t,n,r){let a=Te(me(fe(e,"reindex metadata")));a&&st(e,{...a,fingerprint:t,...a.version===ae?{languageFingerprints:Zt(t,n,r)}:{}})}function st(e,t){Bn(e,t,{spacing:2,trailingNewline:!0})}function ja(e,t){try{let n=Te(me(fe(e,"reindex metadata")));if(!n)return;st(e,{...n,lastRefresh:t})}catch{}}function ct(e){return{trigger:e.trigger??{kind:"unknown"},result:e.result,startedAt:new Date(e.start).toISOString(),completedAt:new Date().toISOString(),durationMs:C()-e.monotonicStart,indexedLanguages:e.languages?[...e.languages]:void 0,skipped:e.skipped?[...e.skipped]:void 0,error:e.error}}function N(e){return JSON.stringify(e)}var pd={readIdentity:U,setInterval(e,t){let n=setInterval(e,t);return n.unref(),n},clearInterval};function Oa(e,t,n={}){let r=n.runtime??pd,a=n.intervalMs??1e3;if(!Number.isSafeInteger(a)||a<=0)throw new TypeError("parent process monitor interval must be a positive safe integer");let i=!0,o,s=()=>{if(!i)return;let c=r.readIdentity(e.pid);c&&z(e,c)||(i=!1,o&&r.clearInterval(o),t(c?`parent process ${e.pid} changed identity`:`parent process ${e.pid} exited`))};return s(),i&&(o=r.setInterval(s,a)),{stop(){i&&(i=!1,o&&r.clearInterval(o))}}}var Da=process.env.SCIP_REINDEX_PROJECT_ROOT,Ma=process.env.SCIP_REINDEX_OUTPUT_SCIP,Na=process.env.SCIP_REINDEX_OUTPUT_DB,Fa=process.env.SCIP_REINDEX_LANGUAGES,fd=Or(process.env.SCIP_REINDEX_INDEXER_CONCURRENCY),md=process.env.SCIP_REINDEX_PNPM_WORKSPACES==="1",tn=Cd(process.env.SCIP_REINDEX_TYPESCRIPT_CONFIG),hd=process.env.SCIP_REINDEX_CLOJURE_CONFIG_PATH||void 0,yd=wd(process.env.SCIP_REINDEX_TRIGGER_KIND),Sd=process.env.SCIP_REINDEX_TRIGGER_DETAIL,bd=Fr(process.env.SCIP_REINDEX_CHANGE_JOURNAL),Pd=process.env.SCIP_REINDEX_ALLOW_EXPENSIVE!=="0",La=Td(process.env.SCIP_REINDEX_PARENT_IDENTITY);(!Da||!Ma||!Na||!La)&&(console.error("reindex-worker: missing required env vars"),process.exit(1));var Rd=Da,xd=Ma,Ed=Na,Id=La,ka=Fa?Fa.split(",").filter(Boolean):void 0,Aa=new AbortController,vd=Oa(Id,e=>{Aa.abort(new Error(`Reindex worker owner lost: ${e}`))});_d();async function _d(){try{await ga({projectRoot:Rd,outputScip:xd,outputDb:Ed,languages:ka?.length?ka:void 0,pnpmWorkspaces:md,typescriptProjectMode:tn.projectMode,typescriptProjects:tn.projects,maxHeapMb:tn.maxHeapMb,clojureConfigPath:hd,indexerConcurrency:fd,trigger:{kind:yd,detail:Sd||void 0},changeJournal:bd,allowExpensiveRebuild:Pd,signal:Aa.signal,onStatus:e=>process.stderr.write(`[reindex] ${xt(e)}
298
+ `)})}catch(e){console.error(`reindex-worker error: ${xt(String(e))}`),process.exitCode=e instanceof le?75:1}finally{vd.stop()}}function Td(e){if(!e)return null;try{return Ie(JSON.parse(e))}catch{return null}}function wd(e){switch(e){case"manual-cli":case"setup":case"watch-source":case"watch-git-head":case"watch-git-index":case"watch-git-state":return e;default:return"unknown"}}function Cd(e){if(!e)return{};try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))return{};let n=t,r=n.projectMode==="single"||n.projectMode==="workspace"?n.projectMode:void 0,a=Array.isArray(n.projects)?n.projects.filter(o=>typeof o=="string"&&o.trim()!==""):void 0,i=typeof n.maxHeapMb=="number"&&Number.isInteger(n.maxHeapMb)&&n.maxHeapMb>0?n.maxHeapMb:void 0;return{projectMode:r,projects:a&&a.length>0?a:void 0,maxHeapMb:i}}catch{return{}}}
257
299
  //# sourceMappingURL=reindex-worker.js.map