codebaseiq 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/CHANGELOG.md +44 -2
  2. package/README.md +1 -1
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/{chunk-2DMVFAY7.js → chunk-23C5AD3B.js} +2 -2
  5. package/dist/{chunk-WH5SYOMD.js → chunk-2E6OUPCF.js} +2 -2
  6. package/dist/{chunk-RWKEXCHU.js → chunk-2EDX3JT5.js} +2 -2
  7. package/dist/chunk-2I2UHZET.js +2 -0
  8. package/dist/{chunk-CSZOQ7YO.js → chunk-2OMXFE64.js} +2 -2
  9. package/dist/{chunk-EXMVF3JR.js → chunk-2PRONPAS.js} +3 -3
  10. package/dist/{chunk-5WXOEJ4G.js → chunk-356EZBIP.js} +2 -2
  11. package/dist/{chunk-A7XQT7MH.js → chunk-36JC5BG2.js} +2 -2
  12. package/dist/{chunk-RRPK327J.js → chunk-3RR2K7EZ.js} +2 -2
  13. package/dist/{chunk-3NUZVLR7.js → chunk-3RSBGWGL.js} +2 -2
  14. package/dist/{chunk-MTMF4N7F.js → chunk-3VJ3OCRE.js} +2 -2
  15. package/dist/{chunk-IBM3F2BJ.js → chunk-4LK5OIPW.js} +2 -2
  16. package/dist/{chunk-FQA3KIFX.js → chunk-5DSL3NT2.js} +2 -2
  17. package/dist/{chunk-IYBIBMPF.js → chunk-5FWR5HLG.js} +2 -2
  18. package/dist/{chunk-CIVYHK7U.js → chunk-5IC2WZAL.js} +2 -2
  19. package/dist/{chunk-PARCKE3Q.js → chunk-5IZRKWTZ.js} +2 -2
  20. package/dist/{chunk-HHBBGWES.js → chunk-5LL4KEHO.js} +2 -2
  21. package/dist/chunk-5T44HG5Y.js +88 -0
  22. package/dist/{chunk-YFQPWKHR.js → chunk-5ZI2PPI7.js} +2 -2
  23. package/dist/{chunk-T3YFIJ5P.js → chunk-67VJAYVR.js} +2 -2
  24. package/dist/{chunk-DKJXK3HA.js → chunk-6BF3VYEF.js} +2 -2
  25. package/dist/chunk-6JMAVFL4.js +3 -0
  26. package/dist/chunk-6O3KXIDL.js +2 -0
  27. package/dist/{chunk-OJFLPVBP.js → chunk-6VREELBC.js} +2 -2
  28. package/dist/chunk-6WAPPQ5F.js +82 -0
  29. package/dist/{chunk-QLTFXVUI.js → chunk-75KJGYX7.js} +2 -2
  30. package/dist/{chunk-PLZXWZHY.js → chunk-7GAK2F3H.js} +2 -2
  31. package/dist/{chunk-X5I2BQGX.js → chunk-7JELP5YE.js} +2 -2
  32. package/dist/{chunk-W3FK73MD.js → chunk-7UCDGXRW.js} +2 -2
  33. package/dist/{chunk-CMXW7MFV.js → chunk-AEXQYQD7.js} +2 -2
  34. package/dist/{chunk-PHPQ24UG.js → chunk-AQI4N64O.js} +2 -2
  35. package/dist/{chunk-XUJM6474.js → chunk-AURCQHSG.js} +2 -2
  36. package/dist/{chunk-EM5UHLAM.js → chunk-BBP7HVBJ.js} +2 -2
  37. package/dist/{chunk-57KFVPVZ.js → chunk-BFBIMTCJ.js} +2 -2
  38. package/dist/{chunk-VVCBMH5O.js → chunk-BGGB5N53.js} +2 -2
  39. package/dist/{chunk-ZOEDRCR4.js → chunk-BRQL7AFJ.js} +2 -2
  40. package/dist/{chunk-KDYQQJ6X.js → chunk-BWL3PMPT.js} +2 -2
  41. package/dist/{chunk-M7LAIM77.js → chunk-C6WKPKCF.js} +2 -2
  42. package/dist/{chunk-2F5ERMNI.js → chunk-C7OUW52M.js} +2 -2
  43. package/dist/{chunk-N3Q3AWGW.js → chunk-C7QWUBR2.js} +96 -96
  44. package/dist/{chunk-BX2U3QQV.js → chunk-CCIYWXX6.js} +2 -2
  45. package/dist/{chunk-3AC56WAR.js → chunk-CIYA2KZN.js} +2 -2
  46. package/dist/{chunk-35YYZD3D.js → chunk-CR3OG6SQ.js} +2 -2
  47. package/dist/{chunk-VYZQZ4ZN.js → chunk-CVHOQONG.js} +2 -2
  48. package/dist/{chunk-4IFISPQW.js → chunk-CW6AXOLR.js} +2 -2
  49. package/dist/{chunk-NDGTJHQN.js → chunk-D53LWANR.js} +2 -2
  50. package/dist/{chunk-VCWAJPXQ.js → chunk-D7AZAOZX.js} +2 -2
  51. package/dist/{chunk-ACZDU5GK.js → chunk-D7DOB27N.js} +7 -7
  52. package/dist/{chunk-CDWSLAPN.js → chunk-DAKIGMIK.js} +2 -2
  53. package/dist/chunk-DDN2F6GB.js +2 -0
  54. package/dist/{chunk-L3YSDLNB.js → chunk-DVWO7RBC.js} +2 -2
  55. package/dist/{chunk-KNV5VFDV.js → chunk-E52K4L2W.js} +2 -2
  56. package/dist/chunk-EIBGSU2R.js +2 -0
  57. package/dist/chunk-EQNMD62X.js +51 -0
  58. package/dist/{chunk-LY2NB5XR.js → chunk-EXZ7VLRY.js} +2 -2
  59. package/dist/{chunk-YIOQJ45A.js → chunk-F3QSL4W2.js} +2 -2
  60. package/dist/{chunk-JOALNFY3.js → chunk-F74LZWCE.js} +2 -2
  61. package/dist/{chunk-ZB3V5QM7.js → chunk-FEIZXBLH.js} +2 -2
  62. package/dist/{chunk-NJA4MMBD.js → chunk-FH5WG4LE.js} +2 -2
  63. package/dist/{chunk-MRGTCMDK.js → chunk-FOZ74V56.js} +2 -2
  64. package/dist/{chunk-S5SKXCND.js → chunk-FQTIFWLR.js} +2 -2
  65. package/dist/chunk-FTTV7IRX.js +355 -0
  66. package/dist/chunk-FWQGH2N2.js +2 -0
  67. package/dist/{chunk-PFPHS4NO.js → chunk-GDHWOA57.js} +2 -2
  68. package/dist/{chunk-H3CKAL6P.js → chunk-GIDCP7KV.js} +2 -2
  69. package/dist/{chunk-6SDEQTVY.js → chunk-GL6UTNUB.js} +2 -2
  70. package/dist/{chunk-37TKC6MB.js → chunk-GP7C5VAE.js} +2 -2
  71. package/dist/{chunk-U24M5RQM.js → chunk-GQLDYCWS.js} +2 -2
  72. package/dist/{chunk-I5FCDTK2.js → chunk-GQXXOS55.js} +2 -2
  73. package/dist/{chunk-NTRW52UR.js → chunk-GUFPEFBG.js} +2 -2
  74. package/dist/{chunk-B2E3HZ2A.js → chunk-GV2CEZCW.js} +2 -2
  75. package/dist/{chunk-AM5SUGHF.js → chunk-GVAF222T.js} +2 -2
  76. package/dist/{chunk-TAJ6UGCO.js → chunk-GWYZVVKY.js} +3 -3
  77. package/dist/{chunk-NK76RSB6.js → chunk-HENP2O4A.js} +2 -2
  78. package/dist/{chunk-VG55NFXF.js → chunk-HINZQKSY.js} +2 -2
  79. package/dist/{chunk-6OVNYYY4.js → chunk-HQA7EBSK.js} +2 -2
  80. package/dist/{chunk-DLC6JDN7.js → chunk-HVFB3PME.js} +2 -2
  81. package/dist/{chunk-FY5V4V4F.js → chunk-I22IZYDI.js} +2 -2
  82. package/dist/{chunk-RVYLJDXC.js → chunk-ICUL7XRT.js} +2 -2
  83. package/dist/{chunk-QVHZB75Z.js → chunk-IHSLIIL3.js} +2 -2
  84. package/dist/{chunk-PNVZIJ57.js → chunk-ITSJMNUD.js} +2 -2
  85. package/dist/{chunk-XNUWRTYM.js → chunk-IZDPGOZR.js} +2 -2
  86. package/dist/chunk-J3GLP7Q5.js +3 -0
  87. package/dist/{chunk-BH5CE4LN.js → chunk-J7AMBVWF.js} +2 -2
  88. package/dist/{chunk-YXJ4IAHH.js → chunk-JCMFBF4Z.js} +2 -2
  89. package/dist/{chunk-ZJZQ7Q2Q.js → chunk-JFIA2JI3.js} +2 -2
  90. package/dist/{chunk-FIXYHQ3W.js → chunk-JLZLLLW5.js} +2 -2
  91. package/dist/{chunk-2E6BTWER.js → chunk-JSNTHRLQ.js} +2 -2
  92. package/dist/{chunk-77GHPR2R.js → chunk-JX6ZWDOS.js} +2 -2
  93. package/dist/{chunk-SRY26ITJ.js → chunk-JYI7CV25.js} +2 -2
  94. package/dist/chunk-K7JLSGCJ.js +8 -0
  95. package/dist/{chunk-DFPAZXLU.js → chunk-KPZGTB2O.js} +2 -2
  96. package/dist/{chunk-7Z7HCZ7J.js → chunk-LKUTSP4G.js} +2 -2
  97. package/dist/{chunk-HIEXRDJF.js → chunk-LMTSB3TB.js} +2 -2
  98. package/dist/{chunk-BLKYYQ7C.js → chunk-LONKINMJ.js} +95 -95
  99. package/dist/{chunk-SF34QLK2.js → chunk-LQHYYIOB.js} +2 -2
  100. package/dist/{chunk-HBQGKMM3.js → chunk-LZSQ6X7E.js} +2 -2
  101. package/dist/{chunk-RCPZOPV6.js → chunk-M2Y6PCFE.js} +2 -2
  102. package/dist/{chunk-WJOQC4P7.js → chunk-MEUHIDI3.js} +2 -2
  103. package/dist/{chunk-MT5W4DUG.js → chunk-MHWMEZDA.js} +2 -2
  104. package/dist/{chunk-FLLXYUOL.js → chunk-MQW6SJ4P.js} +2 -2
  105. package/dist/{chunk-57KEZDPT.js → chunk-MSI3K7PJ.js} +2 -2
  106. package/dist/chunk-MVRGB4KJ.js +278 -0
  107. package/dist/{chunk-27PHVDKL.js → chunk-MZNMASFM.js} +2 -2
  108. package/dist/{chunk-DVYG3JTA.js → chunk-NBCQZSGR.js} +2 -2
  109. package/dist/{chunk-NIO346UL.js → chunk-NBZKSTXP.js} +2 -2
  110. package/dist/{chunk-UWB5WMC2.js → chunk-NCJILOAK.js} +2 -2
  111. package/dist/{chunk-JN5LIBT3.js → chunk-NDKOVQFG.js} +2 -2
  112. package/dist/{chunk-W6C6QTXJ.js → chunk-NEWHKGVD.js} +2 -2
  113. package/dist/{chunk-HBXZAGY6.js → chunk-O2M3VNDY.js} +2 -2
  114. package/dist/chunk-OFGOOL6U.js +3 -0
  115. package/dist/{chunk-FEBLLMTL.js → chunk-OQUCBKOI.js} +2 -2
  116. package/dist/{chunk-5IO2APSS.js → chunk-P4NVCOM7.js} +2 -2
  117. package/dist/{chunk-SJZQ2PTZ.js → chunk-PFC44E6D.js} +2 -2
  118. package/dist/{chunk-LAGDJXFY.js → chunk-PHNCEUXX.js} +2 -2
  119. package/dist/{chunk-HYKSLTAR.js → chunk-PTQPPPG2.js} +2 -2
  120. package/dist/{chunk-5XEVXVTK.js → chunk-PUVNH4PO.js} +2 -2
  121. package/dist/chunk-Q23IMHXS.js +343 -0
  122. package/dist/{chunk-YYFV32WR.js → chunk-Q3ZCQY2Y.js} +2 -2
  123. package/dist/{chunk-OMBRP7BB.js → chunk-Q4XEU3UH.js} +2 -2
  124. package/dist/{chunk-I645ZF75.js → chunk-QEOWONKY.js} +2 -2
  125. package/dist/{chunk-JXHLB7TP.js → chunk-QMOZZ2VX.js} +2 -2
  126. package/dist/{chunk-2VKB5CMA.js → chunk-RCIGX23V.js} +2 -2
  127. package/dist/{chunk-J24VICI5.js → chunk-RIYJ4L33.js} +2 -2
  128. package/dist/{chunk-M4EVGA5S.js → chunk-RJVAPMHF.js} +3 -3
  129. package/dist/chunk-SB7NASHU.js +2 -0
  130. package/dist/{chunk-3XFJUWJE.js → chunk-SGMNWYTH.js} +2 -2
  131. package/dist/chunk-SMDIEDM4.js +27 -0
  132. package/dist/{chunk-IOVPAZWP.js → chunk-SX72EVMY.js} +2 -2
  133. package/dist/{chunk-WO47BIPY.js → chunk-T5X7DK6C.js} +2 -2
  134. package/dist/{chunk-CZEIHYMP.js → chunk-T6MQNNAC.js} +2 -2
  135. package/dist/chunk-T75DS2E6.js +21 -0
  136. package/dist/{chunk-57GCCPLS.js → chunk-TEANKHUU.js} +2 -2
  137. package/dist/{chunk-T55YPJGB.js → chunk-TJBOJUVN.js} +2 -2
  138. package/dist/{chunk-I2KP4AGR.js → chunk-TJWVT4DO.js} +2 -2
  139. package/dist/{chunk-KM4QRWI5.js → chunk-TNJGTQWO.js} +2 -2
  140. package/dist/{chunk-EFFMFK7C.js → chunk-TOTWJZIX.js} +2 -2
  141. package/dist/{chunk-QMGWSEPL.js → chunk-TPO7XC5Z.js} +2 -2
  142. package/dist/{chunk-54K6556S.js → chunk-U33PMPNW.js} +2 -2
  143. package/dist/{chunk-GXVDTHFC.js → chunk-U7NUXDQO.js} +2 -2
  144. package/dist/chunk-UC2FD2PS.js +4 -0
  145. package/dist/{chunk-TUTSO7UZ.js → chunk-UQE4XFSA.js} +2 -2
  146. package/dist/{chunk-4O52YNKL.js → chunk-UQYQBLJX.js} +2 -2
  147. package/dist/{chunk-FPDL2TUB.js → chunk-USOAJHY7.js} +2 -2
  148. package/dist/{chunk-JUO3Z644.js → chunk-UW6KD57C.js} +2 -2
  149. package/dist/{chunk-VLTUX4IF.js → chunk-VGWZ4MOY.js} +2 -2
  150. package/dist/{chunk-U2XX3BT4.js → chunk-VWYGCMV5.js} +2 -2
  151. package/dist/{chunk-IWAMYGPN.js → chunk-W7YLRXZE.js} +2 -2
  152. package/dist/{chunk-QKVTWODE.js → chunk-WK2IQJPK.js} +2 -2
  153. package/dist/{chunk-S64NCE2Z.js → chunk-WWCV4E6J.js} +2 -2
  154. package/dist/{chunk-IVJJNVSX.js → chunk-XMJ53WG4.js} +2 -2
  155. package/dist/{chunk-IGYAZPRX.js → chunk-XN3EKMLI.js} +2 -2
  156. package/dist/{chunk-FWY2PRIF.js → chunk-XQAVQVIL.js} +2 -2
  157. package/dist/{chunk-JYX5UZSZ.js → chunk-XQPPURLQ.js} +2 -2
  158. package/dist/{chunk-4AOOSCZ7.js → chunk-YHPG3S2U.js} +2 -2
  159. package/dist/{chunk-5BDK6QC3.js → chunk-YRKP7PM7.js} +2 -2
  160. package/dist/{chunk-4NHWNAWQ.js → chunk-YT4DVWUV.js} +2 -2
  161. package/dist/{chunk-5NJPH3QZ.js → chunk-YTJHCGYB.js} +2 -2
  162. package/dist/chunk-Z35GOVEH.js +2 -0
  163. package/dist/{chunk-K5G7SPAG.js → chunk-Z6RL7XOE.js} +4 -4
  164. package/dist/{chunk-OVKZM2XI.js → chunk-ZAFGY22Q.js} +2 -2
  165. package/dist/{chunk-A67HT5FR.js → chunk-ZB4C5TTR.js} +2 -2
  166. package/dist/{chunk-CWMHWD56.js → chunk-ZNH33XIB.js} +2 -2
  167. package/dist/{chunk-ZNQCR656.js → chunk-ZQ62NNKN.js} +2 -2
  168. package/dist/{cli-context-XEPPF4RX.js → cli-context-FJL2JHOE.js} +2 -2
  169. package/dist/{cli-context-TSADTXLB.js → cli-context-PQNWHMCQ.js} +2 -2
  170. package/dist/{cli-program-KJGQEM72.js → cli-program-UO7PZD6V.js} +2 -2
  171. package/dist/cli.js +1 -1
  172. package/dist/{code-CDe-mIjx.d.ts → code-DfX3xeWy.d.ts} +1 -1
  173. package/dist/{code-viewer-YGDON6SY.js → code-viewer-KIXEYQNJ.js} +2 -2
  174. package/dist/{code-viewer-ZCTHXQ5C.js → code-viewer-VHLBLIUM.js} +2 -2
  175. package/dist/{command-descriptors-5VAB2MZX.js → command-descriptors-F5P2V3NW.js} +129 -129
  176. package/dist/{command-descriptors-EAHKIRAG.js → command-descriptors-YCLATF5I.js} +130 -130
  177. package/dist/{db-DmRNdCtm.d.ts → db-BoG_PWYH.d.ts} +1 -1
  178. package/dist/direct-navigation-4XJTXIDT.js +2 -0
  179. package/dist/direct-navigation-J5MVYYAD.js +3 -0
  180. package/dist/{graph-evidence-Bs54NWws.d.ts → graph-evidence-D1jx1Cql.d.ts} +1 -1
  181. package/dist/{health-BnzbSLCE.d.ts → health-DkYBS5BI.d.ts} +1 -1
  182. package/dist/index.d.ts +1 -1
  183. package/dist/index.js +1 -1
  184. package/dist/invocation-command-descriptors-RWV4VAI4.js +2 -0
  185. package/dist/invocation-command-descriptors-U76PN7IY.js +3 -0
  186. package/dist/{scip-cli-BRFKkHQn.d.ts → maintenance-types-CdL5eQii.d.ts} +1 -20
  187. package/dist/output-continuation-command-BL25S26S.js +3 -0
  188. package/dist/output-continuation-command-BTETTXEC.js +2 -0
  189. package/dist/postinstall.js +1 -1
  190. package/dist/project-reindex-CRJU3IFG.js +2 -0
  191. package/dist/project-reindex-TQFCOA2O.js +3 -0
  192. package/dist/queries/affected.d.ts +1 -1
  193. package/dist/queries/affected.js +1 -1
  194. package/dist/queries/anchors.d.ts +1 -1
  195. package/dist/queries/anchors.js +1 -1
  196. package/dist/queries/architecture.d.ts +1 -1
  197. package/dist/queries/architecture.js +1 -1
  198. package/dist/queries/bottlenecks.d.ts +1 -1
  199. package/dist/queries/bottlenecks.js +1 -1
  200. package/dist/queries/by-kind.d.ts +1 -1
  201. package/dist/queries/by-kind.js +1 -1
  202. package/dist/queries/call-graph.d.ts +1 -1
  203. package/dist/queries/call-graph.js +1 -1
  204. package/dist/queries/change-surface.d.ts +1 -1
  205. package/dist/queries/change-surface.js +1 -1
  206. package/dist/queries/cleanup-plan.d.ts +1 -1
  207. package/dist/queries/cleanup-plan.js +1 -1
  208. package/dist/queries/co-change.d.ts +1 -1
  209. package/dist/queries/co-change.js +1 -1
  210. package/dist/queries/code.d.ts +2 -2
  211. package/dist/queries/code.js +1 -1
  212. package/dist/queries/complexity-hotspots.d.ts +1 -1
  213. package/dist/queries/complexity-hotspots.js +1 -1
  214. package/dist/queries/complexity.d.ts +1 -1
  215. package/dist/queries/complexity.js +1 -1
  216. package/dist/queries/context.d.ts +1 -1
  217. package/dist/queries/context.js +1 -1
  218. package/dist/queries/convergence.d.ts +1 -1
  219. package/dist/queries/convergence.js +1 -1
  220. package/dist/queries/coupling.d.ts +1 -1
  221. package/dist/queries/coupling.js +1 -1
  222. package/dist/queries/cycles.d.ts +1 -1
  223. package/dist/queries/cycles.js +1 -1
  224. package/dist/queries/dataflow.d.ts +1 -1
  225. package/dist/queries/dataflow.js +1 -1
  226. package/dist/queries/dead.d.ts +1 -1
  227. package/dist/queries/dead.js +1 -1
  228. package/dist/queries/decorative-checkers.d.ts +1 -1
  229. package/dist/queries/decorative-checkers.js +1 -1
  230. package/dist/queries/deep-chains.d.ts +1 -1
  231. package/dist/queries/deep-chains.js +1 -1
  232. package/dist/queries/dependence-slice.d.ts +2 -2
  233. package/dist/queries/dependence-slice.js +1 -1
  234. package/dist/queries/dependency-depth.d.ts +1 -1
  235. package/dist/queries/dependency-depth.js +1 -1
  236. package/dist/queries/deps.d.ts +1 -1
  237. package/dist/queries/deps.js +1 -1
  238. package/dist/queries/diff-impact.d.ts +1 -1
  239. package/dist/queries/diff-impact.js +1 -1
  240. package/dist/queries/doc-drift.d.ts +1 -1
  241. package/dist/queries/doc-drift.js +1 -1
  242. package/dist/queries/drift.d.ts +1 -1
  243. package/dist/queries/drift.js +1 -1
  244. package/dist/queries/duplicate-bodies.d.ts +1 -1
  245. package/dist/queries/duplicate-bodies.js +1 -1
  246. package/dist/queries/entry-map.d.ts +1 -1
  247. package/dist/queries/entry-map.js +1 -1
  248. package/dist/queries/evidence.d.ts +2 -2
  249. package/dist/queries/evidence.js +1 -1
  250. package/dist/queries/extract-candidates.d.ts +1 -1
  251. package/dist/queries/extract-candidates.js +1 -1
  252. package/dist/queries/fan.d.ts +1 -1
  253. package/dist/queries/fan.js +1 -1
  254. package/dist/queries/files.d.ts +1 -1
  255. package/dist/queries/files.js +1 -1
  256. package/dist/queries/health.d.ts +2 -2
  257. package/dist/queries/health.js +1 -1
  258. package/dist/queries/hierarchy.d.ts +1 -1
  259. package/dist/queries/hierarchy.js +1 -1
  260. package/dist/queries/hotspots.d.ts +1 -1
  261. package/dist/queries/hotspots.js +1 -1
  262. package/dist/queries/imports.d.ts +1 -1
  263. package/dist/queries/imports.js +1 -1
  264. package/dist/queries/incomplete-migration.d.ts +1 -1
  265. package/dist/queries/incomplete-migration.js +1 -1
  266. package/dist/queries/index.d.ts +4 -4
  267. package/dist/queries/index.js +1 -1
  268. package/dist/queries/isolated.d.ts +1 -1
  269. package/dist/queries/isolated.js +1 -1
  270. package/dist/queries/locality-candidates.d.ts +1 -1
  271. package/dist/queries/locality-candidates.js +1 -1
  272. package/dist/queries/members.d.ts +1 -1
  273. package/dist/queries/members.js +1 -1
  274. package/dist/queries/methods.d.ts +1 -1
  275. package/dist/queries/methods.js +1 -1
  276. package/dist/queries/not-implemented.d.ts +1 -1
  277. package/dist/queries/not-implemented.js +1 -1
  278. package/dist/queries/outline.d.ts +1 -1
  279. package/dist/queries/outline.js +1 -1
  280. package/dist/queries/passthrough-candidates.d.ts +1 -1
  281. package/dist/queries/passthrough-candidates.js +1 -1
  282. package/dist/queries/plan-context.d.ts +1 -1
  283. package/dist/queries/plan-context.js +1 -1
  284. package/dist/queries/react-component-duplicates.d.ts +1 -1
  285. package/dist/queries/react-component-duplicates.js +1 -1
  286. package/dist/queries/react-hook-candidates.d.ts +1 -1
  287. package/dist/queries/react-hook-candidates.js +1 -1
  288. package/dist/queries/react-large-component-pressure.d.ts +1 -1
  289. package/dist/queries/react-large-component-pressure.js +1 -1
  290. package/dist/queries/recent-duplicates.d.ts +1 -1
  291. package/dist/queries/recent-duplicates.js +1 -1
  292. package/dist/queries/redundant-reexports.d.ts +1 -1
  293. package/dist/queries/redundant-reexports.js +1 -1
  294. package/dist/queries/reference-neighborhood.d.ts +1 -1
  295. package/dist/queries/reference-neighborhood.js +1 -1
  296. package/dist/queries/reference-reachability.d.ts +1 -1
  297. package/dist/queries/reference-reachability.js +1 -1
  298. package/dist/queries/refs.d.ts +1 -1
  299. package/dist/queries/refs.js +1 -1
  300. package/dist/queries/self-audit.d.ts +1 -1
  301. package/dist/queries/self-audit.js +1 -1
  302. package/dist/queries/similar-chains.d.ts +1 -1
  303. package/dist/queries/similar-chains.js +1 -1
  304. package/dist/queries/similar-files.d.ts +1 -1
  305. package/dist/queries/similar-files.js +1 -1
  306. package/dist/queries/similar-signatures.d.ts +1 -1
  307. package/dist/queries/similar-signatures.js +1 -1
  308. package/dist/queries/similar.d.ts +1 -1
  309. package/dist/queries/similar.js +1 -1
  310. package/dist/queries/slice.d.ts +1 -1
  311. package/dist/queries/slice.js +1 -1
  312. package/dist/queries/source-inspection.d.ts +3 -3
  313. package/dist/queries/source-inspection.js +1 -1
  314. package/dist/queries/source-search.d.ts +1 -1
  315. package/dist/queries/source-search.js +1 -1
  316. package/dist/queries/stale-abstractions.d.ts +1 -1
  317. package/dist/queries/stale-abstractions.js +1 -1
  318. package/dist/queries/stats.d.ts +1 -1
  319. package/dist/queries/surface.d.ts +1 -1
  320. package/dist/queries/surface.js +1 -1
  321. package/dist/queries/symbols.d.ts +1 -1
  322. package/dist/queries/symbols.js +1 -1
  323. package/dist/queries/system-map.d.ts +1 -1
  324. package/dist/queries/system-map.js +1 -1
  325. package/dist/queries/system.d.ts +1 -1
  326. package/dist/queries/system.js +1 -1
  327. package/dist/queries/test-quality.d.ts +1 -1
  328. package/dist/queries/test-quality.js +1 -1
  329. package/dist/queries/trace.d.ts +1 -1
  330. package/dist/queries/trace.js +1 -1
  331. package/dist/queries/twin-ab.d.ts +1 -1
  332. package/dist/queries/twin-ab.js +1 -1
  333. package/dist/queries/twin-drift.d.ts +1 -1
  334. package/dist/queries/twin-drift.js +1 -1
  335. package/dist/queries/unused-imports.d.ts +1 -1
  336. package/dist/queries/unused-imports.js +1 -1
  337. package/dist/queries/unused-params.d.ts +1 -1
  338. package/dist/queries/unused-params.js +1 -1
  339. package/dist/queries/value-flow.d.ts +2 -2
  340. package/dist/queries/value-flow.js +1 -1
  341. package/dist/queries/vue-component-duplicates.d.ts +1 -1
  342. package/dist/queries/vue-component-duplicates.js +1 -1
  343. package/dist/queries/vue-composable-candidates.d.ts +1 -1
  344. package/dist/queries/vue-composable-candidates.js +1 -1
  345. package/dist/queries/vue-large-view-pressure.d.ts +1 -1
  346. package/dist/queries/vue-large-view-pressure.js +1 -1
  347. package/dist/queries/wrapper-candidates.d.ts +1 -1
  348. package/dist/queries/wrapper-candidates.js +1 -1
  349. package/dist/reindex-worker.js +2 -2
  350. package/dist/reindex.d.ts +2 -4
  351. package/dist/reindex.js +71 -32
  352. package/dist/runtime.d.ts +1 -2
  353. package/dist/runtime.js +3 -3
  354. package/dist/rust-semantic-session-server.js +1 -1
  355. package/dist/rust-semantic-session-worker.js +1 -1
  356. package/dist/rust-semantic-worker.js +1 -1
  357. package/dist/sentinel-ensure-command-OSWGCFFL.js +3 -0
  358. package/dist/sentinel-ensure-command-SPW7XQLB.js +2 -0
  359. package/dist/sentinel-worker.js +1 -1
  360. package/dist/typescript-mailbox-worker.js +1 -1
  361. package/dist/watch-server.js +2 -2
  362. package/docs/INDEX_GENERATIONS.md +2 -2
  363. package/docs/NPM_RELEASE.md +323 -0
  364. package/docs/schemas/npm-release-state.schema.json +4 -13
  365. package/package.json +3 -11
  366. package/dist/chunk-2Q2LW5JW.js +0 -14
  367. package/dist/chunk-327YK6TB.js +0 -4
  368. package/dist/chunk-347TXATM.js +0 -2
  369. package/dist/chunk-36WRYYTE.js +0 -3
  370. package/dist/chunk-6OAHRI2D.js +0 -6
  371. package/dist/chunk-6URCE5QY.js +0 -2
  372. package/dist/chunk-6ZV5EDUT.js +0 -5
  373. package/dist/chunk-7R64XY4Y.js +0 -12
  374. package/dist/chunk-CANBLFVQ.js +0 -15
  375. package/dist/chunk-CCRZLRWJ.js +0 -2
  376. package/dist/chunk-G2XUZCF2.js +0 -88
  377. package/dist/chunk-H5QXP63L.js +0 -2
  378. package/dist/chunk-HCMQZPEO.js +0 -2
  379. package/dist/chunk-IEL6Q5W3.js +0 -308
  380. package/dist/chunk-IGQQUENU.js +0 -109
  381. package/dist/chunk-K2O7SBAU.js +0 -2
  382. package/dist/chunk-QVWDQTMG.js +0 -2
  383. package/dist/chunk-RJWAB4VR.js +0 -345
  384. package/dist/chunk-VCL7FK3E.js +0 -3
  385. package/dist/chunk-WOOTEWQT.js +0 -239
  386. package/dist/chunk-XYLV727H.js +0 -21
  387. package/dist/chunk-YMGZZEW4.js +0 -2
  388. package/dist/direct-navigation-B3SGOOBW.js +0 -2
  389. package/dist/direct-navigation-ZL362KXF.js +0 -3
  390. package/dist/invocation-command-descriptors-CSUGUHTT.js +0 -2
  391. package/dist/invocation-command-descriptors-PPVZOIE5.js +0 -3
  392. package/dist/output-continuation-command-FTVVBVSN.js +0 -2
  393. package/dist/output-continuation-command-ITPRC3YV.js +0 -3
  394. package/dist/project-reindex-7HZSLLLY.js +0 -3
  395. package/dist/project-reindex-NGM3DYBN.js +0 -2
  396. package/dist/sentinel-ensure-command-KYYULCFU.js +0 -2
  397. package/dist/sentinel-ensure-command-RIZA3RY7.js +0 -3
  398. package/docs/WINDOWS_SIDECAR_RELEASE.md +0 -424
  399. package/docs/schemas/windows-sidecar-provenance.schema.json +0 -137
  400. package/scripts/build-codebaseiq-windows.mjs +0 -197
  401. package/scripts/codebaseiq-windows-provenance.mjs +0 -364
  402. package/scripts/verify-codebaseiq-windows.mjs +0 -29
package/dist/reindex.js CHANGED
@@ -1,6 +1,6 @@
1
- import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h as dn,i as fi,j as gi,k as un,m as ln,n as mi}from"./chunk-7R64XY4Y.js";import{a as ai}from"./chunk-YIOQJ45A.js";import{e as di,f as ui,g as li,i as pi}from"./chunk-U24M5RQM.js";import"./chunk-MTMF4N7F.js";import{A as ei,B as tn,E as nn,F as ti,G as rn,H as on,I as ni,J as ri,K as an,M as sn,R as ii,T as oi,a as jr,b as G,c as Nr,d as ue,e as ie,f as $,g as Re,h as Gr,i as it,j as Ht,k as V,l as $r,n as Vr,o as Le,p as zt,q as ot,s as le,t as je,u as Pe,v as Me,w as ve,x as Zt,y as en,z as Zr}from"./chunk-6ZV5EDUT.js";import"./chunk-BH5CE4LN.js";import"./chunk-ELNRLMC5.js";import"./chunk-3XFJUWJE.js";import{a as _r,b as Ce,c as te,d as ne,e as I,f as tt,g as Ut,h as Mr,i as F,j as rt,m as Qt,n as Qr}from"./chunk-CANBLFVQ.js";import"./chunk-ZOEDRCR4.js";import"./chunk-YUKYB54I.js";import{a as ut}from"./chunk-B2E3HZ2A.js";import"./chunk-AM5SUGHF.js";import"./chunk-JOALNFY3.js";import{I as Kr,J as Xr,a as at}from"./chunk-RVYLJDXC.js";import{a as j,b as Ae}from"./chunk-PLZXWZHY.js";import{a as Ie,c as Jr,f as Yr,j as dt,k as Kt,l as Xt}from"./chunk-IOVPAZWP.js";import{d as st,e as xe}from"./chunk-3LCDIREB.js";import{A,B as z,C as _,F as D,G as w,H as L,K as Lr,L as et,P as nt,Q as re,R as _e,S as Br,U as qr,V as Wr,W as Ur,X as Hr,Z as Jt,_ as Yt,ca as ct,e as Tr,f as be,fa as zr,g as Bt,h as Dr,i as Fr,k as Ar,l as Ze,m as O,u as Oe,v as ee,w as qt,x as Or,y as Wt,z as Cr}from"./chunk-327YK6TB.js";import{createHash as rp}from"crypto";import{existsSync as M,mkdirSync as Nt,readdirSync as hs,renameSync as ys,rmSync as De,statSync as ip}from"fs";import{basename as Mt,dirname as S,extname as op,join as C,resolve as cs}from"path";import{platform as ap}from"os";import{execFileSync as As}from"child_process";import{constants as Os,copyFileSync as hi,statSync as Cs}from"fs";import{platform as _s}from"os";var Ls=Object.freeze({size:e=>Cs(e).size,clone:Ms,copy:(e,t)=>hi(e,t)}),js=new Set(["ENOSYS","ENOTSUP","EOPNOTSUPP","EINVAL","EXDEV","ENOTTY"]);function pe(e,t,n=Ls){let r=n.size(e);try{return n.clone(e,t),{method:"reflink",bytes:r}}catch(i){if(!Gs(i))throw i}return n.copy(e,t),{method:"copy",bytes:r}}function Ms(e,t){if(_s()!=="darwin"){hi(e,t,Os.COPYFILE_FICLONE_FORCE);return}try{As("/bin/cp",["-c",e,t],{timeout:6e4,maxBuffer:64*1024,stdio:["ignore","ignore","pipe"],windowsHide:!0})}catch(n){throw Ns(n)}}function Ns(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 Gs(e){let t=e?.code;return t!==void 0&&js.has(t)}function yi(){return{reflinkedBytes:0,fallbackCopiedBytes:0}}function fe(e,t){t.method==="reflink"?e.reflinkedBytes+=t.bytes:e.fallbackCopiedBytes+=t.bytes}import $s from"better-sqlite3";import{execFileSync as Vs}from"child_process";import{existsSync as Bs,readdirSync as qs}from"fs";import{extname as pt,join as Ws}from"path";function oe(e={}){return{id:"auxiliary-documents",facts:["auxiliary-document"],run:t=>Si({projectRoot:t.projectRoot,dbPath:t.dbPath,extensions:e.extensions,onStatus:t.onStatus})}}function Si(e){let t=new Set((e.extensions??Kr).map(o=>o.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!Bs(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let n=ai(e.projectRoot),r=Us(e.projectRoot,t).filter(o=>!n.isIgnored(o)),i=new $s(j(e.dbPath));try{let o=zs(i,r),a=i.prepare(`INSERT OR IGNORE INTO documents (language, relative_path, position_encoding, text)
2
- VALUES (?, ?, NULL, ?)`),c=i.transaction(u=>{let l=0;for(let p of u){if(o.has(p))continue;let g=Yr(e.projectRoot,p,{inputKind:"auxiliary source file"}),f=a.run(Js(p),p,g);l+=Number(f.changes)}return l})(r),d={scanned:r.length,inserted:c,existing:r.length-c};return e.onStatus?.(`Augmented SQLite documents with ${c} auxiliary source file${c===1?"":"s"} (${d.existing} already present).`),d}finally{i.close()}}function Us(e,t){let n=Hs(e,t);if(n)return n;let r=[],i=o=>{let a=o?Ws(e,o):e,s;try{s=qs(a,{withFileTypes:!0})}catch{return}for(let c of s){if(Xr.has(c.name))continue;let d=o?`${o}/${c.name}`:c.name;if(c.isDirectory()){i(d);continue}t.has(pt(c.name).toLowerCase())&&r.push(d)}};return i(""),r.sort()}function Hs(e,t){try{return Vs("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:3e4,killSignal:"SIGKILL"}).split(`
3
- `).filter(r=>r&&t.has(pt(r).toLowerCase())).sort()}catch{return null}}function zs(e,t){let n=new Set,r=500;for(let i=0;i<t.length;i+=r){let o=t.slice(i,i+r),a=e.prepare(`SELECT relative_path FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let s of a)n.add(s.relative_path)}return n}function Js(e){return pt(e).toLowerCase()===".vue"?"vue":pt(e).replace(/^\./,"").toLowerCase()||"source"}import{dirname as Ys,join as Ks}from"path";function bi(e={}){return{id:"runtime-boundaries",facts:["runtime-boundary-observation","runtime-boundary-link"],run:({projectRoot:t,dbPath:n,onStatus:r})=>{let i=new J({projectRoot:t,dbPath:n,indexPath:e.indexPath??Ks(Ys(n),"index.scip")}),o,a=!1,s=!1;try{let d=e.reuseExisting||e.affectedFiles?pi(i):null;e.reuseExisting&&d?.extractorVersion===di?(o=d,a=!0):(o=ui(i,{...d?{previousGraph:d}:{},...e.affectedFiles?{affectedFiles:e.affectedFiles}:{}}),s=(o.coverage.filesReused??0)>0)}finally{i.close()}a||li(n,o);let c={reused:a,incrementallyUpdated:s,observations:o.observations.length,links:o.links.length,frontiers:o.frontiers.length,filesScanned:o.coverage.filesScanned,errors:o.coverage.extractionErrors.length,phases:o.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-(o.coverage.filesReused??0)} file(s) extracted, ${o.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).`),!a&&o.coverage.phases&&r?.(`Runtime-boundary phases: ${o.coverage.phases.map(d=>`${d.id} ${d.durationMs.toFixed(0)}ms`).join(", ")}.`),c}}}import{createHash as Qs}from"crypto";import{existsSync as Zs}from"fs";import{dirname as ec,join as xi}from"path";function pn(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 ft(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),o=pn(e),a=new Set(o.reasons);return r.some(s=>!i.has(s))&&a.add("changed-file-outside-project"),t===null?(a.add("dependency-graph-unavailable"),Ri(r,i,a)):a.size>0?Ri(r,i,a):{mode:"closure",changedFiles:r,affectedFiles:Xs(r,t,i),reasons:[]}}function Ri(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function Xs(e,t,n){let r=new Map;for(let[a,s]of t)if(n.has(a))for(let c of s){if(!n.has(c))continue;let d=r.get(c)??new Set;d.add(a),r.set(c,d)}let i=new Set(e),o=[...e];for(let a=0;a<o.length;a+=1){let s=o[a];if(s!==void 0)for(let c of r.get(s)??[])i.has(c)||(i.add(c),o.push(c))}return[...i].sort()}var tc="<global-symbols>";function nc(e){let t=[];for(let n of e.all(`
1
+ import{a as J}from"./chunk-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f as fi,h as gi,i as mi,j as hi}from"./chunk-K7JLSGCJ.js";import{a as ai}from"./chunk-F3QSL4W2.js";import{e as si,f as ci,g as di,i as ui}from"./chunk-GQLDYCWS.js";import"./chunk-3VJ3OCRE.js";import{A as rn,B as Qr,C as Zr,D as on,G as an,H as ei,I as sn,J as cn,K as ti,L as lt,M as ni,P as ri,Q as dn,S as un,X as ii,Z as oi,a as Lr,b as $,c as Nr,d as ue,e as ie,f as G,g as Re,h as Mr,i as it,j as Yt,k as V,l as Gr,n as $r,o as Ce,p as Kt,q as ot,s as le,t as Le,u as tn,v as Xr,w as Ie,x as Ne,y as Pe,z as nn}from"./chunk-SMDIEDM4.js";import"./chunk-J7AMBVWF.js";import"./chunk-ELNRLMC5.js";import"./chunk-SGMNWYTH.js";import{a as Ar,b as Oe,c as te,d as ne,e as I,f as tt,g as Jt,h as jr,i as F,j as rt}from"./chunk-6JMAVFL4.js";import"./chunk-BRQL7AFJ.js";import"./chunk-YUKYB54I.js";import{a as ut}from"./chunk-GV2CEZCW.js";import"./chunk-GVAF222T.js";import"./chunk-F74LZWCE.js";import{I as Yr,J as Kr,a as at}from"./chunk-ICUL7XRT.js";import{a as j,b as Fe}from"./chunk-7GAK2F3H.js";import{a as xe,c as zr,f as Jr,j as dt,k as Zt,l as en}from"./chunk-SX72EVMY.js";import{d as st,e as je}from"./chunk-3LCDIREB.js";import{A as _,B as z,C,F as D,G as E,H as L,K as Cr,L as et,P as nt,Q as re,R as Ae,S as Vr,U as Br,V as Ur,W as Wr,X as qr,Z as Xt,_ as Qt,ca as ct,e as kr,f as be,fa as Hr,g as Wt,h as Dr,i as Fr,k as _r,l as Ze,m as O,u as _e,v as ee,w as qt,x as Or,y as Ht,z as zt}from"./chunk-UC2FD2PS.js";import{createHash as wp}from"crypto";import{existsSync as N,mkdirSync as $t,readdirSync as xs,renameSync as Is,rmSync as ke,statSync as Tp}from"fs";import{basename as Gt,dirname as S,extname as kp,join as A,resolve as fs}from"path";import{execFileSync as Ls}from"child_process";import{constants as js,copyFileSync as yi,statSync as Ns}from"fs";import{platform as Ms}from"os";var Gs=Object.freeze({size:e=>Ns(e).size,clone:Vs,copy:(e,t)=>yi(e,t)}),$s=new Set(["ENOSYS","ENOTSUP","EOPNOTSUPP","EINVAL","EXDEV","ENOTTY"]);function pe(e,t,n=Gs){let r=n.size(e);try{return n.clone(e,t),{method:"reflink",bytes:r}}catch(i){if(!Us(i))throw i}return n.copy(e,t),{method:"copy",bytes:r}}function Vs(e,t){if(Ms()!=="darwin"){yi(e,t,js.COPYFILE_FICLONE_FORCE);return}try{Ls("/bin/cp",["-c",e,t],{timeout:6e4,maxBuffer:64*1024,stdio:["ignore","ignore","pipe"],windowsHide:!0})}catch(n){throw Bs(n)}}function Bs(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 Us(e){let t=e?.code;return t!==void 0&&$s.has(t)}function Si(){return{reflinkedBytes:0,fallbackCopiedBytes:0}}function fe(e,t){t.method==="reflink"?e.reflinkedBytes+=t.bytes:e.fallbackCopiedBytes+=t.bytes}import Ws from"better-sqlite3";import{execFileSync as qs}from"child_process";import{existsSync as Hs,readdirSync as zs}from"fs";import{extname as pt,join as Js}from"path";function oe(e={}){return{id:"auxiliary-documents",facts:["auxiliary-document"],run:t=>bi({projectRoot:t.projectRoot,dbPath:t.dbPath,extensions:e.extensions,onStatus:t.onStatus})}}function bi(e){let t=new Set((e.extensions??Yr).map(o=>o.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!Hs(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let n=ai(e.projectRoot),r=Ys(e.projectRoot,t).filter(o=>!n.isIgnored(o)),i=new Ws(j(e.dbPath));try{let o=Xs(i,r),a=i.prepare(`INSERT OR IGNORE INTO documents (language, relative_path, position_encoding, text)
2
+ VALUES (?, ?, NULL, ?)`),c=i.transaction(u=>{let l=0;for(let p of u){if(o.has(p))continue;let g=Jr(e.projectRoot,p,{inputKind:"auxiliary source file"}),f=a.run(Qs(p),p,g);l+=Number(f.changes)}return l})(r),d={scanned:r.length,inserted:c,existing:r.length-c};return e.onStatus?.(`Augmented SQLite documents with ${c} auxiliary source file${c===1?"":"s"} (${d.existing} already present).`),d}finally{i.close()}}function Ys(e,t){let n=Ks(e,t);if(n)return n;let r=[],i=o=>{let a=o?Js(e,o):e,s;try{s=zs(a,{withFileTypes:!0})}catch{return}for(let c of s){if(Kr.has(c.name))continue;let d=o?`${o}/${c.name}`:c.name;if(c.isDirectory()){i(d);continue}t.has(pt(c.name).toLowerCase())&&r.push(d)}};return i(""),r.sort()}function Ks(e,t){try{return qs("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:3e4,killSignal:"SIGKILL"}).split(`
3
+ `).filter(r=>r&&t.has(pt(r).toLowerCase())).sort()}catch{return null}}function Xs(e,t){let n=new Set,r=500;for(let i=0;i<t.length;i+=r){let o=t.slice(i,i+r),a=e.prepare(`SELECT relative_path FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let s of a)n.add(s.relative_path)}return n}function Qs(e){return pt(e).toLowerCase()===".vue"?"vue":pt(e).replace(/^\./,"").toLowerCase()||"source"}import{dirname as Zs,join as ec}from"path";function Ri(e={}){return{id:"runtime-boundaries",facts:["runtime-boundary-observation","runtime-boundary-link"],run:({projectRoot:t,dbPath:n,onStatus:r})=>{let i=new J({projectRoot:t,dbPath:n,indexPath:e.indexPath??ec(Zs(n),"index.scip")}),o,a=!1,s=!1;try{let d=e.reuseExisting||e.affectedFiles?ui(i):null;e.reuseExisting&&d?.extractorVersion===si?(o=d,a=!0):(o=ci(i,{...d?{previousGraph:d}:{},...e.affectedFiles?{affectedFiles:e.affectedFiles}:{}}),s=(o.coverage.filesReused??0)>0)}finally{i.close()}a||di(n,o);let c={reused:a,incrementallyUpdated:s,observations:o.observations.length,links:o.links.length,frontiers:o.frontiers.length,filesScanned:o.coverage.filesScanned,errors:o.coverage.extractionErrors.length,phases:o.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-(o.coverage.filesReused??0)} file(s) extracted, ${o.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).`),!a&&o.coverage.phases&&r?.(`Runtime-boundary phases: ${o.coverage.phases.map(d=>`${d.id} ${d.durationMs.toFixed(0)}ms`).join(", ")}.`),c}}}import{createHash as nc}from"crypto";import{existsSync as rc}from"fs";import{dirname as ic,join as Ii}from"path";function fn(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 ft(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),o=fn(e),a=new Set(o.reasons);return r.some(s=>!i.has(s))&&a.add("changed-file-outside-project"),t===null?(a.add("dependency-graph-unavailable"),xi(r,i,a)):a.size>0?xi(r,i,a):{mode:"closure",changedFiles:r,affectedFiles:tc(r,t,i),reasons:[]}}function xi(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function tc(e,t,n){let r=new Map;for(let[a,s]of t)if(n.has(a))for(let c of s){if(!n.has(c))continue;let d=r.get(c)??new Set;d.add(a),r.set(c,d)}let i=new Set(e),o=[...e];for(let a=0;a<o.length;a+=1){let s=o[a];if(s!==void 0)for(let c of r.get(s)??[])i.has(c)||(i.add(c),o.push(c))}return[...i].sort()}var oc="<global-symbols>";function ac(e){let t=[];for(let n of e.all(`
4
4
  SELECT relative_path, language, position_encoding, text
5
5
  FROM documents
6
6
  `))t.push({relativePath:n.relative_path,kind:"document",values:[n.language,n.position_encoding,n.text]});for(let n of e.all(`
@@ -27,7 +27,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
27
27
  FROM defn_enclosing_ranges r
28
28
  JOIN documents d ON d.id = r.document_id
29
29
  JOIN global_symbols g ON g.id = r.symbol_id
30
- `))t.push({relativePath:n.relative_path,kind:"definition",values:fn(n,[n.start_line,n.start_char,n.end_line,n.end_char])});for(let n of e.all(`
30
+ `))t.push({relativePath:n.relative_path,kind:"definition",values:gn(n,[n.start_line,n.start_char,n.end_line,n.end_char])});for(let n of e.all(`
31
31
  SELECT d.relative_path,
32
32
  c.chunk_index,
33
33
  m.role,
@@ -42,7 +42,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
42
42
  JOIN chunks c ON c.id = m.chunk_id
43
43
  JOIN documents d ON d.id = c.document_id
44
44
  JOIN global_symbols g ON g.id = m.symbol_id
45
- `))t.push({relativePath:n.relative_path,kind:"mention",values:fn(n,[n.chunk_index,n.role])});for(let n of e.all(`
45
+ `))t.push({relativePath:n.relative_path,kind:"mention",values:gn(n,[n.chunk_index,n.role])});for(let n of e.all(`
46
46
  SELECT g.symbol,
47
47
  g.display_name,
48
48
  g.kind,
@@ -56,8 +56,8 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
56
56
  ) AND NOT EXISTS (
57
57
  SELECT 1 FROM mentions m WHERE m.symbol_id = g.id
58
58
  )
59
- `))t.push({relativePath:tc,kind:"global-symbol",values:fn(n)});return rc(t)}function rc(e){let t=new Map;for(let r of e){let i=JSON.stringify([r.kind,r.values]),o=t.get(r.relativePath)??[];o.push(i),t.set(r.relativePath,o)}let n=new Map;for(let[r,i]of[...t].sort(([o],[a])=>o.localeCompare(a))){let o=Qs("sha256");for(let a of i.sort())o.update(String(Buffer.byteLength(a))),o.update(":"),o.update(a),o.update(`
60
- `);n.set(r,o.digest("hex"))}return n}function ic(e,t){let n=[],r=[],i=[],o=[],a=new Set([...e.keys(),...t.keys()]);for(let s of[...a].sort()){let c=e.get(s),d=t.get(s);c===void 0?n.push(s):d===void 0?i.push(s):c!==d?r.push(s):o.push(s)}return{addedFiles:n,modifiedFiles:r,deletedFiles:i,changedFiles:[...n,...r,...i].sort(),unchangedFiles:o}}function gn(e,t,n){let r=new Set(e.affectedFiles),i=new Set(t.changedFiles),o=e.mode==="full-project"?[]:t.changedFiles.filter(c=>!r.has(c)),a=e.affectedFiles.filter(c=>!i.has(c)).sort(),s=t.changedFiles.length-o.length;return{passed:o.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:o,extraFiles:a}}function mn(e,t=uc){let n=t.wallNow===void 0&&t.monotonicNow===void 0,r=t.monotonicNow??t.now,i=t.wallNow??t.now,o=r(),a=(d,u)=>{let l=r();return wi(e.refreshResult,d,n?l:i(),Math.max(0,l-o),u)};if(!t.databaseExists(e.previousDbPath))return a("prior-index-unavailable");if(!t.databaseExists(e.candidateDbPath))return a("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 d=[...new Set([...t.indexedPaths(s),...t.indexedPaths(c)])].sort(),u=Ze(e.previousSnapshot,e.currentSnapshot),l=new Set(d),p=u.changes.length>0&&!pn(u).fullProject&&u.changes.every(b=>l.has(b.path)),g=ft(u,p?t.dependencyGraph(s):new Map,d),f=ic(t.factDigests(s),t.factDigests(c)),h=r();return{version:1,status:"evaluated",refreshResult:e.refreshResult,recordedAt:new Date(n?h:i()).toISOString(),durationMs:Math.max(0,h-o),manifest:u,plan:g,comparison:f,evaluation:gn(g,f,d.length)}}catch(d){return a("oracle-error",d instanceof Error?d.message:String(d))}finally{Ii(s),Ii(c)}}function Pi(e,t,n,r=Date.now()){return wi(e,t,r,0,n)}function oc(e){let t=ec(e);return{latestPath:xi(t,"affected-shadow-latest.json"),historyPath:xi(t,"affected-shadow.jsonl")}}function vi(e,t,n=lc){let r=oc(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var ac=8*1024*1024,sc=fi;function cc(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 dc(e,t,n=ac){gi(e,cc(t),{maxSegmentBytes:n,previousSuffix:sc})}function fn(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 uc={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:I,databaseExists:e=>Zs(e),openDatabase:(e,t,n)=>new J({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>at(e),dependencyGraph:e=>ut(e),factDigests:e=>nc(e)},lc={appendHistory:dc,writeLatest:(e,t)=>ie(e,t,{spacing:2,trailingNewline:!0})};function wi(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 Ii(e){try{e?.close()}catch{}}import{readdirSync as pc}from"fs";import{isAbsolute as Ei,join as fc,resolve as gc}from"path";var gt="@sourcegraph/scip-typescript@0.4.0",ki="scip-python-plus@0.7.5",Ti="github.com/sourcegraph/scip-go@v0.2.7",Di="scip-dotnet@0.2.14",mc="scip_dart@1.6.2",Ai={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",r]}:t?{binary:n,args:["index","--pnpm-workspaces","--output",e,"--no-progress-bar"]}:{binary:n,args:["index","--output",e,"--no-progress-bar"]},markerFiles:[...O.typescript],installMethods:[{label:"npm",identity:gt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",gt]}],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"]}),markerFiles:[...O.javascript],installMethods:[{label:"npm",identity:gt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",gt]}],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:[...O.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:[...O.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:[...O.kotlin],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:Pe.language,indexerBinary:Pe.indexerBinary,checkCommand:`${Pe.indexerBinary} --version`,indexArgs:({outputPath:e})=>({binary:Pe.indexerBinary,args:["scip",".","--output",e]}),markerFiles:[...O.rust],installMethods:[],installUrl:Pe.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:[...O.python],installMethods:[{label:"npm",identity:ki,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",ki]}],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",Ei(r)?r:gc(e,r)),{binary:n,args:i}},markerFiles:[...O.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:[...O.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:[...O.go],installMethods:[{label:"go install",identity:Ti,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Ti]}],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:[...O.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:[...O.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",Fi(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.csharp],installMethods:[{label:"dotnet",identity:Di,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",Fi(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.vb],installMethods:[{label:"dotnet",identity:Di,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:[...O.dart],installMethods:[{label:"dart pub",identity:mc,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})=>Ei(e)?{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",e]}:{binary:e,args:[]},defaultOutputPath:"index.scip",markerFiles:[...O.php],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function Oi(e){if(!(e.projectPath||e.pnpmWorkspaces)){if(e.language==="typescript")return"{}";if(e.language==="javascript")return'{"compilerOptions":{"allowJs":true}}'}}function mt(e){return Ai[e]}function Fi(e,t){let n;try{n=pc(e)}catch{return null}for(let r of t)for(let i of n)if(i.endsWith(r))return fc(e,i);return null}import{writeFileSync as yn}from"fs";import{create as we}from"@bufbuild/protobuf";import{deserializeSCIP as Sn,serializeSCIP as bn,DocumentSchema as Ic,IndexSchema as Li,MetadataSchema as ji,SymbolInformationSchema as Pc}from"@c4312/scip";import{writeFileSync as hc}from"fs";import{create as Ci}from"@bufbuild/protobuf";import{deserializeSCIP as yc,DocumentSchema as Sc,IndexSchema as bc,serializeSCIP as Rc,SymbolRole as xc}from"@c4312/scip";function _i(e){let t;try{t=yc(D(e,{inputKind:"SCIP sanitization input",maxBytes:_}))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let n=hn(t);return n.touchedDocuments>0&&hc(e,Buffer.from(Rc(n.index))),{removedDefinitionOccurrences:n.removedDefinitionOccurrences,touchedDocuments:n.touchedDocuments}}function hn(e){let t=new Set,n=new Map;for(let a of e.documents){n.set(a,Dr(a.relativePath));for(let s of a.symbols)s.symbol&&t.add(s.symbol)}for(let a of e.externalSymbols)a.symbol&&t.add(a.symbol);let r=0,i=0,o=[];for(let a of e.documents){let s=n.get(a),c=a.occurrences.filter(d=>(d.symbolRoles&xc.Definition)===0||t.has(d.symbol)?!0:(r+=1,!1));if(s===a.relativePath&&c.length===a.occurrences.length){o.push(a);continue}i+=1,o.push(Ci(Sc,{language:a.language,relativePath:s,occurrences:c,symbols:a.symbols,text:a.text,positionEncoding:a.positionEncoding}))}return{index:i===0?e:Ci(bc,{metadata:e.metadata,documents:o,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:r,touchedDocuments:i}}function Rn(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=wc(e),n=Ec(e.flatMap(i=>i.documents??[])),r=Gi(e.flatMap(i=>i.externalSymbols??[]));return we(Li,{metadata:t,documents:n,externalSymbols:r})}function xn(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Sn(D(i,{inputKind:"SCIP merge input",maxBytes:_}))),r=Rn(n);return yn(t,Buffer.from(bn(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Mi(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Sn(D(i,{inputKind:"SCIP merge input",maxBytes:_}))),r=hn(Rn(n));return yn(t,Buffer.from(bn(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function vc(e,t,n){let r=e.metadata;if(!r)throw new Error("Cannot rebase a SCIP index without metadata");if(!be(r.projectRoot,t))throw new Error(`Cannot rebase SCIP project root: expected ${t}, got ${r.projectRoot}`);return we(Li,{metadata:we(ji,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function Ni(e,t,n){let r=Sn(D(e,{inputKind:"SCIP normalization input",maxBytes:_})),i=vc(r,t,n);yn(e,Buffer.from(bn(i)))}function wc(e){let t=e[0]?.metadata;if(!t)return;let n=t.projectRoot;for(let i of e.slice(1)){let o=i.metadata?.projectRoot;if(n&&o&&!be(o,n))throw new Error(`Cannot merge SCIP indexes with different project roots: ${n} vs ${o}`)}let r=n&&Tr(n);return r===n?t:we(ji,{...t,projectRoot:r})}function Ec(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath);if(!r){t.set(n.relativePath,n);continue}t.set(n.relativePath,we(Ic,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:kc([...r.occurrences,...n.occurrences]),symbols:Gi([...r.symbols,...n.symbols]),text:Dc(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function kc(e){let t=new Set,n=[];for(let r of e){let i=JSON.stringify(r);t.has(i)||(t.add(i),n.push(r))}return n}function Gi(e){let t=new Map;for(let n of e){let r=t.get(n.symbol);if(!r){t.set(n.symbol,n);continue}t.set(n.symbol,we(Pc,{symbol:r.symbol,documentation:Fc([...r.documentation,...n.documentation]),relationships:Tc([...r.relationships,...n.relationships]),kind:r.kind||n.kind,displayName:r.displayName||n.displayName,enclosingSymbol:r.enclosingSymbol||n.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??n.signatureDocumentation}))}return[...t.values()]}function Tc(e){let t=new Set,n=[];for(let r of e){let i=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");t.has(i)||(t.add(i),n.push(r))}return n}function Dc(e,t){return e?t?e.length>=t.length?e:t:e:t}function Fc(e){return[...new Set(e)]}import{createHash as Ac}from"crypto";import{existsSync as $i,rmSync as Vi}from"fs";import{resolve as Oc}from"path";import Wi from"better-sqlite3";var Cc={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}]},_c={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 Ui(e){let t=I(),n=Lc(e.affectedFiles);if(jc(e.previousDbPath,e.miniDbPath,e.candidateDbPath),Vi(e.candidateDbPath,{force:!0}),!$i(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!$i(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");Bi(e.previousDbPath,"previous SQLite generation",!1),Bi(e.miniDbPath,"incremental SQLite mini database");let r=pe(e.previousDbPath,e.candidateDbPath);e.writeTelemetry&&fe(e.writeTelemetry,r);let i=null;try{i=new Wi(j(e.candidateDbPath),{fileMustExist:!0}),i.pragma("busy_timeout = 5000"),i.pragma("foreign_keys = ON"),i.prepare("ATTACH DATABASE ? AS incremental").run(j(e.miniDbPath)),In(i,"main","candidate SQLite generation"),In(i,"incremental","incremental SQLite mini database"),Mc(i,n),Nc(i,n.length);let o=Pn(i,"main",!0),a=ae(i,"SELECT COUNT(*) AS value FROM main.documents");i.transaction(()=>{Gc(i),$c(i),Vc(i),e.onStage?.("after-delete"),Bc(i),e.onStage?.("after-symbol-reconciliation"),qc(i),e.onStage?.("after-insert"),Wc(i),Uc(i,n.length,a),e.onStage?.("before-commit")}).immediate(),Hi(i,"main","candidate SQLite generation");let d=[...Hc(i)].filter(([u,l])=>o.get(u)!==l).map(([u])=>u).sort();return i.exec("DETACH DATABASE incremental"),i.close(),i=null,{candidateDbPath:e.candidateDbPath,affectedDocumentCount:n.length,changedDocumentPaths:d,durationMs:I()-t}}catch(o){try{i?.close()}finally{Vi(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${o instanceof Error?o.message:String(o)}`,{cause:o})}}function Lc(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 jc(e,t,n){let r=[e,t,n].map(i=>Oc(i));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function Bi(e,t,n=!0){let r=new Wi(j(e),{readonly:!0,fileMustExist:!0});try{In(r,"main",t),n&&Hi(r,"main",t)}finally{r.close()}}function In(e,t,n){for(let[r,i]of Object.entries(Cc)){let a=e.prepare(`PRAGMA ${t}.table_info('${r}')`).all().map(({name:s,type:c,notnull:d,pk:u})=>({name:s,type:c.toUpperCase(),notnull:d,pk:u}));if(JSON.stringify(a)!==JSON.stringify(i))throw new Error(`${n} schema changed for table ${r}`)}for(let[r,i]of Object.entries(_c)){let o=e.prepare(`SELECT tbl_name FROM ${t}.sqlite_master WHERE type = 'index' AND name = ?`).get(r),a=e.prepare(`PRAGMA ${t}.index_info('${r}')`).all().map(s=>s.name);if(o?.tbl_name!==i.table||JSON.stringify(a)!==JSON.stringify(i.columns))throw new Error(`${n} schema changed for index ${r}`)}qi(e,t,"documents",["relative_path"],n),qi(e,t,"global_symbols",["symbol"],n)}function qi(e,t,n,r,i){if(!e.prepare(`PRAGMA ${t}.index_list('${n}')`).all().some(s=>{if(s.unique!==1)return!1;let c=e.prepare(`PRAGMA ${t}.index_info('${s.name}')`).all().map(d=>d.name);return JSON.stringify(c)===JSON.stringify(r)}))throw new Error(`${i} lost the unique ${n}(${r.join(", ")}) constraint`)}function Hi(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 Mc(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 o of i)n.run(o)})(t)}function Nc(e,t){let n=ae(e,"SELECT COUNT(*) AS value FROM incremental.documents"),r=ae(e,`SELECT COUNT(*) AS value
59
+ `))t.push({relativePath:oc,kind:"global-symbol",values:gn(n)});return sc(t)}function sc(e){let t=new Map;for(let r of e){let i=JSON.stringify([r.kind,r.values]),o=t.get(r.relativePath)??[];o.push(i),t.set(r.relativePath,o)}let n=new Map;for(let[r,i]of[...t].sort(([o],[a])=>o.localeCompare(a))){let o=nc("sha256");for(let a of i.sort())o.update(String(Buffer.byteLength(a))),o.update(":"),o.update(a),o.update(`
60
+ `);n.set(r,o.digest("hex"))}return n}function cc(e,t){let n=[],r=[],i=[],o=[],a=new Set([...e.keys(),...t.keys()]);for(let s of[...a].sort()){let c=e.get(s),d=t.get(s);c===void 0?n.push(s):d===void 0?i.push(s):c!==d?r.push(s):o.push(s)}return{addedFiles:n,modifiedFiles:r,deletedFiles:i,changedFiles:[...n,...r,...i].sort(),unchangedFiles:o}}function mn(e,t,n){let r=new Set(e.affectedFiles),i=new Set(t.changedFiles),o=e.mode==="full-project"?[]:t.changedFiles.filter(c=>!r.has(c)),a=e.affectedFiles.filter(c=>!i.has(c)).sort(),s=t.changedFiles.length-o.length;return{passed:o.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:o,extraFiles:a}}function hn(e,t=gc){let n=t.wallNow===void 0&&t.monotonicNow===void 0,r=t.monotonicNow??t.now,i=t.wallNow??t.now,o=r(),a=(d,u)=>{let l=r();return wi(e.refreshResult,d,n?l:i(),Math.max(0,l-o),u)};if(!t.databaseExists(e.previousDbPath))return a("prior-index-unavailable");if(!t.databaseExists(e.candidateDbPath))return a("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 d=[...new Set([...t.indexedPaths(s),...t.indexedPaths(c)])].sort(),u=Ze(e.previousSnapshot,e.currentSnapshot),l=new Set(d),p=u.changes.length>0&&!fn(u).fullProject&&u.changes.every(b=>l.has(b.path)),g=ft(u,p?t.dependencyGraph(s):new Map,d),f=cc(t.factDigests(s),t.factDigests(c)),h=r();return{version:1,status:"evaluated",refreshResult:e.refreshResult,recordedAt:new Date(n?h:i()).toISOString(),durationMs:Math.max(0,h-o),manifest:u,plan:g,comparison:f,evaluation:mn(g,f,d.length)}}catch(d){return a("oracle-error",d instanceof Error?d.message:String(d))}finally{Pi(s),Pi(c)}}function vi(e,t,n,r=Date.now()){return wi(e,t,r,0,n)}function dc(e){let t=ic(e);return{latestPath:Ii(t,"affected-shadow-latest.json"),historyPath:Ii(t,"affected-shadow.jsonl")}}function Ei(e,t,n=mc){let r=dc(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var uc=8*1024*1024,lc=li;function pc(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 fc(e,t,n=uc){pi(e,pc(t),{maxSegmentBytes:n,previousSuffix:lc})}function gn(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 gc={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:I,databaseExists:e=>rc(e),openDatabase:(e,t,n)=>new J({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>at(e),dependencyGraph:e=>ut(e),factDigests:e=>ac(e)},mc={appendHistory:fc,writeLatest:(e,t)=>ie(e,t,{spacing:2,trailingNewline:!0})};function wi(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 Pi(e){try{e?.close()}catch{}}import{readdirSync as hc}from"fs";import{isAbsolute as Ti,join as yc,resolve as Sc}from"path";var gt="@sourcegraph/scip-typescript@0.4.0",ki="scip-python-plus@0.7.5",Di="github.com/sourcegraph/scip-go@v0.2.7",Fi="scip-dotnet@0.2.14",bc="scip_dart@1.6.2",Rc=3,xc=new Set(["bin","obj","node_modules"]),Oi={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",r]}:t?{binary:n,args:["index","--pnpm-workspaces","--output",e,"--no-progress-bar"]}:{binary:n,args:["index","--output",e,"--no-progress-bar"]},markerFiles:[...O.typescript],installMethods:[{label:"npm",identity:gt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",gt]}],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"]}),markerFiles:[...O.javascript],installMethods:[{label:"npm",identity:gt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",gt]}],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:[...O.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:[...O.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:[...O.kotlin],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:Ie.language,indexerBinary:Ie.indexerBinary,checkCommand:`${Ie.indexerBinary} --version`,indexArgs:({outputPath:e})=>({binary:Ie.indexerBinary,args:["scip",".","--output",e]}),markerFiles:[...O.rust],installMethods:[],installUrl:Ie.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:[...O.python],installMethods:[{label:"npm",identity:ki,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",ki]}],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",Ti(r)?r:Sc(e,r)),{binary:n,args:i}},markerFiles:[...O.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:[...O.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:[...O.go],installMethods:[{label:"go install",identity:Di,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Di]}],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:[...O.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:[...O.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",_i(e,[".sln",".slnx",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.csharp],installMethods:[{label:"dotnet",identity:Fi,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",_i(e,[".sln",".slnx",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.vb],installMethods:[{label:"dotnet",identity:Fi,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:[...O.dart],installMethods:[{label:"dart pub",identity:bc,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})=>Ti(e)?{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",e]}:{binary:e,args:[]},defaultOutputPath:"index.scip",markerFiles:[...O.php],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function Ai(e){if(!(e.projectPath||e.pnpmWorkspaces)){if(e.language==="typescript")return"{}";if(e.language==="javascript")return'{"compilerOptions":{"allowJs":true}}'}}function mt(e){return Oi[e]}function _i(e,t){let n=[e];for(let r=0;r<=Rc&&n.length>0;r++){let i=[],o=[];for(let a of n){let s;try{s=hc(a,{withFileTypes:!0})}catch{continue}for(let c of s){let d=yc(a,c.name);c.isDirectory()?!c.name.startsWith(".")&&!xc.has(c.name)&&o.push(d):i.push(d)}}for(let a of t){let s=i.filter(c=>c.endsWith(a)).sort()[0];if(s)return s}n=o.sort()}return null}import{writeFileSync as yn}from"fs";import{create as ve}from"@bufbuild/protobuf";import{deserializeSCIP as Sn,serializeSCIP as bn,DocumentSchema as Ec,IndexSchema as Li,MetadataSchema as ji,SymbolInformationSchema as wc}from"@c4312/scip";import{create as Ci}from"@bufbuild/protobuf";import{DocumentSchema as Ic,IndexSchema as Pc,SymbolRole as vc}from"@c4312/scip";function ht(e){let t=new Set,n=new Map;for(let a of e.documents){n.set(a,Dr(a.relativePath));for(let s of a.symbols)s.symbol&&t.add(s.symbol)}for(let a of e.externalSymbols)a.symbol&&t.add(a.symbol);let r=0,i=0,o=[];for(let a of e.documents){let s=n.get(a),c=a.occurrences.filter(d=>(d.symbolRoles&vc.Definition)===0||t.has(d.symbol)?!0:(r+=1,!1));if(s===a.relativePath&&c.length===a.occurrences.length){o.push(a);continue}i+=1,o.push(Ci(Ic,{language:a.language,relativePath:s,occurrences:c,symbols:a.symbols,text:a.text,positionEncoding:a.positionEncoding}))}return{index:i===0?e:Ci(Pc,{metadata:e.metadata,documents:o,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:r,touchedDocuments:i}}function Rn(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=kc(e),n=Dc(e.flatMap(i=>i.documents??[])),r=Gi(e.flatMap(i=>i.externalSymbols??[]));return ve(Li,{metadata:t,documents:n,externalSymbols:r})}function xn(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Sn(D(i,{inputKind:"SCIP merge input",maxBytes:C}))),r=Rn(n);return yn(t,Buffer.from(bn(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Ni(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Sn(D(i,{inputKind:"SCIP merge input",maxBytes:C}))),r=ht(Rn(n));return yn(t,Buffer.from(bn(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function Tc(e,t,n){let r=e.metadata;if(!r)throw new Error("Cannot rebase a SCIP index without metadata");if(!be(r.projectRoot,t))throw new Error(`Cannot rebase SCIP project root: expected ${t}, got ${r.projectRoot}`);return ve(Li,{metadata:ve(ji,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function Mi(e,t,n){let r=Sn(D(e,{inputKind:"SCIP normalization input",maxBytes:C})),i=Tc(r,t,n);yn(e,Buffer.from(bn(i)))}function kc(e){let t=e[0]?.metadata;if(!t)return;let n=t.projectRoot;for(let i of e.slice(1)){let o=i.metadata?.projectRoot;if(n&&o&&!be(o,n))throw new Error(`Cannot merge SCIP indexes with different project roots: ${n} vs ${o}`)}let r=n&&kr(n);return r===n?t:ve(ji,{...t,projectRoot:r})}function Dc(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath);if(!r){t.set(n.relativePath,n);continue}t.set(n.relativePath,ve(Ec,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:Fc([...r.occurrences,...n.occurrences]),symbols:Gi([...r.symbols,...n.symbols]),text:Oc(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function Fc(e){let t=new Set,n=[];for(let r of e){let i=JSON.stringify(r);t.has(i)||(t.add(i),n.push(r))}return n}function Gi(e){let t=new Map;for(let n of e){let r=t.get(n.symbol);if(!r){t.set(n.symbol,n);continue}t.set(n.symbol,ve(wc,{symbol:r.symbol,documentation:Ac([...r.documentation,...n.documentation]),relationships:_c([...r.relationships,...n.relationships]),kind:r.kind||n.kind,displayName:r.displayName||n.displayName,enclosingSymbol:r.enclosingSymbol||n.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??n.signatureDocumentation}))}return[...t.values()]}function _c(e){let t=new Set,n=[];for(let r of e){let i=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");t.has(i)||(t.add(i),n.push(r))}return n}function Oc(e,t){return e?t?e.length>=t.length?e:t:e:t}function Ac(e){return[...new Set(e)]}import{createHash as Cc}from"crypto";import{existsSync as $i,rmSync as Vi}from"fs";import{resolve as Lc}from"path";import Wi from"better-sqlite3";var jc={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}]},Nc={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 qi(e){let t=I(),n=Mc(e.affectedFiles);if(Gc(e.previousDbPath,e.miniDbPath,e.candidateDbPath),Vi(e.candidateDbPath,{force:!0}),!$i(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!$i(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");Bi(e.previousDbPath,"previous SQLite generation",!1),Bi(e.miniDbPath,"incremental SQLite mini database");let r=pe(e.previousDbPath,e.candidateDbPath);e.writeTelemetry&&fe(e.writeTelemetry,r);let i=null;try{i=new Wi(j(e.candidateDbPath),{fileMustExist:!0}),i.pragma("busy_timeout = 5000"),i.pragma("foreign_keys = ON"),i.prepare("ATTACH DATABASE ? AS incremental").run(j(e.miniDbPath)),In(i,"main","candidate SQLite generation"),In(i,"incremental","incremental SQLite mini database"),$c(i,n),Vc(i,n.length);let o=Pn(i,"main",!0),a=ae(i,"SELECT COUNT(*) AS value FROM main.documents");i.transaction(()=>{Bc(i),Uc(i),Wc(i),e.onStage?.("after-delete"),qc(i),e.onStage?.("after-symbol-reconciliation"),Hc(i),e.onStage?.("after-insert"),zc(i),Jc(i,n.length,a),e.onStage?.("before-commit")}).immediate(),Hi(i,"main","candidate SQLite generation");let d=[...Yc(i)].filter(([u,l])=>o.get(u)!==l).map(([u])=>u).sort();return i.exec("DETACH DATABASE incremental"),i.close(),i=null,{candidateDbPath:e.candidateDbPath,affectedDocumentCount:n.length,changedDocumentPaths:d,durationMs:I()-t}}catch(o){try{i?.close()}finally{Vi(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${o instanceof Error?o.message:String(o)}`,{cause:o})}}function Mc(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 Gc(e,t,n){let r=[e,t,n].map(i=>Lc(i));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function Bi(e,t,n=!0){let r=new Wi(j(e),{readonly:!0,fileMustExist:!0});try{In(r,"main",t),n&&Hi(r,"main",t)}finally{r.close()}}function In(e,t,n){for(let[r,i]of Object.entries(jc)){let a=e.prepare(`PRAGMA ${t}.table_info('${r}')`).all().map(({name:s,type:c,notnull:d,pk:u})=>({name:s,type:c.toUpperCase(),notnull:d,pk:u}));if(JSON.stringify(a)!==JSON.stringify(i))throw new Error(`${n} schema changed for table ${r}`)}for(let[r,i]of Object.entries(Nc)){let o=e.prepare(`SELECT tbl_name FROM ${t}.sqlite_master WHERE type = 'index' AND name = ?`).get(r),a=e.prepare(`PRAGMA ${t}.index_info('${r}')`).all().map(s=>s.name);if(o?.tbl_name!==i.table||JSON.stringify(a)!==JSON.stringify(i.columns))throw new Error(`${n} schema changed for index ${r}`)}Ui(e,t,"documents",["relative_path"],n),Ui(e,t,"global_symbols",["symbol"],n)}function Ui(e,t,n,r,i){if(!e.prepare(`PRAGMA ${t}.index_list('${n}')`).all().some(s=>{if(s.unique!==1)return!1;let c=e.prepare(`PRAGMA ${t}.index_info('${s.name}')`).all().map(d=>d.name);return JSON.stringify(c)===JSON.stringify(r)}))throw new Error(`${i} lost the unique ${n}(${r.join(", ")}) constraint`)}function Hi(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 $c(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 o of i)n.run(o)})(t)}function Vc(e,t){let n=ae(e,"SELECT COUNT(*) AS value FROM incremental.documents"),r=ae(e,`SELECT COUNT(*) AS value
61
61
  FROM main.documents d
62
62
  JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`),i=e.prepare(`SELECT p.relative_path
63
63
  FROM temp.incremental_affected_paths p
@@ -67,7 +67,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
67
67
  FROM incremental.documents d
68
68
  LEFT JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
69
69
  WHERE p.relative_path IS NULL
70
- LIMIT 1`).pluck().get();if(n!==t||r!==t||i!==void 0||o!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set")}function Gc(e){e.exec(`
70
+ LIMIT 1`).pluck().get();if(n!==t||r!==t||i!==void 0||o!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set")}function Bc(e){e.exec(`
71
71
  CREATE TEMP TABLE incremental_old_defined_symbols (symbol TEXT PRIMARY KEY) WITHOUT ROWID;
72
72
  INSERT OR IGNORE INTO temp.incremental_old_defined_symbols(symbol)
73
73
  SELECT g.symbol
@@ -94,7 +94,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
94
94
  FROM incremental.mentions m
95
95
  JOIN incremental.global_symbols g ON g.id = m.symbol_id
96
96
  WHERE m.role = 1;
97
- `)}function $c(e){let t=e.prepare(`WITH changed_symbols AS (
97
+ `)}function Uc(e){let t=e.prepare(`WITH changed_symbols AS (
98
98
  SELECT symbol FROM temp.incremental_old_defined_symbols
99
99
  UNION
100
100
  SELECT symbol FROM temp.incremental_new_defined_symbols
@@ -117,7 +117,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
117
117
  SELECT u.symbol
118
118
  FROM unaffected_definitions u
119
119
  JOIN changed_symbols c ON c.symbol = u.symbol
120
- LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function Vc(e){e.exec(`
120
+ LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function Wc(e){e.exec(`
121
121
  DELETE FROM main.mentions
122
122
  WHERE chunk_id IN (
123
123
  SELECT c.id
@@ -139,7 +139,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
139
139
  );
140
140
  DELETE FROM main.documents
141
141
  WHERE relative_path IN (SELECT relative_path FROM temp.incremental_affected_paths);
142
- `)}function Bc(e){e.exec(`
142
+ `)}function qc(e){e.exec(`
143
143
  UPDATE main.global_symbols
144
144
  SET display_name = NULL,
145
145
  kind = NULL,
@@ -181,7 +181,7 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
181
181
  WHERE source.symbol = main.global_symbols.symbol
182
182
  )
183
183
  WHERE symbol IN (SELECT symbol FROM temp.incremental_new_defined_symbols);
184
- `)}function qc(e){let t=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.documents"),n=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.chunks"),r=ae(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)
184
+ `)}function Hc(e){let t=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.documents"),n=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.chunks"),r=ae(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)
185
185
  SELECT id + ?, language, relative_path, position_encoding, text
186
186
  FROM incremental.documents`).run(t),e.prepare(`INSERT INTO main.chunks(id, document_id, chunk_index, start_line, end_line, occurrences)
187
187
  SELECT id + ?, document_id + ?, chunk_index, start_line, end_line, occurrences
@@ -196,15 +196,15 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
196
196
  r.start_line, r.start_char, r.end_line, r.end_char
197
197
  FROM incremental.defn_enclosing_ranges r
198
198
  JOIN incremental.global_symbols source ON source.id = r.symbol_id
199
- JOIN main.global_symbols target ON target.symbol = source.symbol`).run(r,t)}function Wc(e){e.exec(`
199
+ JOIN main.global_symbols target ON target.symbol = source.symbol`).run(r,t)}function zc(e){e.exec(`
200
200
  DELETE FROM main.global_symbols
201
201
  WHERE NOT EXISTS (SELECT 1 FROM main.mentions m WHERE m.symbol_id = main.global_symbols.id)
202
202
  AND NOT EXISTS (
203
203
  SELECT 1 FROM main.defn_enclosing_ranges r WHERE r.symbol_id = main.global_symbols.id
204
204
  );
205
- `)}function Uc(e,t,n){let r=ae(e,"SELECT COUNT(*) AS value FROM main.documents"),i=ae(e,`SELECT COUNT(*) AS value
205
+ `)}function Jc(e,t,n){let r=ae(e,"SELECT COUNT(*) AS value FROM main.documents"),i=ae(e,`SELECT COUNT(*) AS value
206
206
  FROM main.documents d
207
- 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 o=e.prepare("SELECT relative_path FROM main.documents GROUP BY relative_path HAVING COUNT(*) > 1 LIMIT 1").pluck().get(),a=e.prepare("SELECT symbol FROM main.global_symbols GROUP BY symbol HAVING COUNT(*) > 1 LIMIT 1").pluck().get();if(o!==void 0||a!==void 0)throw new Error("candidate SQLite generation contains duplicate document paths or symbols")}function Hc(e){let t=Pn(e,"main",!0),n=Pn(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 Pn(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
207
+ 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 o=e.prepare("SELECT relative_path FROM main.documents GROUP BY relative_path HAVING COUNT(*) > 1 LIMIT 1").pluck().get(),a=e.prepare("SELECT symbol FROM main.global_symbols GROUP BY symbol HAVING COUNT(*) > 1 LIMIT 1").pluck().get();if(o!==void 0||a!==void 0)throw new Error("candidate SQLite generation contains duplicate document paths or symbols")}function Yc(e){let t=Pn(e,"main",!0),n=Pn(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 Pn(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
208
208
  FROM ${t}.documents d
209
209
  ${r}
210
210
  ORDER BY d.relative_path`).all(),o=e.prepare(`SELECT d.relative_path, c.chunk_index, c.start_line, c.end_line, hex(c.occurrences) AS occurrences
@@ -226,12 +226,54 @@ import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h
226
226
  JOIN ${t}.documents d ON d.id = c.document_id
227
227
  JOIN ${t}.global_symbols g ON g.id = m.symbol_id
228
228
  ${r}
229
- ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),c=new Map;for(let[u,l]of Object.entries({documents:i,chunks:o,definitions:a,mentions:s}))for(let p of l){let g=JSON.stringify([u,p]),f=c.get(p.relative_path)??[];f.push(g),c.set(p.relative_path,f)}let d=new Map;for(let[u,l]of[...c].sort(([p],[g])=>p.localeCompare(g))){let p=Ac("sha256");for(let g of l.sort())p.update(g).update(`
230
- `);d.set(u,p.digest("hex"))}return d}function ae(e,t){return e.prepare(t).get().value}import zc from"better-sqlite3";var ht="idx_mentions_definitions",Jc=["symbol_id","chunk_id"];function vn(e){let t=new zc(j(e)),n=[],r=[],i=[];try{return t.transaction(()=>{Yc(t,n),yt(t,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&zi(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")):yt(t,"idx_global_symbols_symbol")&&i.push("idx_global_symbols_symbol");let o=yt(t,"idx_chunks_doc_id"),a=zi(t,"chunks").some(s=>s.name!=="idx_chunks_doc_id"&&s.columns.length>1&&s.columns[0]==="document_id");o?.join("\0")==="document_id"&&a?(t.exec('DROP INDEX "idx_chunks_doc_id"'),r.push("idx_chunks_doc_id")):o&&i.push("idx_chunks_doc_id"),t.exec("ANALYZE")})(),{added:n,removed:r,retained:i,analyzed:!0}}catch(o){if(o.code==="SQLITE_NOTADB")return{added:[],removed:[],retained:[],analyzed:!1,skippedReason:"not-a-sqlite-database"};throw o}finally{t.close()}}function Yc(e,t){let n=Ji(e,ht);if(n){let r=n.columns.join("\0")===Jc.join("\0"),i=/\bWHERE\s+role\s*=\s*1\b/iu.test(n.sql??"");if(!r||!i||n.table!=="mentions")throw new Error(`${ht} exists with an incompatible definition`);return}e.exec(`CREATE INDEX "${ht}" ON mentions(symbol_id, chunk_id) WHERE role = 1`),t.push(ht)}function zi(e,t){return e.prepare(`PRAGMA index_list('${t.replaceAll("'","''")}')`).all().map(n=>({name:n.name,unique:n.unique===1,columns:yt(e,n.name)??[]}))}function yt(e,t){return Ji(e,t)?.columns??null}function Ji(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{writeFileSync as Kc}from"fs";function q(e,t){let n=performance.now(),r=e.run(t);return{stageId:e.id,facts:e.facts,durationMs:performance.now()-n,result:r}}function Ki(e){let t=e.readFingerprint(),n=Qi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=e.compute();return Zi(e.cachePath,e.readFingerprint(),r),r}async function Xi(e){let t=e.readFingerprint(),n=Qi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=await e.compute();return Zi(e.cachePath,e.readFingerprint(),r),r}function Qi(e,t){try{let n=JSON.parse(w(e,{maxBytes:A,inputKind:"post-index augmentation cache"}));return Yi(n.fingerprint)===Yi(t)?{result:n.result}:null}catch{return null}}function Zi(e,t,n){Kc(e,`${JSON.stringify({updatedAt:new Date().toISOString(),fingerprint:t,result:n},null,2)}
231
- `)}function Yi(e){return JSON.stringify(e)}import{createHash as Xc}from"crypto";import{existsSync as wn,readdirSync as Qc}from"fs";import{dirname as En,join as St,relative as Zc,resolve as kn,sep as eo}from"path";function to(e,t){let n=t.includes("."),r={};for(let o of t)r[o]=[];let i=[];for(let o of e){let a=oo(o.path,t);a?r[a].push(o):n?r["."].push(o):i.push(o)}return{files:r,shared:i}}function no(e,t){let n=new Map;for(let i of e){let o=t[i]?.packageName;o&&n.set(o,i)}let r=new Map;for(let i of e)r.set(i,new Set);for(let i of e){let o=t[i],a=r.get(i);if(!o||o.parseFailed){for(let s of e)s!==i&&a.add(s);continue}for(let s of o.dependencyNames){let c=n.get(s);c&&c!==i&&a.add(c)}for(let s of[...o.pathsTargets,...o.referencesPaths]){let c=oo(s,e);c&&c!==i&&a.add(c)}}return ed(e,r)}function ro(e,t,n){let r={};for(let i of e){let o=new Map;for(let a of t.files[i]??[])o.set(a.path,a);for(let a of n[i]??[])for(let s of t.files[a]??[])o.set(s.path,s);for(let a of t.shared)o.set(a.path,a);r[i]={files:[...o.values()].sort((a,s)=>a.path.localeCompare(s.path))}}return r}function Tn(e){if(e===".")return"root";let t=Xc("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function io(e,t){let n=kn(e),r={};for(let i of t)r[i]=td(n,i);return r}function oo(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 ed(e,t){let n={};for(let r of e){let i=new Set,o=[...t.get(r)??[]];for(;o.length>0;){let a=o.pop();if(!(a===r||i.has(a))){i.add(a);for(let s of t.get(a)??[])s!==r&&!i.has(s)&&o.push(s)}}n[r]=[...i].sort((a,s)=>a.localeCompare(s))}return n}function td(e,t){let n=t==="."?e:St(e,t),r=nd(n),i=rd(n),o=i?id(i,e):{pathsTargets:[],referencesPaths:[],failed:!1};return{packageName:r.name,dependencyNames:r.dependencyNames,pathsTargets:o.pathsTargets,referencesPaths:o.referencesPaths,parseFailed:r.failed||o.failed}}function nd(e){let t=St(e,"package.json");if(!wn(t))return{name:void 0,dependencyNames:[],failed:!1};let n=Dn(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 o of["dependencies","devDependencies","peerDependencies"]){let a=n.value[o];if(a&&typeof a=="object"&&!Array.isArray(a))for(let s of Object.keys(a))i.add(s)}return{name:r,dependencyNames:[...i],failed:!1}}function rd(e){let t=St(e,"tsconfig.json");if(wn(t))return t;let n;try{n=Qc(e).filter(r=>/^tsconfig.*\.json$/.test(r))}catch{return}return n.sort((r,i)=>r.localeCompare(i)),n.length>0?St(e,n[0]):void 0}function id(e,t){let n=Dn(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=od(n.value,e,t),i=ao(e,n.value,t,0);return{pathsTargets:i.pathsTargets,referencesPaths:r,failed:i.failed}}function od(e,t,n){let r=e.references;if(!Array.isArray(r))return[];let i=En(t),o=new Set;for(let a of r){if(!a||typeof a!="object")continue;let s=a.path;if(typeof s!="string"||s.trim()==="")continue;let c=so(s,i,n);c&&o.add(c)}return[...o]}function ao(e,t,n,r){let i=ad(t);if(i)return{pathsTargets:sd(i,En(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let o=cd(t.extends,e,n);if(!o)return{pathsTargets:[],failed:!1};let a=Dn(o);return a.ok?ao(o,a.value,n,r+1):{pathsTargets:[],failed:!0}}function ad(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 sd(e,t,n){let r=new Set;for(let i of Object.values(e))if(Array.isArray(i))for(let o of i){if(typeof o!="string")continue;let a=so(o,t,n);a&&r.add(a)}return[...r]}function cd(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=kn(En(t),r);if(i.endsWith(".json")||(i=`${i}.json`),!i.split(eo).includes("node_modules")&&Bt(n,i)&&wn(i))return i}function so(e,t,n){let r=e.replace(/\/?\*+$/,""),i=kn(t,r===""?".":r);if(!Bt(n,i))return;let a=Zc(n,i).split(eo).join("/");return a===""?".":a}function dd(e){let t="",n=0,r=!1,i=e.length;for(;n<i;){let o=e[n];if(r){if(t+=o,o==="\\"&&n+1<i){t+=e[n+1],n+=2;continue}o==='"'&&(r=!1),n+=1;continue}if(o==='"'){r=!0,t+=o,n+=1;continue}if(o==="/"&&e[n+1]==="/"){for(n+=2;n<i&&e[n]!==`
232
- `;)n+=1;continue}if(o==="/"&&e[n+1]==="*"){for(n+=2;n<i&&!(e[n]==="*"&&e[n+1]==="/");)n+=1;n+=2;continue}t+=o,n+=1}return t}function Dn(e){try{let t=w(e,{maxBytes:A,inputKind:"TypeScript project manifest"}),n=JSON.parse(dd(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{createHash as Zo,randomUUID as Wd}from"crypto";import{existsSync as ce,lstatSync as Kn,mkdirSync as ke,readdirSync as ea,realpathSync as ta,renameSync as he,rmSync as se,statSync as kt}from"fs";import{dirname as Xn,join as m,resolve as Qn}from"path";import{setTimeout as Ud}from"timers/promises";import{pathToFileURL as Yo}from"url";import{deserializeSCIP as na}from"@c4312/scip";import Hd from"better-sqlite3";import{lstatSync as Pd,readdirSync as vd}from"fs";import{join as wd,relative as Ed,resolve as Nn,sep as kd}from"path";import{createHash as ud}from"crypto";import{existsSync as Ne,mkdirSync as ld,readdirSync as co,renameSync as pd,rmSync as uo,writeFileSync as fd}from"fs";import{join as Y}from"path";import{create as po,fromBinary as fo,toBinary as gd}from"@bufbuild/protobuf";import{deserializeSCIP as bt,DocumentSchema as An,IndexSchema as go,serializeSCIP as mo}from"@c4312/scip";var Rt=1,Ge="typescript-scip-fragments";function ho(e){if(e.length===0)throw new Error("affected TypeScript mini index requires documents");let t=new Set,n=[];for(let o of e){let a=ge(o.relativePath);if(t.has(a))throw new Error(`duplicate TypeScript fragment replacement: ${a}`);if(t.add(a),o.bytes===null)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${a}`);let s=fo(An,o.bytes);if(s.relativePath!==a)throw new Error(`TypeScript fragment path mismatch: expected ${a}, got ${s.relativePath}`);n.push(s)}let r=mo(po(go,{documents:n,externalSymbols:[]})),i=bt(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function $e(e){let t=Y(e,Ge);return{rootDir:t,blobDir:Y(t,"blobs"),generationDir:Y(t,"generations")}}function md(e){let t=bt(e.indexBytes);Do(t.metadata,Fo(e)),To(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let a=ge(o.relativePath);if(n.has(a))throw new Error(`duplicate TypeScript SCIP document path: ${a}`);n.add(a);let s=gd(An,o),c=e.documentIdentities.get(a)??(e.allowUntrackedDocuments?me(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:a,contentHash:me(s)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${a}`);r.push(vo(e.cacheDir,{relativePath:a,bytes:s,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=wo(e,r);return Eo(e.cacheDir,i),i}function yo(e){let t=$e(e.cacheDir);if(!Ne(Cn(t,e.generationIdentity)))return md(e);let n=bo({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity});if(!e.allowUntrackedDocuments&&n.manifest.documents.length!==e.documentIdentities.size)throw new Error("TypeScript fragment generation document identities changed");for(let r of n.manifest.documents){let i=e.documentIdentities.get(r.relativePath);if(!(i===void 0&&e.allowUntrackedDocuments)&&i!==r.documentIdentity)throw new Error(`TypeScript fragment generation document identity changed: ${r.relativePath}`)}return n.manifest}function So(e){let t=bo({cacheDir:e.cacheDir,generationIdentity:e.previousGenerationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity}).manifest,n=new Map(t.documents.map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let a=ge(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript fragment replacement: ${a}`);if(r.add(a),!n.has(a))throw new Error(`TypeScript fragment replacement has no prior document: ${a}`);let s=e.documentIdentities.get(a);if(!s)throw new Error(`missing TypeScript document identity: ${a}`);o.bytes===null?n.delete(a):n.set(a,vo(e.cacheDir,o,s))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=wo(e,[...n.values()]);return Eo(e.cacheDir,i),i}function bo(e){let t=$e(e.cacheDir),n=Cn(t,e.generationIdentity),r;try{r=On(w(n,{maxBytes:A,inputKind:"TypeScript fragment manifest"}))}catch(o){throw new Error(`TypeScript fragment generation is unavailable: ${o instanceof Error?o.message:String(o)}`,{cause:o})}if(r.generationIdentity!==e.generationIdentity)throw new Error("TypeScript fragment generation identity does not match its manifest path");if(e.producerIdentity&&r.producerIdentity!==e.producerIdentity)throw new Error("TypeScript fragment producer identity changed");if(e.projectIdentity&&r.projectIdentity!==e.projectIdentity)throw new Error("TypeScript fragment project identity changed");let i=new Map;for(let o of r.documents){let a=Y(t.blobDir,`${o.blobHash}.scipdoc`),s=D(a,{maxBytes:z,inputKind:"TypeScript fragment blob"});if(s.byteLength!==o.byteLength||me(s)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,s)}return{manifest:r,fragments:i}}function Ro(e){let t=Io(e);return Fn(t.baseIndex,t.completeDocuments,"assembled")}function xo(e){let t=Io(e);return hd(t.deletedAffectedPaths),{completeIndexBytes:Fn(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Fn(t.baseIndex,t.affectedDocuments,"affected")}}function Io(e){let t=bt(e.baseIndexBytes);Do(t.metadata,Fo(e)),To(t.externalSymbols);let n=new Map;for(let s of e.fragments){let c=ge(s.relativePath);if(n.has(c))throw new Error(`duplicate TypeScript fragment replacement: ${c}`);n.set(c,s)}if(n.size===0)throw new Error("TypeScript index assembly requires at least one replacement");let r=new Set,i=[],o=[],a=[];for(let s of t.documents){let c=ge(s.relativePath);if(r.has(c))throw new Error(`duplicate TypeScript SCIP document path: ${c}`);r.add(c);let d=n.get(c);if(!d){i.push(s);continue}if(n.delete(c),d.bytes===null){a.push(c);continue}let u=fo(An,d.bytes);if(u.relativePath!==c)throw new Error(`TypeScript fragment path mismatch: expected ${c}, got ${u.relativePath}`);i.push(u),o.push(u)}if(n.size>0)throw new Error(`TypeScript fragment replacement has no prior document: ${[...n.keys()].sort()[0]}`);return{baseIndex:t,completeDocuments:i,affectedDocuments:o,deletedAffectedPaths:a}}function Fn(e,t,n){let r=mo(po(go,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=bt(r);if(i.documents.length!==t.length||i.externalSymbols.length!==0)throw new Error(`${n} TypeScript SCIP index failed structural verification`);return r}function hd(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function Po(e,t){let n=$e(e);if(!Ne(n.generationDir))return;let r=new Set(t.map(a=>ko(a))),i=co(n.generationDir).filter(a=>a.endsWith(".json")),o=new Set;for(let a of i.filter(s=>r.has(s))){let s=On(w(Y(n.generationDir,a),{maxBytes:A,inputKind:"TypeScript fragment manifest"}));for(let c of s.documents)o.add(`${c.blobHash}.scipdoc`)}for(let a of i)r.has(a)||uo(Y(n.generationDir,a),{force:!0});if(Ne(n.blobDir))for(let a of co(n.blobDir))o.has(a)||uo(Y(n.blobDir,a),{force:!0})}function vo(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=ge(t.relativePath),i=Buffer.from(t.bytes),o=me(i),a=$e(e);ld(a.blobDir,{recursive:!0});let s=Y(a.blobDir,`${o}.scipdoc`);if(Ne(s)){let c=D(s,{maxBytes:z,inputKind:"TypeScript fragment blob"});if(c.byteLength!==i.byteLength||me(c)!==o)throw new Error(`existing TypeScript fragment blob is corrupt: ${r}`)}else{let c=`${s}.${process.pid}.${Date.now()}.tmp`;fd(c,i),pd(c,s)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function wo(e,t){if(!e.producerIdentity||!e.projectIdentity||!e.generationIdentity)throw new Error("TypeScript fragment generation identities must be non-empty");let n=[...t].sort((r,i)=>r.relativePath.localeCompare(i.relativePath));if(new Set(n.map(r=>r.relativePath)).size!==n.length)throw new Error("TypeScript fragment generation contains duplicate document paths");return{version:Rt,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function Eo(e,t){let n=$e(e),r=Cn(n,t.generationIdentity);if(Ne(r)){let i=On(w(r,{maxBytes:A,inputKind:"TypeScript fragment manifest"}));if(lo(i)!==lo(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}ie(r,t,{spacing:2,trailingNewline:!0})}function lo(e){return me(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function On(e){let t=JSON.parse(e);if(t.version!==Rt||typeof t.producerIdentity!="string"||typeof t.projectIdentity!="string"||typeof t.generationIdentity!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.documents))throw new Error("invalid TypeScript fragment generation manifest");let n=new Set;for(let r of t.documents){if(!r||typeof r.relativePath!="string"||typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash)||typeof r.byteLength!="number"||!Number.isInteger(r.byteLength)||r.byteLength<0||typeof r.documentIdentity!="string"||!r.documentIdentity)throw new Error("invalid TypeScript fragment record");if(ge(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function Cn(e,t){return Y(e.generationDir,ko(t))}function ko(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${me(e)}.json`}function To(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function Do(e,t){if(!e||typeof e!="object")throw new Error("TypeScript SCIP shard has no producer metadata");let n=e,r=n.toolInfo??n.tool_info;if(!r||typeof r!="object")throw new Error("TypeScript SCIP shard has no producer tool identity");let i=r;if(i.name!=="scip-typescript"||i.version!==t)throw new Error("TypeScript SCIP shard producer identity changed")}function Fo(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function ge(e){if(!e||e.startsWith("/")||e.startsWith("\\")||e.includes("\\"))throw new Error(`invalid TypeScript SCIP document path: ${e}`);let t=e.split("/");if(t.includes("")||t.includes(".")||t.includes(".."))throw new Error(`invalid TypeScript SCIP document path: ${e}`);return e}function me(e){return ud("sha256").update(e).digest("hex")}import{createHash as yd}from"crypto";import{existsSync as Ve,mkdirSync as Sd,readdirSync as _n,renameSync as bd,rmSync as Ao,writeFileSync as Rd}from"fs";import{join as B}from"path";var xt=1,Co=64*1024*1024,qe="typescript-scip-overlays";function _o(e){let t=Mo(e.cacheDir,e.previousGenerationIdentity);if(!t&&!e.baseShardCurrent)throw new Error("deferred TypeScript SCIP base has no matching overlay generation");if(t&&(t.producerIdentity!==e.producerIdentity||t.projectIdentity!==e.projectIdentity))throw new Error("TypeScript overlay producer or project identity changed");let n=new Map((t?.overlays??[]).map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let a=Mn(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript overlay: ${a}`);r.add(a),n.set(a,xd(e.cacheDir,o))}if(r.size===0)throw new Error("TypeScript overlay generation requires affected documents");let i={version:xt,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:t?.baseGenerationIdentity??e.previousGenerationIdentity,generationIdentity:e.nextGenerationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),overlays:[...n.values()].sort((o,a)=>o.relativePath.localeCompare(a.relativePath))};return Id(e.cacheDir,i),i}function Lo(e){let t=Mo(e.cacheDir,e.generationIdentity);if(!t)throw new Error("TypeScript overlay generation is unavailable");let n=t.overlays.map(r=>{if(r.blobHash===null)return{relativePath:r.relativePath,bytes:null,occurrences:0,symbols:0,referenceFragments:[]};let i=D(B(We(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`),{maxBytes:z,inputKind:"TypeScript overlay blob"});if(i.byteLength!==r.byteLength||Be(i)!==r.blobHash)throw new Error(`TypeScript overlay blob is corrupt: ${r.relativePath}`);return{relativePath:r.relativePath,bytes:i,occurrences:0,symbols:0,referenceFragments:[]}});return Ro({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function jo(e,t){let n=We(e),r=B(n,"generations");if(!Ve(r))return;let i=new Set(t.map(jn)),o=new Set;for(let s of _n(r).filter(c=>i.has(c))){let c=Ln(w(B(r,s),{maxBytes:A,inputKind:"TypeScript overlay manifest"}));for(let d of c.overlays)d.blobHash&&o.add(`${d.blobHash}.scipdoc`)}for(let s of _n(r))i.has(s)||Ao(B(r,s),{force:!0});let a=B(n,"blobs");if(Ve(a))for(let s of _n(a))o.has(s)||Ao(B(a,s),{force:!0})}function Mo(e,t){let n=B(We(e),"generations",jn(t));if(!Ve(n))return null;let r=Ln(w(n,{maxBytes:A,inputKind:"TypeScript overlay manifest"}));if(r.generationIdentity!==t)throw new Error("TypeScript overlay generation identity does not match its path");return r}function xd(e,t){let n=Mn(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=Be(r),o=B(We(e),"blobs");Sd(o,{recursive:!0});let a=B(o,`${i}.scipdoc`);if(Ve(a)){let s=D(a,{maxBytes:z,inputKind:"TypeScript overlay blob"});if(s.byteLength!==r.byteLength||Be(s)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let s=`${a}.${process.pid}.${Date.now()}.tmp`;Rd(s,r),bd(s,a)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function Id(e,t){let n=B(We(e),"generations",jn(t.generationIdentity));if(Ve(n)){let r=Ln(w(n,{maxBytes:A,inputKind:"TypeScript overlay manifest"}));if(Oo(r)!==Oo(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}ie(n,t,{spacing:2,trailingNewline:!0})}function Ln(e){let t=JSON.parse(e);if(t.version!==xt||typeof t.producerIdentity!="string"||!t.producerIdentity||typeof t.projectIdentity!="string"||!t.projectIdentity||typeof t.baseGenerationIdentity!="string"||!t.baseGenerationIdentity||typeof t.generationIdentity!="string"||!t.generationIdentity||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.overlays))throw new Error("invalid TypeScript overlay manifest");let n=new Set;for(let r of t.overlays){if(!r||typeof r.relativePath!="string"||r.blobHash!==null&&(typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash))||!Number.isInteger(r.byteLength)||r.byteLength<0||r.blobHash===null&&r.byteLength!==0)throw new Error("invalid TypeScript overlay record");if(Mn(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function We(e){return B(e,qe)}function jn(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Be(e)}.json`}function Oo(e){return Be(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Mn(e){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(t=>!t||t==="."))throw new Error(`invalid TypeScript overlay path: ${e}`);if(e.split("/").includes(".."))throw new Error(`invalid TypeScript overlay path: ${e}`);return e}function Be(e){return yd("sha256").update(e).digest("hex")}var Ue=1,Gn="language-indexes",No=["index.db","index.scip","meta.json"],Go=[Gn,Ge,qe];function It(e){let t=[];for(let n of No)Td(e,n),t.push(n);for(let n of Go)$o(e,n,t);return{version:Ue,files:t.sort()}}function Pt(e){if(!e||e.includes("\0")||e.startsWith("/")||e.includes("\\"))throw new Error(`invalid index artifact path: ${e||"<empty>"}`);let t=e.split("/");if(t.some(r=>!r||r==="."||r===".."))throw new Error(`invalid index artifact path: ${e}`);let n=t[0];if(!No.includes(e)&&!Go.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function W(e,t){let n=Pt(t),r=Nn(e),i=Nn(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${kd}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function $o(e,t,n){let r=wd(e,t),i;try{i=vd(r,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let o of i){let a=`${t}/${o.name}`;if(o.isSymbolicLink())throw new Error(`index artifact cannot be a symlink: ${a}`);o.isDirectory()?$o(e,a,n):o.isFile()&&n.push(Pt(a))}}function Td(e,t){let n=W(e,t),r;try{r=Pd(n)}catch{throw new Error(`required index artifact is missing: ${t}`)}if(!r.isFile()||r.isSymbolicLink())throw new Error(`required index artifact is not a regular file: ${t}`);if(Ed(Nn(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{createHash as Wn}from"crypto";import{closeSync as Dd,existsSync as E,mkdirSync as Fd,openSync as Ad,readSync as Od,readdirSync as Un,renameSync as qn,rmSync as He,statSync as Ee}from"fs";import{basename as Wo,dirname as U,join as R,relative as Vo}from"path";var Cd=Object.freeze({maxGenerations:2,maxLogicalBytes:2*1024*1024*1024});function wt(e){let t=V(e.outputDb),n=Md(e);e.onStage?.("after-recovery-retained");let r=e.preserveOutputScip?e.outputScip:e.tempOutputScip,i=Yn({generationRoot:t,databasePath:e.tempOutputDb,indexPath:E(r)?r:void 0,metadataPath:E(e.tempMetaPath)?e.tempMetaPath:void 0}),o=(e.now??(()=>new Date))().toISOString(),a={version:Re,currentGeneration:i.identity,artifactSet:"immutable-v1",...n?{previousGeneration:n}:{},...e.publication?{publication:e.publication}:{},publishedAt:o},s=$(R(t,"state.json"),a,{spacing:2,trailingNewline:!0});e.onStage?.("after-pointer-handoff"),e.preserveOutputScip||Bn(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),Bn(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),Bn(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let c=i.identity,d={...a,stableMirrors:Jn(e.outputDb,e.outputScip)};$(R(t,"state.json"),d,{spacing:2,trailingNewline:!0});let u=Uo(e.outputDb,{now:e.now}),l=_e(i.directorySync,s.directorySync);return{currentGeneration:c,...n?{previousGeneration:n}:{},retention:u,achievedDurability:l==="synced"?"directory-durable":"file-flushed",directorySync:l}}function Hn(e,t,n,r=()=>new Date){if(!E(e))return null;let i=Le(e),o=R(V(e),"state.json");if(i?.artifactSet==="immutable-v1"&&zt(e,i.currentGeneration))return i;let a=V(e),s=!i&&E(o)?Gd(n,e,t):void 0;if(s&&!ot(a,s))return null;let c=Yn({generationRoot:a,databasePath:e,indexPath:E(t)?t:void 0,metadataPath:E(n)?n:void 0,forcedIdentity:i?.currentGeneration??s}),d={version:Re,currentGeneration:c.identity,artifactSet:"immutable-v1",stableMirrors:Jn(e,t),...i?.previousGeneration?{previousGeneration:i.previousGeneration}:{},...i?.publication?{publication:i.publication}:{},publishedAt:i?.publishedAt??r().toISOString()};return $(R(a,"state.json"),d,{spacing:2,trailingNewline:!0}),d}function zn(e,t,n=()=>new Date){if(!E(e)||!E(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=Le(e),i=V(e),o=Yn({generationRoot:i,databasePath:e,indexPath:E(R(U(e),"index.scip"))?R(U(e),"index.scip"):void 0,metadataPath:t}),a=r&&r.currentGeneration!==o.identity?zo(e,r.currentGeneration):void 0,s={version:Re,currentGeneration:o.identity,artifactSet:"immutable-v1",stableMirrors:Jn(e,R(U(e),"index.scip")),...a?{previousGeneration:a}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return $(R(V(e),"state.json"),s,{spacing:2,trailingNewline:!0}),Uo(e,{now:n}),s}function Uo(e,t={}){let n=_d(t.limits),i=(t.now??(()=>new Date))().toISOString(),o=ue($r(e),{waitMs:0});if(!o)return{state:"deferred",generationCount:0,logicalBytes:0,protectedGenerations:0,activeReaderLeases:0,staleReaderLeasesRemoved:0,malformedReaderLeases:0,removedGenerations:0,removedLogicalBytes:0,limits:n,at:i,reason:"another process owns local generation retention"};try{let a=Le(e),s=Ld(e),c=Vr(e,s.map(b=>b.identity),{isProcessAlive:t.isProcessAlive??ne,readProcessIdentity:t.readProcessIdentity??te}),d=new Set(c.protectedGenerations);a?.currentGeneration&&d.add(a.currentGeneration),a?.previousGeneration?.generationIdentity&&d.add(a.previousGeneration.generationIdentity);let u=s.length,l=s.reduce((b,y)=>b+y.logicalBytes,0),p=0,g=0;for(let b of s){if(u<=n.maxGenerations&&l<=n.maxLogicalBytes)break;d.has(b.identity)||(t.onBeforeRemove?.(b.identity),He(b.path,{recursive:!0,force:!0}),u-=1,l-=b.logicalBytes,p+=1,g+=b.logicalBytes)}let f=u>n.maxGenerations||l>n.maxLogicalBytes,h={state:f?"protected":p>0?"collected":"within-bounds",generationCount:u,logicalBytes:l,protectedGenerations:d.size,activeReaderLeases:c.activeLeases,staleReaderLeasesRemoved:c.staleLeasesRemoved,malformedReaderLeases:c.malformedLeases,removedGenerations:p,removedLogicalBytes:g,limits:n,at:i,...f?{reason:c.malformedLeases>0?"malformed reader ownership evidence fails closed":"retention bounds cannot be met without deleting a protected generation"}:{}};return Bo(e,h),h}catch(a){let s={state:"error",generationCount:0,logicalBytes:0,protectedGenerations:0,activeReaderLeases:0,staleReaderLeasesRemoved:0,malformedReaderLeases:0,removedGenerations:0,removedLogicalBytes:0,limits:n,at:i,reason:a instanceof Error?a.message:String(a)};try{Bo(e,s)}catch{}return s}finally{o.release()}}function _d(e={}){let t={...Cd,...e};if(!Number.isSafeInteger(t.maxGenerations)||t.maxGenerations<2)throw new Error("Local SQLite generation retention must keep at least current and previous generations.");if(!Number.isSafeInteger(t.maxLogicalBytes)||t.maxLogicalBytes<=0)throw new Error("Local SQLite generation byte retention must be a positive safe integer.");return t}function Ld(e){let t=V(e);return E(t)?Un(t,{withFileTypes:!0}).filter(n=>n.isDirectory()&&/^[a-f0-9]{64}$/.test(n.name)).map(n=>{let r=R(t,n.name),i=ot(t,n.name),o=i?i.database.size+(i.index?.size??0)+(i.metadata?.size??0):Ho(r);return{identity:n.name,path:r,logicalBytes:o,modifiedAtMs:Ee(r).mtimeMs}}).sort((n,r)=>n.modifiedAtMs-r.modifiedAtMs||n.identity.localeCompare(r.identity)):[]}function Ho(e){let t=0;for(let n of Un(e,{withFileTypes:!0})){let r=R(e,n.name);n.isDirectory()?t+=Ho(r):n.isFile()&&(t+=Ee(r).size)}return t}function Bo(e,t){ie(R(V(e),"gc.json"),t,{spacing:2,trailingNewline:!0})}function H(e,t=R(U(e),"meta.json")){let n=R(V(e),"state.json");if(!E(n))return{state:"legacy",statePath:n};let r=Le(e);if(!r)return{state:"invalid",statePath:n,reason:"generation state is malformed"};try{let i=zt(e,r.currentGeneration),o=i!==null,a=i?jd(e,t,i,r):!1,s=r.previousGeneration?E(R(U(e),r.previousGeneration.databasePath)):!0;return!a||!o||!s?{state:"drifted",statePath:n,currentMatches:a,recoveryExists:s,generation:r,reason:o?a?"retained recovery database is missing":"stable database or metadata no longer matches the published generation":"published immutable generation is missing"}:{state:"current",statePath:n,currentMatches:a,recoveryExists:s,generation:r}}catch(i){return{state:"drifted",statePath:n,currentMatches:!1,recoveryExists:!1,generation:r,reason:i instanceof Error?i.message:String(i)}}}function jd(e,t,n,r){if(r.stableMirrors&&(r.stableMirrors.databaseFileIdentity!==je(e)||r.stableMirrors.indexFileIdentity!==void 0&&r.stableMirrors.indexFileIdentity!==je(R(U(e),"index.scip")))||!qo(e,n.database))return!1;let i=R(U(e),"index.scip");if(n.index&&!qo(i,n.index))return!1;if(!n.metadata)return!E(t);if(!E(t))return!1;let o=R(V(e),n.identity,n.metadata.file);return E(o)&&le(L(t,"reindex metadata"))===le(L(o,"immutable reindex metadata"))}function qo(e,t){return E(e)&&Ee(e).isFile()&&Ee(e).size===t.size}function Md(e){let t=Hn(e.outputDb,e.outputScip,e.metaPath);return t?zo(e.outputDb,t.currentGeneration):void 0}function Jn(e,t){return{databaseFileIdentity:je(e),...E(t)?{indexFileIdentity:je(t)}:{}}}function zo(e,t){let n=R(V(e),t),r=R(n,Wo(e)),i=R(n,"meta.json");return{generationIdentity:t,databasePath:Vo(U(e),r),...E(i)?{metadataPath:Vo(U(e),i)}:{}}}function Nd(e){if(E(e)){for(let t of Un(e,{withFileTypes:!0}))if(t.isDirectory()&&t.name.endsWith(".tmp"))try{He(R(e,t.name),{recursive:!0,force:!0})}catch{}}}function Gd(e,t,n=R(U(t),"index.scip")){let r=Wn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(vt(t)),E(n)&&r.update(`\0${vt(n)}`),E(e)&&r.update(`\0${le(L(e,"reindex metadata"))}`),r.digest("hex")}function Yn(e){let t=$n(e.databasePath),n=e.indexPath?$n(e.indexPath):void 0,r=e.metadataPath?$n(e.metadataPath):void 0,i=e.forcedIdentity??$d(t,n,e.metadataPath),o=R(e.generationRoot,i),a=R(o,Ht);if(E(a)){let d=ot(e.generationRoot,i);if(d&&Jo(o,d.database,t)&&Bd(o,d.index,n)&&qd(o,d.metadata,e.metadataPath))return{identity:i,directorySync:re(e.generationRoot)};throw new Error(`SQLite generation ${i} already exists with different or corrupt artifacts.`)}let s=[nt(e.generationRoot)];Nd(e.generationRoot);let c=`${o}.${process.pid}.${Date.now()}.tmp`;He(c,{recursive:!0,force:!0}),Fd(c,{recursive:!0});try{s.push(Vn(e.databasePath,R(c,t.file))),n&&e.indexPath&&s.push(Vn(e.indexPath,R(c,n.file))),r&&e.metadataPath&&s.push(Vn(e.metadataPath,R(c,r.file)));let d=$(R(c,Ht),{version:Gr,identity:i,database:t,...n?{index:n}:{},...r?{metadata:r}:{}},{spacing:2,trailingNewline:!0});d.directorySync!=="not-requested"&&s.push(d.directorySync),s.push(re(c)),F(()=>qn(c,o)),s.push(re(e.generationRoot))}finally{try{He(c,{recursive:!0,force:!0})}catch{}}return{identity:i,directorySync:_e(...s)}}function $d(e,t,n){let r=Wn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(e.sha256),t&&r.update(`\0${t.sha256}`),n&&r.update(`\0${le(L(n,"reindex metadata"))}`),r.digest("hex")}function $n(e){return{file:Wo(e),size:Ee(e).size,sha256:vt(e)}}function vt(e){let t=Wn("sha256"),n=Ad(e,"r"),r=Buffer.allocUnsafe(1024*1024);try{for(;;){let i=Vd(n,r);if(i===0)break;t.update(r.subarray(0,i))}}finally{Dd(n)}return t.digest("hex")}function Vd(e,t){let n=0;for(;n<t.length;){let r=Od(e,t,n,t.length-n,null);if(n+=r,r===0)break}return n}function Vn(e,t){return rt(e,t,{mode:292})}function Jo(e,t,n){let r=R(e,t.file);return t.file===n.file&&t.size===n.size&&t.sha256===n.sha256&&E(r)&&Ee(r).size===t.size&&vt(r)===t.sha256}function Bd(e,t,n){return!t||!n?t===n:Jo(e,t,n)}function qd(e,t,n){if(!t||!n)return t===void 0&&n===void 0;let r=R(e,t.file);return E(r)&&le(L(r,"stored reindex metadata"))===le(L(n,"candidate reindex metadata"))}function Bn(e,t){F(()=>He(`${t}.tmp-replace`,{force:!0})),F(()=>qn(e,`${t}.tmp-replace`)),F(()=>qn(`${t}.tmp-replace`,t))}var Zn=1,Ko="CODEBASEIQ_SHARED_CACHE",zd=2,Et=JSON.stringify({cliVersion:Br,artifactCatalogVersion:Ue,postIndexAugmentationSchemaVersion:zd,sqliteGenerationStoreVersion:Re,typescriptFragmentStoreVersion:Rt,typescriptOverlayStoreVersion:xt}),er="manifest.json",Jd="shared-cache.json",tr=[Gn,Ge,qe];function Tt(e,t){if(!e.clean||!e.treeOid)return;let n=fa(JSON.stringify({version:Zn,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:Et}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:Et,generationId:n,repositoryCacheDir:Ur(e.repositoryId)}}function ra(e,t,n){if(process.env[Ko]==="0")return`${Ko}=0`;if(!Hr(n))return"explicit cache or database override";if(Yt(Xn(t))!==Yt(Wr(e))||t!==m(Xn(t),"index.db"))return"index database is outside the managed worktree cache"}function K(e,t=!0){let n=rr(e),r;try{r=da(w(m(n,er),{inputKind:"shared-generation manifest",maxBytes:A}))}catch{return null}if(r.generationId!==e.generationId||r.repositoryId!==e.repositoryId||r.treeOid!==e.treeOid||r.producerIdentity!==e.producerIdentity||JSON.stringify(r.fingerprint)!==JSON.stringify(e.fingerprint))return null;if(!t)return r;try{for(let i of r.artifacts){let o=W(n,i.path),a=kt(o);if(!a.isFile()||a.size!==i.size||et(o,{inputKind:"shared-generation artifact",maxBytes:_})!==i.sha256)return null}}catch{return null}return r}function ia(e,t,n){if(!e.treeOid)return null;let r=Xt(t,n),i=m(qr(),"repositories",e.repositoryId),o;try{let c=Kn(i);if(!c.isDirectory()||c.isSymbolicLink())return null;o=ta(i)}catch{return null}let a=m(o,"generations"),s=[];try{for(let c of ea(a)){if(!/^[a-f0-9]{64}$/.test(c))continue;let d=m(a,c),u;try{u=Kn(d)}catch{continue}if(!(!u.isDirectory()||u.isSymbolicLink()))try{let l=da(w(m(d,er),{inputKind:"shared-generation baseline manifest",maxBytes:A}));l.generationId===c&&l.repositoryId===e.repositoryId&&l.treeOid===e.treeOid&&l.producerIdentity===Et&&Qd(l.fingerprint,r)&&s.push(l)}catch{continue}}}catch{return null}s.sort((c,d)=>Date.parse(d.createdAt)-Date.parse(c.createdAt)||c.generationId.localeCompare(d.generationId));for(let c of s){let d={repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:c.fingerprint,producerIdentity:c.producerIdentity,generationId:c.generationId,repositoryCacheDir:o},u=K(d);if(u)return{snapshot:d,manifest:u}}return null}function oa(e){let t=ue(m(e.snapshot.repositoryCacheDir,"locks",`${e.snapshot.generationId}.publish.lock`));if(!t)throw new Error(`shared generation publication is already in progress for ${e.snapshot.generationId}`);try{return Yd(e)}finally{t.release()}}function Yd(e){let t=K(e.snapshot);if(t)return Xo(e.snapshot,t);if(!pa(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=Qo(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=It(e.sourceCacheDir),i=m(e.snapshot.repositoryCacheDir,"generations"),o=[nt(i)],a=Ae(m(i,`.tmp-${process.pid}-`));try{let s=[];for(let f of r.files){let h=W(e.sourceCacheDir,f),b=W(a,f);o.push(Je(h,b,292)),e.onPublicationStage?.("after-artifact-flushed",f);let y=kt(b).size;s.push({path:f,size:y,sha256:et(b,{inputKind:"staged shared-generation artifact",maxBytes:_})})}let c=na(D(m(a,"index.scip"),{inputKind:"staged shared SCIP index",maxBytes:_})).metadata?.projectRoot;if(!c)throw new Error("shared SCIP generation has no project root metadata");let d=ir(e.sourceProjectRoot);if(!be(c,d))throw new Error("shared SCIP generation root does not match its source worktree");if(Qo(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let u={version:Zn,artifactCatalogVersion:Ue,generationId:e.snapshot.generationId,repositoryId:e.snapshot.repositoryId,treeOid:e.snapshot.treeOid,fingerprint:e.snapshot.fingerprint,producerIdentity:e.snapshot.producerIdentity,sourceProjectRoot:e.sourceProjectRoot,scipProjectRoot:c,createdAt:(e.now??(()=>new Date))().toISOString(),artifacts:s.sort((f,h)=>f.path.localeCompare(h.path))},l=$(m(a,er),u,{spacing:2,trailingNewline:!0});l.directorySync!=="not-requested"&&o.push(l.directorySync),e.onPublicationStage?.("after-manifest-flushed"),o.push(re(a)),e.onPublicationStage?.("after-staging-directory-synced");let p=rr(e.snapshot);try{if(ce(p)&&!K(e.snapshot)){let f=`${p}.corrupt-${process.pid}-${Date.now()}`;F(()=>he(p,f)),se(f,{recursive:!0,force:!0})}F(()=>he(a,p))}catch(f){let h=K(e.snapshot);if(h)return Xo(e.snapshot,h);throw f}e.onPublicationStage?.("after-generation-renamed"),o.push(re(i)),e.onPublicationStage?.("after-generations-directory-synced");let g=_e(...o);return{kind:"published",manifest:u,achievedDurability:g==="synced"?"directory-durable":"file-flushed",directorySync:g}}finally{se(a,{recursive:!0,force:!0})}}function Xo(e,t){let n=re(m(e.repositoryCacheDir,"generations"));return{kind:"existing",manifest:t,achievedDurability:n==="synced"?"directory-durable":"file-flushed",directorySync:n}}function Dt(e){let t=rr(e.snapshot);ke(e.targetCacheDir,{recursive:!0});let n=ue(m(e.targetCacheDir,"cache-lifecycle.lock"),{waitMs:3e4});if(!n)throw new Error("timed out waiting for another cache hydration");let r,i,o=!1;try{r=Ae(m(e.targetCacheDir,".shared-hydrate-")),nu(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let d=W(t,c.path),u=W(r,c.path);if(Je(d,u),kt(u).size!==c.size||et(u,{inputKind:"hydrated shared-generation artifact",maxBytes:_})!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let a=ir(e.targetProjectRoot);if(a!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&Ni(W(r,c.path),e.manifest.scipProjectRoot,a);if(!pa(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=Zd(e.targetCacheDir,r),o=!0,eu(r,e.targetCacheDir,i),wt({tempOutputScip:m(r,"index.scip"),tempOutputDb:m(r,"index.db"),tempMetaPath:m(r,"meta.json"),outputScip:m(e.targetCacheDir,"index.scip"),outputDb:m(e.targetCacheDir,"index.db"),metaPath:m(e.targetCacheDir,"meta.json"),now:e.now});let s=H(m(e.targetCacheDir,"index.db"),m(e.targetCacheDir,"meta.json"));if(s.state==="invalid"||s.state==="drifted")throw new Error(`hydrated SQLite generation failed validation: ${s.reason}`);e.persistLease!==!1&&nr(e.snapshot,e.targetCacheDir,e.action??"attached",e.now)}catch(a){throw o&&i&&tu(e.targetCacheDir,i),a}finally{r&&se(r,{recursive:!0,force:!0}),n.release()}}async function aa(e,t={}){let n=t.timeoutMs??3e4,r=t.pollMs??100,i=t.now??I,o=i()+n,a=m(e.repositoryCacheDir,"locks"),s=m(a,`${e.generationId}.lock`),c=d=>{if(!d||typeof d!="object"||Array.isArray(d))return null;let u=d.pid;return typeof u=="number"&&Number.isSafeInteger(u)&&u>0?{pid:u}:null};for(;i()<=o;){if(K(e))return{kind:"generation-ready"};let d=tt(s,{kind:"shared-generation-build",detail:{generationId:e.generationId},parseLegacy:c});if(d.kind==="acquired")return{kind:"owner",release:()=>d.lock.release()};let u=o-i();if(u<=0)break;await Ud(Math.min(r,u))}return K(e)?{kind:"generation-ready"}:{kind:"timeout"}}function nr(e,t,n,r=void 0){let i={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,activeGenerationId:e.generationId,lastAction:n,lastSeenAt:(r??(()=>new Date))().toISOString()},o={...i,ownershipChecksum:ca(i)};return ua(e.repositoryCacheDir,o,!0),o}function sa(e,t,n=void 0){let r={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,lastAction:"overlay",lastReason:`private cache forked from shared baseline ${e.generationId}`,lastSeenAt:(n??(()=>new Date))().toISOString()},i={...r,ownershipChecksum:ca(r)};return ua(e.repositoryCacheDir,i,!0),i}function ca(e){return fa(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:Qn(e.projectRoot),localCacheDir:Qn(e.localCacheDir)}))}function da(e){let t=JSON.parse(e);if(t.version!==Zn||t.artifactCatalogVersion!==Ue||typeof t.generationId!="string"||!/^[a-f0-9]{64}$/.test(t.generationId)||typeof t.repositoryId!="string"||!/^[a-f0-9]{24}$/.test(t.repositoryId)||typeof t.treeOid!="string"||!t.treeOid||typeof t.producerIdentity!="string"||t.producerIdentity!==Et||typeof t.sourceProjectRoot!="string"||typeof t.scipProjectRoot!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!t.fingerprint||!Array.isArray(t.artifacts))throw new Error("invalid shared generation manifest");let n=new Set;for(let r of t.artifacts){if(!r||typeof r.path!="string"||typeof r.size!="number"||r.size<0||typeof r.sha256!="string"||!/^[a-f0-9]{64}$/.test(r.sha256))throw new Error("invalid shared generation artifact");if(Pt(r.path),n.has(r.path))throw new Error(`duplicate shared generation artifact: ${r.path}`);n.add(r.path)}for(let r of["index.db","index.scip","meta.json"])if(!n.has(r))throw new Error(`shared generation is missing ${r}`);return t}function Je(e,t,n=384){return rt(e,t,{mode:n})}function Kd(e,t,n){ke(e,{recursive:!0}),$(m(e,Jd),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function Qo(e){try{let t=It(e),n=Zo("sha256");for(let r of t.files){let i=W(e,r),o=kt(i).size;n.update(r).update("\0").update(String(o)).update("\0"),Lr(i,{inputKind:"source-generation artifact",maxBytes:_},a=>n.update(a)),n.update("\0")}return n.digest("hex")}catch{return null}}function Xd(e){try{let t=ee(w(m(e,"meta.json"),{inputKind:"reindex metadata",maxBytes:A}));return(t.kind==="legacy"||t.kind==="supported")&&t.capabilities.publishableGeneration?t.metadata:void 0}catch{return}}function Qd(e,t){let n=Xt(e.languages,e);return JSON.stringify(n)===JSON.stringify(t)}function rr(e){return m(e.repositoryCacheDir,"generations",e.generationId)}function ua(e,t,n){let r=Nr(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId??t.baseGenerationId;if(!o||!ce(m(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=m(e,"worktrees");ke(i,{recursive:!0}),$(m(i,`${t.worktreeId}.json`),t,{spacing:2,trailingNewline:!0}),Kd(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function Zd(e,t){let n=m(t,".rollback"),r=new Map,i=new Map;ke(n,{recursive:!0});for(let s of["index.scip","index.db","meta.json"]){let c=m(e,s),d=ce(c);r.set(s,d),d&&Je(c,m(n,"stable",s))}for(let s of tr){let c=m(e,s),d=ce(c);if(d){let u=Kn(c);if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`managed artifact path is not a directory: ${s}`)}i.set(s,d)}let o=m(e,it),a=ce(o);return a&&la(o,m(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:a}}function eu(e,t,n){for(let r of tr){let i=m(t,r);if(n.managedDirectories.get(r)){let a=m(n.root,"managed",r);ke(Xn(a),{recursive:!0}),F(()=>he(i,a))}let o=m(e,r);ce(o)&&F(()=>he(o,i))}}function tu(e,t){for(let i of tr){let o=m(e,i),a=m(t.root,"managed",i);t.managedDirectories.get(i)?ce(a)&&(se(o,{recursive:!0,force:!0}),F(()=>he(a,o))):se(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let a=m(e,i);if(!o){se(a,{force:!0});continue}let s=`${a}.shared-restore-${Wd()}`;Je(m(t.root,"stable",i),s),F(()=>se(a,{force:!0})),F(()=>he(s,a))}let n=m(e,it);se(n,{recursive:!0,force:!0});let r=m(t.root,"sqlite-generations");t.generationStoreExisted&&ce(r)&&F(()=>he(r,n))}function la(e,t){ke(t,{recursive:!0});for(let n of ea(e,{withFileTypes:!0})){let r=m(e,n.name),i=m(t,n.name);if(n.isSymbolicLink())throw new Error(`managed cache backup cannot contain a symlink: ${r}`);n.isDirectory()?la(r,i):n.isFile()&&Je(r,i)}}function nu(e,t){if(e.generationId!==t.generationId||e.repositoryId!==t.repositoryId||e.treeOid!==t.treeOid||e.producerIdentity!==t.producerIdentity||JSON.stringify(e.fingerprint)!==JSON.stringify(t.fingerprint))throw new Error("shared generation manifest does not match the requested snapshot")}function pa(e,t,n,r=!0,i=!0){try{let o=Xd(e);if(!o||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return ze("source validation rejected metadata"),!1;let a=It(e),s=H(m(e,"index.db"),m(e,"meta.json"));if(r?s.state!=="current":s.state==="invalid"||s.state==="drifted")return ze(`source validation rejected SQLite generation state ${s.state}`),!1;let c=new Hd(j(m(e,"index.db")),{readonly:!0,fileMustExist:!0});try{if(i){if(c.pragma("quick_check(1)",{simple:!0})!=="ok")return!1}else c.pragma("schema_version",{simple:!0})}finally{c.close()}let d=ir(t),l=(i?a.files.filter(p=>p.endsWith(".scip")):["index.scip"]).every(p=>{let g=na(D(W(e,p),{inputKind:"shared SCIP validation artifact",maxBytes:_})).metadata?.projectRoot,f=g!==void 0&&be(g,d);return f||ze(`source validation rejected SCIP root for ${p}: ${String(g)}`),f});return l||ze("source validation rejected SCIP project roots"),l}catch(o){return ze(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function ze(e){process.env.CODEBASEIQ_DEBUG&&console.error(`shared-cache: ${e}`)}function ir(e){try{return Yo(ta(e)).href}catch{return Yo(Qn(e)).href}}function fa(e){return Zo("sha256").update(e).digest("hex")}import{createHash as xu}from"crypto";import{existsSync as ar,statSync as Iu,writeFileSync as sr}from"fs";import{join as Pu}from"path";import{createRequire as ru}from"module";import{dirname as iu,isAbsolute as fm,relative as gm,resolve as mm,sep as hm}from"path";var ga=ru(import.meta.url),ou=1,ma="0.4.0";function or(){let e=au();return e.available?{available:!0,packageVersion:e.packageVersion,typescriptVersion:e.typescriptVersion,producerIdentity:e.producerIdentity}:e}function au(){try{let e=ga.resolve("@sourcegraph/scip-typescript/package.json"),t=JSON.parse(L(e,"scip-typescript package manifest"));if(t.version!==ma)return{available:!1,reason:`unsupported scip-typescript version ${String(t.version??"unknown")}; expected ${ma}`};let n=iu(e),r=ga.resolve("typescript/package.json",{paths:[n]}),i=JSON.parse(L(r,"TypeScript package manifest"));return typeof i.version!="string"||!i.version?{available:!1,reason:"scip-typescript TypeScript compiler version is unavailable"}:{available:!0,packageRoot:n,packageVersion:t.version,typescriptVersion:i.version,producerIdentity:su(t.version,i.version)}}catch(e){return{available:!1,reason:`scip-typescript document producer unavailable: ${e instanceof Error?e.message:String(e)}`}}}function su(e,t){return`scip-typescript:${e}:typescript:${t}:document-adapter:${ou}`}import{createHash as cu}from"crypto";import{dirname as du,join as ha}from"path";var Ft=4;var uu="typescript-index";function ya(e){let t=ha(e,uu),n=ti(t);return{...n,requestDir:n.legacyRequestDir}}function Sa(e){try{let t=Or(ee(L(ha(du(e),"meta.json"),"reindex metadata")));return t?cu("sha256").update(t).digest("hex"):null}catch{return null}}import{randomUUID as lu}from"crypto";import{existsSync as pu}from"fs";var fu=12e4,gu=5,At=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;constructor(t,n={}){this.projectRoot=zr(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??bu(),this.runtime=n.runtime??Ru,this.mailboxLimits=n.mailboxLimits??{}}request(t){let n=ri(this.cacheDir),r=ya(this.cacheDir),i=an(n.statePath);if(!ba(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript index service is not running.");let o=this.runtime.now(),a=o+this.timeoutMs,s=(this.runtime.monotonicNow??I)()+this.timeoutMs,c=rn("typescript-index-v4",{baseGeneration:this.baseGeneration,request:t}),d=on(c),u=ni(r,{mailboxVersion:nn,operationKey:c,clientId:this.runtime.randomId(),enqueuedAtMs:o,deadlineAtMs:a,protocolVersion:Ft,id:d,baseGeneration:this.baseGeneration,request:t},{nowMs:o,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??I)()<=s;){if(pu(u.responsePath))return mu(w(u.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),d,c,this.baseGeneration,t.producerIdentity,t.affectedFiles);let l=an(n.statePath);if(!ba(l,this.projectRoot,this.runtime))throw new Error("TypeScript index service stopped while processing a request.");this.runtime.sleep(gu)}throw new Error(`TypeScript index service timed out after ${this.timeoutMs}ms.`)}};function ba(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===Ft&&n.isProcessAlive(e.pid)&&(!e.processIdentity||r!=null&&Ce(e.processIdentity,r))}function mu(e,t,n,r,i,o){let a=JSON.parse(e);if(a.protocolVersion!==Ft||a.id!==t||a.operationKey!==n||a.ok===!0&&a.baseGeneration!==r)throw new Error("TypeScript index service wrote an incompatible response.");if(a.ok!==!0)throw new Error(typeof a.error=="string"?a.error:"TypeScript index service request failed.");let s=hu(a.response,i),c=[...new Set(o)].sort(),d=s.fragments.map(u=>u.relativePath).sort();if(JSON.stringify(d)!==JSON.stringify(c))throw new Error("TypeScript index service omitted or added an affected document.");return s}function hu(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(o=>{if(!o||typeof o.relativePath!="string"||o.bytesBase64!==null&&typeof o.bytesBase64!="string"||typeof o.occurrences!="number"||!Number.isInteger(o.occurrences)||o.occurrences<0||typeof o.symbols!="number"||!Number.isInteger(o.symbols)||o.symbols<0||!Array.isArray(o.referenceFragments)||!o.referenceFragments.every(yu)||r.has(o.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(o.relativePath);let a=o.bytesBase64===null?null:Su(o.bytesBase64);return{relativePath:o.relativePath,bytes:a,occurrences:o.occurrences,symbols:o.symbols,referenceFragments:o.referenceFragments}});return{producerIdentity:n.producerIdentity,cold:n.cold,durationMs:n.durationMs,fragments:i}}function yu(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 Su(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function bu(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:fu}var Ru={now:Date.now,monotonicNow:I,randomId:lu,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:ne,readProcessIdentity:te};function vu(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=Ze(e.previousSnapshot,e.currentSnapshot);if(n.changes.length===0)return{eligible:!1,reason:"no changed project inputs"};if(n.changes.some(u=>u.kind!=="modified"||u.inputKind!=="source"||!sn(u.path)))return{eligible:!1,reason:"change is not a modified TypeScript source file"};let r=ft(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=wu(r,t,e.graph);if(!i)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let o=Ra(e.currentSnapshot,e.projectFiles,e.producerIdentity),a=Ra(e.previousSnapshot,e.projectFiles,e.producerIdentity);if(o!==a)return{eligible:!1,reason:"TypeScript fragment project identity changed"};let s=Ia(e.previousSnapshot,e.projectFiles,e.graph,e.producerIdentity,e.projectFiles);if(!s)return{eligible:!1,reason:"prior document identity unavailable"};let c=Ia(e.currentSnapshot,e.projectFiles,e.graph,e.producerIdentity,r.affectedFiles);if(!c)return{eligible:!1,reason:"next document identity unavailable"};let d=i.length===1?i[0]:void 0;return{eligible:!0,manifest:n,plan:r,projectIdentity:o,previousFragmentGeneration:xa(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:xa(e.currentSnapshot,e.producerIdentity),previousDocumentIdentities:s,nextDocumentIdentities:c,projects:i,...d?{tsconfigPath:d.tsconfigPath,projectArgument:d.projectArgument}:{}}}function wu(e,t,n){let r=new Map;for(let o of e.affectedFiles){let a=Eu(o,t);if(!a)return null;let s=r.get(a)??[];s.push(o),r.set(a,s)}let i=[];for(let[o,a]of[...r].sort(([s],[c])=>s.localeCompare(c))){let s=new Set(a),c=e.changedFiles.filter(d=>s.has(d)||a.some(u=>ku(u,d,n)));if(c.length===0)return null;i.push({projectArgument:o,tsconfigPath:o==="."?"tsconfig.json":`${o}/tsconfig.json`,modifiedFiles:c,affectedFiles:[...a].sort()})}return i}function Eu(e,t){let n=t.filter(o=>o==="."||e===o||e.startsWith(`${o}/`));if(n.length===0)return null;let r=[...new Set(n)].sort((o,a)=>Ot(a)-Ot(o)||o.localeCompare(a)),i=r[0];return r[1]&&Ot(r[1])===Ot(i)?null:i}function Ot(e){return e==="."?0:e.split("/").filter(Boolean).length}function ku(e,t,n){let r=new Set,i=[e];for(let o=0;o<i.length;o+=1){let a=i[o];if(!(!a||r.has(a))){r.add(a);for(let s of n.get(a)??[]){if(s===t)return!0;r.has(s)||i.push(s)}}}return!1}function Pa(e){let t=I();try{if(!ar(e.previousDbPath)||!ar(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=or();if(!r.available)throw new Error(r.reason);let i=performance.now()-n;n=performance.now();let o=new J({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),a,s;try{a=at(o,{includeIgnored:!1}).filter(sn).sort(),s=ut(o)}finally{o.close()}let c=performance.now()-n,d=vu({projectMode:e.projectMode,workspaceProjects:e.projectMode==="workspace"?Ie(e.projectRoot,e.currentSnapshot.typescriptProjects):void 0,previousSnapshot:e.previousSnapshot,currentSnapshot:e.currentSnapshot,projectFiles:a,graph:s,producerIdentity:r.producerIdentity,rootTsconfigExists:ar(Pu(e.projectRoot,"tsconfig.json"))});if(!d.eligible)throw new Error(d.reason);let u=Sa(e.previousDbPath);if(!u)throw new Error("published TypeScript base generation unavailable");n=performance.now();let l=new At({projectRoot:e.projectRoot,cacheDir:e.cacheDir,baseGeneration:u}),p=d.projects.map(v=>l.request({kind:"emit-documents",tsconfigPath:v.tsconfigPath,projectArgument:v.projectArgument,projectIdentity:d.projectIdentity,producerIdentity:r.producerIdentity,modifiedFiles:v.modifiedFiles,affectedFiles:v.affectedFiles})),g=p.flatMap(v=>v.fragments),f=performance.now()-n,h=Iu(e.previousShardPath).size>=Co;n=performance.now();let b=h?null:D(e.previousShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:_}),y=h?{completeIndexBytes:null,affectedIndexBytes:ho(g)}:xo({packageVersion:r.packageVersion,baseIndexBytes:b,fragments:g}),x=performance.now()-n;n=performance.now(),h?_o({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,nextGenerationIdentity:d.nextFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,baseShardCurrent:e.baseShardCurrent,fragments:g}):(yo({cacheDir:e.cacheDir,packageVersion:r.packageVersion,indexBytes:b,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.previousFragmentGeneration,documentIdentities:d.previousDocumentIdentities,allowUntrackedDocuments:!0}),So({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.nextFragmentGeneration,fragments:g,documentIdentities:d.nextDocumentIdentities}));let P=performance.now()-n;n=performance.now(),y.completeIndexBytes&&sr(e.candidateShardPath,y.completeIndexBytes),sr(e.candidateAffectedScipPath,y.affectedIndexBytes);let T=performance.now()-n,k={scipPath:h?e.previousShardPath:e.candidateShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,completeScipUpdated:!h,durationMs:I()-t,cold:p.some(v=>v.cold),changedFiles:d.plan.changedFiles,affectedFiles:d.plan.affectedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:d.previousFragmentGeneration,nextFragmentGeneration:d.nextFragmentGeneration,manifest:d.manifest,plan:d.plan,projectFileCount:a.length,referenceFragmentsByFile:new Map(g.map(v=>[v.relativePath,v.referenceFragments])),timings:{runtimeMs:i,graphMs:c,requestMs:f,serviceMs:p.reduce((v,ye)=>v+ye.durationMs,0),assemblyMs:x,fragmentStoreMs:P,writeMs:T}};return e.onStatus(`Incremental TypeScript index emitted ${k.affectedFiles.length} affected document(s) across ${d.projects.length} project(s) in ${(k.durationMs/1e3).toFixed(3)}s (${k.cold?"cold":"warm"} service; ${h?"whole SCIP deferred":"whole SCIP current"}; runtime ${i.toFixed(0)}ms, graph ${c.toFixed(0)}ms, request ${f.toFixed(0)}ms, assembly ${x.toFixed(0)}ms, fragments ${P.toFixed(0)}ms, write ${T.toFixed(0)}ms).`),k}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 va(e){let t=or();if(!t.available)throw new Error(t.reason);let n=Lo({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:D(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:_}),packageVersion:t.packageVersion});sr(e.candidateShardPath,n)}function Ra(e,t,n){let r=e.files.filter(i=>Fr(i.path,e.languages)!=="source").map(i=>({path:i.path,size:i.size,hash:i.hash})).sort((i,o)=>i.path.localeCompare(o.path));return cr(JSON.stringify({version:1,producerIdentity:n,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),projectFiles:[...t].sort(),nonSourceInputs:r}))}function xa(e,t){return cr(JSON.stringify({version:1,producerIdentity:t,snapshot:e}))}function Ia(e,t,n,r,i){let o=new Set(e.files.map(c=>c.path)),a=ii({projectFiles:t.filter(c=>o.has(c)),snapshot:e,graph:n,engineIdentity:r}),s=new Map;for(let c of i){let d=a.identityFor(c,"typescript-scip-document-v1");if(d.key){s.set(c,d.key);continue}if(o.has(c))return null;s.set(c,cr(JSON.stringify({version:1,producerIdentity:r,generatedDocument:c})))}return s}function cr(e){return xu("sha256").update(e).digest("hex")}import{closeSync as Tu,existsSync as Ct,fstatSync as Du,lstatSync as Fu,openSync as Au,renameSync as lr,rmSync as _t,statSync as Ou,writeSync as Cu}from"fs";import{cpus as _u}from"os";import{join as pr}from"path";var dr=Symbol("no-error");async function wa(e,t,n){if(e.length===0)return[];let r=new Array(e.length),i=Number.isFinite(t)?Math.max(1,Math.floor(t)):1,o=Math.min(e.length,i),a=0,s=dr,c=!0,d=Array.from({length:o},async()=>{for(;c&&a<e.length;){let u=a++;try{r[u]=await n(e[u])}catch(l){s===dr&&(s=l),c=!1}}});if(await Promise.all(d),s!==dr)throw s;return r}function Lu(e,t){if(e.temporaryRootConfigContent===void 0)return null;let n=pr(t,"tsconfig.json"),r=Buffer.from(e.temporaryRootConfigContent,"utf8"),i;try{i=Au(n,"wx",384)}catch(o){if(o.code==="EEXIST")return null;throw o}try{Cu(i,r);let o=Du(i);return{path:n,content:r,device:o.dev,inode:o.ino}}finally{Tu(i)}}function ju(e){if(e)try{let t=Fu(e.path);if(!t.isFile()||t.dev!==e.device||t.ino!==e.inode||t.size!==e.content.byteLength)return;let n;try{n=D(e.path,{maxBytes:e.content.byteLength,inputKind:"temporary TypeScript index configuration"})}catch{return}if(!n.equals(e.content))return;_t(e.path)}catch(t){if(t.code!=="ENOENT")throw t}}function Mu(e,t,n){if(!e.defaultOutputPath)return;let r=pr(t,e.defaultOutputPath);n!==r&&Ct(r)&&lr(r,n)}function Nu(e,t,n){if(!e.defaultOutputPath)return null;let r=pr(t,e.defaultOutputPath);if(r===n)return null;let i=`${n}.default-output-backup`;return _t(i,{force:!0}),Ct(r)?(lr(r,i),{defaultOutputPath:r,backupPath:i}):{defaultOutputPath:r,backupPath:null}}function Gu(e){e&&(_t(e.defaultOutputPath,{force:!0}),e.backupPath&&Ct(e.backupPath)&&lr(e.backupPath,e.defaultOutputPath))}function $u(e,t){if(e<=1)return 1;let n=Number(process.env.CODEBASEIQ_INDEXER_CONCURRENCY??0),r=Number.isFinite(t)&&t&&t>0?t:Number.isFinite(n)&&n>0?n:Math.min(8,Math.max(1,_u().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function ka(e,t,n,r,i){G(i,"Reindex cancelled by its owner.");let o=e.filter(u=>u.config.defaultOutputPath),a=e.filter(u=>!u.config.defaultOutputPath),s=[],c=$u(a.length,r),d=await wa(a,c,u=>ur(u,t,n,i));if(c>1){let u=new Map;for(let l of d.filter(p=>p.result.skipped&&p.retryable)){let p=a.find(g=>g.id===l.result.id);p&&(n(`Retrying ${p.label} indexer serially after parallel failure...`),G(i,"Reindex cancelled by its owner."),u.set(p.id,(await ur(p,t,n,i)).result))}s.push(...d.map(({result:l})=>u.get(l.id)??l))}else s.push(...d.map(({result:u})=>u));for(let u of o)G(i,"Reindex cancelled by its owner."),s.push((await ur(u,t,n,i)).result);return s.sort((u,l)=>e.findIndex(p=>p.id===u.id)-e.findIndex(p=>p.id===l.id))}async function ur(e,t,n,r){G(r,"Reindex cancelled by its owner."),n(`Indexing ${e.label} with ${e.resolvedBinary}...`),_t(e.scipPath,{force:!0});let i=Nu(e.config,t,e.scipPath),o=Lu(e,t),a=[e.binary,...e.args].join(" "),s=I();try{e.trustedProjectTool&&ei(t,e.trustedProjectTool);let d=Qr(e.binary,e.args),u=await lt({command:d.binary,args:d.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:Vu(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,signal:r});if(u.status!==0){let l=u.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${u.status}${l?`:
233
- ${l}`:""}`)}Mu(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw jr(r,"Reindex cancelled by its owner.");let u=d instanceof Error?d.message:String(d),l=`${e.resolvedBinary} indexer failed: ${u.split(`
234
- `)[0]}`,p=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:I()-s,command:a,skipped:{language:e.language,reason:p}},retryable:Bu(d)}}finally{Gu(i),ju(o)}if(!Ct(e.scipPath)){let d=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`,u=e.label===e.language?d:`${e.label}: ${d}`;return n(`Skipping ${e.label}: ${d}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:I()-s,command:a,skipped:{language:e.language,reason:u}},retryable:!1}}let c;try{c=Ou(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:I()-s,command:a,outputBytes:c},retryable:!1}}function Vu(){let e=Number(process.env.CODEBASEIQ_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):si.indexer}function Bu(e){return e instanceof ci?e.kind==="spawn"&&Ea(e.cause):Ea(e)}function Ea(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as Da}from"child_process";import{homedir as Ta,platform as qu}from"os";import{delimiter as Wu,join as Lt}from"path";function gr(e,t){let n=e.installMethods,r=Me(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(!Qt(i.prerequisite))continue;let o=Uu(i);t(`Installing immutable ${i.identity} via ${i.label} into ${o}; expected executable: ${r}.`);try{Da(i.binary,i.args,{stdio:"inherit",windowsHide:!0,timeout:3e5,env:process.env,shell:qu()==="win32"});let a=ve(e);if(a){let s=a===e.indexerBinary?"":` (using ${a})`;return t(`Successfully installed ${i.identity} via ${i.label}${s}; resolved executable: ${a}.`),!0}t(`${i.label} command completed but ${r} was not found on PATH`)}catch(a){let s=a instanceof Error?a.message:String(a);t(`${i.label} install failed: ${s}`)}}return t(`Could not auto-install ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function Uu(e){if(e.binary==="npm")return fr("npm",["root","-g"])??e.destination;if(e.binary==="go"){let t=fr("go",["env","GOBIN"]);if(t)return t;let n=fr("go",["env","GOPATH"]);if(n)return Lt(n.split(Wu)[0],"bin")}return e.binary==="dotnet"?Lt(process.env.DOTNET_CLI_HOME??Ta(),".dotnet","tools"):e.binary==="dart"?Lt(process.env.PUB_CACHE??Lt(Ta(),".pub-cache"),"bin"):e.destination}function fr(e,t){try{return Da(e,t,{stdio:["ignore","pipe","ignore"],windowsHide:!0,encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}import Qa from"better-sqlite3";import{existsSync as Za}from"fs";import{dirname as es,join as ts,resolve as ns}from"path";import{randomUUID as zu}from"crypto";import{mkdtempSync as Ju,rmSync as Yu,statSync as Aa}from"fs";import{tmpdir as Ku}from"os";import{join as Oa}from"path";import{Worker as Xu}from"worker_threads";function Hu(){return{"missing-source-file":0,"missing-service-script":0,"no-definition":0,"same-file-definition":0,"unindexed-definition":0}}function Te(){return{skippedReferences:0,skippedReferenceReasons:Hu(),skippedReferenceSamples:[]}}function jt(e,t){e.skippedReferences+=t.skippedReferences;for(let n of Object.keys(e.skippedReferenceReasons)){e.skippedReferenceReasons[n]+=t.skippedReferenceReasons[n];for(let r of t.skippedReferenceSamples.filter(i=>i.reason===n))e.skippedReferenceSamples.filter(o=>o.reason===n&&o.sourceFile===r.sourceFile).length<2&&e.skippedReferenceSamples.push(r)}}var Qu=3e5,Ca=64*1024*1024,Zu={createResultDirectory:()=>Ju(Oa(Ku(),"codebaseiq-vue-workers-")),spawn:(e,t)=>new Xu(e,{workerData:t}),resultSize:e=>Aa(e).size,readResult:e=>w(e,{maxBytes:Ca,inputKind:"Vue worker result"}),removeResultDirectory:e=>Yu(e,{recursive:!0,force:!0})};function _a(e){return e.length>=8&&ja(e.length)>1}async function La(e,t=Zu){let n=ja(e.vueFiles.length),r=pl(e.vueFiles),i=gl(r,n),o=new URL("./augment-vue-worker.js",import.meta.url),a=e.timeoutMs??ul(),s=e.maxResultBytes??ll();Fa("timeoutMs",a),Fa("maxResultBytes",s);let c=zu(),d=t.createResultDirectory(),u=[],l,p,g;try{for(let h=0;h<i.length;h++){let b=h,y=i[h]??[],x=y.map(k=>k.taskId),P=Oa(d,`${b}.json`),T=t.spawn(o,{projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,tasks:y,resultPath:P,runId:c,workerId:b,taskIds:x});u.push({workerId:b,taskIds:x,resultPath:P,handle:T,completion:el(T,b)})}await tl(u,a);let f=u.sort((h,b)=>h.workerId-b.workerId).map(h=>rl(h,c,s,t));g={occurrences:f.flatMap(h=>h.occurrences),...Te()};for(let h of f)jt(g,h)}catch(f){l=f}finally{let f=await nl(u);if(f.length===0)try{t.removeResultDirectory(d)}catch(h){f.push(h)}if(f.length>0){let h=l===void 0?f:[l,...f];p=new AggregateError(h,`Vue worker cleanup failed: ${dl(h[0])}`)}}if(p)throw p;if(l!==void 0)throw l;if(!g)throw new Error("Vue workers completed without producing a merged result.");return g}function el(e,t){return new Promise((n,r)=>{let i=!1,o=c=>{i||(i=!0,e.off("error",a),e.off("exit",s),c?r(c):n())},a=c=>{o(new Error(`Vue reference worker ${t} failed: ${c.message}`,{cause:c}))},s=c=>{o(c===0?void 0:new Error(`Vue reference worker ${t} exited with code ${c}`))};e.once("error",a),e.once("exit",s)})}async function tl(e,t){let n;try{await Promise.race([Promise.all(e.map(r=>r.completion)),new Promise((r,i)=>{n=setTimeout(()=>i(new Error(`Vue reference workers timed out after ${(t/1e3).toFixed(3)}s`)),t),n.unref()})])}finally{n&&clearTimeout(n)}}async function nl(e){return(await Promise.allSettled(e.map(async n=>n.handle.terminate()))).flatMap(n=>n.status==="rejected"?[n.reason]:[])}function rl(e,t,n,r){let i=r.resultSize(e.resultPath);if(!Number.isSafeInteger(i)||i<0||i>n)throw new Error(`Vue reference worker ${e.workerId} result is ${i} bytes; limit is ${n} bytes`);let o;try{o=JSON.parse(r.readResult(e.resultPath))}catch(a){throw new Error(`Vue reference worker ${e.workerId} produced invalid JSON`,{cause:a})}if(!Ye(o)||o.version!==1||o.runId!==t||o.workerId!==e.workerId)throw new Error(`Vue reference worker ${e.workerId} result identity does not match its assignment`);if(!cl(o.taskIds,e.taskIds))throw new Error(`Vue reference worker ${e.workerId} result task identities do not match its assignment`);if(o.ok===!1)throw typeof o.error!="string"?new Error(`Vue reference worker ${e.workerId} failure payload is malformed`):new Error(`Vue reference worker ${e.workerId} failed: ${o.error}`);if(o.ok!==!0||!il(o.result))throw new Error(`Vue reference worker ${e.workerId} success payload is malformed`);return o.result}function il(e){if(!Ye(e)||!Array.isArray(e.occurrences)||!e.occurrences.every(ol)||!X(e.skippedReferences)||!Ye(e.skippedReferenceReasons))return!1;for(let t of["missing-source-file","missing-service-script","no-definition","same-file-definition","unindexed-definition"])if(!X(e.skippedReferenceReasons[t]))return!1;return Array.isArray(e.skippedReferenceSamples)&&e.skippedReferenceSamples.every(al)}function ol(e){return Ye(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.sourceToken=="string"&&typeof e.definitionFile=="string"&&X(e.symbolId)}function al(e){return Ye(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.token=="string"&&sl(e.reason)}function sl(e){return e==="missing-source-file"||e==="missing-service-script"||e==="no-definition"||e==="same-file-definition"||e==="unindexed-definition"}function X(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>=0}function Ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function cl(e,t){return Array.isArray(e)&&e.length===t.length&&e.every((n,r)=>typeof n=="string"&&n===t[r])}function Fa(e,t){if(!Number.isSafeInteger(t)||t<=0)throw new TypeError(`${e} must be a positive safe integer.`)}function dl(e){return e instanceof Error?e.message:String(e)}function ja(e){let t=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKERS??0),n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.min(e,n))}function ul(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_TIMEOUT_MS??0);return Number.isFinite(e)&&e>0?e:Qu}function ll(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_RESULT_MAX_BYTES??0);return Number.isSafeInteger(e)&&e>0?e:Ca}function pl(e){let t=fl(),n=[];for(let r of e){let i=Ma(r),o=Math.max(1,Math.ceil(i/t));for(let a=0;a<o;a++)n.push({taskId:`${n.length}:${r}:${a}`,fileName:r,startOffset:Math.floor(i*a/o),endOffset:a===o-1?Number.POSITIVE_INFINITY:Math.floor(i*(a+1)/o),countFileSkip:a===0})}return n}function fl(){return Number.POSITIVE_INFINITY}function gl(e,t){let n=Array.from({length:t},()=>({tasks:[],weight:0})),r=e.map(i=>({task:i,weight:ml(i)})).sort((i,o)=>o.weight-i.weight);for(let i of r){let o=n.reduce((a,s)=>s.weight<a.weight?s:a);o.tasks.push(i.task),o.weight+=i.weight}return n.map(i=>i.tasks).filter(i=>i.length>0)}function ml(e){return Number.isFinite(e.endOffset)?Math.max(1,e.endOffset-e.startOffset):Math.max(1,Ma(e.fileName)-e.startOffset)}function Ma(e){try{return Aa(e).size}catch{return 1}}import{createRequire as hl}from"module";import{existsSync as yl}from"fs";import{dirname as Na,extname as Sl,join as Ga,relative as bl,resolve as Rl}from"path";import{pathToFileURL as xl}from"url";function Il(e){e.transaction(()=>{e.prepare(`
229
+ ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),c=new Map;for(let[u,l]of Object.entries({documents:i,chunks:o,definitions:a,mentions:s}))for(let p of l){let g=JSON.stringify([u,p]),f=c.get(p.relative_path)??[];f.push(g),c.set(p.relative_path,f)}let d=new Map;for(let[u,l]of[...c].sort(([p],[g])=>p.localeCompare(g))){let p=Cc("sha256");for(let g of l.sort())p.update(g).update(`
230
+ `);d.set(u,p.digest("hex"))}return d}function ae(e,t){return e.prepare(t).get().value}import Kc from"better-sqlite3";var yt="idx_mentions_definitions",Xc=["symbol_id","chunk_id"];function vn(e){let t=new Kc(j(e)),n=[],r=[],i=[];try{return t.transaction(()=>{Qc(t,n),St(t,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&zi(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")):St(t,"idx_global_symbols_symbol")&&i.push("idx_global_symbols_symbol");let o=St(t,"idx_chunks_doc_id"),a=zi(t,"chunks").some(s=>s.name!=="idx_chunks_doc_id"&&s.columns.length>1&&s.columns[0]==="document_id");o?.join("\0")==="document_id"&&a?(t.exec('DROP INDEX "idx_chunks_doc_id"'),r.push("idx_chunks_doc_id")):o&&i.push("idx_chunks_doc_id"),t.exec("ANALYZE")})(),{added:n,removed:r,retained:i,analyzed:!0}}catch(o){if(o.code==="SQLITE_NOTADB")return{added:[],removed:[],retained:[],analyzed:!1,skippedReason:"not-a-sqlite-database"};throw o}finally{t.close()}}function Qc(e,t){let n=Ji(e,yt);if(n){let r=n.columns.join("\0")===Xc.join("\0"),i=/\bWHERE\s+role\s*=\s*1\b/iu.test(n.sql??"");if(!r||!i||n.table!=="mentions")throw new Error(`${yt} exists with an incompatible definition`);return}e.exec(`CREATE INDEX "${yt}" ON mentions(symbol_id, chunk_id) WHERE role = 1`),t.push(yt)}function zi(e,t){return e.prepare(`PRAGMA index_list('${t.replaceAll("'","''")}')`).all().map(n=>({name:n.name,unique:n.unique===1,columns:St(e,n.name)??[]}))}function St(e,t){return Ji(e,t)?.columns??null}function Ji(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{writeFileSync as Zc}from"fs";function U(e,t){let n=performance.now(),r=e.run(t);return{stageId:e.id,facts:e.facts,durationMs:performance.now()-n,result:r}}function Ki(e){let t=e.readFingerprint(),n=Qi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=e.compute();return Zi(e.cachePath,e.readFingerprint(),r),r}async function Xi(e){let t=e.readFingerprint(),n=Qi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=await e.compute();return Zi(e.cachePath,e.readFingerprint(),r),r}function Qi(e,t){try{let n=JSON.parse(E(e,{maxBytes:_,inputKind:"post-index augmentation cache"}));return Yi(n.fingerprint)===Yi(t)?{result:n.result}:null}catch{return null}}function Zi(e,t,n){Zc(e,`${JSON.stringify({updatedAt:new Date().toISOString(),fingerprint:t,result:n},null,2)}
231
+ `)}function Yi(e){return JSON.stringify(e)}import{createHash as ed}from"crypto";import{existsSync as En,readdirSync as td}from"fs";import{dirname as wn,join as bt,relative as nd,resolve as Tn,sep as eo}from"path";function to(e,t){let n=t.includes("."),r={};for(let o of t)r[o]=[];let i=[];for(let o of e){let a=oo(o.path,t);a?r[a].push(o):n?r["."].push(o):i.push(o)}return{files:r,shared:i}}function no(e,t){let n=new Map;for(let i of e){let o=t[i]?.packageName;o&&n.set(o,i)}let r=new Map;for(let i of e)r.set(i,new Set);for(let i of e){let o=t[i],a=r.get(i);if(!o||o.parseFailed){for(let s of e)s!==i&&a.add(s);continue}for(let s of o.dependencyNames){let c=n.get(s);c&&c!==i&&a.add(c)}for(let s of[...o.pathsTargets,...o.referencesPaths]){let c=oo(s,e);c&&c!==i&&a.add(c)}}return rd(e,r)}function ro(e,t,n){let r={};for(let i of e){let o=new Map;for(let a of t.files[i]??[])o.set(a.path,a);for(let a of n[i]??[])for(let s of t.files[a]??[])o.set(s.path,s);for(let a of t.shared)o.set(a.path,a);r[i]={files:[...o.values()].sort((a,s)=>a.path.localeCompare(s.path))}}return r}function kn(e){if(e===".")return"root";let t=ed("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function io(e,t){let n=Tn(e),r={};for(let i of t)r[i]=id(n,i);return r}function oo(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 rd(e,t){let n={};for(let r of e){let i=new Set,o=[...t.get(r)??[]];for(;o.length>0;){let a=o.pop();if(!(a===r||i.has(a))){i.add(a);for(let s of t.get(a)??[])s!==r&&!i.has(s)&&o.push(s)}}n[r]=[...i].sort((a,s)=>a.localeCompare(s))}return n}function id(e,t){let n=t==="."?e:bt(e,t),r=od(n),i=ad(n),o=i?sd(i,e):{pathsTargets:[],referencesPaths:[],failed:!1};return{packageName:r.name,dependencyNames:r.dependencyNames,pathsTargets:o.pathsTargets,referencesPaths:o.referencesPaths,parseFailed:r.failed||o.failed}}function od(e){let t=bt(e,"package.json");if(!En(t))return{name:void 0,dependencyNames:[],failed:!1};let n=Dn(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 o of["dependencies","devDependencies","peerDependencies"]){let a=n.value[o];if(a&&typeof a=="object"&&!Array.isArray(a))for(let s of Object.keys(a))i.add(s)}return{name:r,dependencyNames:[...i],failed:!1}}function ad(e){let t=bt(e,"tsconfig.json");if(En(t))return t;let n;try{n=td(e).filter(r=>/^tsconfig.*\.json$/.test(r))}catch{return}return n.sort((r,i)=>r.localeCompare(i)),n.length>0?bt(e,n[0]):void 0}function sd(e,t){let n=Dn(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=cd(n.value,e,t),i=ao(e,n.value,t,0);return{pathsTargets:i.pathsTargets,referencesPaths:r,failed:i.failed}}function cd(e,t,n){let r=e.references;if(!Array.isArray(r))return[];let i=wn(t),o=new Set;for(let a of r){if(!a||typeof a!="object")continue;let s=a.path;if(typeof s!="string"||s.trim()==="")continue;let c=so(s,i,n);c&&o.add(c)}return[...o]}function ao(e,t,n,r){let i=dd(t);if(i)return{pathsTargets:ud(i,wn(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let o=ld(t.extends,e,n);if(!o)return{pathsTargets:[],failed:!1};let a=Dn(o);return a.ok?ao(o,a.value,n,r+1):{pathsTargets:[],failed:!0}}function dd(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 ud(e,t,n){let r=new Set;for(let i of Object.values(e))if(Array.isArray(i))for(let o of i){if(typeof o!="string")continue;let a=so(o,t,n);a&&r.add(a)}return[...r]}function ld(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=Tn(wn(t),r);if(i.endsWith(".json")||(i=`${i}.json`),!i.split(eo).includes("node_modules")&&Wt(n,i)&&En(i))return i}function so(e,t,n){let r=e.replace(/\/?\*+$/,""),i=Tn(t,r===""?".":r);if(!Wt(n,i))return;let a=nd(n,i).split(eo).join("/");return a===""?".":a}function pd(e){let t="",n=0,r=!1,i=e.length;for(;n<i;){let o=e[n];if(r){if(t+=o,o==="\\"&&n+1<i){t+=e[n+1],n+=2;continue}o==='"'&&(r=!1),n+=1;continue}if(o==='"'){r=!0,t+=o,n+=1;continue}if(o==="/"&&e[n+1]==="/"){for(n+=2;n<i&&e[n]!==`
232
+ `;)n+=1;continue}if(o==="/"&&e[n+1]==="*"){for(n+=2;n<i&&!(e[n]==="*"&&e[n+1]==="/");)n+=1;n+=2;continue}t+=o,n+=1}return t}function Dn(e){try{let t=E(e,{maxBytes:_,inputKind:"TypeScript project manifest"}),n=JSON.parse(pd(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{writeFileSync as kd}from"fs";import{deserializeSCIP as Dd,PositionEncoding as Rt,serializeSCIP as Fd}from"@c4312/scip";import{rmSync as gd}from"fs";import md from"better-sqlite3";var hd=200,yd=[`CREATE TABLE documents (
233
+ id INTEGER PRIMARY KEY,
234
+ language TEXT,
235
+ relative_path TEXT NOT NULL UNIQUE,
236
+ position_encoding TEXT,
237
+ text TEXT
238
+ )`,`CREATE TABLE chunks (
239
+ id INTEGER PRIMARY KEY,
240
+ document_id INTEGER NOT NULL,
241
+ chunk_index INTEGER NOT NULL,
242
+ start_line INTEGER NOT NULL,
243
+ end_line INTEGER NOT NULL,
244
+ occurrences BLOB NOT NULL,
245
+ FOREIGN KEY (document_id) REFERENCES documents(id)
246
+ )`,`CREATE TABLE global_symbols (
247
+ id INTEGER PRIMARY KEY,
248
+ symbol TEXT NOT NULL UNIQUE,
249
+ display_name TEXT,
250
+ kind INTEGER,
251
+ documentation TEXT,
252
+ signature BLOB,
253
+ enclosing_symbol TEXT,
254
+ relationships BLOB
255
+ )`,`CREATE TABLE mentions (
256
+ chunk_id INTEGER NOT NULL,
257
+ symbol_id INTEGER NOT NULL,
258
+ role INTEGER NOT NULL,
259
+ PRIMARY KEY (chunk_id, symbol_id, role),
260
+ FOREIGN KEY (chunk_id) REFERENCES chunks(id),
261
+ FOREIGN KEY (symbol_id) REFERENCES global_symbols(id)
262
+ )`,`CREATE TABLE defn_enclosing_ranges (
263
+ id INTEGER PRIMARY KEY,
264
+ document_id INTEGER NOT NULL,
265
+ symbol_id INTEGER NOT NULL,
266
+ start_line INTEGER NOT NULL,
267
+ start_char INTEGER NOT NULL,
268
+ end_line INTEGER NOT NULL,
269
+ end_char INTEGER NOT NULL,
270
+ FOREIGN KEY (document_id) REFERENCES documents(id),
271
+ FOREIGN KEY (symbol_id) REFERENCES global_symbols(id)
272
+ )`],Sd=["CREATE INDEX idx_chunks_line_range ON chunks(document_id, start_line, end_line)","CREATE INDEX idx_mentions_symbol_id_role ON mentions(symbol_id, role)","CREATE INDEX idx_defn_enclosing_ranges_symbol_id ON defn_enclosing_ranges(symbol_id)","CREATE INDEX idx_defn_enclosing_ranges_document ON defn_enclosing_ranges(document_id, start_line, end_line)","CREATE INDEX idx_chunks_doc_id ON chunks(document_id)","CREATE INDEX idx_global_symbols_symbol ON global_symbols(symbol)"];function uo(e,t){gd(e,{force:!0});let n=new md(j(e));try{n.pragma("journal_mode = WAL"),n.pragma("synchronous = NORMAL"),n.pragma("temp_store = MEMORY"),n.pragma("foreign_keys = ON");for(let r of yd)n.exec(r);n.transaction(()=>bd(n,t)).immediate(),n.transaction(()=>{for(let r of Sd)n.exec(r)}).immediate()}finally{n.close()}}function bd(e,t){let n=Rd(e);for(let r of xd(e,n,t))Id(e,n,r),Pd(e,n,r)}function Rd(e){let t=e.prepare("INSERT INTO global_symbols (symbol, display_name, kind, documentation, enclosing_symbol) VALUES (?, ?, ?, ?, ?)"),n=new Map,r=i=>{let o=n.get(i.symbol);if(o!==void 0)return o;let a=Number(t.run(i.symbol,i.displayName||null,i.kind||null,i.documentation.join(`
273
+ `)||null,i.enclosingSymbol||null).lastInsertRowid);return n.set(i.symbol,a),a};return{declared:r,referenced:i=>r({symbol:i,displayName:null,kind:null,documentation:[],enclosingSymbol:null})}}function xd(e,t,n){let r=e.prepare("INSERT INTO documents (language, relative_path, position_encoding, text) VALUES (?, ?, ?, ?)"),i=[],o=new Set;for(let a of n){if(!a.relativePath)throw new Error("document relative path must not be empty");if(o.has(a.relativePath))continue;o.add(a.relativePath);let s=Number(r.run(a.language||null,a.relativePath,a.positionEncoding,a.text||null).lastInsertRowid);for(let c of vd(a.symbols)){if(!c.symbol)throw new Error(`empty symbol in symbol information for document ${a.relativePath}`);lt(c.symbol)||t.declared(c)}i.push({id:s,relativePath:a.relativePath,occurrences:Ed(a.occurrences)})}return i}function Id(e,t,n){let r=e.prepare(`INSERT INTO defn_enclosing_ranges (document_id, symbol_id, start_line, start_char, end_line, end_char)
274
+ VALUES (?, ?, ?, ?, ?, ?)`);for(let i of n.occurrences){if((i.roles&1)===0||lt(i.symbol)||!i.enclosingRange)continue;let[o,a,s,c]=Td(i,n.relativePath);r.run(n.id,t.referenced(i.symbol),o,a,s,c)}}function Pd(e,t,n){let r=e.prepare("INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences) VALUES (?, ?, ?, ?, ?)"),i=e.prepare("INSERT INTO mentions (chunk_id, symbol_id, role) VALUES (?, ?, ?)");wd(n.occurrences).forEach((o,a)=>{let s=Number(r.run(n.id,a,o.startLine,o.endLine,ni(o.occurrences)).lastInsertRowid),c=new Map;for(let d of o.occurrences){if(lt(d.symbol))continue;let u=c.get(d.symbol)??new Set;u.add(d.roles),c.set(d.symbol,u)}for(let[d,u]of c){let l=t.referenced(d);for(let p of u)i.run(s,l,p)}})}function vd(e){let t=new Map;for(let n of e){let r=t.get(n.symbol);if(!r){t.set(n.symbol,n);continue}t.set(n.symbol,{...r,documentation:[...r.documentation,...n.documentation.filter(i=>!r.documentation.includes(i))]})}return[...t.values()].sort((n,r)=>lo(n.symbol,r.symbol))}function Ed(e){let t=[...e].sort((r,i)=>co(r.range,i.range)||lo(r.symbol,i.symbol)),n=[];for(let r of t){let i=n.at(-1);i&&i.symbol===r.symbol&&co(i.range,r.range)===0?n[n.length-1]={...i,roles:i.roles|r.roles}:n.push(r)}return n}function wd(e){let t=[],n=0;for(;n<e.length;){let r=Math.min(e.length,n+hd);for(;r<e.length&&e[r-1].range[0]===e[r].range[0];)r+=1;t.push({startLine:e[n].range[0],endLine:e[r-1].range[0],occurrences:e.slice(n,r)}),n=r}return t}function Td(e,t){let n=e.enclosingRange,[r,i,o,a]=n;if(!(r>=0&&i>=0&&(o>r&&a>=0||o===r&&a>=i)))throw new Error(`bad enclosing range ${JSON.stringify(n)} for symbol ${e.symbol} in document ${t}`);return n}function co(e,t){return e[0]-t[0]||e[1]-t[1]||e[2]-t[2]||e[3]-t[3]}function lo(e,t){return e<t?-1:e>t?1:0}var _d={[Rt.UnspecifiedPositionEncoding]:null,[Rt.UTF8CodeUnitOffsetFromLineStart]:"UTF-8",[Rt.UTF16CodeUnitOffsetFromLineStart]:"UTF-16",[Rt.UTF32CodeUnitOffsetFromLineStart]:"UTF-32"};function fo(e,t,n){let r=Dd(D(e,{inputKind:"SCIP index store input",maxBytes:C})),i={removedDefinitionOccurrences:0,touchedDocuments:0};if(n.sanitize){let o=ht(r);o.touchedDocuments>0&&(kd(e,Buffer.from(Fd(o.index))),r=o.index),i={removedDefinitionOccurrences:o.removedDefinitionOccurrences,touchedDocuments:o.touchedDocuments}}return uo(t,r.documents.map(Od)),i}function Od(e){let t=_d[e.positionEncoding];if(t===void 0)throw new Error(`unknown position encoding ${e.positionEncoding} in ${e.relativePath}`);return{relativePath:e.relativePath,language:e.language||null,positionEncoding:t,text:e.text||null,symbols:e.symbols.map(n=>({symbol:n.symbol,displayName:n.displayName||null,kind:n.kind||null,documentation:n.documentation,enclosingSymbol:n.enclosingSymbol||null})),occurrences:e.occurrences.flatMap(n=>{let r=po(n.range);return r?[{symbol:n.symbol,roles:n.symbolRoles,range:r,enclosingRange:po(n.enclosingRange)}]:[]})}}function po(e){return e.length===3?[e[0],e[1],e[0],e[2]]:e.length===4?[e[0],e[1],e[2],e[3]]:null}import{createHash as ia,randomUUID as fu}from"crypto";import{existsSync as ce,lstatSync as Kn,mkdirSync as we,readdirSync as oa,realpathSync as aa,renameSync as he,rmSync as se,statSync as Dt}from"fs";import{dirname as Xn,join as m,resolve as Qn}from"path";import{setTimeout as gu}from"timers/promises";import{pathToFileURL as ea}from"url";import{deserializeSCIP as sa}from"@c4312/scip";import mu from"better-sqlite3";import{lstatSync as Hd,readdirSync as zd}from"fs";import{join as Jd,relative as Yd,resolve as Mn,sep as Kd}from"path";import{createHash as Ad}from"crypto";import{existsSync as Me,mkdirSync as Cd,readdirSync as go,renameSync as Ld,rmSync as mo,writeFileSync as jd}from"fs";import{join as Y}from"path";import{create as yo,fromBinary as So,toBinary as Nd}from"@bufbuild/protobuf";import{deserializeSCIP as xt,DocumentSchema as _n,IndexSchema as bo,serializeSCIP as Ro}from"@c4312/scip";var It=1,Ge="typescript-scip-fragments";function xo(e){if(e.length===0)throw new Error("affected TypeScript mini index requires documents");let t=new Set,n=[];for(let o of e){let a=ge(o.relativePath);if(t.has(a))throw new Error(`duplicate TypeScript fragment replacement: ${a}`);if(t.add(a),o.bytes===null)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${a}`);let s=So(_n,o.bytes);if(s.relativePath!==a)throw new Error(`TypeScript fragment path mismatch: expected ${a}, got ${s.relativePath}`);n.push(s)}let r=Ro(yo(bo,{documents:n,externalSymbols:[]})),i=xt(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function $e(e){let t=Y(e,Ge);return{rootDir:t,blobDir:Y(t,"blobs"),generationDir:Y(t,"generations")}}function Md(e){let t=xt(e.indexBytes);Co(t.metadata,Lo(e)),Ao(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let a=ge(o.relativePath);if(n.has(a))throw new Error(`duplicate TypeScript SCIP document path: ${a}`);n.add(a);let s=Nd(_n,o),c=e.documentIdentities.get(a)??(e.allowUntrackedDocuments?me(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:a,contentHash:me(s)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${a}`);r.push(Do(e.cacheDir,{relativePath:a,bytes:s,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=Fo(e,r);return _o(e.cacheDir,i),i}function Io(e){let t=$e(e.cacheDir);if(!Me(An(t,e.generationIdentity)))return Md(e);let n=vo({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity});if(!e.allowUntrackedDocuments&&n.manifest.documents.length!==e.documentIdentities.size)throw new Error("TypeScript fragment generation document identities changed");for(let r of n.manifest.documents){let i=e.documentIdentities.get(r.relativePath);if(!(i===void 0&&e.allowUntrackedDocuments)&&i!==r.documentIdentity)throw new Error(`TypeScript fragment generation document identity changed: ${r.relativePath}`)}return n.manifest}function Po(e){let t=vo({cacheDir:e.cacheDir,generationIdentity:e.previousGenerationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity}).manifest,n=new Map(t.documents.map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let a=ge(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript fragment replacement: ${a}`);if(r.add(a),!n.has(a))throw new Error(`TypeScript fragment replacement has no prior document: ${a}`);let s=e.documentIdentities.get(a);if(!s)throw new Error(`missing TypeScript document identity: ${a}`);o.bytes===null?n.delete(a):n.set(a,Do(e.cacheDir,o,s))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=Fo(e,[...n.values()]);return _o(e.cacheDir,i),i}function vo(e){let t=$e(e.cacheDir),n=An(t,e.generationIdentity),r;try{r=On(E(n,{maxBytes:_,inputKind:"TypeScript fragment manifest"}))}catch(o){throw new Error(`TypeScript fragment generation is unavailable: ${o instanceof Error?o.message:String(o)}`,{cause:o})}if(r.generationIdentity!==e.generationIdentity)throw new Error("TypeScript fragment generation identity does not match its manifest path");if(e.producerIdentity&&r.producerIdentity!==e.producerIdentity)throw new Error("TypeScript fragment producer identity changed");if(e.projectIdentity&&r.projectIdentity!==e.projectIdentity)throw new Error("TypeScript fragment project identity changed");let i=new Map;for(let o of r.documents){let a=Y(t.blobDir,`${o.blobHash}.scipdoc`),s=D(a,{maxBytes:z,inputKind:"TypeScript fragment blob"});if(s.byteLength!==o.byteLength||me(s)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,s)}return{manifest:r,fragments:i}}function Eo(e){let t=To(e);return Fn(t.baseIndex,t.completeDocuments,"assembled")}function wo(e){let t=To(e);return Gd(t.deletedAffectedPaths),{completeIndexBytes:Fn(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Fn(t.baseIndex,t.affectedDocuments,"affected")}}function To(e){let t=xt(e.baseIndexBytes);Co(t.metadata,Lo(e)),Ao(t.externalSymbols);let n=new Map;for(let s of e.fragments){let c=ge(s.relativePath);if(n.has(c))throw new Error(`duplicate TypeScript fragment replacement: ${c}`);n.set(c,s)}if(n.size===0)throw new Error("TypeScript index assembly requires at least one replacement");let r=new Set,i=[],o=[],a=[];for(let s of t.documents){let c=ge(s.relativePath);if(r.has(c))throw new Error(`duplicate TypeScript SCIP document path: ${c}`);r.add(c);let d=n.get(c);if(!d){i.push(s);continue}if(n.delete(c),d.bytes===null){a.push(c);continue}let u=So(_n,d.bytes);if(u.relativePath!==c)throw new Error(`TypeScript fragment path mismatch: expected ${c}, got ${u.relativePath}`);i.push(u),o.push(u)}if(n.size>0)throw new Error(`TypeScript fragment replacement has no prior document: ${[...n.keys()].sort()[0]}`);return{baseIndex:t,completeDocuments:i,affectedDocuments:o,deletedAffectedPaths:a}}function Fn(e,t,n){let r=Ro(yo(bo,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=xt(r);if(i.documents.length!==t.length||i.externalSymbols.length!==0)throw new Error(`${n} TypeScript SCIP index failed structural verification`);return r}function Gd(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function ko(e,t){let n=$e(e);if(!Me(n.generationDir))return;let r=new Set(t.map(a=>Oo(a))),i=go(n.generationDir).filter(a=>a.endsWith(".json")),o=new Set;for(let a of i.filter(s=>r.has(s))){let s=On(E(Y(n.generationDir,a),{maxBytes:_,inputKind:"TypeScript fragment manifest"}));for(let c of s.documents)o.add(`${c.blobHash}.scipdoc`)}for(let a of i)r.has(a)||mo(Y(n.generationDir,a),{force:!0});if(Me(n.blobDir))for(let a of go(n.blobDir))o.has(a)||mo(Y(n.blobDir,a),{force:!0})}function Do(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=ge(t.relativePath),i=Buffer.from(t.bytes),o=me(i),a=$e(e);Cd(a.blobDir,{recursive:!0});let s=Y(a.blobDir,`${o}.scipdoc`);if(Me(s)){let c=D(s,{maxBytes:z,inputKind:"TypeScript fragment blob"});if(c.byteLength!==i.byteLength||me(c)!==o)throw new Error(`existing TypeScript fragment blob is corrupt: ${r}`)}else{let c=`${s}.${process.pid}.${Date.now()}.tmp`;jd(c,i),Ld(c,s)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function Fo(e,t){if(!e.producerIdentity||!e.projectIdentity||!e.generationIdentity)throw new Error("TypeScript fragment generation identities must be non-empty");let n=[...t].sort((r,i)=>r.relativePath.localeCompare(i.relativePath));if(new Set(n.map(r=>r.relativePath)).size!==n.length)throw new Error("TypeScript fragment generation contains duplicate document paths");return{version:It,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function _o(e,t){let n=$e(e),r=An(n,t.generationIdentity);if(Me(r)){let i=On(E(r,{maxBytes:_,inputKind:"TypeScript fragment manifest"}));if(ho(i)!==ho(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}ie(r,t,{spacing:2,trailingNewline:!0})}function ho(e){return me(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function On(e){let t=JSON.parse(e);if(t.version!==It||typeof t.producerIdentity!="string"||typeof t.projectIdentity!="string"||typeof t.generationIdentity!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.documents))throw new Error("invalid TypeScript fragment generation manifest");let n=new Set;for(let r of t.documents){if(!r||typeof r.relativePath!="string"||typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash)||typeof r.byteLength!="number"||!Number.isInteger(r.byteLength)||r.byteLength<0||typeof r.documentIdentity!="string"||!r.documentIdentity)throw new Error("invalid TypeScript fragment record");if(ge(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function An(e,t){return Y(e.generationDir,Oo(t))}function Oo(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${me(e)}.json`}function Ao(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function Co(e,t){if(!e||typeof e!="object")throw new Error("TypeScript SCIP shard has no producer metadata");let n=e,r=n.toolInfo??n.tool_info;if(!r||typeof r!="object")throw new Error("TypeScript SCIP shard has no producer tool identity");let i=r;if(i.name!=="scip-typescript"||i.version!==t)throw new Error("TypeScript SCIP shard producer identity changed")}function Lo(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function ge(e){if(!e||e.startsWith("/")||e.startsWith("\\")||e.includes("\\"))throw new Error(`invalid TypeScript SCIP document path: ${e}`);let t=e.split("/");if(t.includes("")||t.includes(".")||t.includes(".."))throw new Error(`invalid TypeScript SCIP document path: ${e}`);return e}function me(e){return Ad("sha256").update(e).digest("hex")}import{createHash as $d}from"crypto";import{existsSync as Ve,mkdirSync as Vd,readdirSync as Cn,renameSync as Bd,rmSync as jo,writeFileSync as Ud}from"fs";import{join as B}from"path";var Pt=1,Mo=64*1024*1024,Ue="typescript-scip-overlays";function Go(e){let t=Bo(e.cacheDir,e.previousGenerationIdentity);if(!t&&!e.baseShardCurrent)throw new Error("deferred TypeScript SCIP base has no matching overlay generation");if(t&&(t.producerIdentity!==e.producerIdentity||t.projectIdentity!==e.projectIdentity))throw new Error("TypeScript overlay producer or project identity changed");let n=new Map((t?.overlays??[]).map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let a=Nn(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript overlay: ${a}`);r.add(a),n.set(a,Wd(e.cacheDir,o))}if(r.size===0)throw new Error("TypeScript overlay generation requires affected documents");let i={version:Pt,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:t?.baseGenerationIdentity??e.previousGenerationIdentity,generationIdentity:e.nextGenerationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),overlays:[...n.values()].sort((o,a)=>o.relativePath.localeCompare(a.relativePath))};return qd(e.cacheDir,i),i}function $o(e){let t=Bo(e.cacheDir,e.generationIdentity);if(!t)throw new Error("TypeScript overlay generation is unavailable");let n=t.overlays.map(r=>{if(r.blobHash===null)return{relativePath:r.relativePath,bytes:null,occurrences:0,symbols:0,referenceFragments:[]};let i=D(B(We(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`),{maxBytes:z,inputKind:"TypeScript overlay blob"});if(i.byteLength!==r.byteLength||Be(i)!==r.blobHash)throw new Error(`TypeScript overlay blob is corrupt: ${r.relativePath}`);return{relativePath:r.relativePath,bytes:i,occurrences:0,symbols:0,referenceFragments:[]}});return Eo({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function Vo(e,t){let n=We(e),r=B(n,"generations");if(!Ve(r))return;let i=new Set(t.map(jn)),o=new Set;for(let s of Cn(r).filter(c=>i.has(c))){let c=Ln(E(B(r,s),{maxBytes:_,inputKind:"TypeScript overlay manifest"}));for(let d of c.overlays)d.blobHash&&o.add(`${d.blobHash}.scipdoc`)}for(let s of Cn(r))i.has(s)||jo(B(r,s),{force:!0});let a=B(n,"blobs");if(Ve(a))for(let s of Cn(a))o.has(s)||jo(B(a,s),{force:!0})}function Bo(e,t){let n=B(We(e),"generations",jn(t));if(!Ve(n))return null;let r=Ln(E(n,{maxBytes:_,inputKind:"TypeScript overlay manifest"}));if(r.generationIdentity!==t)throw new Error("TypeScript overlay generation identity does not match its path");return r}function Wd(e,t){let n=Nn(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=Be(r),o=B(We(e),"blobs");Vd(o,{recursive:!0});let a=B(o,`${i}.scipdoc`);if(Ve(a)){let s=D(a,{maxBytes:z,inputKind:"TypeScript overlay blob"});if(s.byteLength!==r.byteLength||Be(s)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let s=`${a}.${process.pid}.${Date.now()}.tmp`;Ud(s,r),Bd(s,a)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function qd(e,t){let n=B(We(e),"generations",jn(t.generationIdentity));if(Ve(n)){let r=Ln(E(n,{maxBytes:_,inputKind:"TypeScript overlay manifest"}));if(No(r)!==No(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}ie(n,t,{spacing:2,trailingNewline:!0})}function Ln(e){let t=JSON.parse(e);if(t.version!==Pt||typeof t.producerIdentity!="string"||!t.producerIdentity||typeof t.projectIdentity!="string"||!t.projectIdentity||typeof t.baseGenerationIdentity!="string"||!t.baseGenerationIdentity||typeof t.generationIdentity!="string"||!t.generationIdentity||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.overlays))throw new Error("invalid TypeScript overlay manifest");let n=new Set;for(let r of t.overlays){if(!r||typeof r.relativePath!="string"||r.blobHash!==null&&(typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash))||!Number.isInteger(r.byteLength)||r.byteLength<0||r.blobHash===null&&r.byteLength!==0)throw new Error("invalid TypeScript overlay record");if(Nn(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function We(e){return B(e,Ue)}function jn(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Be(e)}.json`}function No(e){return Be(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Nn(e){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(t=>!t||t==="."))throw new Error(`invalid TypeScript overlay path: ${e}`);if(e.split("/").includes(".."))throw new Error(`invalid TypeScript overlay path: ${e}`);return e}function Be(e){return $d("sha256").update(e).digest("hex")}var qe=1,Gn="language-indexes",Uo=["index.db","index.scip","meta.json"],Wo=[Gn,Ge,Ue];function vt(e){let t=[];for(let n of Uo)Xd(e,n),t.push(n);for(let n of Wo)qo(e,n,t);return{version:qe,files:t.sort()}}function Et(e){if(!e||e.includes("\0")||e.startsWith("/")||e.includes("\\"))throw new Error(`invalid index artifact path: ${e||"<empty>"}`);let t=e.split("/");if(t.some(r=>!r||r==="."||r===".."))throw new Error(`invalid index artifact path: ${e}`);let n=t[0];if(!Uo.includes(e)&&!Wo.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function W(e,t){let n=Et(t),r=Mn(e),i=Mn(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${Kd}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function qo(e,t,n){let r=Jd(e,t),i;try{i=zd(r,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let o of i){let a=`${t}/${o.name}`;if(o.isSymbolicLink())throw new Error(`index artifact cannot be a symlink: ${a}`);o.isDirectory()?qo(e,a,n):o.isFile()&&n.push(Et(a))}}function Xd(e,t){let n=W(e,t),r;try{r=Hd(n)}catch{throw new Error(`required index artifact is missing: ${t}`)}if(!r.isFile()||r.isSymbolicLink())throw new Error(`required index artifact is not a regular file: ${t}`);if(Yd(Mn(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{createHash as Wn}from"crypto";import{closeSync as Qd,existsSync as w,mkdirSync as Zd,openSync as eu,readSync as tu,readdirSync as qn,renameSync as Un,rmSync as He,statSync as Ee}from"fs";import{basename as Yo,dirname as q,join as R,relative as Ho}from"path";var nu=Object.freeze({maxGenerations:2,maxLogicalBytes:2*1024*1024*1024});function Tt(e){let t=V(e.outputDb),n=au(e);e.onStage?.("after-recovery-retained");let r=e.preserveOutputScip?e.outputScip:e.tempOutputScip,i=Yn({generationRoot:t,databasePath:e.tempOutputDb,indexPath:w(r)?r:void 0,metadataPath:w(e.tempMetaPath)?e.tempMetaPath:void 0}),o=(e.now??(()=>new Date))().toISOString(),a={version:Re,currentGeneration:i.identity,artifactSet:"immutable-v1",...n?{previousGeneration:n}:{},...e.publication?{publication:e.publication}:{},publishedAt:o},s=G(R(t,"state.json"),a,{spacing:2,trailingNewline:!0});e.onStage?.("after-pointer-handoff"),e.preserveOutputScip||Bn(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),Bn(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),Bn(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let c=i.identity,d={...a,stableMirrors:Jn(e.outputDb,e.outputScip)};G(R(t,"state.json"),d,{spacing:2,trailingNewline:!0});let u=Ko(e.outputDb,{now:e.now}),l=Ae(i.directorySync,s.directorySync);return{currentGeneration:c,...n?{previousGeneration:n}:{},retention:u,achievedDurability:l==="synced"?"directory-durable":"file-flushed",directorySync:l}}function Hn(e,t,n,r=()=>new Date){if(!w(e))return null;let i=Ce(e),o=R(V(e),"state.json");if(i?.artifactSet==="immutable-v1"&&Kt(e,i.currentGeneration))return i;let a=V(e),s=!i&&w(o)?cu(n,e,t):void 0;if(s&&!ot(a,s))return null;let c=Yn({generationRoot:a,databasePath:e,indexPath:w(t)?t:void 0,metadataPath:w(n)?n:void 0,forcedIdentity:i?.currentGeneration??s}),d={version:Re,currentGeneration:c.identity,artifactSet:"immutable-v1",stableMirrors:Jn(e,t),...i?.previousGeneration?{previousGeneration:i.previousGeneration}:{},...i?.publication?{publication:i.publication}:{},publishedAt:i?.publishedAt??r().toISOString()};return G(R(a,"state.json"),d,{spacing:2,trailingNewline:!0}),d}function zn(e,t,n=()=>new Date){if(!w(e)||!w(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=Ce(e),i=V(e),o=Yn({generationRoot:i,databasePath:e,indexPath:w(R(q(e),"index.scip"))?R(q(e),"index.scip"):void 0,metadataPath:t}),a=r&&r.currentGeneration!==o.identity?Qo(e,r.currentGeneration):void 0,s={version:Re,currentGeneration:o.identity,artifactSet:"immutable-v1",stableMirrors:Jn(e,R(q(e),"index.scip")),...a?{previousGeneration:a}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return G(R(V(e),"state.json"),s,{spacing:2,trailingNewline:!0}),Ko(e,{now:n}),s}function Ko(e,t={}){let n=ru(t.limits),i=(t.now??(()=>new Date))().toISOString(),o=ue(Gr(e),{waitMs:0});if(!o)return{state:"deferred",generationCount:0,logicalBytes:0,protectedGenerations:0,activeReaderLeases:0,staleReaderLeasesRemoved:0,malformedReaderLeases:0,removedGenerations:0,removedLogicalBytes:0,limits:n,at:i,reason:"another process owns local generation retention"};try{let a=Ce(e),s=iu(e),c=$r(e,s.map(b=>b.identity),{isProcessAlive:t.isProcessAlive??ne,readProcessIdentity:t.readProcessIdentity??te}),d=new Set(c.protectedGenerations);a?.currentGeneration&&d.add(a.currentGeneration),a?.previousGeneration?.generationIdentity&&d.add(a.previousGeneration.generationIdentity);let u=s.length,l=s.reduce((b,y)=>b+y.logicalBytes,0),p=0,g=0;for(let b of s){if(u<=n.maxGenerations&&l<=n.maxLogicalBytes)break;d.has(b.identity)||(t.onBeforeRemove?.(b.identity),He(b.path,{recursive:!0,force:!0}),u-=1,l-=b.logicalBytes,p+=1,g+=b.logicalBytes)}let f=u>n.maxGenerations||l>n.maxLogicalBytes,h={state:f?"protected":p>0?"collected":"within-bounds",generationCount:u,logicalBytes:l,protectedGenerations:d.size,activeReaderLeases:c.activeLeases,staleReaderLeasesRemoved:c.staleLeasesRemoved,malformedReaderLeases:c.malformedLeases,removedGenerations:p,removedLogicalBytes:g,limits:n,at:i,...f?{reason:c.malformedLeases>0?"malformed reader ownership evidence fails closed":"retention bounds cannot be met without deleting a protected generation"}:{}};return zo(e,h),h}catch(a){let s={state:"error",generationCount:0,logicalBytes:0,protectedGenerations:0,activeReaderLeases:0,staleReaderLeasesRemoved:0,malformedReaderLeases:0,removedGenerations:0,removedLogicalBytes:0,limits:n,at:i,reason:a instanceof Error?a.message:String(a)};try{zo(e,s)}catch{}return s}finally{o.release()}}function ru(e={}){let t={...nu,...e};if(!Number.isSafeInteger(t.maxGenerations)||t.maxGenerations<2)throw new Error("Local SQLite generation retention must keep at least current and previous generations.");if(!Number.isSafeInteger(t.maxLogicalBytes)||t.maxLogicalBytes<=0)throw new Error("Local SQLite generation byte retention must be a positive safe integer.");return t}function iu(e){let t=V(e);return w(t)?qn(t,{withFileTypes:!0}).filter(n=>n.isDirectory()&&/^[a-f0-9]{64}$/.test(n.name)).map(n=>{let r=R(t,n.name),i=ot(t,n.name),o=i?i.database.size+(i.index?.size??0)+(i.metadata?.size??0):Xo(r);return{identity:n.name,path:r,logicalBytes:o,modifiedAtMs:Ee(r).mtimeMs}}).sort((n,r)=>n.modifiedAtMs-r.modifiedAtMs||n.identity.localeCompare(r.identity)):[]}function Xo(e){let t=0;for(let n of qn(e,{withFileTypes:!0})){let r=R(e,n.name);n.isDirectory()?t+=Xo(r):n.isFile()&&(t+=Ee(r).size)}return t}function zo(e,t){ie(R(V(e),"gc.json"),t,{spacing:2,trailingNewline:!0})}function H(e,t=R(q(e),"meta.json")){let n=R(V(e),"state.json");if(!w(n))return{state:"legacy",statePath:n};let r=Ce(e);if(!r)return{state:"invalid",statePath:n,reason:"generation state is malformed"};try{let i=Kt(e,r.currentGeneration),o=i!==null,a=i?ou(e,t,i,r):!1,s=r.previousGeneration?w(R(q(e),r.previousGeneration.databasePath)):!0;return!a||!o||!s?{state:"drifted",statePath:n,currentMatches:a,recoveryExists:s,generation:r,reason:o?a?"retained recovery database is missing":"stable database or metadata no longer matches the published generation":"published immutable generation is missing"}:{state:"current",statePath:n,currentMatches:a,recoveryExists:s,generation:r}}catch(i){return{state:"drifted",statePath:n,currentMatches:!1,recoveryExists:!1,generation:r,reason:i instanceof Error?i.message:String(i)}}}function ou(e,t,n,r){if(r.stableMirrors&&(r.stableMirrors.databaseFileIdentity!==Le(e)||r.stableMirrors.indexFileIdentity!==void 0&&r.stableMirrors.indexFileIdentity!==Le(R(q(e),"index.scip")))||!Jo(e,n.database))return!1;let i=R(q(e),"index.scip");if(n.index&&!Jo(i,n.index))return!1;if(!n.metadata)return!w(t);if(!w(t))return!1;let o=R(V(e),n.identity,n.metadata.file);return w(o)&&le(L(t,"reindex metadata"))===le(L(o,"immutable reindex metadata"))}function Jo(e,t){return w(e)&&Ee(e).isFile()&&Ee(e).size===t.size}function au(e){let t=Hn(e.outputDb,e.outputScip,e.metaPath);return t?Qo(e.outputDb,t.currentGeneration):void 0}function Jn(e,t){return{databaseFileIdentity:Le(e),...w(t)?{indexFileIdentity:Le(t)}:{}}}function Qo(e,t){let n=R(V(e),t),r=R(n,Yo(e)),i=R(n,"meta.json");return{generationIdentity:t,databasePath:Ho(q(e),r),...w(i)?{metadataPath:Ho(q(e),i)}:{}}}function su(e){if(w(e)){for(let t of qn(e,{withFileTypes:!0}))if(t.isDirectory()&&t.name.endsWith(".tmp"))try{He(R(e,t.name),{recursive:!0,force:!0})}catch{}}}function cu(e,t,n=R(q(t),"index.scip")){let r=Wn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(wt(t)),w(n)&&r.update(`\0${wt(n)}`),w(e)&&r.update(`\0${le(L(e,"reindex metadata"))}`),r.digest("hex")}function Yn(e){let t=$n(e.databasePath),n=e.indexPath?$n(e.indexPath):void 0,r=e.metadataPath?$n(e.metadataPath):void 0,i=e.forcedIdentity??du(t,n,e.metadataPath),o=R(e.generationRoot,i),a=R(o,Yt);if(w(a)){let d=ot(e.generationRoot,i);if(d&&Zo(o,d.database,t)&&lu(o,d.index,n)&&pu(o,d.metadata,e.metadataPath))return{identity:i,directorySync:re(e.generationRoot)};throw new Error(`SQLite generation ${i} already exists with different or corrupt artifacts.`)}let s=[nt(e.generationRoot)];su(e.generationRoot);let c=`${o}.${process.pid}.${Date.now()}.tmp`;He(c,{recursive:!0,force:!0}),Zd(c,{recursive:!0});try{s.push(Vn(e.databasePath,R(c,t.file))),n&&e.indexPath&&s.push(Vn(e.indexPath,R(c,n.file))),r&&e.metadataPath&&s.push(Vn(e.metadataPath,R(c,r.file)));let d=G(R(c,Yt),{version:Mr,identity:i,database:t,...n?{index:n}:{},...r?{metadata:r}:{}},{spacing:2,trailingNewline:!0});d.directorySync!=="not-requested"&&s.push(d.directorySync),s.push(re(c)),F(()=>Un(c,o)),s.push(re(e.generationRoot))}finally{try{He(c,{recursive:!0,force:!0})}catch{}}return{identity:i,directorySync:Ae(...s)}}function du(e,t,n){let r=Wn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(e.sha256),t&&r.update(`\0${t.sha256}`),n&&r.update(`\0${le(L(n,"reindex metadata"))}`),r.digest("hex")}function $n(e){return{file:Yo(e),size:Ee(e).size,sha256:wt(e)}}function wt(e){let t=Wn("sha256"),n=eu(e,"r"),r=Buffer.allocUnsafe(1024*1024);try{for(;;){let i=uu(n,r);if(i===0)break;t.update(r.subarray(0,i))}}finally{Qd(n)}return t.digest("hex")}function uu(e,t){let n=0;for(;n<t.length;){let r=tu(e,t,n,t.length-n,null);if(n+=r,r===0)break}return n}function Vn(e,t){return rt(e,t,{mode:292})}function Zo(e,t,n){let r=R(e,t.file);return t.file===n.file&&t.size===n.size&&t.sha256===n.sha256&&w(r)&&Ee(r).size===t.size&&wt(r)===t.sha256}function lu(e,t,n){return!t||!n?t===n:Zo(e,t,n)}function pu(e,t,n){if(!t||!n)return t===void 0&&n===void 0;let r=R(e,t.file);return w(r)&&le(L(r,"stored reindex metadata"))===le(L(n,"candidate reindex metadata"))}function Bn(e,t){F(()=>He(`${t}.tmp-replace`,{force:!0})),F(()=>Un(e,`${t}.tmp-replace`)),F(()=>Un(`${t}.tmp-replace`,t))}var Zn=1,ta="CODEBASEIQ_SHARED_CACHE",hu=2,kt=JSON.stringify({cliVersion:Vr,artifactCatalogVersion:qe,postIndexAugmentationSchemaVersion:hu,sqliteGenerationStoreVersion:Re,typescriptFragmentStoreVersion:It,typescriptOverlayStoreVersion:Pt}),er="manifest.json",yu="shared-cache.json",tr=[Gn,Ge,Ue];function Ft(e,t){if(!e.clean||!e.treeOid)return;let n=Sa(JSON.stringify({version:Zn,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:kt}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:kt,generationId:n,repositoryCacheDir:Wr(e.repositoryId)}}function ca(e,t,n){if(process.env[ta]==="0")return`${ta}=0`;if(!qr(n))return"explicit cache or database override";if(Qt(Xn(t))!==Qt(Ur(e))||t!==m(Xn(t),"index.db"))return"index database is outside the managed worktree cache"}function K(e,t=!0){let n=rr(e),r;try{r=ga(E(m(n,er),{inputKind:"shared-generation manifest",maxBytes:_}))}catch{return null}if(r.generationId!==e.generationId||r.repositoryId!==e.repositoryId||r.treeOid!==e.treeOid||r.producerIdentity!==e.producerIdentity||JSON.stringify(r.fingerprint)!==JSON.stringify(e.fingerprint))return null;if(!t)return r;try{for(let i of r.artifacts){let o=W(n,i.path),a=Dt(o);if(!a.isFile()||a.size!==i.size||et(o,{inputKind:"shared-generation artifact",maxBytes:C})!==i.sha256)return null}}catch{return null}return r}function da(e,t,n){if(!e.treeOid)return null;let r=en(t,n),i=m(Br(),"repositories",e.repositoryId),o;try{let c=Kn(i);if(!c.isDirectory()||c.isSymbolicLink())return null;o=aa(i)}catch{return null}let a=m(o,"generations"),s=[];try{for(let c of oa(a)){if(!/^[a-f0-9]{64}$/.test(c))continue;let d=m(a,c),u;try{u=Kn(d)}catch{continue}if(!(!u.isDirectory()||u.isSymbolicLink()))try{let l=ga(E(m(d,er),{inputKind:"shared-generation baseline manifest",maxBytes:_}));l.generationId===c&&l.repositoryId===e.repositoryId&&l.treeOid===e.treeOid&&l.producerIdentity===kt&&xu(l.fingerprint,r)&&s.push(l)}catch{continue}}}catch{return null}s.sort((c,d)=>Date.parse(d.createdAt)-Date.parse(c.createdAt)||c.generationId.localeCompare(d.generationId));for(let c of s){let d={repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:c.fingerprint,producerIdentity:c.producerIdentity,generationId:c.generationId,repositoryCacheDir:o},u=K(d);if(u)return{snapshot:d,manifest:u}}return null}function ua(e){let t=ue(m(e.snapshot.repositoryCacheDir,"locks",`${e.snapshot.generationId}.publish.lock`));if(!t)throw new Error(`shared generation publication is already in progress for ${e.snapshot.generationId}`);try{return Su(e)}finally{t.release()}}function Su(e){let t=K(e.snapshot);if(t)return na(e.snapshot,t);if(!ya(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=ra(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=vt(e.sourceCacheDir),i=m(e.snapshot.repositoryCacheDir,"generations"),o=[nt(i)],a=Fe(m(i,`.tmp-${process.pid}-`));try{let s=[];for(let f of r.files){let h=W(e.sourceCacheDir,f),b=W(a,f);o.push(Je(h,b,292)),e.onPublicationStage?.("after-artifact-flushed",f);let y=Dt(b).size;s.push({path:f,size:y,sha256:et(b,{inputKind:"staged shared-generation artifact",maxBytes:C})})}let c=sa(D(m(a,"index.scip"),{inputKind:"staged shared SCIP index",maxBytes:C})).metadata?.projectRoot;if(!c)throw new Error("shared SCIP generation has no project root metadata");let d=ir(e.sourceProjectRoot);if(!be(c,d))throw new Error("shared SCIP generation root does not match its source worktree");if(ra(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let u={version:Zn,artifactCatalogVersion:qe,generationId:e.snapshot.generationId,repositoryId:e.snapshot.repositoryId,treeOid:e.snapshot.treeOid,fingerprint:e.snapshot.fingerprint,producerIdentity:e.snapshot.producerIdentity,sourceProjectRoot:e.sourceProjectRoot,scipProjectRoot:c,createdAt:(e.now??(()=>new Date))().toISOString(),artifacts:s.sort((f,h)=>f.path.localeCompare(h.path))},l=G(m(a,er),u,{spacing:2,trailingNewline:!0});l.directorySync!=="not-requested"&&o.push(l.directorySync),e.onPublicationStage?.("after-manifest-flushed"),o.push(re(a)),e.onPublicationStage?.("after-staging-directory-synced");let p=rr(e.snapshot);try{if(ce(p)&&!K(e.snapshot)){let f=`${p}.corrupt-${process.pid}-${Date.now()}`;F(()=>he(p,f)),se(f,{recursive:!0,force:!0})}F(()=>he(a,p))}catch(f){let h=K(e.snapshot);if(h)return na(e.snapshot,h);throw f}e.onPublicationStage?.("after-generation-renamed"),o.push(re(i)),e.onPublicationStage?.("after-generations-directory-synced");let g=Ae(...o);return{kind:"published",manifest:u,achievedDurability:g==="synced"?"directory-durable":"file-flushed",directorySync:g}}finally{se(a,{recursive:!0,force:!0})}}function na(e,t){let n=re(m(e.repositoryCacheDir,"generations"));return{kind:"existing",manifest:t,achievedDurability:n==="synced"?"directory-durable":"file-flushed",directorySync:n}}function _t(e){let t=rr(e.snapshot);we(e.targetCacheDir,{recursive:!0});let n=ue(m(e.targetCacheDir,"cache-lifecycle.lock"),{waitMs:3e4});if(!n)throw new Error("timed out waiting for another cache hydration");let r,i,o=!1;try{r=Fe(m(e.targetCacheDir,".shared-hydrate-")),Eu(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let d=W(t,c.path),u=W(r,c.path);if(Je(d,u),Dt(u).size!==c.size||et(u,{inputKind:"hydrated shared-generation artifact",maxBytes:C})!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let a=ir(e.targetProjectRoot);if(a!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&Mi(W(r,c.path),e.manifest.scipProjectRoot,a);if(!ya(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=Iu(e.targetCacheDir,r),o=!0,Pu(r,e.targetCacheDir,i),Tt({tempOutputScip:m(r,"index.scip"),tempOutputDb:m(r,"index.db"),tempMetaPath:m(r,"meta.json"),outputScip:m(e.targetCacheDir,"index.scip"),outputDb:m(e.targetCacheDir,"index.db"),metaPath:m(e.targetCacheDir,"meta.json"),now:e.now});let s=H(m(e.targetCacheDir,"index.db"),m(e.targetCacheDir,"meta.json"));if(s.state==="invalid"||s.state==="drifted")throw new Error(`hydrated SQLite generation failed validation: ${s.reason}`);e.persistLease!==!1&&nr(e.snapshot,e.targetCacheDir,e.action??"attached",e.now)}catch(a){throw o&&i&&vu(e.targetCacheDir,i),a}finally{r&&se(r,{recursive:!0,force:!0}),n.release()}}async function la(e,t={}){let n=t.timeoutMs??3e4,r=t.pollMs??100,i=t.now??I,o=i()+n,a=m(e.repositoryCacheDir,"locks"),s=m(a,`${e.generationId}.lock`),c=d=>{if(!d||typeof d!="object"||Array.isArray(d))return null;let u=d.pid;return typeof u=="number"&&Number.isSafeInteger(u)&&u>0?{pid:u}:null};for(;i()<=o;){if(K(e))return{kind:"generation-ready"};let d=tt(s,{kind:"shared-generation-build",detail:{generationId:e.generationId},parseLegacy:c});if(d.kind==="acquired")return{kind:"owner",release:()=>d.lock.release()};let u=o-i();if(u<=0)break;await gu(Math.min(r,u))}return K(e)?{kind:"generation-ready"}:{kind:"timeout"}}function nr(e,t,n,r=void 0){let i={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,activeGenerationId:e.generationId,lastAction:n,lastSeenAt:(r??(()=>new Date))().toISOString()},o={...i,ownershipChecksum:fa(i)};return ma(e.repositoryCacheDir,o,!0),o}function pa(e,t,n=void 0){let r={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,lastAction:"overlay",lastReason:`private cache forked from shared baseline ${e.generationId}`,lastSeenAt:(n??(()=>new Date))().toISOString()},i={...r,ownershipChecksum:fa(r)};return ma(e.repositoryCacheDir,i,!0),i}function fa(e){return Sa(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:Qn(e.projectRoot),localCacheDir:Qn(e.localCacheDir)}))}function ga(e){let t=JSON.parse(e);if(t.version!==Zn||t.artifactCatalogVersion!==qe||typeof t.generationId!="string"||!/^[a-f0-9]{64}$/.test(t.generationId)||typeof t.repositoryId!="string"||!/^[a-f0-9]{24}$/.test(t.repositoryId)||typeof t.treeOid!="string"||!t.treeOid||typeof t.producerIdentity!="string"||t.producerIdentity!==kt||typeof t.sourceProjectRoot!="string"||typeof t.scipProjectRoot!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!t.fingerprint||!Array.isArray(t.artifacts))throw new Error("invalid shared generation manifest");let n=new Set;for(let r of t.artifacts){if(!r||typeof r.path!="string"||typeof r.size!="number"||r.size<0||typeof r.sha256!="string"||!/^[a-f0-9]{64}$/.test(r.sha256))throw new Error("invalid shared generation artifact");if(Et(r.path),n.has(r.path))throw new Error(`duplicate shared generation artifact: ${r.path}`);n.add(r.path)}for(let r of["index.db","index.scip","meta.json"])if(!n.has(r))throw new Error(`shared generation is missing ${r}`);return t}function Je(e,t,n=384){return rt(e,t,{mode:n})}function bu(e,t,n){we(e,{recursive:!0}),G(m(e,yu),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function ra(e){try{let t=vt(e),n=ia("sha256");for(let r of t.files){let i=W(e,r),o=Dt(i).size;n.update(r).update("\0").update(String(o)).update("\0"),Cr(i,{inputKind:"source-generation artifact",maxBytes:C},a=>n.update(a)),n.update("\0")}return n.digest("hex")}catch{return null}}function Ru(e){try{let t=ee(E(m(e,"meta.json"),{inputKind:"reindex metadata",maxBytes:_}));return(t.kind==="legacy"||t.kind==="supported")&&t.capabilities.publishableGeneration?t.metadata:void 0}catch{return}}function xu(e,t){let n=en(e.languages,e);return JSON.stringify(n)===JSON.stringify(t)}function rr(e){return m(e.repositoryCacheDir,"generations",e.generationId)}function ma(e,t,n){let r=Nr(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId??t.baseGenerationId;if(!o||!ce(m(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=m(e,"worktrees");we(i,{recursive:!0}),G(m(i,`${t.worktreeId}.json`),t,{spacing:2,trailingNewline:!0}),bu(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function Iu(e,t){let n=m(t,".rollback"),r=new Map,i=new Map;we(n,{recursive:!0});for(let s of["index.scip","index.db","meta.json"]){let c=m(e,s),d=ce(c);r.set(s,d),d&&Je(c,m(n,"stable",s))}for(let s of tr){let c=m(e,s),d=ce(c);if(d){let u=Kn(c);if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`managed artifact path is not a directory: ${s}`)}i.set(s,d)}let o=m(e,it),a=ce(o);return a&&ha(o,m(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:a}}function Pu(e,t,n){for(let r of tr){let i=m(t,r);if(n.managedDirectories.get(r)){let a=m(n.root,"managed",r);we(Xn(a),{recursive:!0}),F(()=>he(i,a))}let o=m(e,r);ce(o)&&F(()=>he(o,i))}}function vu(e,t){for(let i of tr){let o=m(e,i),a=m(t.root,"managed",i);t.managedDirectories.get(i)?ce(a)&&(se(o,{recursive:!0,force:!0}),F(()=>he(a,o))):se(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let a=m(e,i);if(!o){se(a,{force:!0});continue}let s=`${a}.shared-restore-${fu()}`;Je(m(t.root,"stable",i),s),F(()=>se(a,{force:!0})),F(()=>he(s,a))}let n=m(e,it);se(n,{recursive:!0,force:!0});let r=m(t.root,"sqlite-generations");t.generationStoreExisted&&ce(r)&&F(()=>he(r,n))}function ha(e,t){we(t,{recursive:!0});for(let n of oa(e,{withFileTypes:!0})){let r=m(e,n.name),i=m(t,n.name);if(n.isSymbolicLink())throw new Error(`managed cache backup cannot contain a symlink: ${r}`);n.isDirectory()?ha(r,i):n.isFile()&&Je(r,i)}}function Eu(e,t){if(e.generationId!==t.generationId||e.repositoryId!==t.repositoryId||e.treeOid!==t.treeOid||e.producerIdentity!==t.producerIdentity||JSON.stringify(e.fingerprint)!==JSON.stringify(t.fingerprint))throw new Error("shared generation manifest does not match the requested snapshot")}function ya(e,t,n,r=!0,i=!0){try{let o=Ru(e);if(!o||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return ze("source validation rejected metadata"),!1;let a=vt(e),s=H(m(e,"index.db"),m(e,"meta.json"));if(r?s.state!=="current":s.state==="invalid"||s.state==="drifted")return ze(`source validation rejected SQLite generation state ${s.state}`),!1;let c=new mu(j(m(e,"index.db")),{readonly:!0,fileMustExist:!0});try{if(i){if(c.pragma("quick_check(1)",{simple:!0})!=="ok")return!1}else c.pragma("schema_version",{simple:!0})}finally{c.close()}let d=ir(t),l=(i?a.files.filter(p=>p.endsWith(".scip")):["index.scip"]).every(p=>{let g=sa(D(W(e,p),{inputKind:"shared SCIP validation artifact",maxBytes:C})).metadata?.projectRoot,f=g!==void 0&&be(g,d);return f||ze(`source validation rejected SCIP root for ${p}: ${String(g)}`),f});return l||ze("source validation rejected SCIP project roots"),l}catch(o){return ze(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function ze(e){process.env.CODEBASEIQ_DEBUG&&console.error(`shared-cache: ${e}`)}function ir(e){try{return ea(aa(e)).href}catch{return ea(Qn(e)).href}}function Sa(e){return ia("sha256").update(e).digest("hex")}import{createHash as Wu}from"crypto";import{existsSync as ar,statSync as qu,writeFileSync as sr}from"fs";import{join as Hu}from"path";import{createRequire as wu}from"module";import{dirname as Tu,isAbsolute as Wm,relative as qm,resolve as Hm,sep as zm}from"path";var ba=wu(import.meta.url),ku=1,Ra="0.4.0";function or(){let e=Du();return e.available?{available:!0,packageVersion:e.packageVersion,typescriptVersion:e.typescriptVersion,producerIdentity:e.producerIdentity}:e}function Du(){try{let e=ba.resolve("@sourcegraph/scip-typescript/package.json"),t=JSON.parse(L(e,"scip-typescript package manifest"));if(t.version!==Ra)return{available:!1,reason:`unsupported scip-typescript version ${String(t.version??"unknown")}; expected ${Ra}`};let n=Tu(e),r=ba.resolve("typescript/package.json",{paths:[n]}),i=JSON.parse(L(r,"TypeScript package manifest"));return typeof i.version!="string"||!i.version?{available:!1,reason:"scip-typescript TypeScript compiler version is unavailable"}:{available:!0,packageRoot:n,packageVersion:t.version,typescriptVersion:i.version,producerIdentity:Fu(t.version,i.version)}}catch(e){return{available:!1,reason:`scip-typescript document producer unavailable: ${e instanceof Error?e.message:String(e)}`}}}function Fu(e,t){return`scip-typescript:${e}:typescript:${t}:document-adapter:${ku}`}import{createHash as _u}from"crypto";import{dirname as Ou,join as xa}from"path";var Ot=4;var Au="typescript-index";function Ia(e){let t=xa(e,Au),n=ei(t);return{...n,requestDir:n.legacyRequestDir}}function Pa(e){try{let t=Or(ee(L(xa(Ou(e),"meta.json"),"reindex metadata")));return t?_u("sha256").update(t).digest("hex"):null}catch{return null}}import{randomUUID as Cu}from"crypto";import{existsSync as Lu}from"fs";var ju=12e4,Nu=5,At=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;constructor(t,n={}){this.projectRoot=Hr(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??Bu(),this.runtime=n.runtime??Uu,this.mailboxLimits=n.mailboxLimits??{}}request(t){let n=ri(this.cacheDir),r=Ia(this.cacheDir),i=dn(n.statePath);if(!va(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript index service is not running.");let o=this.runtime.now(),a=o+this.timeoutMs,s=(this.runtime.monotonicNow??I)()+this.timeoutMs,c=sn("typescript-index-v4",{baseGeneration:this.baseGeneration,request:t}),d=cn(c),u=ti(r,{mailboxVersion:an,operationKey:c,clientId:this.runtime.randomId(),enqueuedAtMs:o,deadlineAtMs:a,protocolVersion:Ot,id:d,baseGeneration:this.baseGeneration,request:t},{nowMs:o,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??I)()<=s;){if(Lu(u.responsePath))return Mu(E(u.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),d,c,this.baseGeneration,t.producerIdentity,t.affectedFiles);let l=dn(n.statePath);if(!va(l,this.projectRoot,this.runtime))throw new Error("TypeScript index service stopped while processing a request.");this.runtime.sleep(Nu)}throw new Error(`TypeScript index service timed out after ${this.timeoutMs}ms.`)}};function va(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===Ot&&n.isProcessAlive(e.pid)&&(!e.processIdentity||r!=null&&Oe(e.processIdentity,r))}function Mu(e,t,n,r,i,o){let a=JSON.parse(e);if(a.protocolVersion!==Ot||a.id!==t||a.operationKey!==n||a.ok===!0&&a.baseGeneration!==r)throw new Error("TypeScript index service wrote an incompatible response.");if(a.ok!==!0)throw new Error(typeof a.error=="string"?a.error:"TypeScript index service request failed.");let s=Gu(a.response,i),c=[...new Set(o)].sort(),d=s.fragments.map(u=>u.relativePath).sort();if(JSON.stringify(d)!==JSON.stringify(c))throw new Error("TypeScript index service omitted or added an affected document.");return s}function Gu(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(o=>{if(!o||typeof o.relativePath!="string"||o.bytesBase64!==null&&typeof o.bytesBase64!="string"||typeof o.occurrences!="number"||!Number.isInteger(o.occurrences)||o.occurrences<0||typeof o.symbols!="number"||!Number.isInteger(o.symbols)||o.symbols<0||!Array.isArray(o.referenceFragments)||!o.referenceFragments.every($u)||r.has(o.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(o.relativePath);let a=o.bytesBase64===null?null:Vu(o.bytesBase64);return{relativePath:o.relativePath,bytes:a,occurrences:o.occurrences,symbols:o.symbols,referenceFragments:o.referenceFragments}});return{producerIdentity:n.producerIdentity,cold:n.cold,durationMs:n.durationMs,fragments:i}}function $u(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 Vu(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function Bu(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:ju}var Uu={now:Date.now,monotonicNow:I,randomId:Cu,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:ne,readProcessIdentity:te};function zu(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=Ze(e.previousSnapshot,e.currentSnapshot);if(n.changes.length===0)return{eligible:!1,reason:"no changed project inputs"};if(n.changes.some(u=>u.kind!=="modified"||u.inputKind!=="source"||!un(u.path)))return{eligible:!1,reason:"change is not a modified TypeScript source file"};let r=ft(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=Ju(r,t,e.graph);if(!i)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let o=Ea(e.currentSnapshot,e.projectFiles,e.producerIdentity),a=Ea(e.previousSnapshot,e.projectFiles,e.producerIdentity);if(o!==a)return{eligible:!1,reason:"TypeScript fragment project identity changed"};let s=Ta(e.previousSnapshot,e.projectFiles,e.graph,e.producerIdentity,e.projectFiles);if(!s)return{eligible:!1,reason:"prior document identity unavailable"};let c=Ta(e.currentSnapshot,e.projectFiles,e.graph,e.producerIdentity,r.affectedFiles);if(!c)return{eligible:!1,reason:"next document identity unavailable"};let d=i.length===1?i[0]:void 0;return{eligible:!0,manifest:n,plan:r,projectIdentity:o,previousFragmentGeneration:wa(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:wa(e.currentSnapshot,e.producerIdentity),previousDocumentIdentities:s,nextDocumentIdentities:c,projects:i,...d?{tsconfigPath:d.tsconfigPath,projectArgument:d.projectArgument}:{}}}function Ju(e,t,n){let r=new Map;for(let o of e.affectedFiles){let a=Yu(o,t);if(!a)return null;let s=r.get(a)??[];s.push(o),r.set(a,s)}let i=[];for(let[o,a]of[...r].sort(([s],[c])=>s.localeCompare(c))){let s=new Set(a),c=e.changedFiles.filter(d=>s.has(d)||a.some(u=>Ku(u,d,n)));if(c.length===0)return null;i.push({projectArgument:o,tsconfigPath:o==="."?"tsconfig.json":`${o}/tsconfig.json`,modifiedFiles:c,affectedFiles:[...a].sort()})}return i}function Yu(e,t){let n=t.filter(o=>o==="."||e===o||e.startsWith(`${o}/`));if(n.length===0)return null;let r=[...new Set(n)].sort((o,a)=>Ct(a)-Ct(o)||o.localeCompare(a)),i=r[0];return r[1]&&Ct(r[1])===Ct(i)?null:i}function Ct(e){return e==="."?0:e.split("/").filter(Boolean).length}function Ku(e,t,n){let r=new Set,i=[e];for(let o=0;o<i.length;o+=1){let a=i[o];if(!(!a||r.has(a))){r.add(a);for(let s of n.get(a)??[]){if(s===t)return!0;r.has(s)||i.push(s)}}}return!1}function ka(e){let t=I();try{if(!ar(e.previousDbPath)||!ar(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=or();if(!r.available)throw new Error(r.reason);let i=performance.now()-n;n=performance.now();let o=new J({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),a,s;try{a=at(o,{includeIgnored:!1}).filter(un).sort(),s=ut(o)}finally{o.close()}let c=performance.now()-n,d=zu({projectMode:e.projectMode,workspaceProjects:e.projectMode==="workspace"?xe(e.projectRoot,e.currentSnapshot.typescriptProjects):void 0,previousSnapshot:e.previousSnapshot,currentSnapshot:e.currentSnapshot,projectFiles:a,graph:s,producerIdentity:r.producerIdentity,rootTsconfigExists:ar(Hu(e.projectRoot,"tsconfig.json"))});if(!d.eligible)throw new Error(d.reason);let u=Pa(e.previousDbPath);if(!u)throw new Error("published TypeScript base generation unavailable");n=performance.now();let l=new At({projectRoot:e.projectRoot,cacheDir:e.cacheDir,baseGeneration:u}),p=d.projects.map(v=>l.request({kind:"emit-documents",tsconfigPath:v.tsconfigPath,projectArgument:v.projectArgument,projectIdentity:d.projectIdentity,producerIdentity:r.producerIdentity,modifiedFiles:v.modifiedFiles,affectedFiles:v.affectedFiles})),g=p.flatMap(v=>v.fragments),f=performance.now()-n,h=qu(e.previousShardPath).size>=Mo;n=performance.now();let b=h?null:D(e.previousShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:C}),y=h?{completeIndexBytes:null,affectedIndexBytes:xo(g)}:wo({packageVersion:r.packageVersion,baseIndexBytes:b,fragments:g}),x=performance.now()-n;n=performance.now(),h?Go({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,nextGenerationIdentity:d.nextFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,baseShardCurrent:e.baseShardCurrent,fragments:g}):(Io({cacheDir:e.cacheDir,packageVersion:r.packageVersion,indexBytes:b,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.previousFragmentGeneration,documentIdentities:d.previousDocumentIdentities,allowUntrackedDocuments:!0}),Po({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.nextFragmentGeneration,fragments:g,documentIdentities:d.nextDocumentIdentities}));let P=performance.now()-n;n=performance.now(),y.completeIndexBytes&&sr(e.candidateShardPath,y.completeIndexBytes),sr(e.candidateAffectedScipPath,y.affectedIndexBytes);let k=performance.now()-n,T={scipPath:h?e.previousShardPath:e.candidateShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,completeScipUpdated:!h,durationMs:I()-t,cold:p.some(v=>v.cold),changedFiles:d.plan.changedFiles,affectedFiles:d.plan.affectedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:d.previousFragmentGeneration,nextFragmentGeneration:d.nextFragmentGeneration,manifest:d.manifest,plan:d.plan,projectFileCount:a.length,referenceFragmentsByFile:new Map(g.map(v=>[v.relativePath,v.referenceFragments])),timings:{runtimeMs:i,graphMs:c,requestMs:f,serviceMs:p.reduce((v,ye)=>v+ye.durationMs,0),assemblyMs:x,fragmentStoreMs:P,writeMs:k}};return e.onStatus(`Incremental TypeScript index emitted ${T.affectedFiles.length} affected document(s) across ${d.projects.length} project(s) in ${(T.durationMs/1e3).toFixed(3)}s (${T.cold?"cold":"warm"} service; ${h?"whole SCIP deferred":"whole SCIP current"}; runtime ${i.toFixed(0)}ms, graph ${c.toFixed(0)}ms, request ${f.toFixed(0)}ms, assembly ${x.toFixed(0)}ms, fragments ${P.toFixed(0)}ms, write ${k.toFixed(0)}ms).`),T}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 Da(e){let t=or();if(!t.available)throw new Error(t.reason);let n=$o({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:D(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:C}),packageVersion:t.packageVersion});sr(e.candidateShardPath,n)}function Ea(e,t,n){let r=e.files.filter(i=>Fr(i.path,e.languages)!=="source").map(i=>({path:i.path,size:i.size,hash:i.hash})).sort((i,o)=>i.path.localeCompare(o.path));return cr(JSON.stringify({version:1,producerIdentity:n,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),projectFiles:[...t].sort(),nonSourceInputs:r}))}function wa(e,t){return cr(JSON.stringify({version:1,producerIdentity:t,snapshot:e}))}function Ta(e,t,n,r,i){let o=new Set(e.files.map(c=>c.path)),a=ii({projectFiles:t.filter(c=>o.has(c)),snapshot:e,graph:n,engineIdentity:r}),s=new Map;for(let c of i){let d=a.identityFor(c,"typescript-scip-document-v1");if(d.key){s.set(c,d.key);continue}if(o.has(c))return null;s.set(c,cr(JSON.stringify({version:1,producerIdentity:r,generatedDocument:c})))}return s}function cr(e){return Wu("sha256").update(e).digest("hex")}import{closeSync as Xu,existsSync as Lt,fstatSync as Qu,lstatSync as Zu,openSync as el,renameSync as lr,rmSync as jt,statSync as tl,writeSync as nl}from"fs";import{cpus as rl}from"os";import{join as pr}from"path";var dr=Symbol("no-error");async function Fa(e,t,n){if(e.length===0)return[];let r=new Array(e.length),i=Number.isFinite(t)?Math.max(1,Math.floor(t)):1,o=Math.min(e.length,i),a=0,s=dr,c=!0,d=Array.from({length:o},async()=>{for(;c&&a<e.length;){let u=a++;try{r[u]=await n(e[u])}catch(l){s===dr&&(s=l),c=!1}}});if(await Promise.all(d),s!==dr)throw s;return r}function il(e,t){if(e.temporaryRootConfigContent===void 0)return null;let n=pr(t,"tsconfig.json"),r=Buffer.from(e.temporaryRootConfigContent,"utf8"),i;try{i=el(n,"wx",384)}catch(o){if(o.code==="EEXIST")return null;throw o}try{nl(i,r);let o=Qu(i);return{path:n,content:r,device:o.dev,inode:o.ino}}finally{Xu(i)}}function ol(e){if(e)try{let t=Zu(e.path);if(!t.isFile()||t.dev!==e.device||t.ino!==e.inode||t.size!==e.content.byteLength)return;let n;try{n=D(e.path,{maxBytes:e.content.byteLength,inputKind:"temporary TypeScript index configuration"})}catch{return}if(!n.equals(e.content))return;jt(e.path)}catch(t){if(t.code!=="ENOENT")throw t}}function al(e,t,n){if(!e.defaultOutputPath)return;let r=pr(t,e.defaultOutputPath);n!==r&&Lt(r)&&lr(r,n)}function sl(e,t,n){if(!e.defaultOutputPath)return null;let r=pr(t,e.defaultOutputPath);if(r===n)return null;let i=`${n}.default-output-backup`;return jt(i,{force:!0}),Lt(r)?(lr(r,i),{defaultOutputPath:r,backupPath:i}):{defaultOutputPath:r,backupPath:null}}function cl(e){e&&(jt(e.defaultOutputPath,{force:!0}),e.backupPath&&Lt(e.backupPath)&&lr(e.backupPath,e.defaultOutputPath))}function dl(e,t){if(e<=1)return 1;let n=Number(process.env.CODEBASEIQ_INDEXER_CONCURRENCY??0),r=Number.isFinite(t)&&t&&t>0?t:Number.isFinite(n)&&n>0?n:Math.min(8,Math.max(1,rl().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function Oa(e,t,n,r,i){$(i,"Reindex cancelled by its owner.");let o=e.filter(u=>u.config.defaultOutputPath),a=e.filter(u=>!u.config.defaultOutputPath),s=[],c=dl(a.length,r),d=await Fa(a,c,u=>ur(u,t,n,i));if(c>1){let u=new Map;for(let l of d.filter(p=>p.result.skipped&&p.retryable)){let p=a.find(g=>g.id===l.result.id);p&&(n(`Retrying ${p.label} indexer serially after parallel failure...`),$(i,"Reindex cancelled by its owner."),u.set(p.id,(await ur(p,t,n,i)).result))}s.push(...d.map(({result:l})=>u.get(l.id)??l))}else s.push(...d.map(({result:u})=>u));for(let u of o)$(i,"Reindex cancelled by its owner."),s.push((await ur(u,t,n,i)).result);return s.sort((u,l)=>e.findIndex(p=>p.id===u.id)-e.findIndex(p=>p.id===l.id))}async function ur(e,t,n,r){$(r,"Reindex cancelled by its owner."),n(`Indexing ${e.label} with ${e.resolvedBinary}...`),jt(e.scipPath,{force:!0});let i=sl(e.config,t,e.scipPath),o=il(e,t),a=[e.binary,...e.args].join(" "),s=I();try{e.trustedProjectTool&&Zr(t,e.trustedProjectTool);let d=Xr(e.binary,e.args),u=await hi({command:d.binary,args:d.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:ul(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,signal:r});if(u.status!==0){let l=u.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${u.status}${l?`:
275
+ ${l}`:""}`)}al(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw Lr(r,"Reindex cancelled by its owner.");let u=d instanceof Error?d.message:String(d),l=`${e.resolvedBinary} indexer failed: ${u.split(`
276
+ `)[0]}`,p=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:I()-s,command:a,skipped:{language:e.language,reason:p}},retryable:ll(d)}}finally{cl(i),ol(o)}if(!Lt(e.scipPath)){let d=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`,u=e.label===e.language?d:`${e.label}: ${d}`;return n(`Skipping ${e.label}: ${d}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:I()-s,command:a,skipped:{language:e.language,reason:u}},retryable:!1}}let c;try{c=tl(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:I()-s,command:a,outputBytes:c},retryable:!1}}function ul(){let e=Number(process.env.CODEBASEIQ_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):gi.indexer}function ll(e){return e instanceof mi?e.kind==="spawn"&&_a(e.cause):_a(e)}function _a(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as Ca}from"child_process";import{homedir as Aa,platform as pl}from"os";import{delimiter as fl,join as Nt}from"path";function gr(e,t){let n=e.installMethods,r=Ne(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(!tn(i.prerequisite))continue;let o=gl(i);t(`Installing immutable ${i.identity} via ${i.label} into ${o}; expected executable: ${r}.`);try{Ca(i.binary,i.args,{stdio:"inherit",windowsHide:!0,timeout:3e5,env:process.env,shell:pl()==="win32"});let a=Pe(e);if(a){let s=a===e.indexerBinary?"":` (using ${a})`;return t(`Successfully installed ${i.identity} via ${i.label}${s}; resolved executable: ${a}.`),!0}t(`${i.label} command completed but ${r} was not found on PATH`)}catch(a){let s=a instanceof Error?a.message:String(a);t(`${i.label} install failed: ${s}`)}}return t(`Could not auto-install ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function gl(e){if(e.binary==="npm")return fr("npm",["root","-g"])??e.destination;if(e.binary==="go"){let t=fr("go",["env","GOBIN"]);if(t)return t;let n=fr("go",["env","GOPATH"]);if(n)return Nt(n.split(fl)[0],"bin")}return e.binary==="dotnet"?Nt(process.env.DOTNET_CLI_HOME??Aa(),".dotnet","tools"):e.binary==="dart"?Nt(process.env.PUB_CACHE??Nt(Aa(),".pub-cache"),"bin"):e.destination}function fr(e,t){try{return Ca(e,t,{stdio:["ignore","pipe","ignore"],windowsHide:!0,encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}import rs from"better-sqlite3";import{existsSync as is}from"fs";import{dirname as os,join as as,resolve as ss}from"path";import{randomUUID as hl}from"crypto";import{mkdtempSync as yl,rmSync as Sl,statSync as ja}from"fs";import{tmpdir as bl}from"os";import{join as Na}from"path";import{Worker as Rl}from"worker_threads";function ml(){return{"missing-source-file":0,"missing-service-script":0,"no-definition":0,"same-file-definition":0,"unindexed-definition":0}}function Te(){return{skippedReferences:0,skippedReferenceReasons:ml(),skippedReferenceSamples:[]}}function Mt(e,t){e.skippedReferences+=t.skippedReferences;for(let n of Object.keys(e.skippedReferenceReasons)){e.skippedReferenceReasons[n]+=t.skippedReferenceReasons[n];for(let r of t.skippedReferenceSamples.filter(i=>i.reason===n))e.skippedReferenceSamples.filter(o=>o.reason===n&&o.sourceFile===r.sourceFile).length<2&&e.skippedReferenceSamples.push(r)}}var xl=3e5,Ma=64*1024*1024,Il={createResultDirectory:()=>yl(Na(bl(),"codebaseiq-vue-workers-")),spawn:(e,t)=>new Rl(e,{workerData:t}),resultSize:e=>ja(e).size,readResult:e=>E(e,{maxBytes:Ma,inputKind:"Vue worker result"}),removeResultDirectory:e=>Sl(e,{recursive:!0,force:!0})};function Ga(e){return e.length>=8&&Va(e.length)>1}async function $a(e,t=Il){let n=Va(e.vueFiles.length),r=Ll(e.vueFiles),i=Nl(r,n),o=new URL("./augment-vue-worker.js",import.meta.url),a=e.timeoutMs??Al(),s=e.maxResultBytes??Cl();La("timeoutMs",a),La("maxResultBytes",s);let c=hl(),d=t.createResultDirectory(),u=[],l,p,g;try{for(let h=0;h<i.length;h++){let b=h,y=i[h]??[],x=y.map(T=>T.taskId),P=Na(d,`${b}.json`),k=t.spawn(o,{projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,tasks:y,resultPath:P,runId:c,workerId:b,taskIds:x});u.push({workerId:b,taskIds:x,resultPath:P,handle:k,completion:Pl(k,b)})}await vl(u,a);let f=u.sort((h,b)=>h.workerId-b.workerId).map(h=>wl(h,c,s,t));g={occurrences:f.flatMap(h=>h.occurrences),...Te()};for(let h of f)Mt(g,h)}catch(f){l=f}finally{let f=await El(u);if(f.length===0)try{t.removeResultDirectory(d)}catch(h){f.push(h)}if(f.length>0){let h=l===void 0?f:[l,...f];p=new AggregateError(h,`Vue worker cleanup failed: ${Ol(h[0])}`)}}if(p)throw p;if(l!==void 0)throw l;if(!g)throw new Error("Vue workers completed without producing a merged result.");return g}function Pl(e,t){return new Promise((n,r)=>{let i=!1,o=c=>{i||(i=!0,e.off("error",a),e.off("exit",s),c?r(c):n())},a=c=>{o(new Error(`Vue reference worker ${t} failed: ${c.message}`,{cause:c}))},s=c=>{o(c===0?void 0:new Error(`Vue reference worker ${t} exited with code ${c}`))};e.once("error",a),e.once("exit",s)})}async function vl(e,t){let n;try{await Promise.race([Promise.all(e.map(r=>r.completion)),new Promise((r,i)=>{n=setTimeout(()=>i(new Error(`Vue reference workers timed out after ${(t/1e3).toFixed(3)}s`)),t),n.unref()})])}finally{n&&clearTimeout(n)}}async function El(e){return(await Promise.allSettled(e.map(async n=>n.handle.terminate()))).flatMap(n=>n.status==="rejected"?[n.reason]:[])}function wl(e,t,n,r){let i=r.resultSize(e.resultPath);if(!Number.isSafeInteger(i)||i<0||i>n)throw new Error(`Vue reference worker ${e.workerId} result is ${i} bytes; limit is ${n} bytes`);let o;try{o=JSON.parse(r.readResult(e.resultPath))}catch(a){throw new Error(`Vue reference worker ${e.workerId} produced invalid JSON`,{cause:a})}if(!Ye(o)||o.version!==1||o.runId!==t||o.workerId!==e.workerId)throw new Error(`Vue reference worker ${e.workerId} result identity does not match its assignment`);if(!_l(o.taskIds,e.taskIds))throw new Error(`Vue reference worker ${e.workerId} result task identities do not match its assignment`);if(o.ok===!1)throw typeof o.error!="string"?new Error(`Vue reference worker ${e.workerId} failure payload is malformed`):new Error(`Vue reference worker ${e.workerId} failed: ${o.error}`);if(o.ok!==!0||!Tl(o.result))throw new Error(`Vue reference worker ${e.workerId} success payload is malformed`);return o.result}function Tl(e){if(!Ye(e)||!Array.isArray(e.occurrences)||!e.occurrences.every(kl)||!X(e.skippedReferences)||!Ye(e.skippedReferenceReasons))return!1;for(let t of["missing-source-file","missing-service-script","no-definition","same-file-definition","unindexed-definition"])if(!X(e.skippedReferenceReasons[t]))return!1;return Array.isArray(e.skippedReferenceSamples)&&e.skippedReferenceSamples.every(Dl)}function kl(e){return Ye(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.sourceToken=="string"&&typeof e.definitionFile=="string"&&X(e.symbolId)}function Dl(e){return Ye(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.token=="string"&&Fl(e.reason)}function Fl(e){return e==="missing-source-file"||e==="missing-service-script"||e==="no-definition"||e==="same-file-definition"||e==="unindexed-definition"}function X(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>=0}function Ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _l(e,t){return Array.isArray(e)&&e.length===t.length&&e.every((n,r)=>typeof n=="string"&&n===t[r])}function La(e,t){if(!Number.isSafeInteger(t)||t<=0)throw new TypeError(`${e} must be a positive safe integer.`)}function Ol(e){return e instanceof Error?e.message:String(e)}function Va(e){let t=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKERS??0),n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.min(e,n))}function Al(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_TIMEOUT_MS??0);return Number.isFinite(e)&&e>0?e:xl}function Cl(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_RESULT_MAX_BYTES??0);return Number.isSafeInteger(e)&&e>0?e:Ma}function Ll(e){let t=jl(),n=[];for(let r of e){let i=Ba(r),o=Math.max(1,Math.ceil(i/t));for(let a=0;a<o;a++)n.push({taskId:`${n.length}:${r}:${a}`,fileName:r,startOffset:Math.floor(i*a/o),endOffset:a===o-1?Number.POSITIVE_INFINITY:Math.floor(i*(a+1)/o),countFileSkip:a===0})}return n}function jl(){return Number.POSITIVE_INFINITY}function Nl(e,t){let n=Array.from({length:t},()=>({tasks:[],weight:0})),r=e.map(i=>({task:i,weight:Ml(i)})).sort((i,o)=>o.weight-i.weight);for(let i of r){let o=n.reduce((a,s)=>s.weight<a.weight?s:a);o.tasks.push(i.task),o.weight+=i.weight}return n.map(i=>i.tasks).filter(i=>i.length>0)}function Ml(e){return Number.isFinite(e.endOffset)?Math.max(1,e.endOffset-e.startOffset):Math.max(1,Ba(e.fileName)-e.startOffset)}function Ba(e){try{return ja(e).size}catch{return 1}}import{createRequire as Gl}from"module";import{existsSync as $l}from"fs";import{dirname as Ua,extname as Vl,join as Wa,relative as Bl,resolve as Ul}from"path";import{pathToFileURL as Wl}from"url";function ql(e){e.transaction(()=>{e.prepare(`
235
277
  DELETE FROM mentions
236
278
  WHERE chunk_id IN (
237
279
  SELECT c.id
@@ -251,7 +293,7 @@ ${l}`:""}`)}Mu(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw jr(r,"Reindex
251
293
  FROM documents
252
294
  WHERE language = 'vue' OR relative_path LIKE '%.vue'
253
295
  ORDER BY relative_path
254
- `).all().map(r=>Rl(t,r.relativePath))}function $a(e,t){let{vueCore:n,ts:r,volarTs:i}=Pl(e),{parsed:o,vueOptions:a}=vl(n,r,t),s=Na(t),c=n.createVueLanguagePlugin(r,o.options,a,g=>g),d=wl(n,r,c),u=El(s,o),{languageServiceHost:l}=i.createLanguageServiceHost(r,r.sys,d,g=>g,u),p=r.createLanguageService(l);return{ts:r,language:d,languageService:p,fileNames:o.fileNames,configDir:s}}function Pl(e){let t=hl(xl(Ga(e,"package.json")).href);return{vueCore:mr(t,"@vue/language-core",e),ts:mr(t,"typescript",e),volarTs:mr(t,"@volar/typescript",e)}}function vl(e,t,n){let r=t.readConfigFile(n,t.sys.readFile);if(r.error||!r.config)throw new Error(`Failed to read ${n}`);let o=e.createParsedCommandLine(t,t.sys,n).vueOptions;return typeof e.createGlobalTypesWriter=="function"&&(o.globalTypesPath=e.createGlobalTypesWriter(o,t.sys.writeFile)),{parsed:t.parseJsonConfigFileContent(r.config,t.sys,Na(n),void 0,n,void 0,e.getAllExtensions(o).map(a=>({extension:a.slice(1),isMixedContent:!0,scriptKind:t.ScriptKind.Deferred}))),vueOptions:o}}function wl(e,t,n){let r={},i=e.createLanguage([n],new Map,o=>{if(!yl(o))return;let a=w(o,{maxBytes:z,inputKind:"Vue language-service source file"});r.current?.scripts.set(o,t.ScriptSnapshot.fromString(a),n.getLanguageId(o)??Ol(o))});return r.current=i,i}function El(e,t){return{getCurrentDirectory:()=>e,getCompilationSettings:()=>t.options,getScriptFileNames:()=>t.fileNames,getProjectReferences:()=>t.projectReferences,getProjectVersion:()=>"0"}}function mr(e,t,n){try{return e(t)}catch(r){throw(typeof r=="object"&&r!==null&&"code"in r?r.code:null)==="MODULE_NOT_FOUND"?new Error(`Vue augmentation requires ${t} to be installed in ${n}. Install Vue/Volar dependencies for that project, then rerun augment-vue.`,{cause:r}):r}}function Va(e,t,n){let r=kl(e);return i=>{if(!i.name)return null;let o=Q(t,i.fileName),a=n.get(i.fileName);if(!a)return null;let s=n.positionAt(a,i.textSpan.start),c=r.get(o);if(!c)return null;let d=c.starts.find(l=>l.line===s.line&&l.displayName===i.name);if(d)return d.symbolId;let u=c.containingByLine.get(s.line);return u&&u.displayName===i.name?u.symbolId:Tl(c.starts,s.line,2,i.name)}}function kl(e){let t=e.prepare(`
296
+ `).all().map(r=>Ul(t,r.relativePath))}function qa(e,t){let{vueCore:n,ts:r,volarTs:i}=Hl(e),{parsed:o,vueOptions:a}=zl(n,r,t),s=Ua(t),c=n.createVueLanguagePlugin(r,o.options,a,g=>g),d=Jl(n,r,c),u=Yl(s,o),{languageServiceHost:l}=i.createLanguageServiceHost(r,r.sys,d,g=>g,u),p=r.createLanguageService(l);return{ts:r,language:d,languageService:p,fileNames:o.fileNames,configDir:s}}function Hl(e){let t=Gl(Wl(Wa(e,"package.json")).href);return{vueCore:mr(t,"@vue/language-core",e),ts:mr(t,"typescript",e),volarTs:mr(t,"@volar/typescript",e)}}function zl(e,t,n){let r=t.readConfigFile(n,t.sys.readFile);if(r.error||!r.config)throw new Error(`Failed to read ${n}`);let o=e.createParsedCommandLine(t,t.sys,n).vueOptions;return typeof e.createGlobalTypesWriter=="function"&&(o.globalTypesPath=e.createGlobalTypesWriter(o,t.sys.writeFile)),{parsed:t.parseJsonConfigFileContent(r.config,t.sys,Ua(n),void 0,n,void 0,e.getAllExtensions(o).map(a=>({extension:a.slice(1),isMixedContent:!0,scriptKind:t.ScriptKind.Deferred}))),vueOptions:o}}function Jl(e,t,n){let r={},i=e.createLanguage([n],new Map,o=>{if(!$l(o))return;let a=E(o,{maxBytes:z,inputKind:"Vue language-service source file"});r.current?.scripts.set(o,t.ScriptSnapshot.fromString(a),n.getLanguageId(o)??tp(o))});return r.current=i,i}function Yl(e,t){return{getCurrentDirectory:()=>e,getCompilationSettings:()=>t.options,getScriptFileNames:()=>t.fileNames,getProjectReferences:()=>t.projectReferences,getProjectVersion:()=>"0"}}function mr(e,t,n){try{return e(t)}catch(r){throw(typeof r=="object"&&r!==null&&"code"in r?r.code:null)==="MODULE_NOT_FOUND"?new Error(`Vue augmentation requires ${t} to be installed in ${n}. Install Vue/Volar dependencies for that project, then rerun augment-vue.`,{cause:r}):r}}function Ha(e,t,n){let r=Kl(e);return i=>{if(!i.name)return null;let o=Q(t,i.fileName),a=n.get(i.fileName);if(!a)return null;let s=n.positionAt(a,i.textSpan.start),c=r.get(o);if(!c)return null;let d=c.starts.find(l=>l.line===s.line&&l.displayName===i.name);if(d)return d.symbolId;let u=c.containingByLine.get(s.line);return u&&u.displayName===i.name?u.symbolId:Xl(c.starts,s.line,2,i.name)}}function Kl(e){let t=e.prepare(`
255
297
  SELECT
256
298
  d.relative_path AS relativePath,
257
299
  der.start_line AS startLine,
@@ -262,22 +304,22 @@ ${l}`:""}`)}Mu(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw jr(r,"Reindex
262
304
  JOIN documents d ON d.id = der.document_id
263
305
  JOIN global_symbols gs ON gs.id = der.symbol_id
264
306
  ORDER BY d.relative_path, (der.end_line - der.start_line) DESC
265
- `).all(),n=new Map;for(let r of t){let i=n.get(r.relativePath);i||(i={containingByLine:new Map,starts:[]},n.set(r.relativePath,i)),i.starts.push({line:r.startLine,symbolId:r.symbolId,displayName:r.displayName});for(let o=r.startLine;o<=r.endLine;o++)i.containingByLine.set(o,{symbolId:r.symbolId,displayName:r.displayName})}for(let r of n.values())r.starts.sort((i,o)=>i.line-o.line);return n}function Tl(e,t,n,r){let i=0,o=e.length-1;for(;i<=o;){let s=Math.floor((i+o)/2);e[s].line<t?i=s+1:o=s-1}let a=null;for(let s of[o,i]){let c=e[s];if(!c||c.displayName!==r)continue;let d=Math.abs(c.line-t);d>n||(!a||d<a.distance)&&(a={distance:d,symbolId:c.symbolId})}return a?.symbolId??null}function yr(e,t,n){let r=Ll(t),i=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),o=e.prepare(`
307
+ `).all(),n=new Map;for(let r of t){let i=n.get(r.relativePath);i||(i={containingByLine:new Map,starts:[]},n.set(r.relativePath,i)),i.starts.push({line:r.startLine,symbolId:r.symbolId,displayName:r.displayName});for(let o=r.startLine;o<=r.endLine;o++)i.containingByLine.set(o,{symbolId:r.symbolId,displayName:r.displayName})}for(let r of n.values())r.starts.sort((i,o)=>i.line-o.line);return n}function Xl(e,t,n,r){let i=0,o=e.length-1;for(;i<=o;){let s=Math.floor((i+o)/2);e[s].line<t?i=s+1:o=s-1}let a=null;for(let s of[o,i]){let c=e[s];if(!c||c.displayName!==r)continue;let d=Math.abs(c.line-t);d>n||(!a||d<a.distance)&&(a={distance:d,symbolId:c.symbolId})}return a?.symbolId??null}function yr(e,t,n){let r=ip(t),i=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),o=e.prepare(`
266
308
  INSERT OR IGNORE INTO global_symbols (symbol, display_name, kind, documentation)
267
309
  VALUES (?, ?, ?, ?)
268
- `),a=0,s=new Map;return e.transaction(()=>{for(let d of n){let u=Q(t,d),l=Ka(r.name,r.version,u);o.run(l,"default",7,`Vue component|${u}`);let p=jl(i,r,t,d);p&&(a++,s.set(d,p))}})(),{get(d){return s.get(d)??null},syntheticSymbols:a}}function Ba(e,t,n,r,i){return e.transaction(()=>(Il(e),Dl(e,t,n,r),Fl(e,i)))()}function Dl(e,t,n,r){let i=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),o=e.prepare(`
310
+ `),a=0,s=new Map;return e.transaction(()=>{for(let d of n){let u=Q(t,d),l=ts(r.name,r.version,u);o.run(l,"default",7,`Vue component|${u}`);let p=op(i,r,t,d);p&&(a++,s.set(d,p))}})(),{get(d){return s.get(d)??null},syntheticSymbols:a}}function za(e,t,n,r,i){return e.transaction(()=>(ql(e),Ql(e,t,n,r),Zl(e,i)))()}function Ql(e,t,n,r){let i=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),o=e.prepare(`
269
311
  INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
270
312
  VALUES (?, ?, ?, ?, X'00')
271
313
  `),a=e.prepare(`
272
314
  INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
273
315
  VALUES (?, ?, 1)
274
- `);for(let s of n){let c=r.get(s);if(!c)continue;let d=Q(t,s),u=i.get(d);if(!u)continue;let l=o.run(u.id,-1,0,0);a.run(Number(l.lastInsertRowid),c)}}function qa(e,t,n,r,i){if(e.fileName.endsWith(".vue")){let o=r.language.scripts.get(e.fileName),a=o?.generated?.languagePlugin.typescript?.getServiceScript(o.generated.root)?.code;if(o&&a){let s=r.language.maps.get(a,o);if(Sr(s,e.textSpan.start)!==null)return n.get(e.fileName)}return e.fileName.startsWith(i)?n.get(e.fileName):null}return t(e)}function Wa(e){let t=new Set,n=[];for(let r of e){let i=Ua(r);t.has(i)||(t.add(i),n.push(r))}return n}function Ua(e){return[e.sourceFile,e.sourceLine,e.sourceStartChar,e.sourceEndChar,e.symbolId].join(":")}function Fl(e,t){let n=_l(e,[...new Set(t.map(c=>c.sourceFile))]),r=e.prepare(`
316
+ `);for(let s of n){let c=r.get(s);if(!c)continue;let d=Q(t,s),u=i.get(d);if(!u)continue;let l=o.run(u.id,-1,0,0);a.run(Number(l.lastInsertRowid),c)}}function Ja(e,t,n,r,i){if(e.fileName.endsWith(".vue")){let o=r.language.scripts.get(e.fileName),a=o?.generated?.languagePlugin.typescript?.getServiceScript(o.generated.root)?.code;if(o&&a){let s=r.language.maps.get(a,o);if(Sr(s,e.textSpan.start)!==null)return n.get(e.fileName)}return e.fileName.startsWith(i)?n.get(e.fileName):null}return t(e)}function Ya(e){let t=new Set,n=[];for(let r of e){let i=Ka(r);t.has(i)||(t.add(i),n.push(r))}return n}function Ka(e){return[e.sourceFile,e.sourceLine,e.sourceStartChar,e.sourceEndChar,e.symbolId].join(":")}function Zl(e,t){let n=rp(e,[...new Set(t.map(c=>c.sourceFile))]),r=e.prepare(`
275
317
  INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
276
318
  VALUES (?, ?, ?, ?, X'00')
277
319
  `),i=e.prepare(`
278
320
  INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
279
321
  VALUES (?, ?, 0)
280
- `),o=new Set,a=0,s=0;for(let c of t){let d=Ua(c);if(o.has(d))continue;o.add(d);let u=n.get(c.sourceFile);if(!u)continue;let l=r.run(u,s++,c.sourceLine,c.sourceLine),p=i.run(Number(l.lastInsertRowid),c.symbolId);a+=Number(p.changes)}return a}function*Ha(e){let t=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,n=new Set(["script","setup","template","style","lang","scoped","true","false","null","undefined","const","let","var","import","from","export","return","if","else","for","while","function","class","type","interface","as","await","async"]),r;for(;r=t.exec(e);){let i=r[0];n.has(i)||(yield{text:i,start:r.index,end:r.index+i.length})}}function za(e,t){for(let[n]of e.toGeneratedLocation(t,r=>!!r.navigation))return n;return null}function Sr(e,t){let n=e;for(let[r]of n.toSourceLocation(t,i=>!!i.navigation))return r;return null}function Al(e,t){let n=0,r=e.lineStarts.length-1;for(;n<=r;){let o=Math.floor((n+r)/2);e.lineStarts[o]<=t?n=o+1:r=o-1}let i=Math.max(0,r);return{line:i,character:t-e.lineStarts[i]}}function Ja(e,t){return Q(e,t).startsWith("node_modules/")}function Q(e,t){return bl(e,t).replaceAll("\\","/")}function Ol(e){switch(Sl(e)){case".vue":return"vue";case".tsx":return"typescriptreact";case".ts":case".mts":case".cts":return"typescript";case".jsx":return"javascriptreact";case".js":case".mjs":case".cjs":return"javascript";case".json":return"json";default:return"typescript"}}function Ya(){let e=new Map;return{get(t){if(e.has(t))return e.get(t)??null;try{let n=w(t,{maxBytes:z,inputKind:"Vue source file"}),r={text:n,lineStarts:Cl(n)};return e.set(t,r),r}catch{return e.set(t,null),null}},positionAt:Al}}function Cl(e){let t=[0];for(let n=0;n<e.length;n++)e.charCodeAt(n)===10&&t.push(n+1);return t}function _l(e,t){let n=new Map,r=500;for(let i=0;i<t.length;i+=r){let o=t.slice(i,i+r),a=e.prepare(`SELECT id, relative_path AS relativePath FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let s of a)n.set(s.relativePath,s.id)}return n}function Ll(e){try{let t=JSON.parse(w(Ga(e,"package.json"),{maxBytes:A,inputKind:"project package manifest"}));return{name:t.name??"workspace",version:t.version??"0.0.0"}}catch{return{name:"workspace",version:"0.0.0"}}}function jl(e,t,n,r){let i=Q(n,r),o=Ka(t.name,t.version,i);return e.get(o)?.id??null}function Ka(e,t,n){let r=n.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${r}/default.`}function rs(e){return{id:"vue-resolved-references",facts:["synthetic-symbol","source-mapped-occurrence","definition-mention","replacement-chunk","fingerprint-cache"],run:t=>$l({projectRoot:t.projectRoot,dbPath:t.dbPath,tsconfig:e.tsconfig,onStatus:t.onStatus})}}function Nl(e){return q(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),q(rs({tsconfig:e.tsconfig}),{projectRoot:e.projectRoot,dbPath:e.dbPath,onStatus:e.onStatus}).result}async function Gl(e){return q(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),Vl(e)}function $l(e){let t=ns(e.projectRoot,e.tsconfig);if(!Za(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new Qa(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=ts(es(e.dbPath),"augment-vue-meta.json");return Ki({cachePath:i,readFingerprint:()=>as(n,e.projectRoot,e.tsconfig),compute:()=>Bl({db:n,projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,configPath:t,vueFiles:r,onStatus:e.onStatus}),onCacheHit:o=>e.onStatus?.(`Vue references unchanged; reused ${o.resolvedReferences} cached resolved references.`)})}finally{n.close()}}async function Vl(e){let t=ns(e.projectRoot,e.tsconfig);if(!Za(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new Qa(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=ts(es(e.dbPath),"augment-vue-meta.json");return await Xi({cachePath:i,readFingerprint:()=>as(n,e.projectRoot,e.tsconfig),compute:()=>ql({db:n,projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,configPath:t,vueFiles:r,onStatus:e.onStatus}),onCacheHit:o=>e.onStatus?.(`Vue references unchanged; reused ${o.resolvedReferences} cached resolved references.`)})}finally{n.close()}}function Bl(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=os(e,t);return is(e,t,n)}async function ql(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=_a(e.vueFiles)?await La({projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,vueFiles:e.vueFiles}):os(e,t);return is(e,t,n)}function is(e,t,n){let r=Wa(n.occurrences),i=Ba(e.db,e.projectRoot,e.vueFiles,t,r),o={vueFiles:e.vueFiles.length,resolvedReferences:r.length,resolvedReferenceSamples:Ql(e.db,r,20),insertedMentions:i,skippedReferences:n.skippedReferences,skippedReferenceReasons:n.skippedReferenceReasons,skippedReferenceSamples:Xl(n.skippedReferenceSamples,20),syntheticSymbols:t.syntheticSymbols};return e.onStatus?.(`Resolved ${o.resolvedReferences} Vue references with Volar; inserted ${o.insertedMentions} mentions.`),o}function os(e,t){let n=Wl({db:e.db,projectRoot:e.projectRoot,configPath:e.configPath,vueSymbolLookup:t});return Ul({...n,vueFiles:n.context.fileNames.filter(r=>r.endsWith(".vue"))})}function as(e,t,n){let r=e.prepare(`
322
+ `),o=new Set,a=0,s=0;for(let c of t){let d=Ka(c);if(o.has(d))continue;o.add(d);let u=n.get(c.sourceFile);if(!u)continue;let l=r.run(u,s++,c.sourceLine,c.sourceLine),p=i.run(Number(l.lastInsertRowid),c.symbolId);a+=Number(p.changes)}return a}function*Xa(e){let t=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,n=new Set(["script","setup","template","style","lang","scoped","true","false","null","undefined","const","let","var","import","from","export","return","if","else","for","while","function","class","type","interface","as","await","async"]),r;for(;r=t.exec(e);){let i=r[0];n.has(i)||(yield{text:i,start:r.index,end:r.index+i.length})}}function Qa(e,t){for(let[n]of e.toGeneratedLocation(t,r=>!!r.navigation))return n;return null}function Sr(e,t){let n=e;for(let[r]of n.toSourceLocation(t,i=>!!i.navigation))return r;return null}function ep(e,t){let n=0,r=e.lineStarts.length-1;for(;n<=r;){let o=Math.floor((n+r)/2);e.lineStarts[o]<=t?n=o+1:r=o-1}let i=Math.max(0,r);return{line:i,character:t-e.lineStarts[i]}}function Za(e,t){return Q(e,t).startsWith("node_modules/")}function Q(e,t){return Bl(e,t).replaceAll("\\","/")}function tp(e){switch(Vl(e)){case".vue":return"vue";case".tsx":return"typescriptreact";case".ts":case".mts":case".cts":return"typescript";case".jsx":return"javascriptreact";case".js":case".mjs":case".cjs":return"javascript";case".json":return"json";default:return"typescript"}}function es(){let e=new Map;return{get(t){if(e.has(t))return e.get(t)??null;try{let n=E(t,{maxBytes:z,inputKind:"Vue source file"}),r={text:n,lineStarts:np(n)};return e.set(t,r),r}catch{return e.set(t,null),null}},positionAt:ep}}function np(e){let t=[0];for(let n=0;n<e.length;n++)e.charCodeAt(n)===10&&t.push(n+1);return t}function rp(e,t){let n=new Map,r=500;for(let i=0;i<t.length;i+=r){let o=t.slice(i,i+r),a=e.prepare(`SELECT id, relative_path AS relativePath FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let s of a)n.set(s.relativePath,s.id)}return n}function ip(e){try{let t=JSON.parse(E(Wa(e,"package.json"),{maxBytes:_,inputKind:"project package manifest"}));return{name:t.name??"workspace",version:t.version??"0.0.0"}}catch{return{name:"workspace",version:"0.0.0"}}}function op(e,t,n,r){let i=Q(n,r),o=ts(t.name,t.version,i);return e.get(o)?.id??null}function ts(e,t,n){let r=n.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${r}/default.`}function cs(e){return{id:"vue-resolved-references",facts:["synthetic-symbol","source-mapped-occurrence","definition-mention","replacement-chunk","fingerprint-cache"],run:t=>dp({projectRoot:t.projectRoot,dbPath:t.dbPath,tsconfig:e.tsconfig,onStatus:t.onStatus})}}function sp(e){return U(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),U(cs({tsconfig:e.tsconfig}),{projectRoot:e.projectRoot,dbPath:e.dbPath,onStatus:e.onStatus}).result}async function cp(e){return U(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),up(e)}function dp(e){let t=ss(e.projectRoot,e.tsconfig);if(!is(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new rs(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=as(os(e.dbPath),"augment-vue-meta.json");return Ki({cachePath:i,readFingerprint:()=>ls(n,e.projectRoot,e.tsconfig),compute:()=>lp({db:n,projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,configPath:t,vueFiles:r,onStatus:e.onStatus}),onCacheHit:o=>e.onStatus?.(`Vue references unchanged; reused ${o.resolvedReferences} cached resolved references.`)})}finally{n.close()}}async function up(e){let t=ss(e.projectRoot,e.tsconfig);if(!is(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new rs(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=as(os(e.dbPath),"augment-vue-meta.json");return await Xi({cachePath:i,readFingerprint:()=>ls(n,e.projectRoot,e.tsconfig),compute:()=>pp({db:n,projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,configPath:t,vueFiles:r,onStatus:e.onStatus}),onCacheHit:o=>e.onStatus?.(`Vue references unchanged; reused ${o.resolvedReferences} cached resolved references.`)})}finally{n.close()}}function lp(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=us(e,t);return ds(e,t,n)}async function pp(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=Ga(e.vueFiles)?await $a({projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,vueFiles:e.vueFiles}):us(e,t);return ds(e,t,n)}function ds(e,t,n){let r=Ya(n.occurrences),i=za(e.db,e.projectRoot,e.vueFiles,t,r),o={vueFiles:e.vueFiles.length,resolvedReferences:r.length,resolvedReferenceSamples:xp(e.db,r,20),insertedMentions:i,skippedReferences:n.skippedReferences,skippedReferenceReasons:n.skippedReferenceReasons,skippedReferenceSamples:Rp(n.skippedReferenceSamples,20),syntheticSymbols:t.syntheticSymbols};return e.onStatus?.(`Resolved ${o.resolvedReferences} Vue references with Volar; inserted ${o.insertedMentions} mentions.`),o}function us(e,t){let n=fp({db:e.db,projectRoot:e.projectRoot,configPath:e.configPath,vueSymbolLookup:t});return gp({...n,vueFiles:n.context.fileNames.filter(r=>r.endsWith(".vue"))})}function ls(e,t,n){let r=e.prepare(`
281
323
  SELECT
282
324
  (SELECT COUNT(*) FROM documents) AS documents,
283
325
  (SELECT COUNT(*) FROM global_symbols) AS symbols,
@@ -286,13 +328,10 @@ ${l}`:""}`)}Mu(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw jr(r,"Reindex
286
328
  (SELECT COUNT(*) FROM defn_enclosing_ranges) AS ranges,
287
329
  (SELECT MAX(id) FROM chunks) AS maxChunkId,
288
330
  (SELECT MAX(id) FROM global_symbols) AS maxSymbolId
289
- `).get();return{version:3,tsconfig:n,files:dt(t),db:r}}function Wl(e){let t=Ya();return{projectRoot:e.projectRoot,context:$a(e.projectRoot,e.configPath),symbolLookup:Va(e.db,e.projectRoot,t),vueSymbolLookup:e.vueSymbolLookup,sourceReader:t}}function Ul(e){let t=[],n=Te(),r=e.tasks??e.vueFiles.map(i=>({fileName:i,startOffset:0,endOffset:Number.POSITIVE_INFINITY,countFileSkip:!0}));for(let i of r){let o=Hl(e,i);t.push(...o.occurrences),jt(n,o)}return{occurrences:t,...n}}function Hl(e,t){let n=e.sourceReader.get(t.fileName);if(!n)return Xa(e.projectRoot,t,"missing-source-file");let r=e.context.language.scripts.get(t.fileName),i=r?.generated?.languagePlugin.typescript?.getServiceScript(r.generated.root)?.code;if(!r||!i)return Xa(e.projectRoot,t,"missing-service-script");let o=e.context.language.maps.get(i,r),a=Q(e.projectRoot,t.fileName),s=[...Ha(n.text)],c={tokens:s.filter(d=>d.start>=t.startOffset&&d.start<t.endOffset),tokenByStart:new Map(s.map(d=>[d.start,d])),tokenTextCounts:ep(s),processedStarts:new Set};return zl({...e,fileName:t.fileName,sourceInfo:n,sourceFile:a,map:o,tokenContext:c})}function zl(e){let t=[],n=Te();for(let r of e.tokenContext.tokens){if(e.tokenContext.processedStarts.has(r.start)||Jl(e.sourceInfo.text,r.start))continue;let i=za(e.map,r.start);if(i===null)continue;let a=(e.context.languageService.getDefinitionAtPosition(e.fileName,i+1)??[]).find(u=>!Ja(e.projectRoot,u.fileName));if(!a){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"no-definition");continue}let s=Q(e.projectRoot,a.fileName),c=Yl(e.sourceFile,r.text,s);if(c){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,c);continue}let d=qa(a,e.symbolLookup,e.vueSymbolLookup,e.context,e.projectRoot);if(d===null){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"unindexed-definition");continue}ss(t,e.sourceReader,e.sourceInfo,e.sourceFile,r,s,d),e.tokenContext.processedStarts.add(r.start),Zl(t,e,r,i,s,d)}return{occurrences:t,...n}}function Jl(e,t){let n=e.lastIndexOf(`
290
- `,t-1)+1,r=e.slice(n,t);return/\bfrom\s+['"][^'"]*$/.test(r)||/\bimport\s*\(\s*['"][^'"]*$/.test(r)}function Yl(e,t,n){return n===e?"same-file-definition":n.endsWith(".vue")&&t!==n.split("/").at(-1)?.replace(/\.vue$/,"")?"unindexed-definition":null}function Xa(e,t,n){let r=Te();return t.countFileSkip&&(r.skippedReferences=1,r.skippedReferenceReasons[n]=1,r.skippedReferenceSamples.push({sourceFile:Q(e,t.fileName),sourceLine:0,sourceStartChar:0,sourceEndChar:0,token:"",reason:n})),{occurrences:[],...r}}function br(e,t,n,r,i,o){if(e.skippedReferences++,e.skippedReferenceReasons[o]++,e.skippedReferenceSamples.filter(s=>s.reason===o&&s.sourceFile===r).length>=2)return;let a=t.positionAt(n,i.start);e.skippedReferenceSamples.push({sourceFile:r,sourceLine:a.line,sourceStartChar:a.character,sourceEndChar:a.character+i.text.length,token:i.text,reason:o})}function Rr(e,t){let n=new Map;for(let o of e){let a=n.get(o.sourceFile)??[];a.push(o),n.set(o.sourceFile,a)}let r=[...n.keys()].sort(),i=[];for(let o=0;i.length<t;o++){let a=!1;for(let s of r){let c=n.get(s)?.[o];if(c&&(i.push(c),a=!0,i.length===t))break}if(!a)break}return i}function Kl(e,t){let n=Rr(e.filter(o=>o.sourceFile!==o.definitionFile),Math.ceil(t/2)),r=new Set(n.map(o=>`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),i=Rr(e.filter(o=>!r.has(`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),t-n.length);return[...n,...i]}function Xl(e,t){let n=[...new Set(e.map(i=>i.reason))].sort(),r=[];for(let[i,o]of n.entries()){let a=n.length-i,s=Math.ceil((t-r.length)/a);r.push(...Rr(e.filter(c=>c.reason===o),s))}return r.slice(0,t)}function Ql(e,t,n){let r=e.prepare("SELECT symbol FROM global_symbols WHERE id = ?");return Kl(t,n).map(({symbolId:i,...o})=>({...o,definitionSymbol:r.get(i)?.symbol??`symbol-id:${i}`}))}function Zl(e,t,n,r,i,o){if(!((t.tokenContext.tokenTextCounts.get(n.text)??0)<=1))for(let a of tp(t.context.languageService,t.fileName,r+1,t.map,n,t.tokenContext.tokenByStart)){if(t.tokenContext.processedStarts.has(a))continue;let s=t.tokenContext.tokenByStart.get(a);s&&(ss(e,t.sourceReader,t.sourceInfo,t.sourceFile,s,i,o),t.tokenContext.processedStarts.add(a))}}function ss(e,t,n,r,i,o,a){let s=t.positionAt(n,i.start);e.push({sourceFile:r,sourceLine:s.line,sourceStartChar:s.character,sourceEndChar:s.character+i.text.length,sourceToken:i.text,definitionFile:o,symbolId:a})}function ep(e){let t=new Map;for(let n of e)t.set(n.text,(t.get(n.text)??0)+1);return t}function tp(e,t,n,r,i,o){let a=e.getDocumentHighlights?.(t,n,[t])??[],s=[];for(let c of a)if(c.fileName===t)for(let d of c.highlightSpans){let u=np(r,d.textSpan.start,o,i.text);u!==null&&s.push(u)}return s}function np(e,t,n,r){let i=n.get(t);if(i?.text===r)return i.start;let o=Sr(e,t);if(o===null)return null;let a=n.get(o);return a?.text===r?a.start:null}async function Gy(e){let{projectRoot:t,maxHeapMb:n=8192,onStatus:r=console.log}=e,i=e.skipAutoInstall===!0||e.installMissing!==!0,o=dp(e),a=Date.now(),s=I();Nt(S(o.outputScip),{recursive:!0}),Nt(S(o.outputDb),{recursive:!0});let c=e.languages??un(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.");r(`Detected languages: ${c.join(", ")}`);let d=st("reindex.fingerprint",()=>Kt(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),{languages:c.length}),u,l;if(e.skipIfUnchanged!==!1&&!ra(t,o.outputDb)&&cs(o.outputScip)===cs(C(S(o.outputDb),"index.scip"))){let y=ct(t);if(u=y?.clean?Tt(y,d):void 0,y&&!y.clean&&!cp(o)){let x=ia(y,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath});if(x)try{Dt({snapshot:x.snapshot,manifest:x.manifest,targetCacheDir:S(o.outputDb),targetProjectRoot:t,persistLease:!1}),sa(x.snapshot,S(o.outputDb)),r(`Forked shared baseline ${x.snapshot.generationId.slice(0,12)} for dirty worktree reindex`)}catch(P){r(`Shared baseline fork failed; continuing locally: ${de(P)}`)}}else if(u){let x=K(u);if(x){if(!sp(o,d))try{Dt({snapshot:u,manifest:x,targetCacheDir:S(o.outputDb),targetProjectRoot:t}),r(`Attached shared generation ${u.generationId.slice(0,12)}`)}catch(P){r(`Shared generation attach failed; continuing locally: ${de(P)}`)}}else{let P=await aa(u);if(P.kind==="owner")l=P.release;else if(P.kind==="generation-ready"){let T=K(u);if(T)try{Dt({snapshot:u,manifest:T,targetCacheDir:S(o.outputDb),targetProjectRoot:t,action:"waited"}),r(`Attached shared generation ${u.generationId.slice(0,12)} after waiting`)}catch(k){r(`Shared generation attach failed after waiting; continuing locally: ${de(k)}`)}}else r("Shared generation build lock timed out; continuing with an isolated local reindex")}}}let g=ue(C(S(o.outputDb),"cache-lifecycle.lock"),{waitMs:3e4});if(!g)throw l?.(),new Error(`Could not acquire codebaseiq cache lifecycle lock for ${S(o.outputDb)}.`);let f;try{f=await xe("reindex.lock",()=>jp(C(S(o.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:r}),{languages:c.length})}catch(y){throw g.release(),l?.(),y}let h=null,b=yi();try{Hn(o.outputDb,o.outputScip,o.metaPath);let y=fp(S(o.outputDb));y.removed>0&&r(`Removed ${y.removed} abandoned reindex workspace(s)`);for(let Se of y.errors)r(`Could not remove abandoned reindex workspace: ${Se}`);let x=null,P=st("reindex.reuse-check",()=>(x=up({opts:e,paths:o,languages:c,fingerprint:d,start:a,monotonicStart:s,onStatus:r}),x),()=>({languages:c.length,reused:x!==null}));if(P){ds({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let Se=ln(o.outputDb,P);return Se.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${Se.reason}`),Jt(t,S(o.outputDb)),P}await xe("reindex.scip-cli-ready",()=>Tp(i,r));let T=pp(o);h=T.runDir;let k,v=await xe("reindex.fresh",async()=>(k=await gp({opts:e,languages:c,projectRoot:t,paths:o,tempPaths:T,fingerprint:d,start:a,monotonicStart:s,maxHeapMb:n,skipAutoInstall:i,onStatus:r,writeTelemetry:b}),k),()=>({languages:c.length,reused:k?.reused,skipped:k?.skipped.length}));ds({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let ye=ln(o.outputDb,v);return ye.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${ye.reason}`),Jt(t,S(o.outputDb)),v}catch(y){let x=Vt({trigger:e.trigger,result:"failed",start:a,monotonicStart:s,error:y instanceof Error?y.message:String(y)});Fs(o.metaPath,x);let P=mi(o.outputDb,x);throw P.state==="failed"&&r(`Warning: failed reindex activity telemetry was not recorded: ${P.reason}`),y}finally{if(h){let y=h;try{F(()=>De(y,{recursive:!0,force:!0}))}catch(x){r(`Warning: temporary reindex workspace was left behind: ${de(x)}`)}}f(),g.release(),l?.()}}function ds(e){if(e.snapshot)try{let t=ct(e.projectRoot),n=t?Tt(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=oa({snapshot:e.snapshot,sourceCacheDir:S(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let i=ct(e.projectRoot);return(i?Tt(i,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});nr(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: ${de(t)}`)}}function sp(e,t){if(!M(e.outputScip)||!M(e.outputDb)||!Ds(e.metaPath,t))return!1;let n=H(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function cp(e){if(!M(e.outputScip)||!M(e.outputDb)||!Fe(e.metaPath))return!1;let t=H(e.outputDb,e.metaPath);return t.state!=="invalid"&&t.state!=="drifted"}function de(e){return e instanceof Error?e.message:String(e)}function Pr(e,t,n,r,i,o){try{q(bi({indexPath:n,reuseExisting:i,affectedFiles:o}),{projectRoot:e,dbPath:t,onStatus:r})}catch(a){r(`Runtime-boundary extraction unavailable: ${a instanceof Error?a.message:String(a)}.`)}}function dp(e){let t=e.outputScip??C(e.projectRoot,"index.scip"),n=e.outputDb??C(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:C(S(n),"meta.json")}}function up(e){let t=H(e.paths.outputDb,e.paths.metaPath);if(e.opts.skipIfUnchanged===!1||!M(e.paths.outputScip)||!M(e.paths.outputDb)||!Ds(e.paths.metaPath,e.fingerprint)||t.state==="invalid"||t.state==="drifted")return null;q(oe(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Pr(e.opts.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0),H(e.paths.outputDb,e.paths.metaPath).state==="drifted"&&(zn(e.paths.outputDb,e.paths.metaPath),e.onStatus("Published refreshed SQLite generation after post-index augmentation"));let n=I()-e.monotonicStart,r=Vt({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return Fs(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:lp(e.paths,e.opts.projectRoot,e.languages,e.opts)}}function lp(e,t,n,r){let i=ks(t,n,r);return n.map(o=>({id:o,language:o,reused:!0,fingerprint:Ke(i[o]),outputBytes:Xe(wr(e.outputDb,o)),durationMs:0}))}function pp(e){let t=Ae(C(S(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:C(t,Mt(e.outputScip)),tempOutputDb:C(t,Mt(e.outputDb)),tempMetaPath:C(t,Mt(e.metaPath))}}function fp(e){let t=[],n;try{n=hs(e,{withFileTypes:!0})}catch(i){return{removed:0,errors:[de(i)]}}let r=0;for(let i of n)if(!(!i.name.startsWith("reindex-")||!i.isDirectory()))try{De(C(e,i.name),{recursive:!0,force:!0}),r+=1}catch(o){t.push(`${i.name}: ${de(o)}`)}return{removed:r,errors:t}}async function gp(e){let t={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},n,r=await xe("reindex.language-indexers",async()=>(n=await hp(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:i,skippedLanguages:o,reusedLanguages:a,languageFingerprints:s,shards:c,typescriptProjectShardContext:d,incrementalTypeScript:u}=r;if(a.length>0&&e.onStatus(`Reused ${a.length} cached language shard(s): ${a.join(", ")}`),mp({run:e,indexedOutputs:i,skippedLanguages:o,reusedLanguages:a})){let g=st("reindex.publish",()=>wp(e,i,o,a,s,d),{mode:"metadata-only",languages:i.length,reused:a.length}),f=g.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(f/1e3).toFixed(1)}s`),{languages:i.map(h=>h.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:f,reused:!0,skipped:o,lastRefresh:g,shards:c,writeTelemetry:e.writeTelemetry}}let l=await xe("reindex.publish",()=>vp(e,t,i,o,a,s,d,u),{mode:u?"incremental-or-fallback":"full",languages:i.length,reused:a.length,skipped:o.length}),p=l.durationMs;return e.onStatus(`Done in ${(p/1e3).toFixed(1)}s`),{languages:i.map(g=>g.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:o,lastRefresh:l,shards:c,writeTelemetry:e.writeTelemetry}}function mp(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!M(e.run.paths.outputScip)||!M(e.run.paths.outputDb))return!1;let t=H(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 hp(e,t){let n=xp({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[N,kr]of n)kr.reused&&(r.push({language:N,scipPath:kr.scipPath}),i.add(N));for(let N of i)e.onStatus(`Reusing cached ${N} SCIP shard (language inputs unchanged).`);let o=n.get("typescript"),a=H(e.paths.outputDb,e.paths.metaPath),s=Fe(e.paths.metaPath),c=a.state==="legacy"||a.state==="current",d=s?.scipCompanion!=="deferred"&&(a.state!=="current"||a.generation.publication?.scipCompanion!=="deferred"),u=o&&!o.reused&&c?Pa({projectRoot:e.projectRoot,cacheDir:S(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:o.scipPath,candidateShardPath:Qe(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:Qe(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:d,previousSnapshot:vr(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus}):null,l=new Set(u?["typescript"]:[]),p=u?void 0:yp(e,n),{preparedRuns:g,skippedLanguages:f,languageOutputScipPaths:h}=Dp({languages:e.languages.filter(N=>!i.has(N)&&!l.has(N)),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}),b=p?g.filter(N=>N.language!=="typescript"||p.missedProjectIds.has(N.id)):g,y=await ka(b,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal),x=[];if(p){bp(e.paths.outputDb,y,e.writeTelemetry);let N=h.typescript??e.tempPaths.tempOutputScip;x=Rp({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:N,reusedProjects:p.reusedProjects,writeTelemetry:e.writeTelemetry})}let P=[...y,...x],{indexedOutputs:T}=Ap(P,f),k=u?[{language:"typescript",scipPath:u.scipPath}]:[],v=[...r,...k,...T];Op(v,f,e.languages,e.opts.allowPartial,e.onStatus);let ye=u?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:u.scipPath,outputScipPath:u.scipPath,durationMs:u.durationMs,command:"watch-service:typescript-index",outputBytes:Xe(u.scipPath)??void 0}]:[],Se=Ip(n,[...y,...ye],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0);return{indexedOutputs:v,skippedLanguages:f,reusedLanguages:[...i],languageFingerprints:Pp(n,e.languages),shards:Se,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:u??void 0}}function yp(e,t){let n=t.get("typescript");if(!n||n.reused||e.opts.typescriptProjectMode!=="workspace")return;let r=Ie(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let i=io(e.projectRoot,r),o=to(n.fingerprint.files,r),a=no(r,i),s=ro(r,o,a),c=Fe(e.paths.metaPath),u=Sp(c,s,f=>M($t(e.paths.outputDb,f))),l=[...u.entries()].filter(([,f])=>f.reused).map(([f])=>f),p=new Set(l),g=new Set(r.filter(f=>!p.has(f)).map(f=>`typescript:${f}`));return{allProjects:r,fingerprints:s,classification:u,reusedProjects:l,missedProjectIds:g}}function Sp(e,t,n){let r=new Map;for(let i of Object.keys(t)){let o=t[i];if(!e){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:o});continue}let a=e.version===Oe&&Wt(e).typescriptProjectShardReuse?e.typescriptProjectShards?.[i]:void 0;if(!a){r.set(i,{reused:!1,reason:"no cached fingerprint for this project",fingerprint:o});continue}if(!n(i)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:o});continue}if(Z(a)!==Z(o)){r.set(i,{reused:!1,reason:"project inputs changed since last index",fingerprint:o});continue}r.set(i,{reused:!0,fingerprint:o})}return r}function bp(e,t,n){for(let r of t){if(r.skipped||!r.id.startsWith("typescript:"))continue;let i=r.id.slice(11),o=$t(e,i);Nt(S(o),{recursive:!0}),fe(n,pe(r.scipPath,o))}}function Rp(e){return e.reusedProjects.map((t,n)=>{let r=$t(e.outputDb,t),i=Qe(e.tempOutputScip,"typescript-project-cached",n);return fe(e.writeTelemetry,pe(r,i)),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:i,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:Xe(i)??void 0}})}function xp(e){let t=Fe(e.paths.metaPath),n=ks(e.projectRoot,e.languages,e),r=new Map;for(let i of e.languages){let o=wr(e.paths.outputDb,i),a=n[i];if(!t){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:a,scipPath:o});continue}if(t.version!==Oe){r.set(i,{reused:!1,reason:`metadata version ${String(t.version??"unknown")} predates per-language shard caching`,fingerprint:a,scipPath:o});continue}if(i==="typescript"&&t.scipCompanion==="deferred"){r.set(i,{reused:!1,reason:"whole TypeScript SCIP companion is deferred behind changed-document overlays",fingerprint:a,scipPath:o});continue}if(!Wt(t).languageShardReuse||!t.languageFingerprints){r.set(i,{reused:!1,reason:"no per-language fingerprints recorded in metadata",fingerprint:a,scipPath:o});continue}let s=t.languageFingerprints[i];if(!s){r.set(i,{reused:!1,reason:"no cached fingerprint for this language",fingerprint:a,scipPath:o});continue}if(!M(o)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:a,scipPath:o});continue}if(Z(s)!==Z(a)){r.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:a,scipPath:o});continue}r.set(i,{reused:!0,fingerprint:a,scipPath:o})}return r}function Ip(e,t,n){let r=[];for(let[i,o]of e)o.reused&&r.push({id:i,language:i,reused:!0,fingerprint:Ke(o.fingerprint),outputBytes:Xe(o.scipPath),durationMs:0});for(let i of t){let o=e.get(i.language),a=n&&i.id.startsWith("typescript:")?i.id.slice(11):null,s=a?n.classification.get(a):void 0;r.push({id:i.id,language:i.language,reused:!1,missReason:s?.reason??o?.reason??i.skipped?.reason,fingerprint:s?Ke(s.fingerprint):o?Ke(o.fingerprint):"unknown",outputBytes:i.outputBytes??null,durationMs:i.durationMs,command:i.command})}if(n)for(let[i,o]of n.classification)o.reused&&r.push({id:`typescript:${i}`,language:"typescript",reused:!0,fingerprint:Ke(o.fingerprint),outputBytes:Xe($t(n.outputDb,i)),durationMs:0});return r}function Ke(e){return rp("sha256").update(Z(e)).digest("hex").slice(0,16)}function Xe(e){try{return ip(e).size}catch{return null}}function Pp(e,t){let n={};for(let r of t){let i=e.get(r);i&&(n[r]=i.fingerprint)}return n}async function vp(e,t,n,r,i,o,a,s){G(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,d=!1;c&&(us(e.paths.outputDb,n,e.writeTelemetry),d=ls(n,e.tempPaths.tempOutputScip,e.onStatus));let u=await Cp({run:e,env:t,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,incrementalTypeScript:s,completeScipAvailable:c,completeScipSanitized:d,materializeFullFallback:async()=>{if(G(e.opts.signal,"Reindex cancelled by its owner."),!s||s.completeScipUpdated)return d;e.onStatus("Materializing the deferred whole TypeScript SCIP companion for full conversion..."),va({cacheDir:S(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let T=n.map(k=>k.language==="typescript"?{language:k.language,scipPath:s.candidateScipPath}:k);return us(e.paths.outputDb,T,e.writeTelemetry),d=ls(T,e.tempPaths.tempOutputScip,e.onStatus),d}});G(e.opts.signal,"Reindex cancelled by its owner."),q(oe(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus}),Pr(e.projectRoot,e.tempPaths.tempOutputDb,e.tempPaths.tempOutputScip,e.onStatus,!1,s?.affectedFiles);let l=vn(e.tempPaths.tempOutputDb);if(l.added.length>0&&e.onStatus(`Added SQLite query indexes: ${l.added.join(", ")}`),l.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${l.removed.join(", ")}`),u.mode==="incremental"&&s){let T=null,k=null;try{T=new J({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip}),k=new J({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let v=oi(T,e.fingerprint,s.referenceFragmentsByFile,k);e.onStatus(`Cached exact TypeScript reference fragments for ${v} affected document(s).`)}catch(v){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${v instanceof Error?v.message:String(v)}.`)}finally{T?.close(),k?.close()}}let p=vr(e.paths.metaPath),g=u.mode==="incremental"&&s?Lp(s,u.changedDocumentPaths):mn({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"}),f=Vt({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(T=>T.language),skipped:[...r]}),h=u.mode==="incremental"&&u.scipCompanion==="deferred",b={...o};h&&delete b.typescript;let{metadata:y,pruneProjects:x}=bs({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,languageFingerprints:b,typescriptProjectShardContext:a,lastRefresh:f});y.scipCompanion=h?"deferred":"current",Rs(e.paths.outputDb,x),Er(e.tempPaths.tempMetaPath,y);let P=wt({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:u.mode==="incremental"&&u.scipCompanion==="deferred",publication:u.mode==="incremental"?{mode:"incremental",validation:"passed",converterDurationMs:u.converterDurationMs,affectedDocumentCount:s?.affectedFiles.length,changedDocumentCount:u.changedDocumentPaths.length,producerDurationMs:s?.timings.serviceMs,materializationDurationMs:s?.durationMs,patchDurationMs:u.patchDurationMs,scipCompanion:u.scipCompanion,...u.scipCompanion==="deferred"&&s?{typescriptOverlayGeneration:s.nextFragmentGeneration}:{}}:{mode:"full",validation:"passed",converterDurationMs:u.converterDurationMs,scipCompanion:"current",...u.fallbackReason?{fallbackReason:u.fallbackReason}:{}}});return P.achievedDurability==="file-flushed"&&e.onStatus(`Published local generation ${P.currentGeneration.slice(0,12)} (file-flushed; directory sync unsupported)`),jo(S(e.paths.outputDb),u.mode==="incremental"&&u.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),Po(S(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[]),Ss(e.paths.outputDb,g,e.onStatus),f}function wp(e,t,n,r,i,o){let a=vr(e.paths.metaPath),s=null;try{fe(e.writeTelemetry,pe(e.paths.outputDb,e.tempPaths.tempOutputDb))}catch(p){s=Pi("reused","oracle-error",`Could not snapshot the prior database: ${p instanceof Error?p.message:String(p)}`)}q(oe(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Pr(e.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0);let c=vn(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(", ")}`),s??=mn({projectRoot:e.projectRoot,previousDbPath:e.tempPaths.tempOutputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.paths.outputDb,candidateIndexPath:e.paths.outputScip,previousSnapshot:a,currentSnapshot:e.fingerprint,refreshResult:"reused"});let d=Vt({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(p=>p.language),skipped:[...n]}),{metadata:u,pruneProjects:l}=bs({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:d});return Rs(e.paths.outputDb,l),Er(e.paths.metaPath,u),zn(e.paths.outputDb,e.paths.metaPath),Ss(e.paths.outputDb,s,e.onStatus),d}function vr(e){return Ar(Fe(e)?.fingerprint)}function Ss(e,t,n){try{vi(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 bs(e){let t=Ep({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:Oe,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 Ep(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=Fe(e.metaPath),n=t?.version===Oe?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 Rs(e,t){let n=Ts(e);if(t===null){F(()=>De(n,{recursive:!0,force:!0}));return}let r;try{r=hs(n)}catch{return}for(let i of kp(r,t))F(()=>De(C(n,i),{force:!0}))}function kp(e,t){let n=new Set(t.map(r=>`${Tn(r)}.scip`));return e.filter(r=>!n.has(r))}function us(e,t,n){for(let r of t){let i=wr(e,r.language);Nt(S(i),{recursive:!0}),r.scipPath!==i&&fe(n,pe(r.scipPath,i))}}async function Tp(e,t){if(!cn()){if(ap()==="win32")throw new Error("The scip CLI was not found. On Windows it ships via the npm sidecar package codebaseiq-windows (installed automatically with codebaseiq). Reinstall codebaseiq with optional dependencies enabled, or follow 'codebaseiq setup' guidance for the exact sidecar package version, or set CODEBASEIQ_SCIP_BIN to a local scip.exe path.");if(e)throw new Error(`The scip CLI is required but not found on PATH.
291
- To install the reviewed version, run: codebaseiq reindex --install-missing
292
- Or install manually from: https://github.com/sourcegraph/scip/releases`);if(t("scip CLI not found on PATH. Attempting auto-install..."),!dn(t))throw new Error(`The scip CLI is required but could not be installed.
293
- Install manually from: https://github.com/sourcegraph/scip/releases`)}}function Dp(e){let t=[],n=[],r=e.languages.map((o,a)=>({language:o,scipPath:e.languages.length>1?Qe(e.tempOutputScip,o,a):e.tempOutputScip})),i=Object.fromEntries(r.map(({language:o,scipPath:a})=>[o,a]));for(let{language:o,scipPath:a}of r){let s=Fp({...e,language:o,scipPath:a});for(let c of s)"skipped"in c?xs(n,c.skipped):t.push(c.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:i}}function Fp(e){if(e.language!=="typescript"||e.typescriptProjectMode!=="workspace")return[xr({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})];let t=e.preDiscoveredTypeScriptProjects??Ie(e.projectRoot,e.typescriptProjects);return t.length===0?[xr({...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)=>xr({...e,id:`typescript:${n}`,label:`typescript (${n})`,scipPath:Qe(e.tempOutputScip,"typescript-project",r),outputScipPath:e.scipPath,pnpmWorkspaces:!1,projectPath:n})))}function xr(e){let t=mt(e.language),n=Me(t),r=en(t,e.projectRoot),i=e.trustProjectTools&&r?Zr(t,e.projectRoot):null,o=ve(t);if(!i&&!o&&r){let u=`${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}: ${u}`),{skipped:{language:e.language,reason:u}}}if(!i&&!o&&!Zt(t)){if(e.skipAutoInstall){let u=`${n} not found on PATH. To install the reviewed version, run: codebaseiq reindex --install-missing${t.installUrl?` (manual source: ${t.installUrl})`:""}`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}if(e.onStatus(`${n} not found. Attempting auto-install...`),!gr(t,e.onStatus)){let u=`${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}: ${u}`),{skipped:{language:e.language,reason:u}}}}let a=i?.canonicalPath??ve(t);if(!a){let u=`${n} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}let{binary:s,args:c}=t.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:a,projectPath:e.projectPath,configPath:e.language==="clojure"?e.clojureConfigPath:void 0}),d=Oi({language:e.language,projectPath:e.projectPath,pnpmWorkspaces:e.pnpmWorkspaces});if(i&&!i.executable){let u=`${i.relativePath} is not executable; refusing project-local indexer.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}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:a,binary:s,args:c,env:tn(t,e.env,a),...d===void 0?{}:{temporaryRootConfigContent:d},...i?{trustedProjectTool:i}:{}}}}function Ap(e,t){let n=new Map;for(let i of e)if(i.skipped)xs(t,i.skipped);else{let o=`${i.language}\0${i.outputScipPath}`,a=n.get(o)??{language:i.language,outputScipPath:i.outputScipPath,scipPaths:[]};a.scipPaths.push(i.scipPath),n.set(o,a)}let r=[];for(let i of n.values())if(i.scipPaths.length>1)xn(i.scipPaths,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath});else{let o=i.scipPaths[0];o!==i.outputScipPath&&ys(o,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath})}return{indexedOutputs:r}}function xs(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 Op(e,t,n,r,i){if(e.length===0){let o=t.map(a=>` - ${a.language}: ${a.reason}`).join(`
331
+ `).get();return{version:3,tsconfig:n,files:dt(t),db:r}}function fp(e){let t=es();return{projectRoot:e.projectRoot,context:qa(e.projectRoot,e.configPath),symbolLookup:Ha(e.db,e.projectRoot,t),vueSymbolLookup:e.vueSymbolLookup,sourceReader:t}}function gp(e){let t=[],n=Te(),r=e.tasks??e.vueFiles.map(i=>({fileName:i,startOffset:0,endOffset:Number.POSITIVE_INFINITY,countFileSkip:!0}));for(let i of r){let o=mp(e,i);t.push(...o.occurrences),Mt(n,o)}return{occurrences:t,...n}}function mp(e,t){let n=e.sourceReader.get(t.fileName);if(!n)return ns(e.projectRoot,t,"missing-source-file");let r=e.context.language.scripts.get(t.fileName),i=r?.generated?.languagePlugin.typescript?.getServiceScript(r.generated.root)?.code;if(!r||!i)return ns(e.projectRoot,t,"missing-service-script");let o=e.context.language.maps.get(i,r),a=Q(e.projectRoot,t.fileName),s=[...Xa(n.text)],c={tokens:s.filter(d=>d.start>=t.startOffset&&d.start<t.endOffset),tokenByStart:new Map(s.map(d=>[d.start,d])),tokenTextCounts:Pp(s),processedStarts:new Set};return hp({...e,fileName:t.fileName,sourceInfo:n,sourceFile:a,map:o,tokenContext:c})}function hp(e){let t=[],n=Te();for(let r of e.tokenContext.tokens){if(e.tokenContext.processedStarts.has(r.start)||yp(e.sourceInfo.text,r.start))continue;let i=Qa(e.map,r.start);if(i===null)continue;let a=(e.context.languageService.getDefinitionAtPosition(e.fileName,i+1)??[]).find(u=>!Za(e.projectRoot,u.fileName));if(!a){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"no-definition");continue}let s=Q(e.projectRoot,a.fileName),c=Sp(e.sourceFile,r.text,s);if(c){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,c);continue}let d=Ja(a,e.symbolLookup,e.vueSymbolLookup,e.context,e.projectRoot);if(d===null){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"unindexed-definition");continue}ps(t,e.sourceReader,e.sourceInfo,e.sourceFile,r,s,d),e.tokenContext.processedStarts.add(r.start),Ip(t,e,r,i,s,d)}return{occurrences:t,...n}}function yp(e,t){let n=e.lastIndexOf(`
332
+ `,t-1)+1,r=e.slice(n,t);return/\bfrom\s+['"][^'"]*$/.test(r)||/\bimport\s*\(\s*['"][^'"]*$/.test(r)}function Sp(e,t,n){return n===e?"same-file-definition":n.endsWith(".vue")&&t!==n.split("/").at(-1)?.replace(/\.vue$/,"")?"unindexed-definition":null}function ns(e,t,n){let r=Te();return t.countFileSkip&&(r.skippedReferences=1,r.skippedReferenceReasons[n]=1,r.skippedReferenceSamples.push({sourceFile:Q(e,t.fileName),sourceLine:0,sourceStartChar:0,sourceEndChar:0,token:"",reason:n})),{occurrences:[],...r}}function br(e,t,n,r,i,o){if(e.skippedReferences++,e.skippedReferenceReasons[o]++,e.skippedReferenceSamples.filter(s=>s.reason===o&&s.sourceFile===r).length>=2)return;let a=t.positionAt(n,i.start);e.skippedReferenceSamples.push({sourceFile:r,sourceLine:a.line,sourceStartChar:a.character,sourceEndChar:a.character+i.text.length,token:i.text,reason:o})}function Rr(e,t){let n=new Map;for(let o of e){let a=n.get(o.sourceFile)??[];a.push(o),n.set(o.sourceFile,a)}let r=[...n.keys()].sort(),i=[];for(let o=0;i.length<t;o++){let a=!1;for(let s of r){let c=n.get(s)?.[o];if(c&&(i.push(c),a=!0,i.length===t))break}if(!a)break}return i}function bp(e,t){let n=Rr(e.filter(o=>o.sourceFile!==o.definitionFile),Math.ceil(t/2)),r=new Set(n.map(o=>`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),i=Rr(e.filter(o=>!r.has(`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),t-n.length);return[...n,...i]}function Rp(e,t){let n=[...new Set(e.map(i=>i.reason))].sort(),r=[];for(let[i,o]of n.entries()){let a=n.length-i,s=Math.ceil((t-r.length)/a);r.push(...Rr(e.filter(c=>c.reason===o),s))}return r.slice(0,t)}function xp(e,t,n){let r=e.prepare("SELECT symbol FROM global_symbols WHERE id = ?");return bp(t,n).map(({symbolId:i,...o})=>({...o,definitionSymbol:r.get(i)?.symbol??`symbol-id:${i}`}))}function Ip(e,t,n,r,i,o){if(!((t.tokenContext.tokenTextCounts.get(n.text)??0)<=1))for(let a of vp(t.context.languageService,t.fileName,r+1,t.map,n,t.tokenContext.tokenByStart)){if(t.tokenContext.processedStarts.has(a))continue;let s=t.tokenContext.tokenByStart.get(a);s&&(ps(e,t.sourceReader,t.sourceInfo,t.sourceFile,s,i,o),t.tokenContext.processedStarts.add(a))}}function ps(e,t,n,r,i,o,a){let s=t.positionAt(n,i.start);e.push({sourceFile:r,sourceLine:s.line,sourceStartChar:s.character,sourceEndChar:s.character+i.text.length,sourceToken:i.text,definitionFile:o,symbolId:a})}function Pp(e){let t=new Map;for(let n of e)t.set(n.text,(t.get(n.text)??0)+1);return t}function vp(e,t,n,r,i,o){let a=e.getDocumentHighlights?.(t,n,[t])??[],s=[];for(let c of a)if(c.fileName===t)for(let d of c.highlightSpans){let u=Ep(r,d.textSpan.start,o,i.text);u!==null&&s.push(u)}return s}function Ep(e,t,n,r){let i=n.get(t);if(i?.text===r)return i.start;let o=Sr(e,t);if(o===null)return null;let a=n.get(o);return a?.text===r?a.start:null}async function fS(e){let{projectRoot:t,maxHeapMb:n=8192,onStatus:r=console.log}=e,i=e.skipAutoInstall===!0||e.installMissing!==!0,o=_p(e),a=Date.now(),s=I();$t(S(o.outputScip),{recursive:!0}),$t(S(o.outputDb),{recursive:!0});let c=e.languages??ln(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.");r(`Detected languages: ${c.join(", ")}`);let d=st("reindex.fingerprint",()=>Zt(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),{languages:c.length}),u,l;if(e.skipIfUnchanged!==!1&&!ca(t,o.outputDb)&&fs(o.outputScip)===fs(A(S(o.outputDb),"index.scip"))){let y=ct(t);if(u=y?.clean?Ft(y,d):void 0,y&&!y.clean&&!Fp(o)){let x=da(y,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath});if(x)try{_t({snapshot:x.snapshot,manifest:x.manifest,targetCacheDir:S(o.outputDb),targetProjectRoot:t,persistLease:!1}),pa(x.snapshot,S(o.outputDb)),r(`Forked shared baseline ${x.snapshot.generationId.slice(0,12)} for dirty worktree reindex`)}catch(P){r(`Shared baseline fork failed; continuing locally: ${de(P)}`)}}else if(u){let x=K(u);if(x){if(!Dp(o,d))try{_t({snapshot:u,manifest:x,targetCacheDir:S(o.outputDb),targetProjectRoot:t}),r(`Attached shared generation ${u.generationId.slice(0,12)}`)}catch(P){r(`Shared generation attach failed; continuing locally: ${de(P)}`)}}else{let P=await la(u);if(P.kind==="owner")l=P.release;else if(P.kind==="generation-ready"){let k=K(u);if(k)try{_t({snapshot:u,manifest:k,targetCacheDir:S(o.outputDb),targetProjectRoot:t,action:"waited"}),r(`Attached shared generation ${u.generationId.slice(0,12)} after waiting`)}catch(T){r(`Shared generation attach failed after waiting; continuing locally: ${de(T)}`)}}else r("Shared generation build lock timed out; continuing with an isolated local reindex")}}}let g=ue(A(S(o.outputDb),"cache-lifecycle.lock"),{waitMs:3e4});if(!g)throw l?.(),new Error(`Could not acquire codebaseiq cache lifecycle lock for ${S(o.outputDb)}.`);let f;try{f=await je("reindex.lock",()=>rf(A(S(o.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:r}),{languages:c.length})}catch(y){throw g.release(),l?.(),y}let h=null,b=Si();try{Hn(o.outputDb,o.outputScip,o.metaPath);let y=Lp(S(o.outputDb));y.removed>0&&r(`Removed ${y.removed} abandoned reindex workspace(s)`);for(let Se of y.errors)r(`Could not remove abandoned reindex workspace: ${Se}`);let x=null,P=st("reindex.reuse-check",()=>(x=Op({opts:e,paths:o,languages:c,fingerprint:d,start:a,monotonicStart:s,onStatus:r}),x),()=>({languages:c.length,reused:x!==null}));if(P){gs({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let Se=pn(o.outputDb,P);return Se.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${Se.reason}`),Xt(t,S(o.outputDb)),P}let k=Cp(o);h=k.runDir;let T,v=await je("reindex.fresh",async()=>(T=await jp({opts:e,languages:c,projectRoot:t,paths:o,tempPaths:k,fingerprint:d,start:a,monotonicStart:s,maxHeapMb:n,skipAutoInstall:i,onStatus:r,writeTelemetry:b}),T),()=>({languages:c.length,reused:T?.reused,skipped:T?.skipped.length}));gs({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let ye=pn(o.outputDb,v);return ye.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${ye.reason}`),Xt(t,S(o.outputDb)),v}catch(y){let x=Ut({trigger:e.trigger,result:"failed",start:a,monotonicStart:s,error:y instanceof Error?y.message:String(y)});Cs(o.metaPath,x);let P=fi(o.outputDb,x);throw P.state==="failed"&&r(`Warning: failed reindex activity telemetry was not recorded: ${P.reason}`),y}finally{if(h){let y=h;try{F(()=>ke(y,{recursive:!0,force:!0}))}catch(x){r(`Warning: temporary reindex workspace was left behind: ${de(x)}`)}}f(),g.release(),l?.()}}function gs(e){if(e.snapshot)try{let t=ct(e.projectRoot),n=t?Ft(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=ua({snapshot:e.snapshot,sourceCacheDir:S(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let i=ct(e.projectRoot);return(i?Ft(i,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});nr(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: ${de(t)}`)}}function Dp(e,t){if(!N(e.outputScip)||!N(e.outputDb)||!As(e.metaPath,t))return!1;let n=H(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function Fp(e){if(!N(e.outputScip)||!N(e.outputDb)||!De(e.metaPath))return!1;let t=H(e.outputDb,e.metaPath);return t.state!=="invalid"&&t.state!=="drifted"}function de(e){return e instanceof Error?e.message:String(e)}function Pr(e,t,n,r,i,o){try{U(Ri({indexPath:n,reuseExisting:i,affectedFiles:o}),{projectRoot:e,dbPath:t,onStatus:r})}catch(a){r(`Runtime-boundary extraction unavailable: ${a instanceof Error?a.message:String(a)}.`)}}function _p(e){let t=e.outputScip??A(e.projectRoot,"index.scip"),n=e.outputDb??A(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:A(S(n),"meta.json")}}function Op(e){let t=H(e.paths.outputDb,e.paths.metaPath);if(e.opts.skipIfUnchanged===!1||!N(e.paths.outputScip)||!N(e.paths.outputDb)||!As(e.paths.metaPath,e.fingerprint)||t.state==="invalid"||t.state==="drifted")return null;U(oe(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Pr(e.opts.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0),H(e.paths.outputDb,e.paths.metaPath).state==="drifted"&&(zn(e.paths.outputDb,e.paths.metaPath),e.onStatus("Published refreshed SQLite generation after post-index augmentation"));let n=I()-e.monotonicStart,r=Ut({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return Cs(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:Ap(e.paths,e.opts.projectRoot,e.languages,e.opts)}}function Ap(e,t,n,r){let i=_s(t,n,r);return n.map(o=>({id:o,language:o,reused:!0,fingerprint:Ke(i[o]),outputBytes:Xe(Er(e.outputDb,o)),durationMs:0}))}function Cp(e){let t=Fe(A(S(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:A(t,Gt(e.outputScip)),tempOutputDb:A(t,Gt(e.outputDb)),tempMetaPath:A(t,Gt(e.metaPath))}}function Lp(e){let t=[],n;try{n=xs(e,{withFileTypes:!0})}catch(i){return{removed:0,errors:[de(i)]}}let r=0;for(let i of n)if(!(!i.name.startsWith("reindex-")||!i.isDirectory()))try{ke(A(e,i.name),{recursive:!0,force:!0}),r+=1}catch(o){t.push(`${i.name}: ${de(o)}`)}return{removed:r,errors:t}}async function jp(e){let t={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},n,r=await je("reindex.language-indexers",async()=>(n=await Mp(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:i,skippedLanguages:o,reusedLanguages:a,languageFingerprints:s,shards:c,typescriptProjectShardContext:d,incrementalTypeScript:u}=r;if(a.length>0&&e.onStatus(`Reused ${a.length} cached language shard(s): ${a.join(", ")}`),Np({run:e,indexedOutputs:i,skippedLanguages:o,reusedLanguages:a})){let g=st("reindex.publish",()=>zp(e,i,o,a,s,d),{mode:"metadata-only",languages:i.length,reused:a.length}),f=g.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(f/1e3).toFixed(1)}s`),{languages:i.map(h=>h.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:f,reused:!0,skipped:o,lastRefresh:g,shards:c,writeTelemetry:e.writeTelemetry}}let l=await je("reindex.publish",()=>Hp(e,t,i,o,a,s,d,u),{mode:u?"incremental-or-fallback":"full",languages:i.length,reused:a.length,skipped:o.length}),p=l.durationMs;return e.onStatus(`Done in ${(p/1e3).toFixed(1)}s`),{languages:i.map(g=>g.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:o,lastRefresh:l,shards:c,writeTelemetry:e.writeTelemetry}}function Np(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!N(e.run.paths.outputScip)||!N(e.run.paths.outputDb))return!1;let t=H(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 Mp(e,t){let n=Up({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[M,Tr]of n)Tr.reused&&(r.push({language:M,scipPath:Tr.scipPath}),i.add(M));for(let M of i)e.onStatus(`Reusing cached ${M} SCIP shard (language inputs unchanged).`);let o=n.get("typescript"),a=H(e.paths.outputDb,e.paths.metaPath),s=De(e.paths.metaPath),c=(a.state==="legacy"||a.state==="current")&&s!==null&&zt(s),d=s?.scipCompanion!=="deferred"&&(a.state!=="current"||a.generation.publication?.scipCompanion!=="deferred"),u=o&&!o.reused&&c?ka({projectRoot:e.projectRoot,cacheDir:S(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:o.scipPath,candidateShardPath:Qe(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:Qe(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:d,previousSnapshot:vr(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus}):null,l=new Set(u?["typescript"]:[]),p=u?void 0:Gp(e,n),{preparedRuns:g,skippedLanguages:f,languageOutputScipPaths:h}=Kp({languages:e.languages.filter(M=>!i.has(M)&&!l.has(M)),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}),b=p?g.filter(M=>M.language!=="typescript"||p.missedProjectIds.has(M.id)):g,y=await Oa(b,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal),x=[];if(p){Vp(e.paths.outputDb,y,e.writeTelemetry);let M=h.typescript??e.tempPaths.tempOutputScip;x=Bp({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:M,reusedProjects:p.reusedProjects,writeTelemetry:e.writeTelemetry})}let P=[...y,...x],{indexedOutputs:k}=Qp(P,f),T=u?[{language:"typescript",scipPath:u.scipPath}]:[],v=[...r,...T,...k];Zp(v,f,e.languages,e.opts.allowPartial,e.onStatus);let ye=u?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:u.scipPath,outputScipPath:u.scipPath,durationMs:u.durationMs,command:"watch-service:typescript-index",outputBytes:Xe(u.scipPath)??void 0}]:[],Se=Wp(n,[...y,...ye],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0);return{indexedOutputs:v,skippedLanguages:f,reusedLanguages:[...i],languageFingerprints:qp(n,e.languages),shards:Se,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:u??void 0}}function Gp(e,t){let n=t.get("typescript");if(!n||n.reused||e.opts.typescriptProjectMode!=="workspace")return;let r=xe(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let i=io(e.projectRoot,r),o=to(n.fingerprint.files,r),a=no(r,i),s=ro(r,o,a),c=De(e.paths.metaPath),u=$p(c,s,f=>N(Bt(e.paths.outputDb,f))),l=[...u.entries()].filter(([,f])=>f.reused).map(([f])=>f),p=new Set(l),g=new Set(r.filter(f=>!p.has(f)).map(f=>`typescript:${f}`));return{allProjects:r,fingerprints:s,classification:u,reusedProjects:l,missedProjectIds:g}}function $p(e,t,n){let r=new Map;for(let i of Object.keys(t)){let o=t[i];if(!e){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:o});continue}let a=e.version===_e&&Ht(e).typescriptProjectShardReuse?e.typescriptProjectShards?.[i]:void 0;if(!a){r.set(i,{reused:!1,reason:"no cached fingerprint for this project",fingerprint:o});continue}if(!n(i)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:o});continue}if(Z(a)!==Z(o)){r.set(i,{reused:!1,reason:"project inputs changed since last index",fingerprint:o});continue}r.set(i,{reused:!0,fingerprint:o})}return r}function Vp(e,t,n){for(let r of t){if(r.skipped||!r.id.startsWith("typescript:"))continue;let i=r.id.slice(11),o=Bt(e,i);$t(S(o),{recursive:!0}),fe(n,pe(r.scipPath,o))}}function Bp(e){return e.reusedProjects.map((t,n)=>{let r=Bt(e.outputDb,t),i=Qe(e.tempOutputScip,"typescript-project-cached",n);return fe(e.writeTelemetry,pe(r,i)),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:i,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:Xe(i)??void 0}})}function Up(e){let t=De(e.paths.metaPath),n=_s(e.projectRoot,e.languages,e),r=new Map;for(let i of e.languages){let o=Er(e.paths.outputDb,i),a=n[i];if(!t){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:a,scipPath:o});continue}if(t.version!==_e){r.set(i,{reused:!1,reason:`metadata version ${String(t.version??"unknown")} predates per-language shard caching`,fingerprint:a,scipPath:o});continue}if(i==="typescript"&&t.scipCompanion==="deferred"){r.set(i,{reused:!1,reason:"whole TypeScript SCIP companion is deferred behind changed-document overlays",fingerprint:a,scipPath:o});continue}if(!Ht(t).languageShardReuse||!t.languageFingerprints){r.set(i,{reused:!1,reason:"no per-language fingerprints recorded in metadata",fingerprint:a,scipPath:o});continue}let s=t.languageFingerprints[i];if(!s){r.set(i,{reused:!1,reason:"no cached fingerprint for this language",fingerprint:a,scipPath:o});continue}if(!N(o)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:a,scipPath:o});continue}if(Z(s)!==Z(a)){r.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:a,scipPath:o});continue}r.set(i,{reused:!0,fingerprint:a,scipPath:o})}return r}function Wp(e,t,n){let r=[];for(let[i,o]of e)o.reused&&r.push({id:i,language:i,reused:!0,fingerprint:Ke(o.fingerprint),outputBytes:Xe(o.scipPath),durationMs:0});for(let i of t){let o=e.get(i.language),a=n&&i.id.startsWith("typescript:")?i.id.slice(11):null,s=a?n.classification.get(a):void 0;r.push({id:i.id,language:i.language,reused:!1,missReason:s?.reason??o?.reason??i.skipped?.reason,fingerprint:s?Ke(s.fingerprint):o?Ke(o.fingerprint):"unknown",outputBytes:i.outputBytes??null,durationMs:i.durationMs,command:i.command})}if(n)for(let[i,o]of n.classification)o.reused&&r.push({id:`typescript:${i}`,language:"typescript",reused:!0,fingerprint:Ke(o.fingerprint),outputBytes:Xe(Bt(n.outputDb,i)),durationMs:0});return r}function Ke(e){return wp("sha256").update(Z(e)).digest("hex").slice(0,16)}function Xe(e){try{return Tp(e).size}catch{return null}}function qp(e,t){let n={};for(let r of t){let i=e.get(r);i&&(n[r]=i.fingerprint)}return n}async function Hp(e,t,n,r,i,o,a,s){$(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,d=!1;c&&(ms(e.paths.outputDb,n,e.writeTelemetry),d=hs(n,e.tempPaths.tempOutputScip,e.onStatus));let u=await ef({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,incrementalTypeScript:s,completeScipAvailable:c,completeScipSanitized:d,materializeFullFallback:async()=>{if($(e.opts.signal,"Reindex cancelled by its owner."),!s||s.completeScipUpdated)return d;e.onStatus("Materializing the deferred whole TypeScript SCIP companion for full conversion..."),Da({cacheDir:S(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let k=n.map(T=>T.language==="typescript"?{language:T.language,scipPath:s.candidateScipPath}:T);return ms(e.paths.outputDb,k,e.writeTelemetry),d=hs(k,e.tempPaths.tempOutputScip,e.onStatus),d}});$(e.opts.signal,"Reindex cancelled by its owner."),U(oe(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus}),Pr(e.projectRoot,e.tempPaths.tempOutputDb,e.tempPaths.tempOutputScip,e.onStatus,!1,s?.affectedFiles);let l=vn(e.tempPaths.tempOutputDb);if(l.added.length>0&&e.onStatus(`Added SQLite query indexes: ${l.added.join(", ")}`),l.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${l.removed.join(", ")}`),u.mode==="incremental"&&s){let k=null,T=null;try{k=new J({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip}),T=new J({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let v=oi(k,e.fingerprint,s.referenceFragmentsByFile,T);e.onStatus(`Cached exact TypeScript reference fragments for ${v} affected document(s).`)}catch(v){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${v instanceof Error?v.message:String(v)}.`)}finally{k?.close(),T?.close()}}let p=vr(e.paths.metaPath),g=u.mode==="incremental"&&s?nf(s,u.changedDocumentPaths):hn({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"}),f=Ut({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(k=>k.language),skipped:[...r]}),h=u.mode==="incremental"&&u.scipCompanion==="deferred",b={...o};h&&delete b.typescript;let{metadata:y,pruneProjects:x}=vs({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,languageFingerprints:b,typescriptProjectShardContext:a,lastRefresh:f});y.scipCompanion=h?"deferred":"current",Es(e.paths.outputDb,x),wr(e.tempPaths.tempMetaPath,y);let P=Tt({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:u.mode==="incremental"&&u.scipCompanion==="deferred",publication:u.mode==="incremental"?{mode:"incremental",validation:"passed",converterDurationMs:u.converterDurationMs,affectedDocumentCount:s?.affectedFiles.length,changedDocumentCount:u.changedDocumentPaths.length,producerDurationMs:s?.timings.serviceMs,materializationDurationMs:s?.durationMs,patchDurationMs:u.patchDurationMs,scipCompanion:u.scipCompanion,...u.scipCompanion==="deferred"&&s?{typescriptOverlayGeneration:s.nextFragmentGeneration}:{}}:{mode:"full",validation:"passed",converterDurationMs:u.converterDurationMs,scipCompanion:"current",...u.fallbackReason?{fallbackReason:u.fallbackReason}:{}}});return P.achievedDurability==="file-flushed"&&e.onStatus(`Published local generation ${P.currentGeneration.slice(0,12)} (file-flushed; directory sync unsupported)`),Vo(S(e.paths.outputDb),u.mode==="incremental"&&u.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),ko(S(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[]),Ps(e.paths.outputDb,g,e.onStatus),f}function zp(e,t,n,r,i,o){let a=vr(e.paths.metaPath),s=null;try{fe(e.writeTelemetry,pe(e.paths.outputDb,e.tempPaths.tempOutputDb))}catch(p){s=vi("reused","oracle-error",`Could not snapshot the prior database: ${p instanceof Error?p.message:String(p)}`)}U(oe(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Pr(e.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0);let c=vn(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(", ")}`),s??=hn({projectRoot:e.projectRoot,previousDbPath:e.tempPaths.tempOutputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.paths.outputDb,candidateIndexPath:e.paths.outputScip,previousSnapshot:a,currentSnapshot:e.fingerprint,refreshResult:"reused"});let d=Ut({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(p=>p.language),skipped:[...n]}),{metadata:u,pruneProjects:l}=vs({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:d});return Es(e.paths.outputDb,l),wr(e.paths.metaPath,u),zn(e.paths.outputDb,e.paths.metaPath),Ps(e.paths.outputDb,s,e.onStatus),d}function vr(e){return _r(De(e)?.fingerprint)}function Ps(e,t,n){try{Ei(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 vs(e){let t=Jp({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:_e,status:e.skippedLanguages.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.run.fingerprint,sqliteLayoutVersion:2,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 Jp(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=De(e.metaPath),n=t?.version===_e?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 Es(e,t){let n=Os(e);if(t===null){F(()=>ke(n,{recursive:!0,force:!0}));return}let r;try{r=xs(n)}catch{return}for(let i of Yp(r,t))F(()=>ke(A(n,i),{force:!0}))}function Yp(e,t){let n=new Set(t.map(r=>`${kn(r)}.scip`));return e.filter(r=>!n.has(r))}function ms(e,t,n){for(let r of t){let i=Er(e,r.language);$t(S(i),{recursive:!0}),r.scipPath!==i&&fe(n,pe(r.scipPath,i))}}function Kp(e){let t=[],n=[],r=e.languages.map((o,a)=>({language:o,scipPath:e.languages.length>1?Qe(e.tempOutputScip,o,a):e.tempOutputScip})),i=Object.fromEntries(r.map(({language:o,scipPath:a})=>[o,a]));for(let{language:o,scipPath:a}of r){let s=Xp({...e,language:o,scipPath:a});for(let c of s)"skipped"in c?ws(n,c.skipped):t.push(c.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:i}}function Xp(e){if(e.language!=="typescript"||e.typescriptProjectMode!=="workspace")return[xr({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})];let t=e.preDiscoveredTypeScriptProjects??xe(e.projectRoot,e.typescriptProjects);return t.length===0?[xr({...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)=>xr({...e,id:`typescript:${n}`,label:`typescript (${n})`,scipPath:Qe(e.tempOutputScip,"typescript-project",r),outputScipPath:e.scipPath,pnpmWorkspaces:!1,projectPath:n})))}function xr(e){let t=mt(e.language),n=Ne(t),r=rn(t,e.projectRoot),i=e.trustProjectTools&&r?Qr(t,e.projectRoot):null,o=Pe(t);if(!i&&!o&&r){let u=`${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}: ${u}`),{skipped:{language:e.language,reason:u}}}if(!i&&!o&&!nn(t)){if(e.skipAutoInstall){let u=`${n} not found on PATH. To install the reviewed version, run: codebaseiq reindex --install-missing${t.installUrl?` (manual source: ${t.installUrl})`:""}`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}if(e.onStatus(`${n} not found. Attempting auto-install...`),!gr(t,e.onStatus)){let u=`${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}: ${u}`),{skipped:{language:e.language,reason:u}}}}let a=i?.canonicalPath??Pe(t);if(!a){let u=`${n} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}let{binary:s,args:c}=t.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:a,projectPath:e.projectPath,configPath:e.language==="clojure"?e.clojureConfigPath:void 0}),d=Ai({language:e.language,projectPath:e.projectPath,pnpmWorkspaces:e.pnpmWorkspaces});if(i&&!i.executable){let u=`${i.relativePath} is not executable; refusing project-local indexer.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}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:a,binary:s,args:c,env:on(t,e.env,a),...d===void 0?{}:{temporaryRootConfigContent:d},...i?{trustedProjectTool:i}:{}}}}function Qp(e,t){let n=new Map;for(let i of e)if(i.skipped)ws(t,i.skipped);else{let o=`${i.language}\0${i.outputScipPath}`,a=n.get(o)??{language:i.language,outputScipPath:i.outputScipPath,scipPaths:[]};a.scipPaths.push(i.scipPath),n.set(o,a)}let r=[];for(let i of n.values())if(i.scipPaths.length>1)xn(i.scipPaths,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath});else{let o=i.scipPaths[0];o!==i.outputScipPath&&Is(o,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath})}return{indexedOutputs:r}}function ws(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 Zp(e,t,n,r,i){if(e.length===0){let o=t.map(a=>` - ${a.language}: ${a.reason}`).join(`
294
333
  `);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
295
334
  `+o)}if(t.length!==0&&(i(`Indexed ${e.length} language output(s); skipped or incomplete: ${t.map(o=>o.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.
296
335
  `+t.map(o=>` - ${o.language}: ${o.reason}`).join(`
297
- `))}function ls(e,t,n){if(e.length>1){n(`Merging ${e.length} language indexes...`);let r=performance.now(),i=Mi(e.map(o=>o.scipPath),t);return Ps(i,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&ys(e[0].scipPath,t);return!1}async function Cp(e){let t;if(_p(e)){let i=C(e.run.tempPaths.runDir,"typescript-affected.db");try{Is(e.incrementalTypeScript.affectedScipPath,e.run.onStatus),e.run.onStatus(`Converting ${e.incrementalTypeScript.affectedFiles.length} affected TypeScript document(s) to SQLite...`);let o=performance.now();await ps(e.incrementalTypeScript.affectedScipPath,i,e.env,e.run.onStatus,!1,e.run.opts.signal),e.run.onStatus(`Converted affected SCIP documents in ${(performance.now()-o).toFixed(0)}ms.`);let a=Ui({previousDbPath:e.run.paths.outputDb,miniDbPath:i,candidateDbPath:e.run.tempPaths.tempOutputDb,affectedFiles:e.incrementalTypeScript.affectedFiles,writeTelemetry:e.run.writeTelemetry});return e.run.onStatus(`Patched ${a.affectedDocumentCount} SQLite document(s) in ${(a.durationMs/1e3).toFixed(3)}s.`),{mode:"incremental",changedDocumentPaths:a.changedDocumentPaths,patchDurationMs:a.durationMs,converterDurationMs:performance.now()-o,scipCompanion:e.incrementalTypeScript.completeScipUpdated?"current":"deferred"}}catch(o){G(e.run.opts.signal,"Reindex cancelled by its owner."),t=o instanceof Error?o.message:String(o),F(()=>De(i,{force:!0})),F(()=>De(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=await e.materializeFullFallback());let r=performance.now();return await ps(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 _p(e){if(!e.incrementalTypeScript||e.skippedLanguages.length>0||!M(e.run.paths.outputDb)||!M(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 Lp(e,t){let n=I(),r=[...t].sort(),i=new Set(r),o={addedFiles:[],modifiedFiles:r,deletedFiles:[],changedFiles:r,unchangedFiles:e.affectedFiles.filter(a=>!i.has(a)).sort()};return{version:1,status:"evaluated",refreshResult:"rebuilt",recordedAt:new Date().toISOString(),durationMs:I()-n,manifest:e.manifest,plan:e.plan,comparison:o,evaluation:gn(e.plan,o,e.projectFileCount)}}async function ps(e,t,n,r,i=!1,o){if(G(o,"Reindex cancelled by its owner."),r("Converting to SQLite..."),!M(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{i||Is(e,r);let a=cn();if(!a)throw new Error("scip CLI is not available");let s=await lt({command:a,args:["expt-convert","--output",t,e],label:"SCIP SQLite conversion",env:n,maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,timeoutMs:3e5,signal:o});if(s.status!==0)throw new Error(`scip expt-convert exited with ${s.status}${s.stderr.trim()?`: ${s.stderr.trim()}`:""}`)}catch(a){G(o,"Reindex cancelled by its owner.");let s=a instanceof Error?a.message:String(a);throw new Error(`Failed to convert SCIP index to SQLite: ${s}`,{cause:a})}}function Is(e,t){let n=_i(e);Ps(n,t)}function Ps(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function Qe(e,t,n){let r=op(e)||".scip",i=Mt(e,r);return C(S(e),`${i}.${n+1}.${t}${r}`)}async function jp(e,t){for(let n=0;n<2;n++){let r=Mp(e,t);if(r)return r;let i=Np(e);if(i&&Es(t.trigger,i)){t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}.`);let o;try{o=await $p(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: ${de(s)}`,{cause:s})}if(!o)throw new Error(`Could not confirm the watcher's in-progress reindex (pid ${i.pid}) terminated for ${S(e)}; refusing to steal an active lock.`);let a=Ut(e,{parseLegacy:Gt});if(!Mr(e,a,{parseLegacy:Gt}))throw new Error(`Reindex lock ownership changed before preemption completed for ${S(e)}.`);continue}throw new Error(`Another codebaseiq reindex is already running for ${S(e)}.`)}throw new Error(`Could not acquire codebaseiq reindex lock for ${S(e)}.`)}function Mp(e,t){let n=te(process.pid),r=tt(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:Gt});if(r.kind==="acquired"&&r.reclaimed){let i=vs(r.reclaimed,e);i&&Es(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 ${S(e)}.`)}return r.kind==="acquired"?()=>{r.lock.release()}:null}function Np(e){return vs(Ut(e,{parseLegacy:Gt}),e)}var Gt=e=>{let t=ws(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function vs(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 ws(e.parsed,t)}function ws(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=_r(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 Es(e,t){return e?.kind==="manual-cli"&&Gp(t?.trigger)}function Gp(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function $p(e){return!ne(e.pid)||(Ir(e),fs(e,"SIGTERM"),await gs(e,2e3))?!0:(Ir(e),fs(e,"SIGKILL"),gs(e,1e3))}function fs(e,t){if(e.processGroupLeader)try{process.kill(-e.pid,t);return}catch{if(!ne(e.pid))return;Ir(e)}try{process.kill(e.pid,t)}catch{}}async function gs(e,t){let n=I()+t;for(;I()<n;){if(ms(e))return!0;await Vp(50)}return ms(e)}function Ir(e){if(!e.processIdentity)throw new Error(`Refusing to signal reindex pid ${e.pid}: its ownership record has no process identity.`);let t=te(e.pid);if(!t)throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity is unavailable.`);if(!Ce(e.processIdentity,t))throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity does not match the ownership record.`)}function ms(e){if(!ne(e.pid))return!0;if(!e.processIdentity)return!1;let t=te(e.pid);return t!==null&&!Ce(e.processIdentity,t)}function Vp(e){return new Promise(t=>setTimeout(t,e))}function ks(e,t,n){return Object.fromEntries(t.map(r=>{let i=r==="typescript"?Jr(n.typescriptProjects):[],o=r==="clojure"?Bp(n.clojureConfigPath):void 0,a=[...mt(r).markerFiles,...i,...o?[o]:[]],s=r==="typescript"?{typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:i}:{typescriptProjectMode:"single",typescriptProjects:[]};return[r,{version:2,languages:[r],pnpmWorkspaces:r==="typescript"&&qp(n),...s,clojureConfigPath:o,files:dt(e,{language:r,markerFiles:a})}]}))}function Bp(e){return e?.trim()||void 0}function qp(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function wr(e,t){return C(S(e),"language-indexes",`${t}.scip`)}function Ts(e){return C(S(e),"language-indexes","typescript-projects")}function $t(e,t){return C(Ts(e),`${Tn(t)}.scip`)}function Fe(e){try{return qt(ee(L(e,"reindex metadata")))}catch{return null}}function Ds(e,t){try{let n=ee(L(e,"reindex metadata"));if(n.kind!=="legacy"&&n.kind!=="supported")return!1;let r=n.metadata;return n.capabilities.publishableGeneration&&Cr(r)&&Z(r.fingerprint)===Z(t)&&Z([...r.indexedLanguages??[]].sort())===Z(t.languages)}catch{return!1}}function Er(e,t){$(e,t,{spacing:2,trailingNewline:!0})}function Fs(e,t){try{let n=qt(ee(L(e,"reindex metadata")));if(!n)return;Er(e,{...n,lastRefresh:t})}catch{}}function Vt(e){return{trigger:e.trigger??{kind:"unknown"},result:e.result,startedAt:new Date(e.start).toISOString(),completedAt:new Date().toISOString(),durationMs:I()-e.monotonicStart,indexedLanguages:e.languages?[...e.languages]:void 0,skipped:e.skipped?[...e.skipped]:void 0,error:e.error}}function Z(e){return JSON.stringify(e)}export{Ai as INDEXER_CONFIGS,Si as augmentAuxiliaryDocuments,Nl as augmentVueResolvedReferences,Gl as augmentVueResolvedReferencesAsync,oe as auxiliaryDocumentsAugmentationStage,Me as describeIndexerBinary,un as detectLanguages,mt as getIndexerConfig,tn as getIndexerExecutionEnv,Qt as isBinaryAvailable,Zt as isIndexerInstalled,xn as mergeScipFiles,Rn as mergeScipIndexes,Gy as reindex,ve as resolveIndexerBinary,en as resolveProjectLocalIndexerBinary,q as runPostIndexAugmentation,gr as tryInstallIndexer,dn as tryInstallScipCli,rs as vueResolvedReferencesAugmentationStage};
336
+ `))}function hs(e,t,n){if(e.length>1){n(`Merging ${e.length} language indexes...`);let r=performance.now(),i=Ni(e.map(o=>o.scipPath),t);return Ts(i,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&Is(e[0].scipPath,t);return!1}async function ef(e){let t;if(tf(e)){let i=A(e.run.tempPaths.runDir,"typescript-affected.db");try{e.run.onStatus(`Converting ${e.incrementalTypeScript.affectedFiles.length} affected TypeScript document(s) to SQLite...`);let o=performance.now();ys(e.incrementalTypeScript.affectedScipPath,i,e.run.onStatus,!1,e.run.opts.signal),e.run.onStatus(`Converted affected SCIP documents in ${(performance.now()-o).toFixed(0)}ms.`);let a=qi({previousDbPath:e.run.paths.outputDb,miniDbPath:i,candidateDbPath:e.run.tempPaths.tempOutputDb,affectedFiles:e.incrementalTypeScript.affectedFiles,writeTelemetry:e.run.writeTelemetry});return e.run.onStatus(`Patched ${a.affectedDocumentCount} SQLite document(s) in ${(a.durationMs/1e3).toFixed(3)}s.`),{mode:"incremental",changedDocumentPaths:a.changedDocumentPaths,patchDurationMs:a.durationMs,converterDurationMs:performance.now()-o,scipCompanion:e.incrementalTypeScript.completeScipUpdated?"current":"deferred"}}catch(o){$(e.run.opts.signal,"Reindex cancelled by its owner."),t=o instanceof Error?o.message:String(o),F(()=>ke(i,{force:!0})),F(()=>ke(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=await e.materializeFullFallback());let r=performance.now();return ys(e.run.tempPaths.tempOutputScip,e.run.tempPaths.tempOutputDb,e.run.onStatus,n,e.run.opts.signal),{mode:"full",converterDurationMs:performance.now()-r,...t?{fallbackReason:t}:{}}}function tf(e){if(!e.incrementalTypeScript||e.skippedLanguages.length>0||!N(e.run.paths.outputDb)||!N(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 nf(e,t){let n=I(),r=[...t].sort(),i=new Set(r),o={addedFiles:[],modifiedFiles:r,deletedFiles:[],changedFiles:r,unchangedFiles:e.affectedFiles.filter(a=>!i.has(a)).sort()};return{version:1,status:"evaluated",refreshResult:"rebuilt",recordedAt:new Date().toISOString(),durationMs:I()-n,manifest:e.manifest,plan:e.plan,comparison:o,evaluation:mn(e.plan,o,e.projectFileCount)}}function ys(e,t,n,r,i){if($(i,"Reindex cancelled by its owner."),n("Writing the SQLite index..."),!N(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{Ts(fo(e,t,{sanitize:!r}),n)}catch(o){let a=o instanceof Error?o.message:String(o);throw new Error(`Failed to write the SQLite index: ${a}`,{cause:o})}}function Ts(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function Qe(e,t,n){let r=kp(e)||".scip",i=Gt(e,r);return A(S(e),`${i}.${n+1}.${t}${r}`)}async function rf(e,t){for(let n=0;n<2;n++){let r=of(e,t);if(r)return r;let i=af(e);if(i&&Fs(t.trigger,i)){t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}.`);let o;try{o=await cf(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: ${de(s)}`,{cause:s})}if(!o)throw new Error(`Could not confirm the watcher's in-progress reindex (pid ${i.pid}) terminated for ${S(e)}; refusing to steal an active lock.`);let a=Jt(e,{parseLegacy:Vt});if(!jr(e,a,{parseLegacy:Vt}))throw new Error(`Reindex lock ownership changed before preemption completed for ${S(e)}.`);continue}throw new Error(`Another codebaseiq reindex is already running for ${S(e)}.`)}throw new Error(`Could not acquire codebaseiq reindex lock for ${S(e)}.`)}function of(e,t){let n=te(process.pid),r=tt(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:Vt});if(r.kind==="acquired"&&r.reclaimed){let i=ks(r.reclaimed,e);i&&Fs(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 ${S(e)}.`)}return r.kind==="acquired"?()=>{r.lock.release()}:null}function af(e){return ks(Jt(e,{parseLegacy:Vt}),e)}var Vt=e=>{let t=Ds(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function ks(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 Ds(e.parsed,t)}function Ds(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=Ar(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 Fs(e,t){return e?.kind==="manual-cli"&&sf(t?.trigger)}function sf(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function cf(e){return!ne(e.pid)||(Ir(e),Ss(e,"SIGTERM"),await bs(e,2e3))?!0:(Ir(e),Ss(e,"SIGKILL"),bs(e,1e3))}function Ss(e,t){if(e.processGroupLeader)try{process.kill(-e.pid,t);return}catch{if(!ne(e.pid))return;Ir(e)}try{process.kill(e.pid,t)}catch{}}async function bs(e,t){let n=I()+t;for(;I()<n;){if(Rs(e))return!0;await df(50)}return Rs(e)}function Ir(e){if(!e.processIdentity)throw new Error(`Refusing to signal reindex pid ${e.pid}: its ownership record has no process identity.`);let t=te(e.pid);if(!t)throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity is unavailable.`);if(!Oe(e.processIdentity,t))throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity does not match the ownership record.`)}function Rs(e){if(!ne(e.pid))return!0;if(!e.processIdentity)return!1;let t=te(e.pid);return t!==null&&!Oe(e.processIdentity,t)}function df(e){return new Promise(t=>setTimeout(t,e))}function _s(e,t,n){return Object.fromEntries(t.map(r=>{let i=r==="typescript"?zr(n.typescriptProjects):[],o=r==="clojure"?uf(n.clojureConfigPath):void 0,a=[...mt(r).markerFiles,...i,...o?[o]:[]],s=r==="typescript"?{typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:i}:{typescriptProjectMode:"single",typescriptProjects:[]};return[r,{version:2,languages:[r],pnpmWorkspaces:r==="typescript"&&lf(n),...s,clojureConfigPath:o,files:dt(e,{language:r,markerFiles:a})}]}))}function uf(e){return e?.trim()||void 0}function lf(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function Er(e,t){return A(S(e),"language-indexes",`${t}.scip`)}function Os(e){return A(S(e),"language-indexes","typescript-projects")}function Bt(e,t){return A(Os(e),`${kn(t)}.scip`)}function De(e){try{return qt(ee(L(e,"reindex metadata")))}catch{return null}}function As(e,t){try{let n=ee(L(e,"reindex metadata"));if(n.kind!=="legacy"&&n.kind!=="supported")return!1;let r=n.metadata;return n.capabilities.publishableGeneration&&zt(r)&&Z(r.fingerprint)===Z(t)&&Z([...r.indexedLanguages??[]].sort())===Z(t.languages)}catch{return!1}}function wr(e,t){G(e,t,{spacing:2,trailingNewline:!0})}function Cs(e,t){try{let n=qt(ee(L(e,"reindex metadata")));if(!n)return;wr(e,{...n,lastRefresh:t})}catch{}}function Ut(e){return{trigger:e.trigger??{kind:"unknown"},result:e.result,startedAt:new Date(e.start).toISOString(),completedAt:new Date().toISOString(),durationMs:I()-e.monotonicStart,indexedLanguages:e.languages?[...e.languages]:void 0,skipped:e.skipped?[...e.skipped]:void 0,error:e.error}}function Z(e){return JSON.stringify(e)}export{Oi as INDEXER_CONFIGS,bi as augmentAuxiliaryDocuments,sp as augmentVueResolvedReferences,cp as augmentVueResolvedReferencesAsync,oe as auxiliaryDocumentsAugmentationStage,Ne as describeIndexerBinary,ln as detectLanguages,mt as getIndexerConfig,on as getIndexerExecutionEnv,tn as isBinaryAvailable,nn as isIndexerInstalled,xn as mergeScipFiles,Rn as mergeScipIndexes,fS as reindex,Pe as resolveIndexerBinary,rn as resolveProjectLocalIndexerBinary,U as runPostIndexAugmentation,gr as tryInstallIndexer,cs as vueResolvedReferencesAugmentationStage};
298
337
  //# sourceMappingURL=reindex.js.map