scip-query 0.20.0 → 0.21.1

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 (594) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +255 -884
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/by-kind-XXGZGNZ6.js +2 -0
  5. package/dist/call-graph-VGY3R4L3.js +2 -0
  6. package/dist/call-graph-evidence-lZa2dwQA.d.ts +11 -0
  7. package/dist/change-analysis-types-CCtoCHbC.d.ts +9 -0
  8. package/dist/chunk-26CT72HM.js +2 -0
  9. package/dist/chunk-27OUNZW5.js +3 -0
  10. package/dist/chunk-2LJLEM5B.js +2 -0
  11. package/dist/chunk-3KXFB2FM.js +2 -0
  12. package/dist/chunk-3T5U2EQ2.js +2 -0
  13. package/dist/chunk-3TNRNKAT.js +2 -0
  14. package/dist/{chunk-PXY7F6Y4.js → chunk-3XQLJG7V.js} +5 -5
  15. package/dist/chunk-3XZELASU.js +2 -0
  16. package/dist/chunk-3YETOKNO.js +4 -0
  17. package/dist/chunk-47WX6UC4.js +2 -0
  18. package/dist/{chunk-7SQQWSY3.js → chunk-4HQYNZ3P.js} +2 -2
  19. package/dist/chunk-4IASLUOP.js +3 -0
  20. package/dist/{chunk-KMKTIO2G.js → chunk-4KIPF45P.js} +2 -2
  21. package/dist/chunk-4SZJF4GK.js +2 -0
  22. package/dist/chunk-4TOU7HHQ.js +2 -0
  23. package/dist/chunk-4ZCLDH6T.js +11 -0
  24. package/dist/{chunk-DQGFVPUV.js → chunk-527HV7JY.js} +3 -3
  25. package/dist/{chunk-ZTETIQ35.js → chunk-5BJPJUXF.js} +2 -2
  26. package/dist/chunk-5J3A6RBZ.js +16 -0
  27. package/dist/chunk-5KIJMEPC.js +2 -0
  28. package/dist/{chunk-JDOEX4E6.js → chunk-5QM7QT5B.js} +2 -2
  29. package/dist/chunk-5Z2H76VD.js +11 -0
  30. package/dist/chunk-63TFRBMB.js +2 -0
  31. package/dist/chunk-67FK5KGV.js +3 -0
  32. package/dist/chunk-6DO3VBLV.js +2 -0
  33. package/dist/chunk-6LS3IG2I.js +13 -0
  34. package/dist/chunk-6QN4FYQW.js +2 -0
  35. package/dist/chunk-6X4KO5A7.js +11 -0
  36. package/dist/chunk-743MEVFJ.js +8 -0
  37. package/dist/chunk-7G2WIVIX.js +2 -0
  38. package/dist/chunk-7KCZELVM.js +2 -0
  39. package/dist/chunk-7MUHSZGN.js +3 -0
  40. package/dist/chunk-7YZGSLW6.js +3 -0
  41. package/dist/chunk-7Z4GMCHM.js +117 -0
  42. package/dist/{chunk-32LVLCLN.js → chunk-AAOEROT3.js} +3 -3
  43. package/dist/chunk-AFRS7WJU.js +26 -0
  44. package/dist/chunk-ANCHW2R4.js +57 -0
  45. package/dist/{chunk-SXP2MBJH.js → chunk-AQF35NGT.js} +2 -2
  46. package/dist/chunk-ARGPDW2Y.js +6 -0
  47. package/dist/chunk-B3AREUQK.js +16 -0
  48. package/dist/chunk-BCTCADNB.js +2 -0
  49. package/dist/chunk-BM4OTGSY.js +3 -0
  50. package/dist/chunk-BMKTDJI6.js +16 -0
  51. package/dist/chunk-BOJ5SVE2.js +2 -0
  52. package/dist/{chunk-WXZLAAWK.js → chunk-BVR44XXB.js} +2 -2
  53. package/dist/{chunk-RUJURYSV.js → chunk-BYXWXLKM.js} +2 -2
  54. package/dist/chunk-BZCRHP46.js +3 -0
  55. package/dist/chunk-BZYSGZRK.js +2 -0
  56. package/dist/chunk-C52Q3JEQ.js +2 -0
  57. package/dist/chunk-C7WSQA6A.js +21 -0
  58. package/dist/{chunk-BDCC2NPY.js → chunk-CNT4ND5O.js} +2 -2
  59. package/dist/chunk-CQVDALWQ.js +2 -0
  60. package/dist/chunk-CTO3TRX7.js +2 -0
  61. package/dist/chunk-CXT3GZSQ.js +2 -0
  62. package/dist/{chunk-JVYA47YU.js → chunk-DGM2RJ3I.js} +2 -2
  63. package/dist/{chunk-7PIO7NKH.js → chunk-DK6MB565.js} +2 -2
  64. package/dist/chunk-DNPETNXT.js +2 -0
  65. package/dist/chunk-DRENNWRG.js +2 -0
  66. package/dist/chunk-DUDUIT5P.js +2 -0
  67. package/dist/chunk-DXEJ4FLZ.js +21 -0
  68. package/dist/chunk-DXYMTQZ4.js +2 -0
  69. package/dist/chunk-DZA7MQMU.js +6 -0
  70. package/dist/{chunk-ZHXX42OH.js → chunk-DZNWXJN2.js} +4 -4
  71. package/dist/{chunk-CJST5ETY.js → chunk-E6N6YTVM.js} +2 -2
  72. package/dist/chunk-E7CJ6O72.js +2 -0
  73. package/dist/chunk-EJHNTAEE.js +2 -0
  74. package/dist/chunk-EPLE5O5O.js +2 -0
  75. package/dist/chunk-F4FNK44D.js +2 -0
  76. package/dist/chunk-FCGMQETU.js +2 -0
  77. package/dist/chunk-FIO44MVK.js +3 -0
  78. package/dist/chunk-FLSVYEPL.js +2 -0
  79. package/dist/chunk-FOP7HD6H.js +3 -0
  80. package/dist/chunk-FSPENGSU.js +4 -0
  81. package/dist/chunk-FUUDUAKM.js +2 -0
  82. package/dist/chunk-FYCH2EYQ.js +2 -0
  83. package/dist/{chunk-5E4WNAVD.js → chunk-G47MFF47.js} +2 -2
  84. package/dist/chunk-G6VV7ROY.js +2 -0
  85. package/dist/chunk-GBZCVYWA.js +2 -0
  86. package/dist/chunk-GSHTVE56.js +3 -0
  87. package/dist/chunk-GTZFKDP3.js +2 -0
  88. package/dist/{chunk-2HPVVXM5.js → chunk-H2RBDP5S.js} +2 -2
  89. package/dist/chunk-H5EXS3HM.js +2 -0
  90. package/dist/chunk-HR5JYLVV.js +4 -0
  91. package/dist/chunk-HW7FASEL.js +2 -0
  92. package/dist/chunk-HYU4W353.js +10 -0
  93. package/dist/{chunk-FKSELJQF.js → chunk-I2LY3KN7.js} +2 -2
  94. package/dist/chunk-IGBQVEHE.js +2 -0
  95. package/dist/{chunk-3G66UZBH.js → chunk-IH3K5J6K.js} +2 -2
  96. package/dist/chunk-IHGK3SZ7.js +29 -0
  97. package/dist/chunk-IM23CSG5.js +2 -0
  98. package/dist/chunk-IQMGNIGY.js +2 -0
  99. package/dist/chunk-ITF3CWS5.js +2 -0
  100. package/dist/chunk-IZKJQQCQ.js +3 -0
  101. package/dist/chunk-J4HUBIVF.js +5 -0
  102. package/dist/{chunk-AZJQQKDD.js → chunk-JGMD6JGB.js} +2 -2
  103. package/dist/chunk-JLZWYDCZ.js +4 -0
  104. package/dist/chunk-JO6FK3Q5.js +2 -0
  105. package/dist/chunk-JSHDCVUM.js +81 -0
  106. package/dist/chunk-K2DZCH2K.js +2 -0
  107. package/dist/chunk-K63CAPS2.js +23 -0
  108. package/dist/chunk-KBIC6JHJ.js +2 -0
  109. package/dist/chunk-KFFQURUZ.js +2 -0
  110. package/dist/chunk-KFOYCQAJ.js +9 -0
  111. package/dist/chunk-KGKCJFWZ.js +6 -0
  112. package/dist/chunk-KK7GPALL.js +28 -0
  113. package/dist/chunk-L7WRUNKJ.js +2 -0
  114. package/dist/{chunk-W4ETQAXM.js → chunk-LFWB7TOJ.js} +2 -2
  115. package/dist/chunk-LGVTIZPV.js +61 -0
  116. package/dist/chunk-LIWIV26I.js +29 -0
  117. package/dist/chunk-LJMWILX6.js +3 -0
  118. package/dist/{chunk-BPAPWKP6.js → chunk-LXMW6ZAX.js} +8 -8
  119. package/dist/chunk-MFBVUQJZ.js +2 -0
  120. package/dist/{chunk-O64IZ6UX.js → chunk-MLTKGHD2.js} +2 -2
  121. package/dist/chunk-MLTSTKXD.js +5 -0
  122. package/dist/chunk-MR4ZKWO6.js +57 -0
  123. package/dist/{chunk-EN3O7VJA.js → chunk-MRXBLYRE.js} +2 -2
  124. package/dist/chunk-MXNGIEPU.js +3 -0
  125. package/dist/chunk-N4EFQIRX.js +20 -0
  126. package/dist/chunk-ND3BWIVN.js +7 -0
  127. package/dist/chunk-NODZYYGC.js +2 -0
  128. package/dist/chunk-NP4JFCLE.js +133 -0
  129. package/dist/chunk-NQXWWE6S.js +8 -0
  130. package/dist/chunk-NSDPPUDY.js +7 -0
  131. package/dist/chunk-NT4NVEHU.js +18 -0
  132. package/dist/chunk-O2VY47Y5.js +325 -0
  133. package/dist/chunk-O3EX5STE.js +5 -0
  134. package/dist/chunk-O4PZFAXA.js +3 -0
  135. package/dist/chunk-OA2BO4DR.js +2 -0
  136. package/dist/chunk-OFZVFIDF.js +3 -0
  137. package/dist/{chunk-PQCI4SQX.js → chunk-OG5UK2K7.js} +2 -2
  138. package/dist/chunk-OMVNRPST.js +2 -0
  139. package/dist/{chunk-7BAVHKMJ.js → chunk-OU6SDWAM.js} +9 -9
  140. package/dist/{chunk-LY4WC4AD.js → chunk-OY7PCALC.js} +2 -2
  141. package/dist/{chunk-A73XVBCR.js → chunk-P3UFF22M.js} +2 -2
  142. package/dist/chunk-PAZSBPJR.js +3 -0
  143. package/dist/chunk-PJBYDCBQ.js +38 -0
  144. package/dist/chunk-PRLU3I7G.js +79 -0
  145. package/dist/chunk-PU6XDQ2X.js +16 -0
  146. package/dist/{chunk-3CLX5EOX.js → chunk-PWEQ6CZZ.js} +2 -2
  147. package/dist/{chunk-XSRF6Q77.js → chunk-PX6QNUYF.js} +2 -2
  148. package/dist/chunk-Q4MRRB3C.js +3 -0
  149. package/dist/chunk-QGVUPYBC.js +35 -0
  150. package/dist/chunk-QH5Q6M5C.js +2 -0
  151. package/dist/chunk-QLWZUFDT.js +2 -0
  152. package/dist/chunk-QN2AI3D2.js +3 -0
  153. package/dist/{chunk-JAYYFEQY.js → chunk-QZCACNV5.js} +2 -2
  154. package/dist/chunk-RNKRYK6B.js +4 -0
  155. package/dist/chunk-RSUH7G5T.js +29 -0
  156. package/dist/chunk-RZWBTKXO.js +5 -0
  157. package/dist/chunk-SBFDPHKH.js +4 -0
  158. package/dist/{chunk-HX4GQPZP.js → chunk-SGSPCEFC.js} +3 -3
  159. package/dist/chunk-SIGVQT43.js +2 -0
  160. package/dist/chunk-SRIZDEWX.js +4 -0
  161. package/dist/chunk-SV2LEFVM.js +2 -0
  162. package/dist/chunk-T2PBOVDI.js +3 -0
  163. package/dist/chunk-TP2X2C2Y.js +3 -0
  164. package/dist/chunk-U2MNECDU.js +2 -0
  165. package/dist/chunk-U7DOYZDH.js +2 -0
  166. package/dist/chunk-UAQQR55F.js +2 -0
  167. package/dist/chunk-UBETC3Q2.js +2 -0
  168. package/dist/chunk-UEQORB2A.js +2 -0
  169. package/dist/chunk-UM56ZET4.js +38 -0
  170. package/dist/chunk-UXNXOMXJ.js +2 -0
  171. package/dist/{chunk-6SHPK5ZE.js → chunk-V6XENWOF.js} +2 -2
  172. package/dist/chunk-VJAD5WX5.js +2 -0
  173. package/dist/chunk-VRJG7N3I.js +453 -0
  174. package/dist/chunk-W7HN6V4E.js +7 -0
  175. package/dist/chunk-WCIKJ2E3.js +3 -0
  176. package/dist/chunk-WEXQYJY3.js +5 -0
  177. package/dist/chunk-WOPZX5GM.js +2 -0
  178. package/dist/chunk-WRQXLNYE.js +9 -0
  179. package/dist/{chunk-XKWKXZKW.js → chunk-WV6R37XV.js} +2 -2
  180. package/dist/{chunk-N5W4YZMK.js → chunk-WZ7V4BQV.js} +2 -2
  181. package/dist/chunk-WZRNEVYC.js +2 -0
  182. package/dist/chunk-X5MWO4DM.js +7 -0
  183. package/dist/chunk-XDAUYDFT.js +2 -0
  184. package/dist/{chunk-L7AW2QB5.js → chunk-XDOEHEET.js} +2 -2
  185. package/dist/chunk-XDQX6LDT.js +4 -0
  186. package/dist/chunk-XFRHBAIT.js +2 -0
  187. package/dist/chunk-XIPGCT3D.js +5 -0
  188. package/dist/chunk-XKM5D2XS.js +16 -0
  189. package/dist/chunk-XNF5T4T2.js +4 -0
  190. package/dist/chunk-Y2S4YNLH.js +3 -0
  191. package/dist/chunk-YA72ZUKO.js +2 -0
  192. package/dist/chunk-YBWE6J32.js +43 -0
  193. package/dist/chunk-YCXQQ3YB.js +2 -0
  194. package/dist/chunk-YDTK77JP.js +43 -0
  195. package/dist/chunk-YF25RQER.js +4 -0
  196. package/dist/chunk-YKHL4J3G.js +2 -0
  197. package/dist/chunk-YLNCTPOI.js +4 -0
  198. package/dist/chunk-YR7VRWNX.js +2 -0
  199. package/dist/chunk-YT4IQBET.js +3 -0
  200. package/dist/chunk-YUKYB54I.js +1 -0
  201. package/dist/chunk-Z2KGMIL4.js +2 -0
  202. package/dist/chunk-Z2QB75BS.js +3 -0
  203. package/dist/chunk-Z67JOKRE.js +554 -0
  204. package/dist/chunk-ZGDHC5AT.js +2 -0
  205. package/dist/chunk-ZMS4YCY7.js +2 -0
  206. package/dist/chunk-ZNW5A5VX.js +3 -0
  207. package/dist/{chunk-TFRAYKN6.js → chunk-ZP2WUVZ5.js} +2 -2
  208. package/dist/chunk-ZQUNCTEZ.js +2 -0
  209. package/dist/cli-main.js +8 -0
  210. package/dist/cli.js +1 -3
  211. package/dist/code-AXLJBZ6T.js +2 -0
  212. package/dist/code-B17qEMbt.d.ts +121 -0
  213. package/dist/code-result-json-CTZHAQXJ.js +2 -0
  214. package/dist/command-descriptors-6INSCKLW.js +342 -0
  215. package/dist/{config-types-jVM3D7MA.d.ts → config-types-B9B60MiR.d.ts} +199 -23
  216. package/dist/dataflow-AFXY423Q.js +2 -0
  217. package/dist/{db-B5PM5yNk.d.ts → db-BwIVAYNB.d.ts} +1 -1
  218. package/dist/dependence-slice-2G4X6VSJ.js +2 -0
  219. package/dist/deps-LMCAV5DO.js +2 -0
  220. package/dist/direct-navigation-2ONV22Y2.js +3 -0
  221. package/dist/entry-map-ZOC3VXO5.js +2 -0
  222. package/dist/exploration-topology-BG4v30HZ.d.ts +256 -0
  223. package/dist/file-dep-graph-Bqg3t3Px.d.ts +4 -0
  224. package/dist/file-kind-BKCVMNUf.d.ts +10 -0
  225. package/dist/files-WJQJLHMH.js +2 -0
  226. package/dist/graph-evidence-Bjyky2V4.d.ts +126 -0
  227. package/dist/graph-exploration-contract-CqDsnPQL.d.ts +7 -0
  228. package/dist/{health-Do5TKSJI.d.ts → health-CPp2Jf1Z.d.ts} +33 -34
  229. package/dist/hierarchy-ASNIHAX4.js +2 -0
  230. package/dist/imports-JICEKDKK.js +2 -0
  231. package/dist/index.d.ts +4 -31
  232. package/dist/index.js +1 -1
  233. package/dist/members-C5H2K3MS.js +2 -0
  234. package/dist/methods-KZOZHSD4.js +2 -0
  235. package/dist/next-anchor-candidates-BwMczMvX.d.ts +90 -0
  236. package/dist/output-continuation-command-NX3RH3TP.js +3 -0
  237. package/dist/output-pagination-3OFL2MJV.js +19 -0
  238. package/dist/postinstall.js +1 -1
  239. package/dist/project-reindex-A2SXUH2H.js +3 -0
  240. package/dist/queries/affected.d.ts +22 -4
  241. package/dist/queries/affected.js +1 -1
  242. package/dist/queries/anchors.d.ts +123 -0
  243. package/dist/queries/anchors.js +2 -0
  244. package/dist/queries/architecture.d.ts +3 -2
  245. package/dist/queries/architecture.js +1 -1
  246. package/dist/queries/bottlenecks.d.ts +26 -7
  247. package/dist/queries/bottlenecks.js +1 -1
  248. package/dist/queries/by-kind.d.ts +2 -2
  249. package/dist/queries/by-kind.js +1 -1
  250. package/dist/queries/call-graph.d.ts +17 -3
  251. package/dist/queries/call-graph.js +1 -1
  252. package/dist/queries/change-surface.d.ts +2 -2
  253. package/dist/queries/change-surface.js +1 -1
  254. package/dist/queries/cleanup-plan.d.ts +2 -2
  255. package/dist/queries/cleanup-plan.js +1 -1
  256. package/dist/queries/co-change.d.ts +2 -2
  257. package/dist/queries/co-change.js +1 -1
  258. package/dist/queries/code.d.ts +5 -26
  259. package/dist/queries/code.js +1 -1
  260. package/dist/queries/complexity-hotspots.d.ts +2 -2
  261. package/dist/queries/complexity-hotspots.js +1 -1
  262. package/dist/queries/complexity.d.ts +2 -2
  263. package/dist/queries/complexity.js +1 -1
  264. package/dist/queries/context.d.ts +145 -0
  265. package/dist/queries/context.js +2 -0
  266. package/dist/queries/convergence.d.ts +2 -2
  267. package/dist/queries/convergence.js +1 -1
  268. package/dist/queries/coupling.d.ts +8 -3
  269. package/dist/queries/coupling.js +1 -1
  270. package/dist/queries/cycles.d.ts +34 -7
  271. package/dist/queries/cycles.js +1 -1
  272. package/dist/queries/dataflow.d.ts +40 -14
  273. package/dist/queries/dataflow.js +1 -1
  274. package/dist/queries/dead.d.ts +2 -2
  275. package/dist/queries/dead.js +1 -1
  276. package/dist/queries/decorative-checkers.d.ts +3 -3
  277. package/dist/queries/decorative-checkers.js +1 -1
  278. package/dist/queries/deep-chains.d.ts +4 -38
  279. package/dist/queries/deep-chains.js +1 -1
  280. package/dist/queries/dependence-slice.d.ts +47 -0
  281. package/dist/queries/dependence-slice.js +2 -0
  282. package/dist/queries/dependency-depth.d.ts +49 -0
  283. package/dist/queries/dependency-depth.js +2 -0
  284. package/dist/queries/deps.d.ts +4 -2
  285. package/dist/queries/deps.js +1 -1
  286. package/dist/queries/diff-impact.d.ts +3 -3
  287. package/dist/queries/diff-impact.js +1 -1
  288. package/dist/queries/doc-drift.d.ts +4 -4
  289. package/dist/queries/doc-drift.js +1 -1
  290. package/dist/queries/drift.d.ts +2 -2
  291. package/dist/queries/drift.js +1 -1
  292. package/dist/queries/duplicate-bodies.d.ts +2 -2
  293. package/dist/queries/duplicate-bodies.js +1 -1
  294. package/dist/queries/entry-map.d.ts +121 -0
  295. package/dist/queries/entry-map.js +2 -0
  296. package/dist/queries/evidence.d.ts +70 -0
  297. package/dist/queries/evidence.js +2 -0
  298. package/dist/queries/extract-candidates.d.ts +2 -2
  299. package/dist/queries/extract-candidates.js +1 -1
  300. package/dist/queries/fan.d.ts +18 -5
  301. package/dist/queries/fan.js +1 -1
  302. package/dist/queries/files.d.ts +2 -2
  303. package/dist/queries/files.js +1 -1
  304. package/dist/queries/health.d.ts +4 -3
  305. package/dist/queries/health.js +1 -1
  306. package/dist/queries/hierarchy.d.ts +5 -3
  307. package/dist/queries/hierarchy.js +1 -1
  308. package/dist/queries/hotspots.d.ts +11 -5
  309. package/dist/queries/hotspots.js +1 -1
  310. package/dist/queries/imports.d.ts +2 -2
  311. package/dist/queries/imports.js +1 -1
  312. package/dist/queries/incomplete-migration.d.ts +4 -4
  313. package/dist/queries/incomplete-migration.js +1 -1
  314. package/dist/queries/index.d.ts +56 -136
  315. package/dist/queries/index.js +1 -1
  316. package/dist/queries/isolated.d.ts +2 -2
  317. package/dist/queries/isolated.js +1 -1
  318. package/dist/queries/locality-candidates.d.ts +2 -2
  319. package/dist/queries/locality-candidates.js +1 -1
  320. package/dist/queries/members.d.ts +2 -2
  321. package/dist/queries/members.js +1 -1
  322. package/dist/queries/methods.d.ts +2 -2
  323. package/dist/queries/methods.js +1 -1
  324. package/dist/queries/not-implemented.d.ts +3 -3
  325. package/dist/queries/not-implemented.js +1 -1
  326. package/dist/queries/outline.d.ts +2 -2
  327. package/dist/queries/outline.js +1 -1
  328. package/dist/queries/passthrough-candidates.d.ts +5 -9
  329. package/dist/queries/passthrough-candidates.js +1 -1
  330. package/dist/queries/plan-context.d.ts +27 -64
  331. package/dist/queries/plan-context.js +1 -1
  332. package/dist/queries/react-component-duplicates.d.ts +2 -2
  333. package/dist/queries/react-component-duplicates.js +1 -1
  334. package/dist/queries/react-hook-candidates.d.ts +2 -2
  335. package/dist/queries/react-hook-candidates.js +1 -1
  336. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  337. package/dist/queries/react-large-component-pressure.js +1 -1
  338. package/dist/queries/recent-duplicates.d.ts +2 -2
  339. package/dist/queries/recent-duplicates.js +1 -1
  340. package/dist/queries/redundant-reexports.d.ts +2 -2
  341. package/dist/queries/redundant-reexports.js +1 -1
  342. package/dist/queries/reference-neighborhood.d.ts +4 -0
  343. package/dist/queries/reference-neighborhood.js +2 -0
  344. package/dist/queries/reference-reachability.d.ts +48 -0
  345. package/dist/queries/reference-reachability.js +2 -0
  346. package/dist/queries/refs.d.ts +2 -2
  347. package/dist/queries/refs.js +1 -1
  348. package/dist/queries/self-audit.d.ts +2 -2
  349. package/dist/queries/self-audit.js +1 -1
  350. package/dist/queries/similar-chains.d.ts +2 -2
  351. package/dist/queries/similar-chains.js +1 -1
  352. package/dist/queries/similar-files.d.ts +2 -2
  353. package/dist/queries/similar-files.js +1 -1
  354. package/dist/queries/similar-signatures.d.ts +2 -2
  355. package/dist/queries/similar-signatures.js +1 -1
  356. package/dist/queries/similar.d.ts +2 -2
  357. package/dist/queries/similar.js +1 -1
  358. package/dist/queries/slice.d.ts +3 -36
  359. package/dist/queries/slice.js +1 -1
  360. package/dist/queries/source-inspection.d.ts +209 -0
  361. package/dist/queries/source-inspection.js +2 -0
  362. package/dist/queries/source-search.d.ts +13 -0
  363. package/dist/queries/source-search.js +2 -0
  364. package/dist/queries/stale-abstractions.d.ts +2 -2
  365. package/dist/queries/stale-abstractions.js +1 -1
  366. package/dist/queries/stats.d.ts +2 -2
  367. package/dist/queries/surface.d.ts +13 -4
  368. package/dist/queries/surface.js +1 -1
  369. package/dist/queries/symbols.d.ts +2 -2
  370. package/dist/queries/symbols.js +1 -1
  371. package/dist/queries/system-map.d.ts +449 -0
  372. package/dist/queries/system-map.js +2 -0
  373. package/dist/queries/system.d.ts +5 -3
  374. package/dist/queries/system.js +1 -1
  375. package/dist/queries/test-quality.d.ts +2 -2
  376. package/dist/queries/test-quality.js +1 -1
  377. package/dist/queries/trace.d.ts +47 -3
  378. package/dist/queries/trace.js +1 -1
  379. package/dist/queries/twin-ab.d.ts +3 -3
  380. package/dist/queries/twin-ab.js +1 -1
  381. package/dist/queries/twin-drift.d.ts +3 -3
  382. package/dist/queries/twin-drift.js +1 -1
  383. package/dist/queries/unused-imports.d.ts +2 -2
  384. package/dist/queries/unused-imports.js +1 -1
  385. package/dist/queries/unused-params.d.ts +2 -2
  386. package/dist/queries/unused-params.js +1 -1
  387. package/dist/queries/value-flow.d.ts +43 -0
  388. package/dist/queries/value-flow.js +2 -0
  389. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  390. package/dist/queries/vue-component-duplicates.js +1 -1
  391. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  392. package/dist/queries/vue-composable-candidates.js +1 -1
  393. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  394. package/dist/queries/vue-large-view-pressure.js +1 -1
  395. package/dist/queries/wrapper-candidates.d.ts +2 -2
  396. package/dist/queries/wrapper-candidates.js +1 -1
  397. package/dist/query-service-fastpath.js +6 -0
  398. package/dist/query-service-server.js +5 -0
  399. package/dist/refs-ZOORVRQC.js +2 -0
  400. package/dist/refs-pagination-SRCUOYRD.js +2 -0
  401. package/dist/reindex-worker.js +85 -86
  402. package/dist/reindex.d.ts +64 -42
  403. package/dist/reindex.js +93 -77
  404. package/dist/repository-text-C0Q8VYdN.d.ts +19 -0
  405. package/dist/runtime.d.ts +287 -8
  406. package/dist/runtime.js +4 -3
  407. package/dist/rust-semantic-session-server.js +1 -1
  408. package/dist/rust-semantic-session-worker.js +1 -1
  409. package/dist/rust-semantic-worker.js +1 -1
  410. package/dist/{scip-cli-BnEwZRLJ.d.ts → scip-cli-H-n59izO.d.ts} +33 -2
  411. package/dist/slice-NOTBWA7S.js +2 -0
  412. package/dist/source-search-types-Dwz8KeuW.d.ts +79 -0
  413. package/dist/source-snippet-_wrcgmZc.d.ts +15 -0
  414. package/dist/stats-OOJ74B32.js +2 -0
  415. package/dist/surface-BTBCLKNA.js +2 -0
  416. package/dist/symbol-resolution-SVSMX4RN.js +2 -0
  417. package/dist/system-2EIUFP6B.js +2 -0
  418. package/dist/trace-BB2GHQPG.js +2 -0
  419. package/dist/typescript-mailbox-worker.js +1 -1
  420. package/dist/value-flow-OA7AHSUG.js +2 -0
  421. package/dist/watch-server.js +3 -2
  422. package/docs/AGENT_GUIDE.md +133 -476
  423. package/docs/AI_FAILURE_MODES.md +30 -301
  424. package/docs/API.md +1 -1
  425. package/docs/API_EVOLUTION.md +6 -0
  426. package/docs/CLI_JSON_OUTPUT.md +207 -29
  427. package/docs/COMMAND_REFERENCE.md +255 -154
  428. package/docs/CONFIGURATION_WRITE_SAFETY.md +14 -13
  429. package/docs/DETECTOR_EVIDENCE_CONTRACTS.md +84 -0
  430. package/docs/DETECTOR_GUIDE.md +46 -138
  431. package/docs/DURABILITY.md +7 -1
  432. package/docs/INDEX_GENERATIONS.md +6 -0
  433. package/docs/LOCK_PROTOCOL.md +8 -0
  434. package/docs/REINDEX_METADATA_COMPATIBILITY.md +13 -3
  435. package/docs/SECURITY_MODEL.md +39 -42
  436. package/docs/accuracy-audit-checklist.md +4 -0
  437. package/docs/accuracy-hardening-goal.md +9 -2
  438. package/docs/analyzer-inventory.md +59 -264
  439. package/docs/analyzer-validation-protocol.md +62 -170
  440. package/docs/architecture-coherence-vision.md +18 -12
  441. package/docs/locality-analyzer-design.md +1 -1
  442. package/docs/schemas/cli-json-envelope.schema.json +212 -27
  443. package/docs/schemas/cli-json-export-receipt.schema.json +25 -0
  444. package/docs/schemas/cli-output-page.schema.json +1 -1
  445. package/docs/schemas/observation-receipt.schema.json +164 -0
  446. package/docs/schemas/project-config.schema.json +37 -45
  447. package/docs/schemas/suppression-record.schema.json +1 -34
  448. package/package.json +69 -11
  449. package/skills/concrete-plan/SKILL.md +8 -0
  450. package/skills/concrete-plan/agents/openai.yaml +4 -0
  451. package/skills/scip-explore/SKILL.md +49 -61
  452. package/skills/scip-explore/agents/openai.yaml +3 -3
  453. package/skills/scip-explore/references/delegated-exploration.md +51 -0
  454. package/skills/scip-explore/references/external-evidence.md +72 -0
  455. package/skills/scip-explore/references/information-model.md +51 -0
  456. package/skills/scip-explore/scripts/capture-evidence.mjs +666 -0
  457. package/skills/scip-integrity-audit/SKILL.md +185 -0
  458. package/skills/scip-integrity-audit/agents/openai.yaml +4 -0
  459. package/skills/scip-plan/SKILL.md +67 -49
  460. package/skills/scip-plan/agents/openai.yaml +3 -3
  461. package/skills/scip-query/SKILL.md +98 -77
  462. package/skills/scip-query/agents/openai.yaml +3 -3
  463. package/skills/scip-setup/SKILL.md +10 -102
  464. package/skills/scip-setup/agents/openai.yaml +3 -3
  465. package/dist/chunk-26QA6FAI.js +0 -8
  466. package/dist/chunk-2KAZEZ6M.js +0 -2
  467. package/dist/chunk-3ORVDL3H.js +0 -2
  468. package/dist/chunk-46XGSFNI.js +0 -2
  469. package/dist/chunk-4MAK2HOY.js +0 -6
  470. package/dist/chunk-4TURLRL5.js +0 -16
  471. package/dist/chunk-4UQVNCQE.js +0 -2
  472. package/dist/chunk-55Q3WLZX.js +0 -2
  473. package/dist/chunk-5I5G2QOX.js +0 -3
  474. package/dist/chunk-6LDJQXAH.js +0 -2
  475. package/dist/chunk-6O5TICIZ.js +0 -3
  476. package/dist/chunk-7O5IKBTZ.js +0 -16
  477. package/dist/chunk-7S5E7KWT.js +0 -2
  478. package/dist/chunk-7WPLAODU.js +0 -5
  479. package/dist/chunk-AFHORGLH.js +0 -42
  480. package/dist/chunk-AIE7TFJW.js +0 -9
  481. package/dist/chunk-AQOFWNQJ.js +0 -1
  482. package/dist/chunk-B2PX5I6M.js +0 -2
  483. package/dist/chunk-B75HZHUP.js +0 -2
  484. package/dist/chunk-B7PBSLZN.js +0 -2
  485. package/dist/chunk-BBW6JFHN.js +0 -2
  486. package/dist/chunk-BNXCIFVY.js +0 -2
  487. package/dist/chunk-BS2NMXQZ.js +0 -4
  488. package/dist/chunk-C3KV2II6.js +0 -2
  489. package/dist/chunk-C43RDDP4.js +0 -20
  490. package/dist/chunk-DAFAHMNB.js +0 -42
  491. package/dist/chunk-DQLPXMH6.js +0 -8
  492. package/dist/chunk-EKZTZXHZ.js +0 -117
  493. package/dist/chunk-EW2NTSFA.js +0 -18
  494. package/dist/chunk-F3Z4OUDS.js +0 -8
  495. package/dist/chunk-FJH2NW7J.js +0 -66
  496. package/dist/chunk-FTFP6O3L.js +0 -11
  497. package/dist/chunk-FYLK2DEJ.js +0 -2
  498. package/dist/chunk-GH74ASD6.js +0 -11
  499. package/dist/chunk-GMXWZP2B.js +0 -2
  500. package/dist/chunk-GOUBFH5O.js +0 -3
  501. package/dist/chunk-HLF2TX6R.js +0 -2
  502. package/dist/chunk-HX7M4BDI.js +0 -30
  503. package/dist/chunk-HZ72SESS.js +0 -128
  504. package/dist/chunk-IB2N4FIY.js +0 -10
  505. package/dist/chunk-IZYYAFN5.js +0 -2
  506. package/dist/chunk-JFGGXWQF.js +0 -947
  507. package/dist/chunk-JN4NMBEX.js +0 -8
  508. package/dist/chunk-JW56N3KI.js +0 -4
  509. package/dist/chunk-JZ2OXNWB.js +0 -2
  510. package/dist/chunk-KFZNKUNT.js +0 -2
  511. package/dist/chunk-L5GJNV2T.js +0 -8
  512. package/dist/chunk-L7JDSCDF.js +0 -4
  513. package/dist/chunk-LU47HG23.js +0 -14
  514. package/dist/chunk-LVY7NPF7.js +0 -2
  515. package/dist/chunk-MKCDWWGV.js +0 -4
  516. package/dist/chunk-MNE7YG56.js +0 -2
  517. package/dist/chunk-MRXBEXSY.js +0 -26
  518. package/dist/chunk-MV7OWDUX.js +0 -2
  519. package/dist/chunk-NGEXCJJW.js +0 -11
  520. package/dist/chunk-NIW6JDC5.js +0 -29
  521. package/dist/chunk-PBUQFCNB.js +0 -16
  522. package/dist/chunk-POAVPHH7.js +0 -2
  523. package/dist/chunk-QZ4JVECJ.js +0 -2
  524. package/dist/chunk-RDO52JGY.js +0 -2
  525. package/dist/chunk-RJT3TUUZ.js +0 -2
  526. package/dist/chunk-RVLDN63O.js +0 -4
  527. package/dist/chunk-RXOXSKY3.js +0 -2
  528. package/dist/chunk-S7OYBOCK.js +0 -2
  529. package/dist/chunk-SMNXQT5Z.js +0 -3
  530. package/dist/chunk-SRAFT254.js +0 -2
  531. package/dist/chunk-T7YQSHPQ.js +0 -3
  532. package/dist/chunk-UJCOIXDY.js +0 -2
  533. package/dist/chunk-UJPRPGCO.js +0 -13
  534. package/dist/chunk-WCCFZ7V7.js +0 -113
  535. package/dist/chunk-WUPW3UN3.js +0 -3
  536. package/dist/chunk-X54AGLVX.js +0 -2
  537. package/dist/chunk-Y2MVPNKY.js +0 -5
  538. package/dist/chunk-YKUU5AIC.js +0 -3
  539. package/dist/chunk-YLCJLTPL.js +0 -2
  540. package/dist/chunk-YTQVETEO.js +0 -2
  541. package/dist/chunk-Z4N3MZYA.js +0 -38
  542. package/dist/chunk-ZJOOT3BG.js +0 -2
  543. package/dist/chunk-ZK26BAQL.js +0 -2
  544. package/dist/command-descriptors-DSS46KXI.js +0 -642
  545. package/dist/diff-gate-types-B0QYpDv1.d.ts +0 -11
  546. package/dist/direct-navigation-6YHV6IB5.js +0 -3
  547. package/dist/queries/diff-gate.d.ts +0 -253
  548. package/dist/queries/diff-gate.js +0 -2
  549. package/docs/COMMITTED_RECORD_COMPATIBILITY.md +0 -154
  550. package/docs/analyzer-validation-ledger.md +0 -516
  551. package/docs/schemas/outcome-event-record.schema.json +0 -95
  552. package/skills/_shared/SKILL.md +0 -101
  553. package/skills/_shared/agents/openai.yaml +0 -4
  554. package/skills/_shared/references/agent-contract-catalog.md +0 -105
  555. package/skills/_shared/references/command-catalog.md +0 -118
  556. package/skills/_shared/references/detector-precision-and-diffgate.md +0 -59
  557. package/skills/_shared/references/evidence-and-dead-code.md +0 -25
  558. package/skills/scip-audit/SKILL.md +0 -77
  559. package/skills/scip-audit/agents/openai.yaml +0 -4
  560. package/skills/scip-audit/references/claims.md +0 -98
  561. package/skills/scip-audit/references/cleanup.md +0 -100
  562. package/skills/scip-audit/references/directory.md +0 -222
  563. package/skills/scip-audit/references/frontend.md +0 -130
  564. package/skills/scip-audit/references/integrity.md +0 -154
  565. package/skills/scip-audit/references/maintainability.md +0 -162
  566. package/skills/scip-audit/references/twin-drift.md +0 -104
  567. package/skills/scip-diagnose/SKILL.md +0 -52
  568. package/skills/scip-diagnose/agents/openai.yaml +0 -4
  569. package/skills/scip-diagnose/references/debug.md +0 -117
  570. package/skills/scip-diagnose/references/probe-reachability.md +0 -77
  571. package/skills/scip-diagnose/references/root-cause.md +0 -145
  572. package/skills/scip-diagnose/references/triage.md +0 -119
  573. package/skills/scip-explore/references/diagrams.md +0 -40
  574. package/skills/scip-explore/references/language-playbook.md +0 -49
  575. package/skills/scip-improve/SKILL.md +0 -56
  576. package/skills/scip-improve/agents/openai.yaml +0 -4
  577. package/skills/scip-improve/references/cleanup-batches.md +0 -53
  578. package/skills/scip-improve/references/directory-moves.md +0 -53
  579. package/skills/scip-improve/references/doc-reconcile.md +0 -30
  580. package/skills/scip-improve/references/frontend-extraction.md +0 -39
  581. package/skills/scip-improve/references/maintainability-mechanism.md +0 -43
  582. package/skills/scip-improve/references/twin-drift.md +0 -35
  583. package/skills/scip-plan/references/api-impact.md +0 -19
  584. package/skills/scip-plan/references/conductor.md +0 -41
  585. package/skills/scip-plan/references/high-assurance.md +0 -43
  586. package/skills/scip-plan/references/hyper-optimization.md +0 -50
  587. package/skills/scip-plan/references/tla-model.md +0 -88
  588. package/skills/scip-setup/references/bootstrap-workflow.md +0 -119
  589. package/skills/scip-setup/references/language-verification.md +0 -61
  590. package/skills/scip-setup/references/lifecycle-commands.md +0 -119
  591. package/skills/scip-setup/references/per-repo-triage.md +0 -24
  592. package/skills/scip-verify/SKILL.md +0 -229
  593. package/skills/scip-verify/agents/openai.yaml +0 -4
  594. package/skills/scip-verify/references/calibrate-detectors.md +0 -170
@@ -1,22 +1,4 @@
1
- import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILMHV3KM.js";import{a as In}from"./chunk-P5XHIJHI.js";import{a as O}from"./chunk-XKWKXZKW.js";import{a as qt,b as Wt,d as Ce,e as Qt,i as Sn,j as Ue,l as bn,m as Pn,n as xn,o as qe}from"./chunk-L5GJNV2T.js";import"./chunk-IZYYAFN5.js";import{$ as zt,A as Nt,Ba as yn,C as Ct,D as $t,E as ce,Q as Gt,R as Bt,T as X,V as Ut,Z as Ht,_ as Jt,aa as Xt,b as q,ba as Vt,c as ae,ca as Yt,d as Me,da as Kt,e as Oe,ea as Zt,f as bt,fa as en,ga as tn,ha as nn,ia as rn,ja as an,k as Ae,ka as on,la as sn,m as se,ma as Q,na as ue,oa as cn,qa as $e,r as vt,ra as dn,sa as Ge,t as Ft,ta as ln,ua as un,wa as Be,y as z,ya as pe,za as hn}from"./chunk-HZ72SESS.js";import{b as At,c as Lt,f as k}from"./chunk-FJH2NW7J.js";import{a as re,b as St,c as ie,g as H,i as jt,j as Tt,k as wt,n as Dt,o as kt}from"./chunk-WUPW3UN3.js";import{l as L,n as Et,o as Ne,p as _t,r as Mt,s as Ot,u as pn,x as gn,y as fn,z as mn}from"./chunk-AIE7TFJW.js";import{e as T,f as W}from"./chunk-HGFDYOVB.js";import{a as b,b as It,c as J,d as A}from"./chunk-MNE7YG56.js";import{a as yt,c as De,f as ke,g as ne,h as D}from"./chunk-46XGSFNI.js";import{a as oe,b as Pt,c as xt,d as Le,e as Rt}from"./chunk-KFZNKUNT.js";import{execFileSync as yo}from"child_process";import{createHash as So}from"crypto";import{copyFileSync as je,existsSync as j,mkdirSync as _e,mkdtempSync as bo,readdirSync as Lr,renameSync as Nr,rmSync as B,statSync as Po}from"fs";import{basename as Ee,dirname as y,extname as xo,join as R,resolve as jr}from"path";import{platform as Ro}from"os";import{execFileSync as En}from"child_process";import{createHash as oi}from"crypto";import{existsSync as ge,statSync as si}from"fs";import{createRequire as ci}from"module";import{platform as di}from"os";import{dirname as vn,join as V}from"path";var li=ci(import.meta.url),N={language:"rust",indexerBinary:"rust-analyzer",installUrl:"https://github.com/rust-lang/rust-analyzer"};function We(e){return[e.indexerBinary,...e.binaryAliases??[]]}function fe(e){let t=We(e);return t.length===1?t[0]:t.join(" or ")}function C(e){for(let t of We(e)){let n=xt(t);if(n)return n}return pi(e)}function _n(e){return C(e)!==null||ui(e)}function ui(e){return Fn(e)!==null}function pi(e){let t=Fn(e);if(!t)return null;let r=JSON.parse(D(t,"indexer package manifest")).bin;if(!r)return null;if(typeof r=="string")return V(vn(t),r);for(let i of We(e)){let a=r[i];if(a)return V(vn(t),a)}return null}function Fn(e){if(!e.bundledNpmPackage)return null;try{return li.resolve(`${e.bundledNpmPackage}/package.json`)}catch{return null}}function jn(e,t){for(let n of e.projectLocalBinaries??[]){let r=V(t,n);if(ge(r))return r}return null}function Tn(e,t){for(let n of e.projectLocalBinaries??[]){let r=V(t,n);if(ge(r))return Dn(t,n,r)}return null}function wn(e,t){let n=gi(e,t);if(!n||n.canonicalPath!==t.canonicalPath||n.sha256!==t.sha256||n.size!==t.size||n.mtimeMs!==t.mtimeMs||n.device!==t.device||n.inode!==t.inode||n.executable!==t.executable)throw new Error(`refusing changed project-local indexer ${t.relativePath}; review the current file and rerun with --trust-project-tools`)}function gi(e,t){try{return Dn(e,t.relativePath,t.configuredPath)}catch{return null}}function Dn(e,t,n){let r={maxBytes:268435456,inputKind:"project-local indexer"},i=Tt(e,t,r),a=wt(e,t,r),o=si(i.absolutePath);return{configuredPath:n,canonicalPath:i.absolutePath,relativePath:t,sha256:oi("sha256").update(a).digest("hex"),size:i.size,mtimeMs:i.mtimeMs,device:i.device,inode:i.inode,executable:(o.mode&73)!==0}}function kn(e,t=process.env,n=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||Mn(n,t))return t;let r=fi(n,t);return r?{...t,DOTNET_ROOT:r}:t}function fi(e,t){for(let n of mi(t))if(Mn(e,{...t,DOTNET_ROOT:n}))return n;return null}function mi(e){let t=[],n=e.DOTNET_ROOT;if(n&&ge(n)&&t.push(n),di()==="darwin"&&oe("brew"))try{let r=En("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e,timeout:1e4,killSignal:"SIGKILL"}).toString().trim(),i=V(r,"libexec");ge(i)&&!t.includes(i)&&t.push(i)}catch{}return t}function Mn(e,t){try{return En(e,["--version"],{stdio:"pipe",env:t,timeout:1e4,killSignal:"SIGKILL"}),!0}catch{return!1}}var On=$t({kind:"file-dependency-graph",invalidation:ce("file-dependency-graph"),serialize:e=>JSON.stringify(e),deserialize:Ri}),hi=At("file-dep-graph",{clearGroups:["whole-project"]});function $(e,t,n={}){let r=n.scipEdges??"all-references",i=n.sourceEdges??"imports-only",a=bi(t,r,i);return hi.get(e,a,()=>{let o=new Set(k(e,{includeIgnored:!1})),s=Nt(e),d=0,c=0,l=null,u=!1,p=0,h=0;return T("file-dep-graph.product",()=>{if(s){let f=On.read(e,a,s);if(f){u=!0;let P=xi(f);return d=f.sourceFileCount,c=f.sourceEdgeCount,p=f.scipEdgeCount,h=P.size,l=f.sourceDependencyFingerprint,P}}let g=T("file-dep-graph.source-imports",()=>{let f=yi(e,o,t,i);return d=f.files.length,c=f.edges.length,l=f.fingerprint,f},()=>({scope:t??null,sourceEdges:i,files:d,edges:c})),m=new Map,S=(f,P)=>_i(e,m,o,f,P);T("file-dep-graph.scip-edges",()=>{for(let f of Ei(e,t,r))p+=1,S(f.from_file,f.to_file)},()=>({scope:t??null,edges:p}));for(let f of g.edges)S(f.fromFile,f.toFile);return h=m.size,s&&On.write(e,a,s,{sourceDependencyFingerprint:g.fingerprint,sourceFileCount:g.files.length,sourceEdgeCount:g.edges.length,scipEdgeCount:p,graph:Pi(m)}),m},()=>({scope:t??null,available:s!==null,hit:u,files:d,sourceEdges:c,sourceEdgeMode:i,scipEdges:p,graphFiles:h,sourceDependencyFingerprint:l}))})}function yi(e,t,n,r){let i=[],a=[];for(let o of t)if(!(n&&!o.includes(n))){i.push(o);for(let s of Bt(e,o))s.sourcePath&&a.push({fromFile:o,toFile:s.sourcePath});if(r==="imports-and-reexports")for(let s of Gt(e,o))s.sourcePath&&a.push({fromFile:o,toFile:s.sourcePath})}return{files:i,edges:a,fingerprint:Si(i,a)}}function Si(e,t){let n=t.map(r=>`${r.fromFile}\0${r.toFile}`).sort();return z(JSON.stringify({files:e,edges:n}))}function bi(e,t,n){return`edge-mode-v3:${t}:${n}:${e??"<all>"}`}function Pi(e){return[...e].map(([t,n])=>[t,[...n]])}function xi(e){return new Map(e.graph.map(([t,n])=>[t,new Set(n)]))}function Ri(e){let t=JSON.parse(e);return Ii(t)?t:null}function Ii(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.sourceDependencyFingerprint=="string"&&typeof t.sourceFileCount=="number"&&typeof t.sourceEdgeCount=="number"&&typeof t.scipEdgeCount=="number"&&Array.isArray(t.graph)&&t.graph.every(vi)}function vi(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&Array.isArray(e[1])&&e[1].every(t=>typeof t=="string")}function Ei(e,t,n){let r=t?"AND d1.relative_path LIKE ?":"",i=t?[`%${t}%`]:[],a=n==="imports-only"?"AND m.role = 2":"AND m.role != 1";return e.all(`SELECT DISTINCT
2
- d1.relative_path AS from_file,
3
- d2.relative_path AS to_file
4
- FROM mentions m
5
- JOIN chunks c ON m.chunk_id = c.id
6
- JOIN documents d1 ON c.document_id = d1.id
7
- JOIN global_symbols gs ON m.symbol_id = gs.id
8
- JOIN (
9
- SELECT m2.symbol_id, c2.document_id
10
- FROM mentions m2
11
- JOIN chunks c2 ON m2.chunk_id = c2.id
12
- WHERE m2.role = 1
13
- GROUP BY m2.symbol_id
14
- ) sym_def ON sym_def.symbol_id = gs.id
15
- JOIN documents d2 ON sym_def.document_id = d2.id
16
- WHERE d1.id != d2.id
17
- ${a}
18
- ${e.pathExclusionsFor("d1","d2")}
19
- ${r}`,...i)}function _i(e,t,n,r,i){if(r===i||e.isIgnored(r)||e.isIgnored(i)||!n.has(i))return;let a=t.get(r);a||(a=new Set,t.set(r,a)),a.add(i)}function he(e){let t=me(e.projectFiles),n=new Set(t),r=new Map(e.snapshot.files.map(u=>[u.path,u])),i=e.snapshot.files.filter(u=>{let p=re(u.path,["typescript"]);return p==="config"||p==="ambient"}).map(u=>u.path),a=me([...t,...i]),o=a.find(u=>!r.has(u)),s=new Set(e.snapshot.files.map(u=>u.path)).size!==e.snapshot.files.length,d=!o&&a.some(u=>An(r.get(u))),c=z(JSON.stringify({pnpmWorkspaces:e.snapshot.pnpmWorkspaces,typescriptProjectMode:e.snapshot.typescriptProjectMode,typescriptProjects:me(e.snapshot.typescriptProjects),membership:t})),l=new Map;return{identityFor(u,p){if(!n.has(u))return G("target-outside-project");if(s)return G("duplicate-input-path");if(o)return G("missing-input-fingerprint");if(d)return G("unreadable-input");let h=[],g,m;if(e.graph===null)h.push("dependency-graph-unavailable"),m="whole-project",g=a;else{let P=ji(u,e.graph,l);if(P.find(x=>!r.has(x)))return G("missing-input-fingerprint");if(g=me([...P,...i]),g.some(x=>An(r.get(x))))return G("unreadable-input");m="dependency-closure"}let S=g.map(P=>Ti(r.get(P)));return{version:1,key:z(JSON.stringify({version:1,engineIdentity:e.engineIdentity,schemaVersion:p,projectIdentity:c,inputs:S})),mode:m,inputFiles:g,reasons:h}}}}function Fi(e,t){let n=new Set,r=[e];for(let i=0;i<r.length;i+=1){let a=r[i];if(!(a===void 0||n.has(a))){n.add(a);for(let o of[...t.get(a)??[]].sort())n.has(o)||r.push(o)}}return[...n].sort()}function ji(e,t,n){let r=n.get(e);if(r)return r;let i=Fi(e,t);return n.set(e,i),i}function Ti(e){return{path:e.path,size:e.size,hash:e.hash}}function An(e){return e.size<0||e.hash==="unreadable"}function G(e){return{version:1,key:null,mode:"unkeyed",inputFiles:[],reasons:[e]}}function me(e){return[...new Set(e)].sort()}var As=Lt("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function Ln(e){return k(e,{includeIgnored:!1}).filter(X).sort()}var wi="typescript-reference-fragment-v2",Di=Ct({kind:"typescript-reference-fragments",invalidation:ce("typescript-reference-fragments"),serialize:e=>JSON.stringify(e),deserialize:ki});function Nn(e,t,n,r=e){let i=Ln(e),a=he({projectFiles:i,snapshot:t,graph:$(e),engineIdentity:Ut()}),o=[...n].map(([s,d])=>({relativePath:s,contentHash:a.identityFor(s,wi).key,value:[...d]}));if(o.some(s=>s.contentHash===null))throw new Error("TypeScript reference fragment identity is unavailable for an affected document.");return Di.writeBatch(r,o.map(s=>({...s,contentHash:s.contentHash}))),o.length}function ki(e){try{let t=JSON.parse(e);return!Array.isArray(t)||!t.every(Mi)?null:t}catch{return null}}function Mi(e){if(!e||typeof e!="object")return!1;let t=e,n=t.location;return typeof t.targetSymbol=="string"&&!!n&&typeof n.file=="string"&&typeof n.line=="number"&&typeof n.column=="number"}import{createHash as Ai}from"crypto";import{existsSync as Li}from"fs";import{dirname as Ni,join as $n}from"path";function He(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 ye(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 i=new Set(n),a=He(e),o=new Set(a.reasons);return r.some(s=>!i.has(s))&&o.add("changed-file-outside-project"),t===null?(o.add("dependency-graph-unavailable"),Cn(r,i,o)):o.size>0?Cn(r,i,o):{mode:"closure",changedFiles:r,affectedFiles:Oi(r,t,i),reasons:[]}}function Cn(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function Oi(e,t,n){let r=new Map;for(let[o,s]of t)if(n.has(o))for(let d of s){if(!n.has(d))continue;let c=r.get(d)??new Set;c.add(o),r.set(d,c)}let i=new Set(e),a=[...e];for(let o=0;o<a.length;o+=1){let s=a[o];if(s!==void 0)for(let d of r.get(s)??[])i.has(d)||(i.add(d),a.push(d))}return[...i].sort()}var Ci="<global-symbols>";function $i(e){let t=[];for(let n of e.all(`
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(`
20
2
  SELECT relative_path, language, position_encoding, text
21
3
  FROM documents
22
4
  `))t.push({relativePath:n.relative_path,kind:"document",values:[n.language,n.position_encoding,n.text]});for(let n of e.all(`
@@ -43,7 +25,7 @@ import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILM
43
25
  FROM defn_enclosing_ranges r
44
26
  JOIN documents d ON d.id = r.document_id
45
27
  JOIN global_symbols g ON g.id = r.symbol_id
46
- `))t.push({relativePath:n.relative_path,kind:"definition",values:Je(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:ut(n,[n.start_line,n.start_char,n.end_line,n.end_char])});for(let n of e.all(`
47
29
  SELECT d.relative_path,
48
30
  c.chunk_index,
49
31
  m.role,
@@ -58,7 +40,7 @@ import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILM
58
40
  JOIN chunks c ON c.id = m.chunk_id
59
41
  JOIN documents d ON d.id = c.document_id
60
42
  JOIN global_symbols g ON g.id = m.symbol_id
61
- `))t.push({relativePath:n.relative_path,kind:"mention",values:Je(n,[n.chunk_index,n.role])});for(let n of e.all(`
43
+ `))t.push({relativePath:n.relative_path,kind:"mention",values:ut(n,[n.chunk_index,n.role])});for(let n of e.all(`
62
44
  SELECT g.symbol,
63
45
  g.display_name,
64
46
  g.kind,
@@ -72,68 +54,84 @@ import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILM
72
54
  ) AND NOT EXISTS (
73
55
  SELECT 1 FROM mentions m WHERE m.symbol_id = g.id
74
56
  )
75
- `))t.push({relativePath:Ci,kind:"global-symbol",values:Je(n)});return Gi(t)}function Gi(e){let t=new Map;for(let r of e){let i=JSON.stringify([r.kind,r.values]),a=t.get(r.relativePath)??[];a.push(i),t.set(r.relativePath,a)}let n=new Map;for(let[r,i]of[...t].sort(([a],[o])=>a.localeCompare(o))){let a=Ai("sha256");for(let o of i.sort())a.update(String(Buffer.byteLength(o))),a.update(":"),a.update(o),a.update(`
76
- `);n.set(r,a.digest("hex"))}return n}function Bi(e,t){let n=[],r=[],i=[],a=[],o=new Set([...e.keys(),...t.keys()]);for(let s of[...o].sort()){let d=e.get(s),c=t.get(s);d===void 0?n.push(s):c===void 0?i.push(s):d!==c?r.push(s):a.push(s)}return{addedFiles:n,modifiedFiles:r,deletedFiles:i,changedFiles:[...n,...r,...i].sort(),unchangedFiles:a}}function ze(e,t,n){let r=new Set(e.affectedFiles),i=new Set(t.changedFiles),a=e.mode==="full-project"?[]:t.changedFiles.filter(d=>!r.has(d)),o=e.affectedFiles.filter(d=>!i.has(d)).sort(),s=t.changedFiles.length-a.length;return{passed:a.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:a,extraFiles:o}}function Xe(e,t=zi){let n=t.wallNow===void 0&&t.monotonicNow===void 0,r=t.monotonicNow??t.now,i=t.wallNow??t.now,a=r(),o=(c,l)=>{let u=r();return qn(e.refreshResult,c,n?u:i(),Math.max(0,u-a),l)};if(!t.databaseExists(e.previousDbPath))return o("prior-index-unavailable");if(!t.databaseExists(e.candidateDbPath))return o("candidate-index-unavailable");let s=null,d=null;try{s=t.openDatabase(e.projectRoot,e.previousDbPath,e.previousIndexPath),d=t.openDatabase(e.projectRoot,e.candidateDbPath,e.candidateIndexPath);let c=[...new Set([...t.indexedPaths(s),...t.indexedPaths(d)])].sort(),l=ie(e.previousSnapshot,e.currentSnapshot),u=new Set(c),p=l.changes.length>0&&!He(l).fullProject&&l.changes.every(S=>u.has(S.path)),h=ye(l,p?t.dependencyGraph(s):new Map,c),g=Bi(t.factDigests(s),t.factDigests(d)),m=r();return{version:1,status:"evaluated",refreshResult:e.refreshResult,recordedAt:new Date(n?m:i()).toISOString(),durationMs:Math.max(0,m-a),manifest:l,plan:h,comparison:g,evaluation:ze(h,g,c.length)}}catch(c){return o("oracle-error",c instanceof Error?c.message:String(c))}finally{Gn(s),Gn(d)}}function Bn(e,t,n,r=Date.now()){return qn(e,t,r,0,n)}function Ui(e){let t=Ni(e);return{latestPath:$n(t,"affected-shadow-latest.json"),historyPath:$n(t,"affected-shadow.jsonl")}}function Un(e,t,n=Xi){let r=Ui(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var qi=8*1024*1024,Wi=qt;function Hi(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 Ji(e,t,n=qi){Wt(e,Hi(t),{maxSegmentBytes:n,previousSuffix:Wi})}function Je(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 zi={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:b,databaseExists:e=>Li(e),openDatabase:(e,t,n)=>new O({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>k(e),dependencyGraph:e=>$(e),factDigests:e=>$i(e)},Xi={appendHistory:Ji,writeLatest:(e,t)=>Mt(e,t,{spacing:2,trailingNewline:!0})};function qn(e,t,n,r,i){return{version:1,status:"unavailable",refreshResult:e,recordedAt:new Date(n).toISOString(),durationMs:r,reason:t,...i?{error:i}:{}}}function Gn(e){try{e?.close()}catch{}}import{readdirSync as Qi}from"fs";import{isAbsolute as Wn,join as Vi,resolve as Yi}from"path";var Se="@sourcegraph/scip-typescript@0.4.0",Hn="scip-python-plus@0.7.5",Jn="github.com/sourcegraph/scip-go@v0.2.7",zn="scip-dotnet@0.2.14",Ki="scip_dart@1.6.2",Zi={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:t,indexerBinary:n,projectPath:r})=>{let i=r?["index","--output",e,"--no-progress-bar",r]:["index","--infer-tsconfig","--output",e,"--no-progress-bar"];return t&&!r&&i.splice(1,0,"--pnpm-workspaces"),{binary:n,args:i}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",identity:Se,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",Se]}],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","--infer-tsconfig","--output",e,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",identity:Se,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",Se]}],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:["pom.xml","build.gradle"],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:["build.sbt"],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:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:N.language,indexerBinary:N.indexerBinary,checkCommand:`${N.indexerBinary} --version`,indexArgs:({outputPath:e})=>({binary:N.indexerBinary,args:["scip",".","--output",e]}),markerFiles:["Cargo.toml"],installMethods:[],installUrl:N.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:["pyproject.toml","setup.py"],installMethods:[{label:"npm",identity:Hn,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",Hn]}],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 i=["-root",e,"-output",t];return r&&i.push("-config",Wn(r)?r:Yi(e,r)),{binary:n,args:i}},markerFiles:["deps.edn","project.clj","bb.edn","shadow-cljs.edn"],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:["Gemfile"],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:["go.mod"],installMethods:[{label:"go install",identity:Jn,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Jn]}],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:["CMakeLists.txt","Makefile"],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:["CMakeLists.txt","Makefile"],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",Xn(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",identity:zn,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",Xn(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",identity:zn,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:["pubspec.yaml"],installMethods:[{label:"dart pub",identity:Ki,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})=>Wn(e)?{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",e]}:{binary:e,args:[]},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function Qe(e){return Zi[e]}function Xn(e,t){let n;try{n=Qi(e)}catch{return null}for(let r of t)for(let i of n)if(i.endsWith(r))return Vi(e,i);return null}import{createHash as ea}from"crypto";import{copyFileSync as ta,existsSync as Qn,rmSync as Vn}from"fs";import{resolve as na}from"path";import Zn from"better-sqlite3";var ra={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}]},ia={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=b(),n=aa(e.affectedFiles);if(oa(e.previousDbPath,e.miniDbPath,e.candidateDbPath),Vn(e.candidateDbPath,{force:!0}),!Qn(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!Qn(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");Yn(e.previousDbPath,"previous SQLite generation",!1),Yn(e.miniDbPath,"incremental SQLite mini database"),ta(e.previousDbPath,e.candidateDbPath);let r=null;try{r=new Zn(e.candidateDbPath,{fileMustExist:!0}),r.pragma("busy_timeout = 5000"),r.pragma("foreign_keys = ON"),r.prepare("ATTACH DATABASE ? AS incremental").run(e.miniDbPath),Ve(r,"main","candidate SQLite generation"),Ve(r,"incremental","incremental SQLite mini database"),sa(r,n),ca(r,n.length);let i=Ye(r,"main",!0),a=M(r,"SELECT COUNT(*) AS value FROM main.documents");r.transaction(()=>{da(r),la(r),ua(r),e.onStage?.("after-delete"),pa(r),e.onStage?.("after-symbol-reconciliation"),ga(r),e.onStage?.("after-insert"),fa(r),ma(r,n.length,a),e.onStage?.("before-commit")}).immediate(),tr(r,"main","candidate SQLite generation");let d=[...ha(r)].filter(([c,l])=>i.get(c)!==l).map(([c])=>c).sort();return r.exec("DETACH DATABASE incremental"),r.close(),r=null,{candidateDbPath:e.candidateDbPath,affectedDocumentCount:n.length,changedDocumentPaths:d,durationMs:b()-t}}catch(i){try{r?.close()}finally{Vn(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${i instanceof Error?i.message:String(i)}`,{cause:i})}}function aa(e){if(e.length===0)throw new Error("incremental SQLite publication requires affected documents");let t=[...e].sort();for(let n of t)if(!n||n.startsWith("/")||n.includes("\\")||n.split("/").includes(".."))throw new Error(`invalid affected document path: ${n}`);if(new Set(t).size!==t.length)throw new Error("incremental SQLite publication contains duplicate affected documents");return t}function oa(e,t,n){let r=[e,t,n].map(i=>na(i));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function Yn(e,t,n=!0){let r=new Zn(e,{readonly:!0,fileMustExist:!0});try{Ve(r,"main",t),n&&tr(r,"main",t)}finally{r.close()}}function Ve(e,t,n){for(let[r,i]of Object.entries(ra)){let o=e.prepare(`PRAGMA ${t}.table_info('${r}')`).all().map(({name:s,type:d,notnull:c,pk:l})=>({name:s,type:d.toUpperCase(),notnull:c,pk:l}));if(JSON.stringify(o)!==JSON.stringify(i))throw new Error(`${n} schema changed for table ${r}`)}for(let[r,i]of Object.entries(ia)){let a=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(a?.tbl_name!==i.table||JSON.stringify(o)!==JSON.stringify(i.columns))throw new Error(`${n} schema changed for index ${r}`)}Kn(e,t,"documents",["relative_path"],n),Kn(e,t,"global_symbols",["symbol"],n)}function Kn(e,t,n,r,i){if(!e.prepare(`PRAGMA ${t}.index_list('${n}')`).all().some(s=>{if(s.unique!==1)return!1;let d=e.prepare(`PRAGMA ${t}.index_info('${s.name}')`).all().map(c=>c.name);return JSON.stringify(d)===JSON.stringify(r)}))throw new Error(`${i} lost the unique ${n}(${r.join(", ")}) constraint`)}function tr(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 sa(e,t){e.exec("CREATE TEMP TABLE incremental_affected_paths (relative_path TEXT PRIMARY KEY) WITHOUT ROWID");let n=e.prepare("INSERT INTO temp.incremental_affected_paths(relative_path) VALUES (?)");e.transaction(i=>{for(let a of i)n.run(a)})(t)}function ca(e,t){let n=M(e,"SELECT COUNT(*) AS value FROM incremental.documents"),r=M(e,`SELECT COUNT(*) AS value
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
77
59
  FROM main.documents d
78
60
  JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`),i=e.prepare(`SELECT p.relative_path
79
- FROM temp.incremental_affected_paths p
80
- LEFT JOIN incremental.documents d ON d.relative_path = p.relative_path
81
- WHERE d.id IS NULL
82
- LIMIT 1`).pluck().get(),a=e.prepare(`SELECT d.relative_path
61
+ FROM temp.incremental_affected_paths p
62
+ LEFT JOIN incremental.documents d ON d.relative_path = p.relative_path
63
+ LEFT JOIN temp.incremental_deleted_paths deleted ON deleted.relative_path = p.relative_path
64
+ WHERE d.id IS NULL AND deleted.relative_path IS NULL
65
+ LIMIT 1`).pluck().get(),o=e.prepare(`SELECT d.relative_path
83
66
  FROM incremental.documents d
84
67
  LEFT JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
85
68
  WHERE p.relative_path IS NULL
86
- LIMIT 1`).pluck().get();if(n!==t||r!==t||i!==void 0||a!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set")}function da(e){e.exec(`
69
+ LIMIT 1`).pluck().get(),s=e.prepare(`SELECT d.relative_path
70
+ FROM incremental.documents d
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(`
87
73
  CREATE TEMP TABLE incremental_old_defined_symbols (symbol TEXT PRIMARY KEY) WITHOUT ROWID;
88
- INSERT OR IGNORE INTO temp.incremental_old_defined_symbols(symbol)
89
- SELECT g.symbol
90
- FROM main.defn_enclosing_ranges r
91
- JOIN main.documents d ON d.id = r.document_id
92
- JOIN main.global_symbols g ON g.id = r.symbol_id
93
- JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path;
94
- INSERT OR IGNORE INTO temp.incremental_old_defined_symbols(symbol)
95
- SELECT g.symbol
96
- FROM main.mentions m
97
- JOIN main.chunks c ON c.id = m.chunk_id
98
- JOIN main.documents d ON d.id = c.document_id
99
- JOIN main.global_symbols g ON g.id = m.symbol_id
100
- JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
101
- WHERE m.role = 1;
74
+ INSERT OR IGNORE INTO temp.incremental_old_defined_symbols(symbol)
75
+ SELECT g.symbol
76
+ FROM temp.incremental_affected_paths p
77
+ CROSS JOIN main.documents d ON d.relative_path = p.relative_path
78
+ CROSS JOIN main.defn_enclosing_ranges r ON r.document_id = d.id
79
+ CROSS JOIN main.global_symbols g ON g.id = r.symbol_id;
80
+ INSERT OR IGNORE INTO temp.incremental_old_defined_symbols(symbol)
81
+ SELECT g.symbol
82
+ FROM temp.incremental_affected_paths p
83
+ CROSS JOIN main.documents d ON d.relative_path = p.relative_path
84
+ CROSS JOIN main.chunks c ON c.document_id = d.id
85
+ CROSS JOIN main.mentions m ON m.chunk_id = c.id
86
+ CROSS JOIN main.global_symbols g ON g.id = m.symbol_id
87
+ WHERE m.role = 1;
102
88
 
103
89
  CREATE TEMP TABLE incremental_new_defined_symbols (symbol TEXT PRIMARY KEY) WITHOUT ROWID;
104
- INSERT OR IGNORE INTO temp.incremental_new_defined_symbols(symbol)
105
- SELECT g.symbol
90
+ INSERT OR IGNORE INTO temp.incremental_new_defined_symbols(symbol)
91
+ SELECT g.symbol
106
92
  FROM incremental.defn_enclosing_ranges r
107
93
  JOIN incremental.global_symbols g ON g.id = r.symbol_id;
108
94
  INSERT OR IGNORE INTO temp.incremental_new_defined_symbols(symbol)
109
95
  SELECT g.symbol
110
96
  FROM incremental.mentions m
111
97
  JOIN incremental.global_symbols g ON g.id = m.symbol_id
112
- WHERE m.role = 1;
113
- `)}function la(e){let t=e.prepare(`WITH changed_symbols AS (
98
+ WHERE m.role = 1;
99
+
100
+ CREATE TEMP TABLE incremental_touched_symbols (symbol TEXT PRIMARY KEY) WITHOUT ROWID;
101
+ INSERT OR IGNORE INTO temp.incremental_touched_symbols(symbol)
102
+ SELECT symbol FROM temp.incremental_old_defined_symbols;
103
+ INSERT OR IGNORE INTO temp.incremental_touched_symbols(symbol)
104
+ SELECT g.symbol
105
+ FROM temp.incremental_affected_paths p
106
+ CROSS JOIN main.documents d ON d.relative_path = p.relative_path
107
+ CROSS JOIN main.chunks c ON c.document_id = d.id
108
+ CROSS JOIN main.mentions m ON m.chunk_id = c.id
109
+ CROSS JOIN main.global_symbols g ON g.id = m.symbol_id;
110
+ INSERT OR IGNORE INTO temp.incremental_touched_symbols(symbol)
111
+ SELECT symbol FROM incremental.global_symbols;
112
+ `)}function ki(e){let t=e.prepare(`WITH changed_symbols AS (
114
113
  SELECT symbol FROM temp.incremental_old_defined_symbols
115
114
  UNION
116
115
  SELECT symbol FROM temp.incremental_new_defined_symbols
117
- ), unaffected_definitions AS (
118
- SELECT g.symbol
116
+ )
117
+ SELECT c.symbol
118
+ FROM changed_symbols c
119
+ CROSS JOIN main.global_symbols g ON g.symbol = c.symbol
120
+ WHERE EXISTS (
121
+ SELECT 1
119
122
  FROM main.defn_enclosing_ranges r
120
123
  JOIN main.documents d ON d.id = r.document_id
121
- JOIN main.global_symbols g ON g.id = r.symbol_id
122
124
  LEFT JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
123
- WHERE p.relative_path IS NULL
124
- UNION
125
- SELECT g.symbol
125
+ WHERE r.symbol_id = g.id AND p.relative_path IS NULL
126
+ ) OR EXISTS (
127
+ SELECT 1
126
128
  FROM main.mentions m
127
- JOIN main.chunks c ON c.id = m.chunk_id
128
- JOIN main.documents d ON d.id = c.document_id
129
- JOIN main.global_symbols g ON g.id = m.symbol_id
129
+ JOIN main.chunks chunk ON chunk.id = m.chunk_id
130
+ JOIN main.documents d ON d.id = chunk.document_id
130
131
  LEFT JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
131
- WHERE m.role = 1 AND p.relative_path IS NULL
132
+ WHERE m.symbol_id = g.id AND m.role = 1 AND p.relative_path IS NULL
132
133
  )
133
- SELECT u.symbol
134
- FROM unaffected_definitions u
135
- JOIN changed_symbols c ON c.symbol = u.symbol
136
- LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function ua(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 Di(e){e.exec(`
137
135
  DELETE FROM main.mentions
138
136
  WHERE chunk_id IN (
139
137
  SELECT c.id
@@ -155,7 +153,7 @@ import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILM
155
153
  );
156
154
  DELETE FROM main.documents
157
155
  WHERE relative_path IN (SELECT relative_path FROM temp.incremental_affected_paths);
158
- `)}function pa(e){e.exec(`
156
+ `)}function Oi(e){e.exec(`
159
157
  UPDATE main.global_symbols
160
158
  SET display_name = NULL,
161
159
  kind = NULL,
@@ -197,33 +195,34 @@ import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILM
197
195
  WHERE source.symbol = main.global_symbols.symbol
198
196
  )
199
197
  WHERE symbol IN (SELECT symbol FROM temp.incremental_new_defined_symbols);
200
- `)}function ga(e){let t=M(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.documents"),n=M(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.chunks"),r=M(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 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)
201
199
  SELECT id + ?, language, relative_path, position_encoding, text
202
200
  FROM incremental.documents`).run(t),e.prepare(`INSERT INTO main.chunks(id, document_id, chunk_index, start_line, end_line, occurrences)
203
201
  SELECT id + ?, document_id + ?, chunk_index, start_line, end_line, occurrences
204
202
  FROM incremental.chunks`).run(n,t),e.prepare(`INSERT INTO main.mentions(chunk_id, symbol_id, role)
205
- SELECT m.chunk_id + ?, target.id, m.role
206
- FROM incremental.mentions m
207
- JOIN incremental.global_symbols source ON source.id = m.symbol_id
208
- JOIN main.global_symbols target ON target.symbol = source.symbol`).run(n),e.prepare(`INSERT INTO main.defn_enclosing_ranges(
203
+ SELECT m.chunk_id + ?, target.id, m.role
204
+ FROM incremental.mentions m
205
+ CROSS JOIN incremental.global_symbols source ON source.id = m.symbol_id
206
+ CROSS JOIN main.global_symbols target ON target.symbol = source.symbol`).run(n),e.prepare(`INSERT INTO main.defn_enclosing_ranges(
209
207
  id, document_id, symbol_id, start_line, start_char, end_line, end_char
210
208
  )
211
- SELECT r.id + ?, r.document_id + ?, target.id,
212
- r.start_line, r.start_char, r.end_line, r.end_char
213
- FROM incremental.defn_enclosing_ranges r
214
- JOIN incremental.global_symbols source ON source.id = r.symbol_id
215
- JOIN main.global_symbols target ON target.symbol = source.symbol`).run(r,t)}function fa(e){e.exec(`
209
+ SELECT r.id + ?, r.document_id + ?, target.id,
210
+ r.start_line, r.start_char, r.end_line, r.end_char
211
+ FROM incremental.defn_enclosing_ranges r
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(`
216
214
  DELETE FROM main.global_symbols
217
- WHERE NOT EXISTS (SELECT 1 FROM main.mentions m WHERE m.symbol_id = main.global_symbols.id)
215
+ WHERE ${n}
216
+ NOT EXISTS (SELECT 1 FROM main.mentions m WHERE m.symbol_id = main.global_symbols.id)
218
217
  AND NOT EXISTS (
219
218
  SELECT 1 FROM main.defn_enclosing_ranges r WHERE r.symbol_id = main.global_symbols.id
220
219
  );
221
- `)}function ma(e,t,n){let r=M(e,"SELECT COUNT(*) AS value FROM main.documents"),i=M(e,`SELECT COUNT(*) AS value
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
222
221
  FROM main.documents d
223
- JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`);if(r!==n||i!==t)throw new Error("candidate SQLite document counts changed unexpectedly");let a=e.prepare("SELECT relative_path FROM main.documents GROUP BY relative_path HAVING COUNT(*) > 1 LIMIT 1").pluck().get(),o=e.prepare("SELECT symbol FROM main.global_symbols GROUP BY symbol HAVING COUNT(*) > 1 LIMIT 1").pluck().get();if(a!==void 0||o!==void 0)throw new Error("candidate SQLite generation contains duplicate document paths or symbols")}function ha(e){let t=Ye(e,"main",!0),n=Ye(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 Ye(e,t,n){let r=n?"JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path":"",i=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 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
224
223
  FROM ${t}.documents d
225
224
  ${r}
226
- ORDER BY d.relative_path`).all(),a=e.prepare(`SELECT d.relative_path, c.chunk_index, c.start_line, c.end_line, hex(c.occurrences) AS occurrences
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
227
226
  FROM ${t}.chunks c
228
227
  JOIN ${t}.documents d ON d.id = c.document_id
229
228
  ${r}
@@ -242,17 +241,17 @@ import{a as de,b as le}from"./chunk-PBUQFCNB.js";import{a as Rn}from"./chunk-ILM
242
241
  JOIN ${t}.documents d ON d.id = c.document_id
243
242
  JOIN ${t}.global_symbols g ON g.id = m.symbol_id
244
243
  ${r}
245
- ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),d=new Map;for(let[l,u]of Object.entries({documents:i,chunks:a,definitions:o,mentions:s}))for(let p of u){let h=JSON.stringify([l,p]),g=d.get(p.relative_path)??[];g.push(h),d.set(p.relative_path,g)}let c=new Map;for(let[l,u]of[...d].sort(([p],[h])=>p.localeCompare(h))){let p=ea("sha256");for(let h of u.sort())p.update(h).update(`
246
- `);c.set(l,p.digest("hex"))}return c}function M(e,t){return e.prepare(t).get().value}import ya from"better-sqlite3";var be="idx_mentions_definitions",Sa=["symbol_id","chunk_id"];function Ke(e){let t=new ya(e),n=[],r=[],i=[];try{return t.transaction(()=>{ba(t,n),Pe(t,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&nr(t,"global_symbols").some(s=>s.name!=="idx_global_symbols_symbol"&&s.unique&&s.columns.join("\0")==="symbol")?(t.exec('DROP INDEX "idx_global_symbols_symbol"'),r.push("idx_global_symbols_symbol")):Pe(t,"idx_global_symbols_symbol")&&i.push("idx_global_symbols_symbol");let a=Pe(t,"idx_chunks_doc_id"),o=nr(t,"chunks").some(s=>s.name!=="idx_chunks_doc_id"&&s.columns.length>1&&s.columns[0]==="document_id");a?.join("\0")==="document_id"&&o?(t.exec('DROP INDEX "idx_chunks_doc_id"'),r.push("idx_chunks_doc_id")):a&&i.push("idx_chunks_doc_id"),t.exec("ANALYZE")})(),{added:n,removed:r,retained:i,analyzed:!0}}catch(a){if(a.code==="SQLITE_NOTADB")return{added:[],removed:[],retained:[],analyzed:!1,skippedReason:"not-a-sqlite-database"};throw a}finally{t.close()}}function ba(e,t){let n=rr(e,be);if(n){let r=n.columns.join("\0")===Sa.join("\0"),i=/\bWHERE\s+role\s*=\s*1\b/iu.test(n.sql??"");if(!r||!i||n.table!=="mentions")throw new Error(`${be} exists with an incompatible definition`);return}e.exec(`CREATE INDEX "${be}" ON mentions(symbol_id, chunk_id) WHERE role = 1`),t.push(be)}function nr(e,t){return e.prepare(`PRAGMA index_list('${t.replaceAll("'","''")}')`).all().map(n=>({name:n.name,unique:n.unique===1,columns:Pe(e,n.name)??[]}))}function Pe(e,t){return rr(e,t)?.columns??null}function rr(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(i=>i.name);return{table:n.tbl_name,sql:n.sql,columns:r}}import{createHash as Pa}from"crypto";import{existsSync as Ze,readdirSync as xa}from"fs";import{dirname as et,join as xe,relative as Ra,resolve as tt,sep as ir}from"path";function ar(e,t){let n=t.includes("."),r={};for(let a of t)r[a]=[];let i=[];for(let a of e){let o=dr(a.path,t);o?r[o].push(a):n?r["."].push(a):i.push(a)}return{files:r,shared:i}}function or(e,t){let n=new Map;for(let i of e){let a=t[i]?.packageName;a&&n.set(a,i)}let r=new Map;for(let i of e)r.set(i,new Set);for(let i of e){let a=t[i],o=r.get(i);if(!a||a.parseFailed){for(let s of e)s!==i&&o.add(s);continue}for(let s of a.dependencyNames){let d=n.get(s);d&&d!==i&&o.add(d)}for(let s of[...a.pathsTargets,...a.referencesPaths]){let d=dr(s,e);d&&d!==i&&o.add(d)}}return Ia(e,r)}function sr(e,t,n){let r={};for(let i of e){let a=new Map;for(let o of t.files[i]??[])a.set(o.path,o);for(let o of n[i]??[])for(let s of t.files[o]??[])a.set(s.path,s);for(let o of t.shared)a.set(o.path,o);r[i]={files:[...a.values()].sort((o,s)=>o.path.localeCompare(s.path))}}return r}function nt(e){if(e===".")return"root";let t=Pa("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function cr(e,t){let n=tt(e),r={};for(let i of t)r[i]=va(n,i);return r}function dr(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 Ia(e,t){let n={};for(let r of e){let i=new Set,a=[...t.get(r)??[]];for(;a.length>0;){let o=a.pop();if(!(o===r||i.has(o))){i.add(o);for(let s of t.get(o)??[])s!==r&&!i.has(s)&&a.push(s)}}n[r]=[...i].sort((o,s)=>o.localeCompare(s))}return n}function va(e,t){let n=t==="."?e:xe(e,t),r=Ea(n),i=_a(n),a=i?Fa(i,e):{pathsTargets:[],referencesPaths:[],failed:!1};return{packageName:r.name,dependencyNames:r.dependencyNames,pathsTargets:a.pathsTargets,referencesPaths:a.referencesPaths,parseFailed:r.failed||a.failed}}function Ea(e){let t=xe(e,"package.json");if(!Ze(t))return{name:void 0,dependencyNames:[],failed:!1};let n=rt(t);if(!n.ok)return{name:void 0,dependencyNames:[],failed:!0};let r=typeof n.value.name=="string"?n.value.name:void 0,i=new Set;for(let a of["dependencies","devDependencies","peerDependencies"]){let o=n.value[a];if(o&&typeof o=="object"&&!Array.isArray(o))for(let s of Object.keys(o))i.add(s)}return{name:r,dependencyNames:[...i],failed:!1}}function _a(e){let t=xe(e,"tsconfig.json");if(Ze(t))return t;let n;try{n=xa(e).filter(r=>/^tsconfig.*\.json$/.test(r))}catch{return}return n.sort((r,i)=>r.localeCompare(i)),n.length>0?xe(e,n[0]):void 0}function Fa(e,t){let n=rt(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=ja(n.value,e,t),i=lr(e,n.value,t,0);return{pathsTargets:i.pathsTargets,referencesPaths:r,failed:i.failed}}function ja(e,t,n){let r=e.references;if(!Array.isArray(r))return[];let i=et(t),a=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 d=ur(s,i,n);d&&a.add(d)}return[...a]}function lr(e,t,n,r){let i=Ta(t);if(i)return{pathsTargets:wa(i,et(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let a=Da(t.extends,e,n);if(!a)return{pathsTargets:[],failed:!1};let o=rt(a);return o.ok?lr(a,o.value,n,r+1):{pathsTargets:[],failed:!0}}function Ta(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 wa(e,t,n){let r=new Set;for(let i of Object.values(e))if(Array.isArray(i))for(let a of i){if(typeof a!="string")continue;let o=ur(a,t,n);o&&r.add(o)}return[...r]}function Da(e,t,n){let r=Array.isArray(e)?e.at(-1):e;if(typeof r!="string"||r.trim()===""||!r.startsWith(".")&&!r.startsWith("/"))return;let i=tt(et(t),r);if(i.endsWith(".json")||(i=`${i}.json`),!i.split(ir).includes("node_modules")&&H(n,i)&&Ze(i))return i}function ur(e,t,n){let r=e.replace(/\/?\*+$/,""),i=tt(t,r===""?".":r);if(!H(n,i))return;let o=Ra(n,i).split(ir).join("/");return o===""?".":o}function ka(e){let t="",n=0,r=!1,i=e.length;for(;n<i;){let a=e[n];if(r){if(t+=a,a==="\\"&&n+1<i){t+=e[n+1],n+=2;continue}a==='"'&&(r=!1),n+=1;continue}if(a==='"'){r=!0,t+=a,n+=1;continue}if(a==="/"&&e[n+1]==="/"){for(n+=2;n<i&&e[n]!==`
247
- `;)n+=1;continue}if(a==="/"&&e[n+1]==="*"){for(n+=2;n<i&&!(e[n]==="*"&&e[n+1]==="/");)n+=1;n+=2;continue}t+=a,n+=1}return t}function rt(e){try{let t=ne(e,{maxBytes:yt,inputKind:"TypeScript project manifest"}),n=JSON.parse(ka(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{existsSync as Ma,readdirSync as Oa,statSync as Aa}from"fs";import I from"path";var La=new Set([".cache",".git",".next",".nuxt",".turbo",".nx","build","coverage","dist","node_modules","tmp","vendor"]);function Y(e,t=[]){let n=I.resolve(e),r=t.flatMap(d=>Ca(n,d));if(r.length>0)return pr(n,gr(r));let i=Na(n),a=gr(i),o=Ga(n,a)?[n,...a]:a,s=o.length>0?o:[n];return pr(n,s)}function pr(e,t){return[...new Set(t.map(n=>Ua(e,n)))].sort((n,r)=>n.localeCompare(r))}function Na(e){let t=[],n=[e];for(;n.length>0;){let r=n.pop(),i;try{i=Oa(r,{withFileTypes:!0})}catch{continue}for(let a of i){let o=I.join(r,a.name);if(a.isDirectory()){!La.has(a.name)&&!a.name.startsWith(".")&&n.push(o);continue}a.isFile()&&$a(o)&&t.push(I.dirname(o))}}return t}function Ca(e,t){let n=t.trim();if(!n)return[];let r=I.resolve(e,n);if(!H(e,r))return[];try{let i=Aa(r);if(i.isDirectory())return[r];if(i.isFile()&&fr(I.basename(r)))return[I.dirname(r)]}catch{return[]}return[]}function $a(e){if(!fr(I.basename(e)))return!1;let t=mr(e);return t?I.basename(e)==="tsconfig.json"||"include"in t||"files"in t||"references"in t:!1}function fr(e){return e.startsWith("tsconfig")&&e.endsWith(".json")}function gr(e){let t=[...new Set(e.map(n=>I.resolve(n)))].sort((n,r)=>n.localeCompare(r));return t.length<=1?t:t.filter(n=>!t.some(r=>r!==n&&qa(n,r)))}function Ga(e,t){if(t.length===0||t.some(r=>I.resolve(r)===e))return!1;let n=I.join(e,"tsconfig.json");return Ma(n)&&Ba(n)}function Ba(e){let n=mr(e)?.include;return Array.isArray(n)?n.some(r=>typeof r=="string"&&r.trim()!==""&&!r.startsWith("!")&&(r.includes("/")||r.includes("**")||!I.extname(r))):!1}function mr(e){try{let t=JSON.parse(D(e,"TypeScript project config"));return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function Ua(e,t){let n=I.relative(e,t);return n?n.split(I.sep).join("/"):"."}function qa(e,t){let n=I.relative(e,t);return!!n&&!n.startsWith("..")&&!I.isAbsolute(n)}import{createHash as eo}from"crypto";import{existsSync as it,statSync as to,writeFileSync as at}from"fs";import{join as no}from"path";import{randomUUID as Wa}from"crypto";import{existsSync as Ha}from"fs";var Ja=12e4,za=5,Re=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;constructor(t,n={}){this.projectRoot=vt(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??Ka(),this.runtime=n.runtime??Za,this.mailboxLimits=n.mailboxLimits??{}}request(t){let n=Sn(this.cacheDir),r=hn(this.cacheDir),i=Ue(n.statePath);if(!hr(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript index service is not running.");let a=this.runtime.now(),o=a+this.timeoutMs,s=(this.runtime.monotonicNow??b)()+this.timeoutMs,d=gn("typescript-index-v3",{baseGeneration:this.baseGeneration,request:t}),c=fn(d),l=mn(r,{mailboxVersion:pn,operationKey:d,clientId:this.runtime.randomId(),enqueuedAtMs:a,deadlineAtMs:o,protocolVersion:pe,id:c,baseGeneration:this.baseGeneration,request:t},{nowMs:a,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??b)()<=s;){if(Ha(l.responsePath))return Xa(ne(l.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),c,d,this.baseGeneration,t.producerIdentity,t.affectedFiles);let u=Ue(n.statePath);if(!hr(u,this.projectRoot,this.runtime))throw new Error("TypeScript index service stopped while processing a request.");this.runtime.sleep(za)}throw new Error(`TypeScript index service timed out after ${this.timeoutMs}ms.`)}};function hr(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===pe&&n.isProcessAlive(e.pid)&&(!e.processIdentity||r!=null&&J(e.processIdentity,r))}function Xa(e,t,n,r,i,a){let o=JSON.parse(e);if(o.protocolVersion!==pe||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)throw new Error(typeof o.error=="string"?o.error:"TypeScript index service request failed.");let s=Qa(o.response,i),d=[...new Set(a)].sort(),c=s.fragments.map(l=>l.relativePath).sort();if(JSON.stringify(c)!==JSON.stringify(d))throw new Error("TypeScript index service omitted or added an affected document.");return s}function Qa(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,i=n.fragments.map(a=>{if(!a||typeof a.relativePath!="string"||a.bytesBase64!==null&&typeof a.bytesBase64!="string"||typeof a.occurrences!="number"||!Number.isInteger(a.occurrences)||a.occurrences<0||typeof a.symbols!="number"||!Number.isInteger(a.symbols)||a.symbols<0||!Array.isArray(a.referenceFragments)||!a.referenceFragments.every(Va)||r.has(a.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(a.relativePath);let o=a.bytesBase64===null?null:Ya(a.bytesBase64);return{relativePath:a.relativePath,bytes:o,occurrences:a.occurrences,symbols:a.symbols,referenceFragments:a.referenceFragments}});return{producerIdentity:n.producerIdentity,cold:n.cold,durationMs:n.durationMs,fragments:i}}function Va(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 Ya(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function Ka(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:Ja}var Za={now:Date.now,monotonicNow:b,randomId:Wa,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:L,readProcessIdentity:A};function ro(e){let t=e.projectMode==="workspace"?e.workspaceProjects??[]:["."];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 n=ie(e.previousSnapshot,e.currentSnapshot);if(n.changes.length===0)return{eligible:!1,reason:"no changed project inputs"};if(n.changes.some(c=>c.kind!=="modified"||c.inputKind!=="source"||!X(c.path)))return{eligible:!1,reason:"change is not a modified TypeScript source file"};let r=ye(n,e.graph,e.projectFiles);if(r.mode!=="closure"||r.affectedFiles.length===0)return{eligible:!1,reason:r.reasons.length>0?`affected set widened: ${r.reasons.join(", ")}`:"empty affected set"};let i=io([...r.changedFiles,...r.affectedFiles],t);if(!i)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let a=yr(e.currentSnapshot,e.projectFiles,e.producerIdentity),o=yr(e.previousSnapshot,e.projectFiles,e.producerIdentity);if(a!==o)return{eligible:!1,reason:"TypeScript fragment project identity changed"};let s=br(e.previousSnapshot,e.projectFiles,e.graph,e.producerIdentity,e.projectFiles);if(!s)return{eligible:!1,reason:"prior document identity unavailable"};let d=br(e.currentSnapshot,e.projectFiles,e.graph,e.producerIdentity,r.affectedFiles);return d?{eligible:!0,manifest:n,plan:r,projectIdentity:a,previousFragmentGeneration:Sr(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:Sr(e.currentSnapshot,e.producerIdentity),previousDocumentIdentities:s,nextDocumentIdentities:d,tsconfigPath:i==="."?"tsconfig.json":`${i}/tsconfig.json`,projectArgument:i}:{eligible:!1,reason:"next document identity unavailable"}}function io(e,t){let n=null;for(let r of e){let i=t.filter(a=>a==="."||r===a||r.startsWith(`${a}/`));if(i.length!==1||n!==null&&n!==i[0])return null;n=i[0]}return n}function Pr(e){let t=b();try{if(!it(e.previousDbPath)||!it(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=Be();if(!r.available)throw new Error(r.reason);let i=performance.now()-n;n=performance.now();let a=new O({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),o,s;try{o=k(a,{includeIgnored:!1}).filter(X).sort(),s=$(a)}finally{a.close()}let d=performance.now()-n,c=ro({projectMode:e.projectMode,workspaceProjects:e.projectMode==="workspace"?Y(e.projectRoot,e.currentSnapshot.typescriptProjects):void 0,previousSnapshot:e.previousSnapshot,currentSnapshot:e.currentSnapshot,projectFiles:o,graph:s,producerIdentity:r.producerIdentity,rootTsconfigExists:it(no(e.projectRoot,"tsconfig.json"))});if(!c.eligible)throw new Error(c.reason);let l=yn(e.previousDbPath);if(!l)throw new Error("published TypeScript base generation unavailable");n=performance.now();let p=new Re({projectRoot:e.projectRoot,cacheDir:e.cacheDir,baseGeneration:l}).request({kind:"emit-documents",tsconfigPath:c.tsconfigPath,projectArgument:c.projectArgument,projectIdentity:c.projectIdentity,producerIdentity:r.producerIdentity,modifiedFiles:c.plan.changedFiles,affectedFiles:c.plan.affectedFiles}),h=performance.now()-n,g=to(e.previousShardPath).size>=en;n=performance.now();let m=g?null:ke(e.previousShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:De}),S=g?{completeIndexBytes:null,affectedIndexBytes:Vt(p.fragments)}:Zt({packageVersion:r.packageVersion,baseIndexBytes:m,fragments:p.fragments}),f=performance.now()-n;n=performance.now(),g?tn({cacheDir:e.cacheDir,previousGenerationIdentity:c.previousFragmentGeneration,nextGenerationIdentity:c.nextFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:c.projectIdentity,baseShardCurrent:e.baseShardCurrent,fragments:p.fragments}):(Yt({cacheDir:e.cacheDir,packageVersion:r.packageVersion,indexBytes:m,producerIdentity:r.producerIdentity,projectIdentity:c.projectIdentity,generationIdentity:c.previousFragmentGeneration,documentIdentities:c.previousDocumentIdentities,allowUntrackedDocuments:!0}),Kt({cacheDir:e.cacheDir,previousGenerationIdentity:c.previousFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:c.projectIdentity,generationIdentity:c.nextFragmentGeneration,fragments:p.fragments,documentIdentities:c.nextDocumentIdentities}));let P=performance.now()-n;n=performance.now(),S.completeIndexBytes&&at(e.candidateShardPath,S.completeIndexBytes),at(e.candidateAffectedScipPath,S.affectedIndexBytes);let v=performance.now()-n,x={scipPath:g?e.previousShardPath:e.candidateShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,completeScipUpdated:!g,durationMs:b()-t,cold:p.cold,changedFiles:c.plan.changedFiles,affectedFiles:c.plan.affectedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:c.previousFragmentGeneration,nextFragmentGeneration:c.nextFragmentGeneration,manifest:c.manifest,plan:c.plan,projectFileCount:o.length,referenceFragmentsByFile:new Map(p.fragments.map(E=>[E.relativePath,E.referenceFragments])),timings:{runtimeMs:i,graphMs:d,requestMs:h,serviceMs:p.durationMs,assemblyMs:f,fragmentStoreMs:P,writeMs:v}};return e.onStatus(`Incremental TypeScript index emitted ${x.affectedFiles.length} affected document(s) in ${(x.durationMs/1e3).toFixed(3)}s (${x.cold?"cold":"warm"} service; ${g?"whole SCIP deferred":"whole SCIP current"}; runtime ${i.toFixed(0)}ms, graph ${d.toFixed(0)}ms, request ${h.toFixed(0)}ms, assembly ${f.toFixed(0)}ms, fragments ${P.toFixed(0)}ms, write ${v.toFixed(0)}ms).`),x}catch(n){return e.onStatus(`Incremental TypeScript index unavailable: ${n instanceof Error?n.message:String(n)}. Falling back to the whole-project indexer.`),null}}function xr(e){let t=Be();if(!t.available)throw new Error(t.reason);let n=nn({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:ke(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:De}),packageVersion:t.packageVersion});at(e.candidateShardPath,n)}function yr(e,t,n){let r=e.files.filter(i=>re(i.path,e.languages)!=="source").map(i=>({path:i.path,size:i.size,hash:i.hash})).sort((i,a)=>i.path.localeCompare(a.path));return ot(JSON.stringify({version:1,producerIdentity:n,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),projectFiles:[...t].sort(),nonSourceInputs:r}))}function Sr(e,t){return ot(JSON.stringify({version:1,producerIdentity:t,snapshot:e}))}function br(e,t,n,r,i){let a=new Set(e.files.map(d=>d.path)),o=he({projectFiles:t.filter(d=>a.has(d)),snapshot:e,graph:n,engineIdentity:r}),s=new Map;for(let d of i){let c=o.identityFor(d,"typescript-scip-document-v1");if(c.key){s.set(d,c.key);continue}if(a.has(d))return null;s.set(d,ot(JSON.stringify({version:1,producerIdentity:r,generatedDocument:d})))}return s}function ot(e){return eo("sha256").update(e).digest("hex")}import{existsSync as Ie,renameSync as ct,rmSync as dt,statSync as ao}from"fs";import{cpus as oo}from"os";import{join as Ir}from"path";function so(e,t,n){if(!e.defaultOutputPath)return;let r=Ir(t,e.defaultOutputPath);n!==r&&Ie(r)&&ct(r,n)}function co(e,t,n){if(!e.defaultOutputPath)return null;let r=Ir(t,e.defaultOutputPath);if(r===n)return null;let i=`${n}.default-output-backup`;return dt(i,{force:!0}),Ie(r)?(ct(r,i),{defaultOutputPath:r,backupPath:i}):{defaultOutputPath:r,backupPath:null}}function lo(e){e&&(dt(e.defaultOutputPath,{force:!0}),e.backupPath&&Ie(e.backupPath)&&ct(e.backupPath,e.defaultOutputPath))}function uo(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,oo().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function vr(e,t,n,r){let i=e.filter(c=>c.config.defaultOutputPath),a=e.filter(c=>!c.config.defaultOutputPath),o=[],s=uo(a.length,r),d=await Rn(a,s,c=>st(c,t,n));if(s>1){let c=new Map;for(let l of d.filter(u=>u.result.skipped&&u.retryable)){let u=a.find(p=>p.id===l.result.id);u&&(n(`Retrying ${u.label} indexer serially after parallel failure...`),c.set(u.id,(await st(u,t,n)).result))}o.push(...d.map(({result:l})=>c.get(l.id)??l))}else o.push(...d.map(({result:c})=>c));for(let c of i)o.push((await st(c,t,n)).result);return o.sort((c,l)=>e.findIndex(u=>u.id===c.id)-e.findIndex(u=>u.id===l.id))}async function st(e,t,n){n(`Indexing ${e.label} with ${e.resolvedBinary}...`),dt(e.scipPath,{force:!0});let r=co(e.config,t,e.scipPath),i=[e.binary,...e.args].join(" "),a=b();try{e.trustedProjectTool&&wn(t,e.trustedProjectTool);let s=Pt(e.binary,e.args),d=await xn({command:s.binary,args:s.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:po(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024});if(d.status!==0){let c=d.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${d.status}${c?`:
248
- ${c}`:""}`)}so(e.config,t,e.scipPath)}catch(s){let d=s instanceof Error?s.message:String(s),c=`${e.resolvedBinary} indexer failed: ${d.split(`
249
- `)[0]}`,l=e.label===e.language?c:`${e.label}: ${c}`;return n(`Skipping ${e.label}: ${c}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:b()-a,command:i,skipped:{language:e.language,reason:l}},retryable:go(s)}}finally{lo(r)}if(!Ie(e.scipPath)){let s=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`,d=e.label===e.language?s:`${e.label}: ${s}`;return n(`Skipping ${e.label}: ${s}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:b()-a,command:i,skipped:{language:e.language,reason:d}},retryable:!1}}let o;try{o=ao(e.scipPath).size}catch{o=void 0}return{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:b()-a,command:i,outputBytes:o},retryable:!1}}function po(){let e=Number(process.env.SCIP_QUERY_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):bn.indexer}function go(e){return e instanceof Pn?e.kind==="spawn"&&Rr(e.cause):Rr(e)}function Rr(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as _r}from"child_process";import{homedir as Er,platform as fo}from"os";import{delimiter as mo,join as ve}from"path";function Fr(e,t){let n=e.installMethods,r=fe(e);if(!n?.length)return t(`No auto-install method available for ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1;for(let i of n){if(!i.identity||!i.destination){t(`Refusing ${i.label} installation for ${r}: the installer descriptor lacks an immutable identity or destination.`);continue}if(!oe(i.prerequisite))continue;let a=ho(i);t(`Installing immutable ${i.identity} via ${i.label} into ${a}; expected executable: ${r}.`);try{_r(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env,shell:fo()==="win32"});let o=C(e);if(o){let s=o===e.indexerBinary?"":` (using ${o})`;return t(`Successfully installed ${i.identity} via ${i.label}${s}; resolved executable: ${o}.`),!0}t(`${i.label} command completed but ${r} was not found on PATH`)}catch(o){let s=o instanceof Error?o.message:String(o);t(`${i.label} install failed: ${s}`)}}return t(`Could not auto-install ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function ho(e){if(e.binary==="npm")return lt("npm",["root","-g"])??e.destination;if(e.binary==="go"){let t=lt("go",["env","GOBIN"]);if(t)return t;let n=lt("go",["env","GOPATH"]);if(n)return ve(n.split(mo)[0],"bin")}return e.binary==="dotnet"?ve(process.env.DOTNET_CLI_HOME??Er(),".dotnet","tools"):e.binary==="dart"?ve(process.env.PUB_CACHE??ve(Er(),".pub-cache"),"bin"):e.destination}function lt(e,t){try{return _r(e,t,{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}async function Cr(e){let{projectRoot:t,maxHeapMb:n=8192,onStatus:r=console.log}=e,i=e.skipAutoInstall===!0||e.installMissing!==!0,a=vo(e),o=Date.now(),s=b();_e(y(a.outputScip),{recursive:!0}),_e(y(a.outputDb),{recursive:!0});let d=e.languages??Ht(t);if(d.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");r(`Detected languages: ${d.join(", ")}`);let c=T("reindex.fingerprint",()=>kt(t,d,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),{languages:d.length}),l,u;if(e.skipIfUnchanged!==!1&&!cn(t,a.outputDb)&&jr(a.outputScip)===jr(R(y(a.outputDb),"index.scip"))){let m=se(t);if(l=m?ue(m,c):void 0,l){let S=$e(l);if(S){if(!Io(a,c))try{Ge({snapshot:l,manifest:S,targetCacheDir:y(a.outputDb),targetProjectRoot:t}),r(`Attached shared generation ${l.generationId.slice(0,12)}`)}catch(f){r(`Shared generation attach failed; continuing locally: ${U(f)}`)}}else{let f=await ln(l);if(f.kind==="owner")u=f.release;else if(f.kind==="generation-ready"){let P=$e(l);if(P)try{Ge({snapshot:l,manifest:P,targetCacheDir:y(a.outputDb),targetProjectRoot:t,action:"waited"}),r(`Attached shared generation ${l.generationId.slice(0,12)} after waiting`)}catch(v){r(`Shared generation attach failed after waiting; continuing locally: ${U(v)}`)}}else r("Shared generation build lock timed out; continuing with an isolated local reindex")}}}let p=Ft(R(y(a.outputDb),"cache-lifecycle.lock"),{waitMs:3e4});if(!p)throw u?.(),new Error(`Could not acquire scip-query cache lifecycle lock for ${y(a.outputDb)}.`);let h;try{h=await W("reindex.lock",()=>Yo(R(y(a.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:r}),{languages:d.length})}catch(m){throw p.release(),u?.(),m}let g=null;try{on(a.outputDb,a.outputScip,a.metaPath);let m=jo(y(a.outputDb));m.removed>0&&r(`Removed ${m.removed} abandoned reindex workspace(s)`);for(let _ of m.errors)r(`Could not remove abandoned reindex workspace: ${_}`);let S=null,f=T("reindex.reuse-check",()=>(S=Eo({opts:e,paths:a,languages:d,fingerprint:c,start:o,monotonicStart:s,onStatus:r}),S),()=>({languages:d.length,reused:S!==null}));if(f){Tr({snapshot:l,paths:a,projectRoot:t,fingerprint:c,onStatus:r});let _=Ce(a.outputDb,f);return _.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${_.reason}`),Ae(t,y(a.outputDb)),f}await W("reindex.scip-cli-ready",()=>qo(i,r));let P=Fo(a);g=P.runDir;let v,x=await W("reindex.fresh",async()=>(v=await To({opts:e,languages:d,projectRoot:t,paths:a,tempPaths:P,fingerprint:c,start:o,monotonicStart:s,maxHeapMb:n,skipAutoInstall:i,onStatus:r}),v),()=>({languages:d.length,reused:v?.reused,skipped:v?.skipped.length}));Tr({snapshot:l,paths:a,projectRoot:t,fingerprint:c,onStatus:r});let E=Ce(a.outputDb,x);return E.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${E.reason}`),Ae(t,y(a.outputDb)),x}catch(m){let S=we({trigger:e.trigger,result:"failed",start:o,monotonicStart:s,error:m instanceof Error?m.message:String(m)});Yr(a.metaPath,S);let f=Qt(a.outputDb,S);throw f.state==="failed"&&r(`Warning: failed reindex activity telemetry was not recorded: ${f.reason}`),m}finally{g&&B(g,{recursive:!0,force:!0}),h(),p.release(),u?.()}}function Tr(e){if(e.snapshot)try{let t=se(e.projectRoot),n=t?ue(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=dn({snapshot:e.snapshot,sourceCacheDir:y(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let i=se(e.projectRoot);return(i?ue(i,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});un(e.snapshot,y(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: ${U(t)}`)}}function Io(e,t){if(!j(e.outputScip)||!j(e.outputDb)||!Vr(e.metaPath,t))return!1;let n=Q(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function U(e){return e instanceof Error?e.message:String(e)}function vo(e){let t=e.outputScip??R(e.projectRoot,"index.scip"),n=e.outputDb??R(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:R(y(n),"meta.json")}}function Eo(e){let t=Q(e.paths.outputDb,e.paths.metaPath);if(e.opts.skipIfUnchanged===!1||!j(e.paths.outputScip)||!j(e.paths.outputDb)||!Vr(e.paths.metaPath,e.fingerprint)||t.state==="invalid"||t.state==="drifted")return null;le(de(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus});let n=b()-e.monotonicStart,r=we({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return Yr(e.paths.metaPath,r),e.onStatus(`Index unchanged; reused existing SQLite index in ${(n/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:n,reused:!0,skipped:[],lastRefresh:r,shards:_o(e.paths,e.opts.projectRoot,e.languages,e.opts)}}function _o(e,t,n,r){let i=Xr(t,n,r);return n.map(a=>({id:a,language:a,reused:!0,fingerprint:K(i[a]),outputBytes:Z(ft(e.outputDb,a)),durationMs:0}))}function Fo(e){let t=bo(R(y(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:R(t,Ee(e.outputScip)),tempOutputDb:R(t,Ee(e.outputDb)),tempMetaPath:R(t,Ee(e.metaPath))}}function jo(e){let t=[],n;try{n=Lr(e,{withFileTypes:!0})}catch(i){return{removed:0,errors:[U(i)]}}let r=0;for(let i of n)if(!(!i.name.startsWith("reindex-")||!i.isDirectory()))try{B(R(e,i.name),{recursive:!0,force:!0}),r+=1}catch(a){t.push(`${i.name}: ${U(a)}`)}return{removed:r,errors:t}}async function To(e){let t={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},n,r=await W("reindex.language-indexers",async()=>(n=await Do(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:i,skippedLanguages:a,reusedLanguages:o,languageFingerprints:s,shards:d,typescriptProjectShardContext:c,incrementalTypeScript:l}=r;if(o.length>0&&e.onStatus(`Reused ${o.length} cached language shard(s): ${o.join(", ")}`),wo({run:e,indexedOutputs:i,skippedLanguages:a,reusedLanguages:o})){let h=T("reindex.publish",()=>Go(e,i,a,o,s,c),{mode:"metadata-only",languages:i.length,reused:o.length}),g=h.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(g/1e3).toFixed(1)}s`),{languages:i.map(m=>m.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:g,reused:!0,skipped:a,lastRefresh:h,shards:d}}let u=T("reindex.publish",()=>$o(e,t,i,a,o,s,c,l),{mode:l?"incremental-or-fallback":"full",languages:i.length,reused:o.length,skipped:a.length}),p=u.durationMs;return e.onStatus(`Done in ${(p/1e3).toFixed(1)}s`),{languages:i.map(h=>h.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:a,lastRefresh:u,shards:d}}function wo(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!j(e.run.paths.outputScip)||!j(e.run.paths.outputDb))return!1;let t=Q(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(i=>i.language));return e.run.languages.length>0&&r.size===e.run.languages.length&&e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(i=>n.has(i)&&r.has(i))}async function Do(e,t){let n=Lo({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}),r=[],i=new Set;for(let[F,ht]of n)ht.reused&&(r.push({language:F,scipPath:ht.scipPath}),i.add(F));for(let F of i)e.onStatus(`Reusing cached ${F} SCIP shard (language inputs unchanged).`);let a=n.get("typescript"),o=Q(e.paths.outputDb,e.paths.metaPath),s=te(e.paths.metaPath),d=o.state==="legacy"||o.state==="current",c=s?.scipCompanion!=="deferred"&&(o.state!=="current"||o.generation.publication?.scipCompanion!=="deferred"),l=a&&!a.reused&&d?Pr({projectRoot:e.projectRoot,cacheDir:y(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:a.scipPath,candidateShardPath:ee(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:ee(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:c,previousSnapshot:gt(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus}):null,u=new Set(l?["typescript"]:[]),p=l?void 0:ko(e,n),{preparedRuns:h,skippedLanguages:g,languageOutputScipPaths:m}=Wo({languages:e.languages.filter(F=>!i.has(F)&&!u.has(F)),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}),S=p?h.filter(F=>F.language!=="typescript"||p.missedProjectIds.has(F.id)):h,f=await vr(S,e.projectRoot,e.onStatus,e.opts.indexerConcurrency),P=[];if(p){Oo(e.paths.outputDb,f);let F=m.typescript??e.tempPaths.tempOutputScip;P=Ao({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:F,reusedProjects:p.reusedProjects})}let v=[...f,...P],{indexedOutputs:x}=Jo(v,g),E=l?[{language:"typescript",scipPath:l.scipPath}]:[],_=[...r,...E,...x];zo(_,g,e.languages,e.opts.allowPartial,e.onStatus);let ii=l?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:l.scipPath,outputScipPath:l.scipPath,durationMs:l.durationMs,command:"watch-service:typescript-index",outputBytes:Z(l.scipPath)??void 0}]:[],ai=No(n,[...f,...ii],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0);return{indexedOutputs:_,skippedLanguages:g,reusedLanguages:[...i],languageFingerprints:Co(n,e.languages),shards:ai,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:l??void 0}}function ko(e,t){let n=t.get("typescript");if(!n||n.reused||e.opts.typescriptProjectMode!=="workspace")return;let r=Y(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let i=cr(e.projectRoot,r),a=ar(n.fingerprint.files,r),o=or(r,i),s=sr(r,a,o),d=te(e.paths.metaPath),l=Mo(d,s,g=>j(Te(e.paths.outputDb,g))),u=[...l.entries()].filter(([,g])=>g.reused).map(([g])=>g),p=new Set(u),h=new Set(r.filter(g=>!p.has(g)).map(g=>`typescript:${g}`));return{allProjects:r,fingerprints:s,classification:l,reusedProjects:u,missedProjectIds:h}}function Mo(e,t,n){let r=new Map;for(let i of Object.keys(t)){let a=t[i];if(!e){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:a});continue}let o=e.version===q&&Oe(e).typescriptProjectShardReuse?e.typescriptProjectShards?.[i]:void 0;if(!o){r.set(i,{reused:!1,reason:"no cached fingerprint for this project",fingerprint:a});continue}if(!n(i)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:a});continue}if(w(o)!==w(a)){r.set(i,{reused:!1,reason:"project inputs changed since last index",fingerprint:a});continue}r.set(i,{reused:!0,fingerprint:a})}return r}function Oo(e,t){for(let n of t){if(n.skipped||!n.id.startsWith("typescript:"))continue;let r=n.id.slice(11),i=Te(e,r);_e(y(i),{recursive:!0}),je(n.scipPath,i)}}function Ao(e){return e.reusedProjects.map((t,n)=>{let r=Te(e.outputDb,t),i=ee(e.tempOutputScip,"typescript-project-cached",n);return je(r,i),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:i,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:Z(i)??void 0}})}function Lo(e){let t=te(e.paths.metaPath),n=Xr(e.projectRoot,e.languages,e),r=new Map;for(let i of e.languages){let a=ft(e.paths.outputDb,i),o=n[i];if(!t){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:o,scipPath:a});continue}if(t.version!==q){r.set(i,{reused:!1,reason:`metadata version ${String(t.version??"unknown")} predates per-language shard caching`,fingerprint:o,scipPath:a});continue}if(i==="typescript"&&t.scipCompanion==="deferred"){r.set(i,{reused:!1,reason:"whole TypeScript SCIP companion is deferred behind changed-document overlays",fingerprint:o,scipPath:a});continue}if(!Oe(t).languageShardReuse||!t.languageFingerprints){r.set(i,{reused:!1,reason:"no per-language fingerprints recorded in metadata",fingerprint:o,scipPath:a});continue}let s=t.languageFingerprints[i];if(!s){r.set(i,{reused:!1,reason:"no cached fingerprint for this language",fingerprint:o,scipPath:a});continue}if(!j(a)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:o,scipPath:a});continue}if(w(s)!==w(o)){r.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:o,scipPath:a});continue}r.set(i,{reused:!0,fingerprint:o,scipPath:a})}return r}function No(e,t,n){let r=[];for(let[i,a]of e)a.reused&&r.push({id:i,language:i,reused:!0,fingerprint:K(a.fingerprint),outputBytes:Z(a.scipPath),durationMs:0});for(let i of t){let a=e.get(i.language),o=n&&i.id.startsWith("typescript:")?i.id.slice(11):null,s=o?n.classification.get(o):void 0;r.push({id:i.id,language:i.language,reused:!1,missReason:s?.reason??a?.reason??i.skipped?.reason,fingerprint:s?K(s.fingerprint):a?K(a.fingerprint):"unknown",outputBytes:i.outputBytes??null,durationMs:i.durationMs,command:i.command})}if(n)for(let[i,a]of n.classification)a.reused&&r.push({id:`typescript:${i}`,language:"typescript",reused:!0,fingerprint:K(a.fingerprint),outputBytes:Z(Te(n.outputDb,i)),durationMs:0});return r}function K(e){return So("sha256").update(w(e)).digest("hex").slice(0,16)}function Z(e){try{return Po(e).size}catch{return null}}function Co(e,t){let n={};for(let r of t){let i=e.get(r);i&&(n[r]=i.fingerprint)}return n}function $o(e,t,n,r,i,a,o,s){let d=!s||s.completeScipUpdated,c=!1;d&&(wr(e.paths.outputDb,n),c=Dr(n,e.tempPaths.tempOutputScip,e.onStatus));let l=Xo({run:e,env:t,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,incrementalTypeScript:s,completeScipAvailable:d,completeScipSanitized:c,materializeFullFallback:()=>{if(!s||s.completeScipUpdated)return c;e.onStatus("Materializing the deferred whole TypeScript SCIP companion for full conversion..."),xr({cacheDir:y(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let x=n.map(E=>E.language==="typescript"?{language:E.language,scipPath:s.candidateScipPath}:E);return wr(e.paths.outputDb,x),c=Dr(x,e.tempPaths.tempOutputScip,e.onStatus),c}});le(de(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus});let u=Ke(e.tempPaths.tempOutputDb);if(u.added.length>0&&e.onStatus(`Added SQLite query indexes: ${u.added.join(", ")}`),u.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${u.removed.join(", ")}`),l.mode==="incremental"&&s){let x=null,E=null;try{x=new O({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip}),E=new O({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let _=Nn(x,e.fingerprint,s.referenceFragmentsByFile,E);e.onStatus(`Cached exact TypeScript reference fragments for ${_} affected document(s).`)}catch(_){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${_ instanceof Error?_.message:String(_)}.`)}finally{x?.close(),E?.close()}}let p=gt(e.paths.metaPath),h=l.mode==="incremental"&&s?Vo(s,l.changedDocumentPaths):Xe({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"}),g=we({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(x=>x.language),skipped:[...r]}),m=l.mode==="incremental"&&l.scipCompanion==="deferred",S={...a};m&&delete S.typescript;let{metadata:f,pruneProjects:P}=Gr({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,languageFingerprints:S,typescriptProjectShardContext:o,lastRefresh:g});f.scipCompanion=m?"deferred":"current",Br(e.paths.outputDb,P),mt(e.tempPaths.tempMetaPath,f);let v=an({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 v.achievedDurability==="file-flushed"&&e.onStatus(`Published local generation ${v.currentGeneration.slice(0,12)} (file-flushed; directory sync unsupported)`),rn(y(e.paths.outputDb),l.mode==="incremental"&&l.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),$r(e.paths.outputDb,h,e.onStatus),g}function Go(e,t,n,r,i,a){let o=gt(e.paths.metaPath),s=null;try{je(e.paths.outputDb,e.tempPaths.tempOutputDb)}catch(p){s=Bn("reused","oracle-error",`Could not snapshot the prior database: ${p instanceof Error?p.message:String(p)}`)}le(de(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus});let d=Ke(e.paths.outputDb);d.added.length>0&&e.onStatus(`Added SQLite query indexes: ${d.added.join(", ")}`),d.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${d.removed.join(", ")}`),s??=Xe({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 c=we({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(p=>p.language),skipped:[...n]}),{metadata:l,pruneProjects:u}=Gr({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:i,typescriptProjectShardContext:a,lastRefresh:c});return Br(e.paths.outputDb,u),mt(e.paths.metaPath,l),sn(e.paths.outputDb,e.paths.metaPath),$r(e.paths.outputDb,s,e.onStatus),c}function gt(e){return St(te(e)?.fingerprint)}function $r(e,t,n){try{Un(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 Gr(e){let t=Bo({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:q,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 Bo(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=te(e.metaPath),n=t?.version===q?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 Br(e,t){let n=Qr(e);if(t===null){B(n,{recursive:!0,force:!0});return}let r;try{r=Lr(n)}catch{return}for(let i of Uo(r,t))B(R(n,i),{force:!0})}function Uo(e,t){let n=new Set(t.map(r=>`${nt(r)}.scip`));return e.filter(r=>!n.has(r))}function wr(e,t){for(let n of t){let r=ft(e,n.language);_e(y(r),{recursive:!0}),n.scipPath!==r&&je(n.scipPath,r)}}async function qo(e,t){if(!Le()){if(Ro()==="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[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.
250
249
  To install the reviewed version, run: scip-query reindex --install-missing
251
- Or install manually from: https://github.com/sourcegraph/scip/releases`);if(t("scip CLI not found on PATH. Attempting auto-install..."),!Rt(t))throw new Error(`The scip CLI is required but could not be installed.
252
- Install manually from: https://github.com/sourcegraph/scip/releases`)}}function Wo(e){let t=[],n=[],r=e.languages.map((a,o)=>({language:a,scipPath:e.languages.length>1?ee(e.tempOutputScip,a,o):e.tempOutputScip})),i=Object.fromEntries(r.map(({language:a,scipPath:o})=>[a,o]));for(let{language:a,scipPath:o}of r){let s=Ho({...e,language:a,scipPath:o});for(let d of s)"skipped"in d?Ur(n,d.skipped):t.push(d.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:i}}function Ho(e){if(e.language!=="typescript"||e.typescriptProjectMode!=="workspace")return[ut({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})];let t=e.preDiscoveredTypeScriptProjects??Y(e.projectRoot,e.typescriptProjects);return t.length===0?[ut({...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)=>ut({...e,id:`typescript:${n}`,label:`typescript (${n})`,scipPath:ee(e.tempOutputScip,"typescript-project",r),outputScipPath:e.scipPath,pnpmWorkspaces:!1,projectPath:n})))}function ut(e){let t=Qe(e.language),n=fe(t),r=jn(t,e.projectRoot),i=e.trustProjectTools&&r?Tn(t,e.projectRoot):null,a=C(t);if(!i&&!a&&r){let c=`${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}: ${c}`),{skipped:{language:e.language,reason:c}}}if(!i&&!a&&!_n(t)){if(e.skipAutoInstall){let c=`${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}: ${c}`),{skipped:{language:e.language,reason:c}}}if(e.onStatus(`${n} not found. Attempting auto-install...`),!Fr(t,e.onStatus)){let c=`${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}: ${c}`),{skipped:{language:e.language,reason:c}}}}let o=i?.canonicalPath??C(t);if(!o){let c=`${n} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${c}`),{skipped:{language:e.language,reason:c}}}let{binary:s,args:d}=t.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:o,projectPath:e.projectPath,configPath:e.language==="clojure"?e.clojureConfigPath:void 0});if(i&&!i.executable){let c=`${i.relativePath} is not executable; refusing project-local indexer.`;return e.onStatus(`Skipping ${e.language}: ${c}`),{skipped:{language:e.language,reason:c}}}return i&&e.onStatus(`Trusted project-local ${e.language} indexer ${i.relativePath} (${i.sha256.slice(0,12)}\u2026, ${i.canonicalPath}).`),{prepared:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,config:t,resolvedBinary:o,binary:s,args:d,env:kn(t,e.env,o),...i?{trustedProjectTool:i}:{}}}}function Jo(e,t){let n=new Map;for(let i of e)if(i.skipped)Ur(t,i.skipped);else{let a=`${i.language}\0${i.outputScipPath}`,o=n.get(a)??{language:i.language,outputScipPath:i.outputScipPath,scipPaths:[]};o.scipPaths.push(i.scipPath),n.set(a,o)}let r=[];for(let i of n.values())if(i.scipPaths.length>1)zt(i.scipPaths,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath});else{let a=i.scipPaths[0];a!==i.outputScipPath&&Nr(a,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath})}return{indexedOutputs:r}}function Ur(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 zo(e,t,n,r,i){if(e.length===0){let a=t.map(o=>` - ${o.language}: ${o.reason}`).join(`
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(`
253
252
  `);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
254
- `+a)}if(t.length!==0&&(i(`Indexed ${e.length} language output(s); skipped or incomplete: ${t.map(a=>a.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.
255
- `+t.map(a=>` - ${a.language}: ${a.reason}`).join(`
256
- `))}function Dr(e,t,n){if(e.length>1){n(`Merging ${e.length} language indexes...`);let r=performance.now(),i=Xt(e.map(a=>a.scipPath),t);return Wr(i,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&Nr(e[0].scipPath,t);return!1}function Xo(e){let t;if(Qo(e)){let i=R(e.run.tempPaths.runDir,"typescript-affected.db");try{qr(e.incrementalTypeScript.affectedScipPath,e.run.onStatus),e.run.onStatus(`Converting ${e.incrementalTypeScript.affectedFiles.length} affected TypeScript document(s) to SQLite...`);let a=performance.now();kr(e.incrementalTypeScript.affectedScipPath,i,e.env,e.run.onStatus),e.run.onStatus(`Converted affected SCIP documents in ${(performance.now()-a).toFixed(0)}ms.`);let o=er({previousDbPath:e.run.paths.outputDb,miniDbPath:i,candidateDbPath:e.run.tempPaths.tempOutputDb,affectedFiles:e.incrementalTypeScript.affectedFiles});return e.run.onStatus(`Patched ${o.affectedDocumentCount} SQLite document(s) in ${(o.durationMs/1e3).toFixed(3)}s.`),{mode:"incremental",changedDocumentPaths:o.changedDocumentPaths,patchDurationMs:o.durationMs,converterDurationMs:performance.now()-a,scipCompanion:e.incrementalTypeScript.completeScipUpdated?"current":"deferred"}}catch(a){t=a instanceof Error?a.message:String(a),B(i,{force:!0}),B(e.run.tempPaths.tempOutputDb,{force:!0}),e.run.onStatus(`Incremental SQLite publication unavailable: ${t}. Falling back to complete conversion.`)}}let n=e.completeScipSanitized;e.completeScipAvailable||(n=e.materializeFullFallback());let r=performance.now();return kr(e.run.tempPaths.tempOutputScip,e.run.tempPaths.tempOutputDb,e.env,e.run.onStatus,n),{mode:"full",converterDurationMs:performance.now()-r,...t?{fallbackReason:t}:{}}}function Qo(e){if(!e.incrementalTypeScript||e.skippedLanguages.length>0||!j(e.run.paths.outputDb)||!j(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 Vo(e,t){let n=b(),r=[...t].sort(),i=new Set(r),a={addedFiles:[],modifiedFiles:r,deletedFiles:[],changedFiles:r,unchangedFiles:e.affectedFiles.filter(o=>!i.has(o)).sort()};return{version:1,status:"evaluated",refreshResult:"rebuilt",recordedAt:new Date().toISOString(),durationMs:b()-n,manifest:e.manifest,plan:e.plan,comparison:a,evaluation:ze(e.plan,a,e.projectFileCount)}}function kr(e,t,n,r,i=!1){if(r("Converting to SQLite..."),!j(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{i||qr(e,r);let a=Le();if(!a)throw new Error("scip CLI is not available");yo(a,["expt-convert","--output",t,e],{env:n,stdio:"pipe",maxBuffer:50*1024*1024,timeout:3e5,killSignal:"SIGKILL"})}catch(a){let o=a instanceof Error?a.message:String(a);throw new Error(`Failed to convert SCIP index to SQLite: ${o}`,{cause:a})}}function qr(e,t){let n=Jt(e);Wr(n,t)}function Wr(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function ee(e,t,n){let r=xo(e)||".scip",i=Ee(e,r);return R(y(e),`${i}.${n+1}.${t}${r}`)}async function Yo(e,t){for(let n=0;n<2;n++){let r=Ko(e,t);if(r)return r;let i=Zo(e);if(i&&zr(t.trigger,i)){t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}.`);let a;try{a=await ts(i)}catch(s){throw new Error(`Could not verify the watcher's in-progress reindex owner (pid ${i.pid}); refusing to steal an active lock: ${U(s)}`,{cause:s})}if(!a)throw new Error(`Could not confirm the watcher's in-progress reindex (pid ${i.pid}) terminated for ${y(e)}; refusing to steal an active lock.`);let o=Ne(e,{parseLegacy:Fe});if(!_t(e,o,{parseLegacy:Fe}))throw new Error(`Reindex lock ownership changed before preemption completed for ${y(e)}.`);continue}throw new Error(`Another scip-query reindex is already running for ${y(e)}.`)}throw new Error(`Could not acquire scip-query reindex lock for ${y(e)}.`)}function Ko(e,t){let n=A(process.pid),r=Et(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:Fe});if(r.kind==="acquired"&&r.reclaimed){let i=Hr(r.reclaimed,e);i&&zr(t.trigger,i)?t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}; its prior owner was already stale.`):t.onStatus(`Recovered an abandoned or incomplete reindex lock for ${y(e)}.`)}return r.kind==="acquired"?()=>{r.lock.release()}:null}function Zo(e){return Hr(Ne(e,{parseLegacy:Fe}),e)}var Fe=e=>{let t=Jr(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function Hr(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:y(t),startedAt:e.record.startedAt,trigger:n.trigger}}return Jr(e.parsed,t)}function Jr(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=It(n.processIdentity);return r?.pid===n.pid?{processIdentity:r}:{}})(),...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:y(t),startedAt:typeof n.startedAt=="string"?n.startedAt:"unknown",trigger:n.trigger}}catch{return null}}function zr(e,t){return e?.kind==="manual-cli"&&es(t?.trigger)}function es(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function ts(e){return!L(e.pid)||(pt(e),Mr(e,"SIGTERM"),await Or(e,2e3))?!0:(pt(e),Mr(e,"SIGKILL"),Or(e,1e3))}function Mr(e,t){if(e.processGroupLeader)try{process.kill(-e.pid,t);return}catch{if(!L(e.pid))return;pt(e)}try{process.kill(e.pid,t)}catch{}}async function Or(e,t){let n=b()+t;for(;b()<n;){if(Ar(e))return!0;await ns(50)}return Ar(e)}function pt(e){if(!e.processIdentity)throw new Error(`Refusing to signal reindex pid ${e.pid}: its ownership record has no process identity.`);let t=A(e.pid);if(!t)throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity is unavailable.`);if(!J(e.processIdentity,t))throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity does not match the ownership record.`)}function Ar(e){if(!L(e.pid))return!0;if(!e.processIdentity)return!1;let t=A(e.pid);return t!==null&&!J(e.processIdentity,t)}function ns(e){return new Promise(t=>setTimeout(t,e))}function Xr(e,t,n){return Object.fromEntries(t.map(r=>{let i=Qe(r).markerFiles,a=r==="typescript"?{typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:jt(n.typescriptProjects)}:{typescriptProjectMode:"single",typescriptProjects:[]},o=r==="clojure"?rs(n.clojureConfigPath):void 0;return[r,{version:2,languages:[r],pnpmWorkspaces:r==="typescript"&&is(n),...a,clojureConfigPath:o,files:Dt(e,{language:r,markerFiles:i})}]}))}function rs(e){return e?.trim()||void 0}function is(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function ft(e,t){return R(y(e),"language-indexes",`${t}.scip`)}function Qr(e){return R(y(e),"language-indexes","typescript-projects")}function Te(e,t){return R(Qr(e),`${nt(t)}.scip`)}function te(e){try{return Me(ae(D(e,"reindex metadata")))}catch{return null}}function Vr(e,t){try{let n=ae(D(e,"reindex metadata"));if(n.kind!=="legacy"&&n.kind!=="supported")return!1;let r=n.metadata;return n.capabilities.publishableGeneration&&bt(r)&&w(r.fingerprint)===w(t)&&w([...r.indexedLanguages??[]].sort())===w(t.languages)}catch{return!1}}function mt(e,t){Ot(e,t,{spacing:2,trailingNewline:!0})}function Yr(e,t){try{let n=Me(ae(D(e,"reindex metadata")));if(!n)return;mt(e,{...n,lastRefresh:t})}catch{}}function we(e){return{trigger:e.trigger??{kind:"unknown"},result:e.result,startedAt:new Date(e.start).toISOString(),completedAt:new Date().toISOString(),durationMs:b()-e.monotonicStart,indexedLanguages:e.languages?[...e.languages]:void 0,skipped:e.skipped?[...e.skipped]:void 0,error:e.error}}function w(e){return JSON.stringify(e)}var ti=process.env.SCIP_REINDEX_PROJECT_ROOT,ni=process.env.SCIP_REINDEX_OUTPUT_SCIP,ri=process.env.SCIP_REINDEX_OUTPUT_DB,Kr=process.env.SCIP_REINDEX_LANGUAGES,as=In(process.env.SCIP_REINDEX_INDEXER_CONCURRENCY),os=process.env.SCIP_REINDEX_PNPM_WORKSPACES==="1",Zr=us(process.env.SCIP_REINDEX_TYPESCRIPT_CONFIG),ss=process.env.SCIP_REINDEX_CLOJURE_CONFIG_PATH||void 0,cs=ls(process.env.SCIP_REINDEX_TRIGGER_KIND),ds=process.env.SCIP_REINDEX_TRIGGER_DETAIL;(!ti||!ni||!ri)&&(console.error("reindex-worker: missing required env vars"),process.exit(1));var ei=Kr?Kr.split(",").filter(Boolean):void 0;Cr({projectRoot:ti,outputScip:ni,outputDb:ri,languages:ei?.length?ei:void 0,pnpmWorkspaces:os,typescriptProjectMode:Zr.projectMode,typescriptProjects:Zr.projects,clojureConfigPath:ss,indexerConcurrency:as,trigger:{kind:cs,detail:ds||void 0},onStatus:e=>process.stderr.write(`[reindex] ${qe(e)}
257
- `)}).then(()=>{process.exit(0)}).catch(e=>{console.error(`reindex-worker error: ${qe(String(e))}`),process.exit(1)});function ls(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 us(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,i=Array.isArray(n.projects)?n.projects.filter(a=>typeof a=="string"&&a.trim()!==""):void 0;return{projectMode:r,projects:i&&i.length>0?i:void 0}}catch{return{}}}
253
+ `+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
+ `+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{}}}
258
257
  //# sourceMappingURL=reindex-worker.js.map