codebaseiq 0.3.0 → 0.4.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 (324) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/dist/augment-vue-worker.js +1 -1
  3. package/dist/{chunk-7GAK2F3H.js → chunk-23AD24QZ.js} +12 -12
  4. package/dist/chunk-24TEZJST.js +2 -0
  5. package/dist/{chunk-356EZBIP.js → chunk-26EDDGAX.js} +2 -2
  6. package/dist/{chunk-O2M3VNDY.js → chunk-26EZWQ24.js} +2 -2
  7. package/dist/{chunk-U33PMPNW.js → chunk-2L3NCI52.js} +2 -2
  8. package/dist/{chunk-MSI3K7PJ.js → chunk-2QJAVISG.js} +2 -2
  9. package/dist/{chunk-4LK5OIPW.js → chunk-2ZBZRYX4.js} +2 -2
  10. package/dist/chunk-33AXWMO2.js +2 -0
  11. package/dist/{chunk-EQNMD62X.js → chunk-37K55EG3.js} +2 -2
  12. package/dist/{chunk-ITSJMNUD.js → chunk-3EFZ5KQ4.js} +2 -2
  13. package/dist/{chunk-D7DOB27N.js → chunk-3F23W57G.js} +2 -2
  14. package/dist/{chunk-BGGB5N53.js → chunk-3GKKCVKK.js} +2 -2
  15. package/dist/{chunk-MQW6SJ4P.js → chunk-3SYRGMCL.js} +2 -2
  16. package/dist/{chunk-PFC44E6D.js → chunk-3VDL7GTY.js} +2 -2
  17. package/dist/{chunk-7JELP5YE.js → chunk-3XBZ5PKL.js} +2 -2
  18. package/dist/{chunk-75KJGYX7.js → chunk-42PXSE74.js} +2 -2
  19. package/dist/{chunk-FEIZXBLH.js → chunk-4GIERC2P.js} +2 -2
  20. package/dist/{chunk-W7YLRXZE.js → chunk-4UXDBRIF.js} +2 -2
  21. package/dist/chunk-4XMZYLW5.js +2 -0
  22. package/dist/{chunk-6BF3VYEF.js → chunk-55NUXP2V.js} +2 -2
  23. package/dist/chunk-5AJQCOZZ.js +21 -0
  24. package/dist/{chunk-5DSL3NT2.js → chunk-5NUPFZFA.js} +2 -2
  25. package/dist/{chunk-RJVAPMHF.js → chunk-65QIFIF6.js} +2 -2
  26. package/dist/{chunk-36JC5BG2.js → chunk-66Q5VLH6.js} +2 -2
  27. package/dist/{chunk-D7AZAOZX.js → chunk-6CQPIIS7.js} +2 -2
  28. package/dist/{chunk-GV2CEZCW.js → chunk-6CTSFS7R.js} +2 -2
  29. package/dist/{chunk-Q4XEU3UH.js → chunk-6EBUAKJT.js} +2 -2
  30. package/dist/chunk-6I55VYFG.js +4 -0
  31. package/dist/chunk-6NUURWPF.js +3 -0
  32. package/dist/{chunk-MHWMEZDA.js → chunk-6P5QMOM7.js} +2 -2
  33. package/dist/{chunk-LZSQ6X7E.js → chunk-6S5FE4ZF.js} +2 -2
  34. package/dist/chunk-74LRKLNC.js +22 -0
  35. package/dist/chunk-75A23IID.js +3 -0
  36. package/dist/chunk-75VNTSO6.js +7 -0
  37. package/dist/chunk-7HBBVZJ6.js +3 -0
  38. package/dist/{chunk-VWYGCMV5.js → chunk-7PPBMBH6.js} +2 -2
  39. package/dist/{chunk-3RSBGWGL.js → chunk-7WG57A5X.js} +2 -2
  40. package/dist/{chunk-FWQGH2N2.js → chunk-7XHZX6FX.js} +2 -2
  41. package/dist/{chunk-RIYJ4L33.js → chunk-A5HJ3CJW.js} +2 -2
  42. package/dist/{chunk-LONKINMJ.js → chunk-AJ5HVC5Z.js} +2 -2
  43. package/dist/{chunk-ZAFGY22Q.js → chunk-AYRHOFLV.js} +2 -2
  44. package/dist/chunk-AZDY3EKD.js +93 -0
  45. package/dist/{chunk-CW6AXOLR.js → chunk-AZZNG5Z2.js} +2 -2
  46. package/dist/chunk-BEKCTUPY.js +3 -0
  47. package/dist/{chunk-CR3OG6SQ.js → chunk-BKKX2OU5.js} +2 -2
  48. package/dist/{chunk-5LL4KEHO.js → chunk-BQKRYKDD.js} +2 -2
  49. package/dist/{chunk-FOZ74V56.js → chunk-BVDQU2XJ.js} +2 -2
  50. package/dist/chunk-C3PPB2T5.js +5 -0
  51. package/dist/chunk-CABIZQXQ.js +21 -0
  52. package/dist/{chunk-M2Y6PCFE.js → chunk-CAH322MC.js} +2 -2
  53. package/dist/{chunk-EIBGSU2R.js → chunk-CBOOHUK4.js} +2 -2
  54. package/dist/chunk-CFIICAOM.js +2 -0
  55. package/dist/{chunk-XMJ53WG4.js → chunk-CPWYEPWQ.js} +2 -2
  56. package/dist/{chunk-LQHYYIOB.js → chunk-CRT7I7RJ.js} +2 -2
  57. package/dist/{chunk-IZDPGOZR.js → chunk-CZVSQQDU.js} +2 -2
  58. package/dist/{chunk-TNJGTQWO.js → chunk-D3KE26FS.js} +2 -2
  59. package/dist/{chunk-GP7C5VAE.js → chunk-DNRHRVKS.js} +2 -2
  60. package/dist/{chunk-SGMNWYTH.js → chunk-DOQLO74K.js} +2 -2
  61. package/dist/{chunk-AURCQHSG.js → chunk-DP3EJ6XL.js} +2 -2
  62. package/dist/{chunk-C7QWUBR2.js → chunk-DQZF7MP6.js} +2 -2
  63. package/dist/{chunk-E52K4L2W.js → chunk-DTM4EHD2.js} +2 -2
  64. package/dist/{chunk-YRKP7PM7.js → chunk-DUM7GR6B.js} +2 -2
  65. package/dist/{chunk-I22IZYDI.js → chunk-DZ4QOIRY.js} +2 -2
  66. package/dist/{chunk-EXZ7VLRY.js → chunk-E3R6TJ5T.js} +2 -2
  67. package/dist/chunk-E4DP45YU.js +3 -0
  68. package/dist/{chunk-PUVNH4PO.js → chunk-E5U6N5WI.js} +2 -2
  69. package/dist/chunk-E7T22WET.js +21 -0
  70. package/dist/{chunk-QEOWONKY.js → chunk-ED7ZAZ5V.js} +2 -2
  71. package/dist/{chunk-RCIGX23V.js → chunk-EDMG5CSO.js} +2 -2
  72. package/dist/{chunk-IHSLIIL3.js → chunk-EOSUV7H5.js} +2 -2
  73. package/dist/{chunk-FQTIFWLR.js → chunk-ESWVTSHU.js} +2 -2
  74. package/dist/{chunk-6VREELBC.js → chunk-ETZBIG6K.js} +2 -2
  75. package/dist/chunk-EYSJHKX6.js +3 -0
  76. package/dist/{chunk-Q23IMHXS.js → chunk-F4AGM7ZE.js} +37 -37
  77. package/dist/{chunk-FTTV7IRX.js → chunk-FPUJRBHL.js} +50 -50
  78. package/dist/{chunk-CCIYWXX6.js → chunk-G2UU6PQP.js} +2 -2
  79. package/dist/{chunk-C6WKPKCF.js → chunk-G3KRXNNT.js} +2 -2
  80. package/dist/{chunk-TEANKHUU.js → chunk-G3ZBP72R.js} +2 -2
  81. package/dist/{chunk-NBCQZSGR.js → chunk-GC4I33OD.js} +2 -2
  82. package/dist/{chunk-NDKOVQFG.js → chunk-GLXEWYQY.js} +2 -2
  83. package/dist/{chunk-AEXQYQD7.js → chunk-GRHNPFHT.js} +2 -2
  84. package/dist/{chunk-NBZKSTXP.js → chunk-GWESWURK.js} +2 -2
  85. package/dist/{chunk-Q3ZCQY2Y.js → chunk-GXOFPAIR.js} +2 -2
  86. package/dist/{chunk-USOAJHY7.js → chunk-H4FGIFEU.js} +2 -2
  87. package/dist/{chunk-LKUTSP4G.js → chunk-HOGS6JFP.js} +2 -2
  88. package/dist/{chunk-UQE4XFSA.js → chunk-HSJLK5MC.js} +2 -2
  89. package/dist/{chunk-BWL3PMPT.js → chunk-HTPEUJ42.js} +2 -2
  90. package/dist/{chunk-3RR2K7EZ.js → chunk-IBPXUGJV.js} +2 -2
  91. package/dist/{chunk-BFBIMTCJ.js → chunk-ITA3N7G6.js} +2 -2
  92. package/dist/chunk-JG5OWAEB.js +22 -0
  93. package/dist/{chunk-2PRONPAS.js → chunk-JGJKRTTB.js} +2 -2
  94. package/dist/{chunk-TJWVT4DO.js → chunk-JGXLB7PR.js} +2 -2
  95. package/dist/{chunk-K7JLSGCJ.js → chunk-JKUF2UG6.js} +3 -3
  96. package/dist/{chunk-CIYA2KZN.js → chunk-JOYASZRF.js} +2 -2
  97. package/dist/{chunk-U7NUXDQO.js → chunk-K3PFL5QQ.js} +2 -2
  98. package/dist/{chunk-WK2IQJPK.js → chunk-KAXBWTSX.js} +2 -2
  99. package/dist/{chunk-5ZI2PPI7.js → chunk-KHHAGHAW.js} +2 -2
  100. package/dist/{chunk-UW6KD57C.js → chunk-KJLUQVBG.js} +2 -2
  101. package/dist/{chunk-WWCV4E6J.js → chunk-KOVUXHIZ.js} +2 -2
  102. package/dist/chunk-KPMMOAV5.js +4 -0
  103. package/dist/{chunk-GDHWOA57.js → chunk-LKJZNGMA.js} +2 -2
  104. package/dist/{chunk-3VJ3OCRE.js → chunk-LMPOC372.js} +2 -2
  105. package/dist/{chunk-F3QSL4W2.js → chunk-LTPNP6D5.js} +2 -2
  106. package/dist/{chunk-MVRGB4KJ.js → chunk-M3IBH6C3.js} +9 -9
  107. package/dist/{chunk-PHNCEUXX.js → chunk-MAGBSB6E.js} +2 -2
  108. package/dist/{chunk-QMOZZ2VX.js → chunk-MFMHD36E.js} +2 -2
  109. package/dist/{chunk-LMTSB3TB.js → chunk-MJX2J5QE.js} +2 -2
  110. package/dist/{chunk-PTQPPPG2.js → chunk-N26LGGSF.js} +2 -2
  111. package/dist/{chunk-J7AMBVWF.js → chunk-NB2DAVPP.js} +2 -2
  112. package/dist/{chunk-JYI7CV25.js → chunk-NJDXNYLG.js} +2 -2
  113. package/dist/{chunk-BRQL7AFJ.js → chunk-NMKQOIYZ.js} +2 -2
  114. package/dist/{chunk-ICUL7XRT.js → chunk-NRNVMB2R.js} +2 -2
  115. package/dist/{chunk-DDN2F6GB.js → chunk-O5BWFNIH.js} +2 -2
  116. package/dist/{chunk-HVFB3PME.js → chunk-O7PCDZ5B.js} +2 -2
  117. package/dist/{chunk-KPZGTB2O.js → chunk-OAJYNPRU.js} +2 -2
  118. package/dist/{chunk-2EDX3JT5.js → chunk-OFUC6R46.js} +2 -2
  119. package/dist/chunk-OSZ7PW5K.js +5 -0
  120. package/dist/{chunk-B3UYV66Z.js → chunk-OZ2M2X7A.js} +2 -2
  121. package/dist/{chunk-6O3KXIDL.js → chunk-OZI44VCR.js} +2 -2
  122. package/dist/{chunk-XN3EKMLI.js → chunk-PCKIKOUA.js} +2 -2
  123. package/dist/{chunk-NCJILOAK.js → chunk-PFMQRHC6.js} +2 -2
  124. package/dist/chunk-PVKSZBX5.js +82 -0
  125. package/dist/{chunk-NEWHKGVD.js → chunk-QANCT4MO.js} +2 -2
  126. package/dist/{chunk-ZNH33XIB.js → chunk-QEWN7BLP.js} +2 -2
  127. package/dist/{chunk-OQUCBKOI.js → chunk-QFJ46F6F.js} +2 -2
  128. package/dist/{chunk-2E6OUPCF.js → chunk-QPQWR6CW.js} +2 -2
  129. package/dist/{chunk-YTJHCGYB.js → chunk-QX4HDF2I.js} +2 -2
  130. package/dist/{chunk-J3GLP7Q5.js → chunk-R2F2CTBA.js} +2 -2
  131. package/dist/{chunk-2OMXFE64.js → chunk-R7PXHYMY.js} +2 -2
  132. package/dist/{chunk-F74LZWCE.js → chunk-RGBZDOUO.js} +2 -2
  133. package/dist/{chunk-362QOSFD.js → chunk-RNPG5P4P.js} +2 -2
  134. package/dist/{chunk-D62CTZX6.js → chunk-RS6UYNEP.js} +2 -2
  135. package/dist/{chunk-VGWZ4MOY.js → chunk-RVBRPBLQ.js} +2 -2
  136. package/dist/{chunk-5IZRKWTZ.js → chunk-RWAZCEJD.js} +2 -2
  137. package/dist/{chunk-ZQ62NNKN.js → chunk-RWDIONS7.js} +2 -2
  138. package/dist/{chunk-HQA7EBSK.js → chunk-S3CJYDXP.js} +2 -2
  139. package/dist/{chunk-GL6UTNUB.js → chunk-S6UTKCBT.js} +2 -2
  140. package/dist/chunk-SLLFJXTW.js +27 -0
  141. package/dist/{chunk-TOTWJZIX.js → chunk-T3KTMLQT.js} +2 -2
  142. package/dist/{chunk-67VJAYVR.js → chunk-TB575ZGO.js} +2 -2
  143. package/dist/{chunk-YHPG3S2U.js → chunk-TG4GMU73.js} +2 -2
  144. package/dist/{chunk-CVHOQONG.js → chunk-THKM7OXM.js} +2 -2
  145. package/dist/{chunk-GVAF222T.js → chunk-TNLOX4TN.js} +2 -2
  146. package/dist/{chunk-HENP2O4A.js → chunk-UHFZDQZJ.js} +2 -2
  147. package/dist/{chunk-YT4DVWUV.js → chunk-UUMAM5LM.js} +2 -2
  148. package/dist/{chunk-JX6ZWDOS.js → chunk-UUT5P3V7.js} +2 -2
  149. package/dist/{chunk-Z6RL7XOE.js → chunk-VEPK6M5C.js} +2 -2
  150. package/dist/{chunk-C7OUW52M.js → chunk-VPCHKZ3I.js} +2 -2
  151. package/dist/{chunk-GIDCP7KV.js → chunk-VZY3XOBU.js} +2 -2
  152. package/dist/{chunk-XQAVQVIL.js → chunk-W6E6ME7G.js} +2 -2
  153. package/dist/{chunk-XQPPURLQ.js → chunk-WGYZBS5S.js} +2 -2
  154. package/dist/{chunk-GUFPEFBG.js → chunk-WUP24Q4U.js} +2 -2
  155. package/dist/chunk-WXUHXSLN.js +2 -0
  156. package/dist/{chunk-HINZQKSY.js → chunk-X4YZD2MP.js} +2 -2
  157. package/dist/chunk-XARPGCTL.js +2 -0
  158. package/dist/{chunk-5FWR5HLG.js → chunk-XDQ6QJF5.js} +20 -20
  159. package/dist/{chunk-JCMFBF4Z.js → chunk-XRH7R5SX.js} +2 -2
  160. package/dist/{chunk-BBP7HVBJ.js → chunk-XVJ2E7W7.js} +2 -2
  161. package/dist/{chunk-D53LWANR.js → chunk-Y7GFAU5N.js} +2 -2
  162. package/dist/{chunk-T6MQNNAC.js → chunk-YBDLHFZZ.js} +2 -2
  163. package/dist/{chunk-ZB4C5TTR.js → chunk-YI3CJPOY.js} +2 -2
  164. package/dist/chunk-YMAGXBLT.js +3 -0
  165. package/dist/{chunk-MZNMASFM.js → chunk-YRAGNEBZ.js} +2 -2
  166. package/dist/chunk-YXZAAQHZ.js +3 -0
  167. package/dist/chunk-Z2L5H2HF.js +3 -0
  168. package/dist/{chunk-JSNTHRLQ.js → chunk-ZHK7TVAJ.js} +2 -2
  169. package/dist/chunk-ZJNV27DZ.js +4 -0
  170. package/dist/{chunk-GQLDYCWS.js → chunk-ZQ6GAIUV.js} +2 -2
  171. package/dist/{chunk-TPO7XC5Z.js → chunk-ZQE2QYAC.js} +2 -2
  172. package/dist/chunk-ZUQ2MDFT.js +2 -0
  173. package/dist/cli-context-4R2LREXQ.js +3 -0
  174. package/dist/cli-context-6X7JYARX.js +2 -0
  175. package/dist/cli-failure-RECEHOM2.js +3 -0
  176. package/dist/cli-program-MXA3WTAO.js +7 -0
  177. package/dist/cli.js +1 -1
  178. package/dist/{code-viewer-VHLBLIUM.js → code-viewer-C6HE4DFC.js} +2 -2
  179. package/dist/{code-viewer-KIXEYQNJ.js → code-viewer-XHSSAMBX.js} +2 -2
  180. package/dist/{command-descriptors-YCLATF5I.js → command-descriptors-NWW34Z54.js} +171 -171
  181. package/dist/{command-descriptors-F5P2V3NW.js → command-descriptors-XHK3PK2I.js} +116 -116
  182. package/dist/{command-panels-SZONPMLJ.js → command-panels-OXMCJ2QZ.js} +2 -2
  183. package/dist/direct-navigation-236VXYBZ.js +3 -0
  184. package/dist/direct-navigation-36YSILY6.js +2 -0
  185. package/dist/index.js +1 -1
  186. package/dist/invocation-command-descriptors-35JULLNR.js +3 -0
  187. package/dist/invocation-command-descriptors-FEWSFUO2.js +2 -0
  188. package/dist/output-continuation-command-MJBVH3A5.js +2 -0
  189. package/dist/output-continuation-command-TBXIOPHQ.js +3 -0
  190. package/dist/project-reindex-5TCGOVSK.js +2 -0
  191. package/dist/project-reindex-BUNTSYKM.js +3 -0
  192. package/dist/queries/affected.js +1 -1
  193. package/dist/queries/anchors.js +1 -1
  194. package/dist/queries/architecture.js +1 -1
  195. package/dist/queries/bottlenecks.js +1 -1
  196. package/dist/queries/by-kind.js +1 -1
  197. package/dist/queries/call-graph.js +1 -1
  198. package/dist/queries/change-surface.js +1 -1
  199. package/dist/queries/cleanup-plan.js +1 -1
  200. package/dist/queries/co-change.js +1 -1
  201. package/dist/queries/code.js +1 -1
  202. package/dist/queries/complexity-hotspots.js +1 -1
  203. package/dist/queries/complexity.js +1 -1
  204. package/dist/queries/context.js +1 -1
  205. package/dist/queries/convergence.js +1 -1
  206. package/dist/queries/coupling.js +1 -1
  207. package/dist/queries/cycles.js +1 -1
  208. package/dist/queries/dataflow.js +1 -1
  209. package/dist/queries/dead.js +1 -1
  210. package/dist/queries/decorative-checkers.js +1 -1
  211. package/dist/queries/deep-chains.js +1 -1
  212. package/dist/queries/dependence-slice.js +1 -1
  213. package/dist/queries/dependency-depth.js +1 -1
  214. package/dist/queries/deps.js +1 -1
  215. package/dist/queries/diff-impact.js +1 -1
  216. package/dist/queries/doc-drift.js +1 -1
  217. package/dist/queries/drift.js +1 -1
  218. package/dist/queries/duplicate-bodies.js +1 -1
  219. package/dist/queries/entry-map.js +1 -1
  220. package/dist/queries/evidence.js +1 -1
  221. package/dist/queries/extract-candidates.js +1 -1
  222. package/dist/queries/fan.js +1 -1
  223. package/dist/queries/files.js +1 -1
  224. package/dist/queries/health.js +1 -1
  225. package/dist/queries/hierarchy.js +1 -1
  226. package/dist/queries/hotspots.js +1 -1
  227. package/dist/queries/imports.js +1 -1
  228. package/dist/queries/incomplete-migration.js +1 -1
  229. package/dist/queries/index.js +1 -1
  230. package/dist/queries/isolated.js +1 -1
  231. package/dist/queries/locality-candidates.js +1 -1
  232. package/dist/queries/members.js +1 -1
  233. package/dist/queries/methods.js +1 -1
  234. package/dist/queries/not-implemented.js +1 -1
  235. package/dist/queries/outline.js +1 -1
  236. package/dist/queries/passthrough-candidates.js +1 -1
  237. package/dist/queries/plan-context.js +1 -1
  238. package/dist/queries/react-component-duplicates.js +1 -1
  239. package/dist/queries/react-hook-candidates.js +1 -1
  240. package/dist/queries/react-large-component-pressure.js +1 -1
  241. package/dist/queries/recent-duplicates.js +1 -1
  242. package/dist/queries/redundant-reexports.js +1 -1
  243. package/dist/queries/reference-neighborhood.js +1 -1
  244. package/dist/queries/reference-reachability.js +1 -1
  245. package/dist/queries/refs.js +1 -1
  246. package/dist/queries/self-audit.js +1 -1
  247. package/dist/queries/similar-chains.js +1 -1
  248. package/dist/queries/similar-files.js +1 -1
  249. package/dist/queries/similar-signatures.js +1 -1
  250. package/dist/queries/similar.js +1 -1
  251. package/dist/queries/slice.js +1 -1
  252. package/dist/queries/source-inspection.js +1 -1
  253. package/dist/queries/source-search.js +1 -1
  254. package/dist/queries/stale-abstractions.js +1 -1
  255. package/dist/queries/surface.js +1 -1
  256. package/dist/queries/symbols.js +1 -1
  257. package/dist/queries/system-map.js +1 -1
  258. package/dist/queries/system.js +1 -1
  259. package/dist/queries/test-quality.js +1 -1
  260. package/dist/queries/trace.js +1 -1
  261. package/dist/queries/twin-ab.js +1 -1
  262. package/dist/queries/twin-drift.js +1 -1
  263. package/dist/queries/unused-imports.js +1 -1
  264. package/dist/queries/unused-params.js +1 -1
  265. package/dist/queries/value-flow.js +1 -1
  266. package/dist/queries/vue-component-duplicates.js +1 -1
  267. package/dist/queries/vue-composable-candidates.js +1 -1
  268. package/dist/queries/vue-large-view-pressure.js +1 -1
  269. package/dist/queries/wrapper-candidates.js +1 -1
  270. package/dist/reindex-worker.js +1 -1
  271. package/dist/reindex.js +30 -30
  272. package/dist/runtime.js +1 -1
  273. package/dist/rust-semantic-session-server.js +1 -1
  274. package/dist/rust-semantic-session-worker.js +1 -1
  275. package/dist/rust-semantic-worker.js +1 -1
  276. package/dist/sentinel-ensure-command-3MZCLPQY.js +2 -0
  277. package/dist/sentinel-ensure-command-LEWHIRLL.js +3 -0
  278. package/dist/sentinel-worker.js +1 -1
  279. package/dist/typescript-mailbox-worker.js +1 -1
  280. package/dist/watch-server.js +6 -6
  281. package/docs/COMMAND_REFERENCE.md +2 -2
  282. package/docs/SECURITY_MODEL.md +3 -0
  283. package/package.json +1 -1
  284. package/skills/codebaseiq/SKILL.md +15 -3
  285. package/dist/chunk-23C5AD3B.js +0 -2
  286. package/dist/chunk-2I2UHZET.js +0 -2
  287. package/dist/chunk-5IC2WZAL.js +0 -22
  288. package/dist/chunk-5T44HG5Y.js +0 -88
  289. package/dist/chunk-6JMAVFL4.js +0 -3
  290. package/dist/chunk-6WAPPQ5F.js +0 -82
  291. package/dist/chunk-7UCDGXRW.js +0 -8
  292. package/dist/chunk-AQI4N64O.js +0 -22
  293. package/dist/chunk-DAKIGMIK.js +0 -21
  294. package/dist/chunk-DUKHVPU5.js +0 -4
  295. package/dist/chunk-DVWO7RBC.js +0 -2
  296. package/dist/chunk-FH5WG4LE.js +0 -2
  297. package/dist/chunk-GQXXOS55.js +0 -2
  298. package/dist/chunk-GWYZVVKY.js +0 -21
  299. package/dist/chunk-JFIA2JI3.js +0 -3
  300. package/dist/chunk-JLZLLLW5.js +0 -3
  301. package/dist/chunk-MEUHIDI3.js +0 -7
  302. package/dist/chunk-OFGOOL6U.js +0 -3
  303. package/dist/chunk-P4NVCOM7.js +0 -2
  304. package/dist/chunk-SMDIEDM4.js +0 -27
  305. package/dist/chunk-SX72EVMY.js +0 -3
  306. package/dist/chunk-T5X7DK6C.js +0 -3
  307. package/dist/chunk-T75DS2E6.js +0 -21
  308. package/dist/chunk-TJBOJUVN.js +0 -3
  309. package/dist/chunk-UC2FD2PS.js +0 -4
  310. package/dist/chunk-UQYQBLJX.js +0 -5
  311. package/dist/chunk-Z35GOVEH.js +0 -2
  312. package/dist/cli-context-FJL2JHOE.js +0 -3
  313. package/dist/cli-context-PQNWHMCQ.js +0 -2
  314. package/dist/cli-program-UO7PZD6V.js +0 -7
  315. package/dist/direct-navigation-4XJTXIDT.js +0 -2
  316. package/dist/direct-navigation-J5MVYYAD.js +0 -3
  317. package/dist/invocation-command-descriptors-RWV4VAI4.js +0 -2
  318. package/dist/invocation-command-descriptors-U76PN7IY.js +0 -3
  319. package/dist/output-continuation-command-BL25S26S.js +0 -3
  320. package/dist/output-continuation-command-BTETTXEC.js +0 -2
  321. package/dist/project-reindex-CRJU3IFG.js +0 -2
  322. package/dist/project-reindex-TQFCOA2O.js +0 -3
  323. package/dist/sentinel-ensure-command-OSWGCFFL.js +0 -3
  324. package/dist/sentinel-ensure-command-SPW7XQLB.js +0 -2
package/dist/reindex.js CHANGED
@@ -1,6 +1,6 @@
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(`
1
+ import{a as J}from"./chunk-IBPXUGJV.js";import{a as pi,b as fi,c as ln,e as pn,f as gi,h as mi,i as hi,j as yi}from"./chunk-JKUF2UG6.js";import{a as si}from"./chunk-LTPNP6D5.js";import{e as ci,f as di,g as ui,i as li}from"./chunk-ZQ6GAIUV.js";import"./chunk-LMPOC372.js";import{A as rn,B as Zr,C as ei,D as on,G as an,H as ti,I as sn,J as cn,K as ni,L as lt,M as ri,P as ii,Q as dn,S as un,X as oi,Z as ai,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 ot,j as Yt,k as V,l as Gr,n as $r,o as Ce,p as Kt,q as at,s as le,t as Le,u as tn,v as Qr,w as Ie,x as Me,y as Pe,z as nn}from"./chunk-SLLFJXTW.js";import"./chunk-NB2DAVPP.js";import"./chunk-ELNRLMC5.js";import"./chunk-DOQLO74K.js";import{a as Ar,b as Oe,c as te,d as ne,e as I,f as nt,g as Jt,h as jr,i as F,j as it}from"./chunk-75A23IID.js";import"./chunk-NMKQOIYZ.js";import"./chunk-YUKYB54I.js";import{a as ut}from"./chunk-6CTSFS7R.js";import"./chunk-TNLOX4TN.js";import"./chunk-RGBZDOUO.js";import{I as Kr,J as Xr,a as st}from"./chunk-NRNVMB2R.js";import{a as j,b as Fe}from"./chunk-23AD24QZ.js";import{a as xe,c as Jr,f as Yr,j as dt,k as Zt,l as en}from"./chunk-YMAGXBLT.js";import{d as ct,e as je}from"./chunk-3LCDIREB.js";import{$ as Qt,A as _,B as z,C,F as D,G as E,H as L,K as Cr,L as tt,P as rt,Q as re,R as Ae,T as Vr,V as Br,W as Ur,X as Wr,Y as qr,_ as Xt,ca as Hr,e as kr,ea as Ne,f as be,g as Wt,h as Dr,ha as zr,i as Fr,k as _r,l as et,m as O,u as _e,v as ee,w as qt,x as Or,y as Ht,z as zt}from"./chunk-6I55VYFG.js";import{createHash as Dp}from"crypto";import{existsSync as N,mkdirSync as $t,readdirSync as Is,renameSync as Ps,rmSync as ke,statSync as Fp}from"fs";import{basename as Gt,dirname as S,extname as _p,join as A,resolve as gs}from"path";import{execFileSync as js}from"child_process";import{constants as Ns,copyFileSync as Si,statSync as Ms}from"fs";import{platform as Gs}from"os";var $s=Object.freeze({size:e=>Ms(e).size,clone:Bs,copy:(e,t)=>Si(e,t)}),Vs=new Set(["ENOSYS","ENOTSUP","EOPNOTSUPP","EINVAL","EXDEV","ENOTTY"]);function pe(e,t,n=$s){let r=n.size(e);try{return n.clone(e,t),{method:"reflink",bytes:r}}catch(i){if(!Ws(i))throw i}return n.copy(e,t),{method:"copy",bytes:r}}function Bs(e,t){if(Gs()!=="darwin"){Si(e,t,Ns.COPYFILE_FICLONE_FORCE);return}try{js("/bin/cp",["-c",e,t],{timeout:6e4,maxBuffer:64*1024,stdio:["ignore","ignore","pipe"],windowsHide:!0})}catch(n){throw Us(n)}}function Us(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 Ws(e){let t=e?.code;return t!==void 0&&Vs.has(t)}function bi(){return{reflinkedBytes:0,fallbackCopiedBytes:0}}function fe(e,t){t.method==="reflink"?e.reflinkedBytes+=t.bytes:e.fallbackCopiedBytes+=t.bytes}import qs from"better-sqlite3";import{execFileSync as Hs}from"child_process";import{existsSync as zs,readdirSync as Js}from"fs";import{extname as pt,join as Ys}from"path";function oe(e={}){return{id:"auxiliary-documents",facts:["auxiliary-document"],run:t=>Ri({projectRoot:t.projectRoot,dbPath:t.dbPath,extensions:e.extensions,onStatus:t.onStatus})}}function Ri(e){let t=new Set((e.extensions??Kr).map(o=>o.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!zs(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let n=si(e.projectRoot),r=Ks(e.projectRoot,t).filter(o=>!n.isIgnored(o)),i=new qs(j(e.dbPath));try{let o=Qs(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 f=Yr(e.projectRoot,p,{inputKind:"auxiliary source file"}),g=a.run(Zs(p),p,f);l+=Number(g.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 Ks(e,t){let n=Xs(e,t);if(n)return n;let r=[],i=o=>{let a=o?Ys(e,o):e,s;try{s=Js(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 Xs(e,t){try{return Hs("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 Qs(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 Zs(e){return pt(e).toLowerCase()===".vue"?"vue":pt(e).replace(/^\./,"").toLowerCase()||"source"}import{dirname as ec,join as tc}from"path";function xi(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??tc(ec(n),"index.scip")}),o,a=!1,s=!1;try{let d=e.reuseExisting||e.affectedFiles?li(i):null;e.reuseExisting&&d?.extractorVersion===ci?(o=d,a=!0):(o=di(i,{...d?{previousGraph:d}:{},...e.affectedFiles?{affectedFiles:e.affectedFiles}:{}}),s=(o.coverage.filesReused??0)>0)}finally{i.close()}a||ui(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 rc}from"crypto";import{existsSync as ic}from"fs";import{dirname as oc,join as Pi}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"),Ii(r,i,a)):a.size>0?Ii(r,i,a):{mode:"closure",changedFiles:r,affectedFiles:nc(r,t,i),reasons:[]}}function Ii(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function nc(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 ac="<global-symbols>";function sc(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(`
@@ -56,8 +56,8 @@ import{a as J}from"./chunk-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
56
56
  ) AND NOT EXISTS (
57
57
  SELECT 1 FROM mentions m WHERE m.symbol_id = g.id
58
58
  )
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
59
+ `))t.push({relativePath:ac,kind:"global-symbol",values:gn(n)});return cc(t)}function cc(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=rc("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 dc(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=mc){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 Ti(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=et(e.previousSnapshot,e.currentSnapshot),l=new Set(d),p=u.changes.length>0&&!fn(u).fullProject&&u.changes.every(b=>l.has(b.path)),f=ft(u,p?t.dependencyGraph(s):new Map,d),g=dc(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:f,comparison:g,evaluation:mn(f,g,d.length)}}catch(d){return a("oracle-error",d instanceof Error?d.message:String(d))}finally{vi(s),vi(c)}}function Ei(e,t,n,r=Date.now()){return Ti(e,t,r,0,n)}function uc(e){let t=oc(e);return{latestPath:Pi(t,"affected-shadow-latest.json"),historyPath:Pi(t,"affected-shadow.jsonl")}}function wi(e,t,n=hc){let r=uc(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var lc=8*1024*1024,pc=pi;function fc(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 gc(e,t,n=lc){fi(e,fc(t),{maxSegmentBytes:n,previousSuffix:pc})}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 mc={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:I,databaseExists:e=>ic(e),openDatabase:(e,t,n)=>new J({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>st(e),dependencyGraph:e=>ut(e),factDigests:e=>sc(e)},hc={appendHistory:gc,writeLatest:(e,t)=>ie(e,t,{spacing:2,trailingNewline:!0})};function Ti(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 vi(e){try{e?.close()}catch{}}import{readdirSync as yc}from"fs";import{isAbsolute as ki,join as Sc,resolve as bc}from"path";var gt="@sourcegraph/scip-typescript@0.4.0",Di="scip-python-plus@0.7.5",Fi="github.com/sourcegraph/scip-go@v0.2.7",_i="scip-dotnet@0.2.14",Rc="scip_dart@1.6.2",xc=3,Ic=new Set(["bin","obj","node_modules"]),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: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","--project-version","0"]}),markerFiles:[...O.python],installMethods:[{label:"npm",identity:Di,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",Di]}],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",ki(r)?r:bc(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:Fi,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Fi]}],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",Oi(e,[".sln",".slnx",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.csharp],installMethods:[{label:"dotnet",identity:_i,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",Oi(e,[".sln",".slnx",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.vb],installMethods:[{label:"dotnet",identity:_i,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:Rc,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})=>ki(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 Ci(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 Oi(e,t){let n=[e];for(let r=0;r<=xc&&n.length>0;r++){let i=[],o=[];for(let a of n){let s;try{s=yc(a,{withFileTypes:!0})}catch{continue}for(let c of s){let d=Sc(a,c.name);c.isDirectory()?!c.name.startsWith(".")&&!Ic.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 wc,IndexSchema as ji,MetadataSchema as Ni,SymbolInformationSchema as Tc}from"@c4312/scip";import{create as Li}from"@bufbuild/protobuf";import{DocumentSchema as Pc,IndexSchema as vc,SymbolRole as Ec}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&Ec.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(Li(Pc,{language:a.language,relativePath:s,occurrences:c,symbols:a.symbols,text:a.text,positionEncoding:a.positionEncoding}))}return{index:i===0?e:Li(vc,{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=Dc(e),n=Fc(e.flatMap(i=>i.documents??[])),r=$i(e.flatMap(i=>i.externalSymbols??[]));return ve(ji,{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 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: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 kc(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(ji,{metadata:ve(Ni,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function Gi(e,t,n){let r=Sn(D(e,{inputKind:"SCIP normalization input",maxBytes:C})),i=kc(r,t,n);yn(e,Buffer.from(bn(i)))}function Dc(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(Ni,{...t,projectRoot:r})}function Fc(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(wc,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:_c([...r.occurrences,...n.occurrences]),symbols:$i([...r.symbols,...n.symbols]),text:Ac(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function _c(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 $i(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(Tc,{symbol:r.symbol,documentation:Cc([...r.documentation,...n.documentation]),relationships:Oc([...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 Oc(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 Ac(e,t){return e?t?e.length>=t.length?e:t:e:t}function Cc(e){return[...new Set(e)]}import{createHash as Lc}from"crypto";import{existsSync as Vi,rmSync as Bi}from"fs";import{resolve as jc}from"path";import qi from"better-sqlite3";var Nc={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}]},Mc={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 Hi(e){let t=I(),n=Gc(e.affectedFiles);if($c(e.previousDbPath,e.miniDbPath,e.candidateDbPath),Bi(e.candidateDbPath,{force:!0}),!Vi(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!Vi(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");Ui(e.previousDbPath,"previous SQLite generation",!1),Ui(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 qi(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"),Vc(i,n),Bc(i,n.length);let o=Pn(i,"main",!0),a=ae(i,"SELECT COUNT(*) AS value FROM main.documents");i.transaction(()=>{Uc(i),Wc(i),qc(i),e.onStage?.("after-delete"),Hc(i),e.onStage?.("after-symbol-reconciliation"),zc(i),e.onStage?.("after-insert"),Jc(i),Yc(i,n.length,a),e.onStage?.("before-commit")}).immediate(),zi(i,"main","candidate SQLite generation");let d=[...Kc(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{Bi(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${o instanceof Error?o.message:String(o)}`,{cause:o})}}function Gc(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 $c(e,t,n){let r=[e,t,n].map(i=>jc(i));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function Ui(e,t,n=!0){let r=new qi(j(e),{readonly:!0,fileMustExist:!0});try{In(r,"main",t),n&&zi(r,"main",t)}finally{r.close()}}function In(e,t,n){for(let[r,i]of Object.entries(Nc)){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(Mc)){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}`)}Wi(e,t,"documents",["relative_path"],n),Wi(e,t,"global_symbols",["symbol"],n)}function Wi(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 zi(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 Vc(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 Bc(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-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
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 Bc(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 Uc(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-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
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 Uc(e){let t=e.prepare(`WITH changed_symbols AS (
97
+ `)}function Wc(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-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
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 Wc(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 qc(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-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
139
139
  );
140
140
  DELETE FROM main.documents
141
141
  WHERE relative_path IN (SELECT relative_path FROM temp.incremental_affected_paths);
142
- `)}function qc(e){e.exec(`
142
+ `)}function Hc(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-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
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 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)
184
+ `)}function zc(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-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
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 zc(e){e.exec(`
199
+ JOIN main.global_symbols target ON target.symbol = source.symbol`).run(r,t)}function Jc(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 Jc(e,t,n){let r=ae(e,"SELECT COUNT(*) AS value FROM main.documents"),i=ae(e,`SELECT COUNT(*) AS value
205
+ `)}function Yc(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 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
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 Kc(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,10 +226,10 @@ import{a as J}from"./chunk-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
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=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 (
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 f=JSON.stringify([u,p]),g=c.get(p.relative_path)??[];g.push(f),c.set(p.relative_path,g)}let d=new Map;for(let[u,l]of[...c].sort(([p],[f])=>p.localeCompare(f))){let p=Lc("sha256");for(let f of l.sort())p.update(f).update(`
230
+ `);d.set(u,p.digest("hex"))}return d}function ae(e,t){return e.prepare(t).get().value}import Xc from"better-sqlite3";var yt="idx_mentions_definitions",Qc=["symbol_id","chunk_id"];function vn(e){let t=new Xc(j(e)),n=[],r=[],i=[];try{return t.transaction(()=>{Zc(t,n),St(t,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&Ji(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=Ji(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 Zc(e,t){let n=Yi(e,yt);if(n){let r=n.columns.join("\0")===Qc.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 Ji(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 Yi(e,t)?.columns??null}function Yi(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 ed}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 Xi(e){let t=e.readFingerprint(),n=Zi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=e.compute();return eo(e.cachePath,e.readFingerprint(),r),r}async function Qi(e){let t=e.readFingerprint(),n=Zi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=await e.compute();return eo(e.cachePath,e.readFingerprint(),r),r}function Zi(e,t){try{let n=JSON.parse(E(e,{maxBytes:_,inputKind:"post-index augmentation cache"}));return Ki(n.fingerprint)===Ki(t)?{result:n.result}:null}catch{return null}}function eo(e,t,n){ed(e,`${JSON.stringify({updatedAt:new Date().toISOString(),fingerprint:t,result:n},null,2)}
231
+ `)}function Ki(e){return JSON.stringify(e)}import{createHash as td}from"crypto";import{existsSync as En,readdirSync as nd}from"fs";import{dirname as wn,join as bt,relative as rd,resolve as Tn,sep as to}from"path";function no(e,t){let n=t.includes("."),r={};for(let o of t)r[o]=[];let i=[];for(let o of e){let a=ao(o.path,t);a?r[a].push(o):n?r["."].push(o):i.push(o)}return{files:r,shared:i}}function ro(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=ao(s,e);c&&c!==i&&a.add(c)}}return id(e,r)}function io(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=td("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function oo(e,t){let n=Tn(e),r={};for(let i of t)r[i]=od(n,i);return r}function ao(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 id(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 od(e,t){let n=t==="."?e:bt(e,t),r=ad(n),i=sd(n),o=i?cd(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 ad(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 sd(e){let t=bt(e,"tsconfig.json");if(En(t))return t;let n;try{n=nd(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 cd(e,t){let n=Dn(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=dd(n.value,e,t),i=so(e,n.value,t,0);return{pathsTargets:i.pathsTargets,referencesPaths:r,failed:i.failed}}function dd(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=co(s,i,n);c&&o.add(c)}return[...o]}function so(e,t,n,r){let i=ud(t);if(i)return{pathsTargets:ld(i,wn(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let o=pd(t.extends,e,n);if(!o)return{pathsTargets:[],failed:!1};let a=Dn(o);return a.ok?so(o,a.value,n,r+1):{pathsTargets:[],failed:!0}}function ud(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 ld(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=co(o,t,n);a&&r.add(a)}return[...r]}function pd(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(to).includes("node_modules")&&Wt(n,i)&&En(i))return i}function co(e,t,n){let r=e.replace(/\/?\*+$/,""),i=Tn(t,r===""?".":r);if(!Wt(n,i))return;let a=rd(n,i).split(to).join("/");return a===""?".":a}function fd(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(fd(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{writeFileSync as Dd}from"fs";import{deserializeSCIP as Fd,PositionEncoding as Rt,serializeSCIP as _d}from"@c4312/scip";import{rmSync as md}from"fs";import hd from"better-sqlite3";var yd=200,Sd=[`CREATE TABLE documents (
233
233
  id INTEGER PRIMARY KEY,
234
234
  language TEXT,
235
235
  relative_path TEXT NOT NULL UNIQUE,
@@ -269,11 +269,11 @@ import{a as J}from"./chunk-3RR2K7EZ.js";import{a as li,b as pi,c as ln,e as pn,f
269
269
  end_char INTEGER NOT NULL,
270
270
  FOREIGN KEY (document_id) REFERENCES documents(id),
271
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(`
272
+ )`],bd=["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 lo(e,t){md(e,{force:!0});let n=new hd(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 Sd)n.exec(r);n.transaction(()=>Rd(n,t)).immediate(),n.transaction(()=>{for(let r of bd)n.exec(r)}).immediate()}finally{n.close()}}function Rd(e,t){let n=xd(e);for(let r of Id(e,n,t))Pd(e,n,r),vd(e,n,r)}function xd(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 Id(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 Ed(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:wd(a.occurrences)})}return i}function Pd(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]=kd(i,n.relativePath);r.run(n.id,t.referenced(i.symbol),o,a,s,c)}}function vd(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 (?, ?, ?)");Td(n.occurrences).forEach((o,a)=>{let s=Number(r.run(n.id,a,o.startLine,o.endLine,ri(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 Ed(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)=>po(n.symbol,r.symbol))}function wd(e){let t=[...e].sort((r,i)=>uo(r.range,i.range)||po(r.symbol,i.symbol)),n=[];for(let r of t){let i=n.at(-1);i&&i.symbol===r.symbol&&uo(i.range,r.range)===0?n[n.length-1]={...i,roles:i.roles|r.roles}:n.push(r)}return n}function Td(e){let t=[],n=0;for(;n<e.length;){let r=Math.min(e.length,n+yd);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 kd(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 uo(e,t){return e[0]-t[0]||e[1]-t[1]||e[2]-t[2]||e[3]-t[3]}function po(e,t){return e<t?-1:e>t?1:0}var Od={[Rt.UnspecifiedPositionEncoding]:null,[Rt.UTF8CodeUnitOffsetFromLineStart]:"UTF-8",[Rt.UTF16CodeUnitOffsetFromLineStart]:"UTF-16",[Rt.UTF32CodeUnitOffsetFromLineStart]:"UTF-32"};function go(e,t,n){let r=Fd(D(e,{inputKind:"SCIP index store input",maxBytes:C})),i={removedDefinitionOccurrences:0,touchedDocuments:0};if(n.sanitize){let o=ht(r);o.touchedDocuments>0&&(Dd(e,Buffer.from(_d(o.index))),r=o.index),i={removedDefinitionOccurrences:o.removedDefinitionOccurrences,touchedDocuments:o.touchedDocuments}}return lo(t,r.documents.map(Ad)),i}function Ad(e){let t=Od[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=fo(n.range);return r?[{symbol:n.symbol,roles:n.symbolRoles,range:r,enclosingRange:fo(n.enclosingRange)}]:[]})}}function fo(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 oa,randomUUID as gu}from"crypto";import{existsSync as ce,lstatSync as Kn,mkdirSync as we,readdirSync as aa,realpathSync as sa,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 mu}from"timers/promises";import{pathToFileURL as ta}from"url";import{deserializeSCIP as ca}from"@c4312/scip";import hu from"better-sqlite3";import{lstatSync as zd,readdirSync as Jd}from"fs";import{join as Yd,relative as Kd,resolve as Mn,sep as Xd}from"path";import{createHash as Cd}from"crypto";import{existsSync as Ge,mkdirSync as Ld,readdirSync as mo,renameSync as jd,rmSync as ho,writeFileSync as Nd}from"fs";import{join as Y}from"path";import{create as So,fromBinary as bo,toBinary as Md}from"@bufbuild/protobuf";import{deserializeSCIP as xt,DocumentSchema as _n,IndexSchema as Ro,serializeSCIP as xo}from"@c4312/scip";var It=1,$e="typescript-scip-fragments";function Io(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=bo(_n,o.bytes);if(s.relativePath!==a)throw new Error(`TypeScript fragment path mismatch: expected ${a}, got ${s.relativePath}`);n.push(s)}let r=xo(So(Ro,{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 Ve(e){let t=Y(e,$e);return{rootDir:t,blobDir:Y(t,"blobs"),generationDir:Y(t,"generations")}}function Gd(e){let t=xt(e.indexBytes);Lo(t.metadata,jo(e)),Co(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=Md(_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(Fo(e.cacheDir,{relativePath:a,bytes:s,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=_o(e,r);return Oo(e.cacheDir,i),i}function Po(e){let t=Ve(e.cacheDir);if(!Ge(An(t,e.generationIdentity)))return Gd(e);let n=Eo({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 vo(e){let t=Eo({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,Fo(e.cacheDir,o,s))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=_o(e,[...n.values()]);return Oo(e.cacheDir,i),i}function Eo(e){let t=Ve(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 wo(e){let t=ko(e);return Fn(t.baseIndex,t.completeDocuments,"assembled")}function To(e){let t=ko(e);return $d(t.deletedAffectedPaths),{completeIndexBytes:Fn(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Fn(t.baseIndex,t.affectedDocuments,"affected")}}function ko(e){let t=xt(e.baseIndexBytes);Lo(t.metadata,jo(e)),Co(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=bo(_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=xo(So(Ro,{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 $d(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function Do(e,t){let n=Ve(e);if(!Ge(n.generationDir))return;let r=new Set(t.map(a=>Ao(a))),i=mo(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)||ho(Y(n.generationDir,a),{force:!0});if(Ge(n.blobDir))for(let a of mo(n.blobDir))o.has(a)||ho(Y(n.blobDir,a),{force:!0})}function Fo(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=Ve(e);Ld(a.blobDir,{recursive:!0});let s=Y(a.blobDir,`${o}.scipdoc`);if(Ge(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`;Nd(c,i),jd(c,s)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function _o(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 Oo(e,t){let n=Ve(e),r=An(n,t.generationIdentity);if(Ge(r)){let i=On(E(r,{maxBytes:_,inputKind:"TypeScript fragment manifest"}));if(yo(i)!==yo(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}ie(r,t,{spacing:2,trailingNewline:!0})}function yo(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,Ao(t))}function Ao(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${me(e)}.json`}function Co(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function Lo(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 jo(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 Cd("sha256").update(e).digest("hex")}import{createHash as Vd}from"crypto";import{existsSync as Be,mkdirSync as Bd,readdirSync as Cn,renameSync as Ud,rmSync as No,writeFileSync as Wd}from"fs";import{join as B}from"path";var Pt=1,Go=64*1024*1024,We="typescript-scip-overlays";function $o(e){let t=Uo(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,qd(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 Hd(e.cacheDir,i),i}function Vo(e){let t=Uo(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(qe(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`),{maxBytes:z,inputKind:"TypeScript overlay blob"});if(i.byteLength!==r.byteLength||Ue(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 wo({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function Bo(e,t){let n=qe(e),r=B(n,"generations");if(!Be(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)||No(B(r,s),{force:!0});let a=B(n,"blobs");if(Be(a))for(let s of Cn(a))o.has(s)||No(B(a,s),{force:!0})}function Uo(e,t){let n=B(qe(e),"generations",jn(t));if(!Be(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 qd(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=Ue(r),o=B(qe(e),"blobs");Bd(o,{recursive:!0});let a=B(o,`${i}.scipdoc`);if(Be(a)){let s=D(a,{maxBytes:z,inputKind:"TypeScript overlay blob"});if(s.byteLength!==r.byteLength||Ue(s)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let s=`${a}.${process.pid}.${Date.now()}.tmp`;Wd(s,r),Ud(s,a)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function Hd(e,t){let n=B(qe(e),"generations",jn(t.generationIdentity));if(Be(n)){let r=Ln(E(n,{maxBytes:_,inputKind:"TypeScript overlay manifest"}));if(Mo(r)!==Mo(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 qe(e){return B(e,We)}function jn(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Ue(e)}.json`}function Mo(e){return Ue(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 Ue(e){return Vd("sha256").update(e).digest("hex")}var He=1,Gn="language-indexes",Wo=["index.db","index.scip","meta.json"],qo=[Gn,$e,We];function vt(e){let t=[];for(let n of Wo)Qd(e,n),t.push(n);for(let n of qo)Ho(e,n,t);return{version:He,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(!Wo.includes(e)&&!qo.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}${Xd}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function Ho(e,t,n){let r=Yd(e,t),i;try{i=Jd(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()?Ho(e,a,n):o.isFile()&&n.push(Et(a))}}function Qd(e,t){let n=W(e,t),r;try{r=zd(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(Kd(Mn(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{createHash as Wn}from"crypto";import{closeSync as Zd,existsSync as w,mkdirSync as eu,openSync as tu,readSync as nu,readdirSync as qn,renameSync as Un,rmSync as ze,statSync as Ee}from"fs";import{basename as Ko,dirname as q,join as R,relative as zo}from"path";var ru=Object.freeze({maxGenerations:2,maxLogicalBytes:2*1024*1024*1024});function Tt(e){let t=V(e.outputDb),n=su(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=Xo(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)?du(n,e,t):void 0;if(s&&!at(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?Zo(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}),Xo(e,{now:n}),s}function Xo(e,t={}){let n=iu(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=ou(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,f=0;for(let b of s){if(u<=n.maxGenerations&&l<=n.maxLogicalBytes)break;d.has(b.identity)||(t.onBeforeRemove?.(b.identity),ze(b.path,{recursive:!0,force:!0}),u-=1,l-=b.logicalBytes,p+=1,f+=b.logicalBytes)}let g=u>n.maxGenerations||l>n.maxLogicalBytes,h={state:g?"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:f,limits:n,at:i,...g?{reason:c.malformedLeases>0?"malformed reader ownership evidence fails closed":"retention bounds cannot be met without deleting a protected generation"}:{}};return Jo(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{Jo(e,s)}catch{}return s}finally{o.release()}}function iu(e={}){let t={...ru,...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 ou(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=at(t,n.name),o=i?i.database.size+(i.index?.size??0)+(i.metadata?.size??0):Qo(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 Qo(e){let t=0;for(let n of qn(e,{withFileTypes:!0})){let r=R(e,n.name);n.isDirectory()?t+=Qo(r):n.isFile()&&(t+=Ee(r).size)}return t}function Jo(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?au(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 au(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")))||!Yo(e,n.database))return!1;let i=R(q(e),"index.scip");if(n.index&&!Yo(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 Yo(e,t){return w(e)&&Ee(e).isFile()&&Ee(e).size===t.size}function su(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:Le(e),...w(t)?{indexFileIdentity:Le(t)}:{}}}function Zo(e,t){let n=R(V(e),t),r=R(n,Ko(e)),i=R(n,"meta.json");return{generationIdentity:t,databasePath:zo(q(e),r),...w(i)?{metadataPath:zo(q(e),i)}:{}}}function cu(e){if(w(e)){for(let t of qn(e,{withFileTypes:!0}))if(t.isDirectory()&&t.name.endsWith(".tmp"))try{ze(R(e,t.name),{recursive:!0,force:!0})}catch{}}}function du(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??uu(t,n,e.metadataPath),o=R(e.generationRoot,i),a=R(o,Yt);if(w(a)){let d=at(e.generationRoot,i);if(d&&ea(o,d.database,t)&&pu(o,d.index,n)&&fu(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=[rt(e.generationRoot)];cu(e.generationRoot);let c=`${o}.${process.pid}.${Date.now()}.tmp`;ze(c,{recursive:!0,force:!0}),eu(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{ze(c,{recursive:!0,force:!0})}catch{}}return{identity:i,directorySync:Ae(...s)}}function uu(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:Ko(e),size:Ee(e).size,sha256:wt(e)}}function wt(e){let t=Wn("sha256"),n=tu(e,"r"),r=Buffer.allocUnsafe(1024*1024);try{for(;;){let i=lu(n,r);if(i===0)break;t.update(r.subarray(0,i))}}finally{Zd(n)}return t.digest("hex")}function lu(e,t){let n=0;for(;n<t.length;){let r=nu(e,t,n,t.length-n,null);if(n+=r,r===0)break}return n}function Vn(e,t){return it(e,t,{mode:292})}function ea(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 pu(e,t,n){return!t||!n?t===n:ea(e,t,n)}function fu(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(()=>ze(`${t}.tmp-replace`,{force:!0})),F(()=>Un(e,`${t}.tmp-replace`)),F(()=>Un(`${t}.tmp-replace`,t))}var Zn=1,na="CODEBASEIQ_SHARED_CACHE",yu=2,kt=JSON.stringify({cliVersion:Vr,artifactCatalogVersion:He,postIndexAugmentationSchemaVersion:yu,sqliteGenerationStoreVersion:Re,typescriptFragmentStoreVersion:It,typescriptOverlayStoreVersion:Pt}),er="manifest.json",Su="shared-cache.json",tr=[Gn,$e,We];function Ft(e,t){if(!e.clean||!e.treeOid)return;let n=ba(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 da(e,t,n){if(process.env[na]==="0")return`${na}=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=ma(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||tt(o,{inputKind:"shared-generation artifact",maxBytes:C})!==i.sha256)return null}}catch{return null}return r}var bu=100;function ua(e,t,n){if(!e.treeOid)return null;let r=en(t,n),i=m(Br(),"repositories",e.repositoryId),o;try{let u=Kn(i);if(!u.isDirectory()||u.isSymbolicLink())return null;o=sa(i)}catch{return null}let a=m(o,"generations"),s=[],c=e.headCommit?Hr(e.projectRoot,`${e.headCommit}^`,bu):[],d=new Map;for(let u of[e.treeOid,...c])d.has(u)||d.set(u,d.size);try{for(let u of aa(a)){if(!/^[a-f0-9]{64}$/.test(u))continue;let l=m(a,u),p;try{p=Kn(l)}catch{continue}if(!(!p.isDirectory()||p.isSymbolicLink()))try{let f=ma(E(m(l,er),{inputKind:"shared-generation baseline manifest",maxBytes:_}));f.generationId===u&&f.repositoryId===e.repositoryId&&d.has(f.treeOid)&&f.producerIdentity===kt&&Pu(f.fingerprint,r)&&s.push(f)}catch{continue}}}catch{return null}s.sort((u,l)=>{let p=d.get(u.treeOid)-d.get(l.treeOid),f=Date.parse(l.createdAt)-Date.parse(u.createdAt);return p||f||u.generationId.localeCompare(l.generationId)});for(let u of s){let l={repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:u.treeOid,fingerprint:u.fingerprint,producerIdentity:u.producerIdentity,generationId:u.generationId,repositoryCacheDir:o},p=K(l);if(p)return{snapshot:l,manifest:p}}return null}function la(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 Ru(e)}finally{t.release()}}function Ru(e){let t=K(e.snapshot);if(t)return ra(e.snapshot,t);if(!Sa(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=ia(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=vt(e.sourceCacheDir),i=m(e.snapshot.repositoryCacheDir,"generations"),o=[rt(i)],a=Fe(m(i,`.tmp-${process.pid}-`));try{let s=[];for(let g of r.files){let h=W(e.sourceCacheDir,g),b=W(a,g);o.push(Ye(h,b,292)),e.onPublicationStage?.("after-artifact-flushed",g);let y=Dt(b).size;s.push({path:g,size:y,sha256:tt(b,{inputKind:"staged shared-generation artifact",maxBytes:C})})}let c=ca(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(ia(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let u={version:Zn,artifactCatalogVersion:He,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((g,h)=>g.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 g=`${p}.corrupt-${process.pid}-${Date.now()}`;F(()=>he(p,g)),se(g,{recursive:!0,force:!0})}F(()=>he(a,p))}catch(g){let h=K(e.snapshot);if(h)return ra(e.snapshot,h);throw g}e.onPublicationStage?.("after-generation-renamed"),o.push(re(i)),e.onPublicationStage?.("after-generations-directory-synced");let f=Ae(...o);return{kind:"published",manifest:u,achievedDurability:f==="synced"?"directory-durable":"file-flushed",directorySync:f}}finally{se(a,{recursive:!0,force:!0})}}function ra(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-")),Tu(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let d=W(t,c.path),u=W(r,c.path);if(Ye(d,u),Dt(u).size!==c.size||tt(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")&&Gi(W(r,c.path),e.manifest.scipProjectRoot,a);if(!Sa(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=vu(e.targetCacheDir,r),o=!0,Eu(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&&wu(e.targetCacheDir,i),a}finally{r&&se(r,{recursive:!0,force:!0}),n.release()}}async function pa(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=nt(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 mu(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:ga(i)};return ha(e.repositoryCacheDir,o,!0),o}function fa(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:ga(r)};return ha(e.repositoryCacheDir,i,!0),i}function ga(e){return ba(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:Qn(e.projectRoot),localCacheDir:Qn(e.localCacheDir)}))}function ma(e){let t=JSON.parse(e);if(t.version!==Zn||t.artifactCatalogVersion!==He||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 Ye(e,t,n=384){return it(e,t,{mode:n})}function xu(e,t,n){we(e,{recursive:!0}),G(m(e,Su),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function ia(e){try{let t=vt(e),n=oa("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 Iu(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 Pu(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 ha(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}),xu(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function vu(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&&Ye(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,ot),a=ce(o);return a&&ya(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);we(Xn(a),{recursive:!0}),F(()=>he(i,a))}let o=m(e,r);ce(o)&&F(()=>he(o,i))}}function wu(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-${gu()}`;Ye(m(t.root,"stable",i),s),F(()=>se(a,{force:!0})),F(()=>he(s,a))}let n=m(e,ot);se(n,{recursive:!0,force:!0});let r=m(t.root,"sqlite-generations");t.generationStoreExisted&&ce(r)&&F(()=>he(r,n))}function ya(e,t){we(t,{recursive:!0});for(let n of aa(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()?ya(r,i):n.isFile()&&Ye(r,i)}}function Tu(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 Sa(e,t,n,r=!0,i=!0){try{let o=Iu(e);if(!o||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return Je("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 Je(`source validation rejected SQLite generation state ${s.state}`),!1;let c=new hu(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 f=ca(D(W(e,p),{inputKind:"shared SCIP validation artifact",maxBytes:C})).metadata?.projectRoot,g=f!==void 0&&be(f,d);return g||Je(`source validation rejected SCIP root for ${p}: ${String(f)}`),g});return l||Je("source validation rejected SCIP project roots"),l}catch(o){return Je(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function Je(e){process.env.CODEBASEIQ_DEBUG&&console.error(`shared-cache: ${e}`)}function ir(e){try{return ta(sa(e)).href}catch{return ta(Qn(e)).href}}function ba(e){return oa("sha256").update(e).digest("hex")}import{createHash as Hu}from"crypto";import{existsSync as ar,statSync as zu,writeFileSync as sr}from"fs";import{join as Ju}from"path";import{createRequire as ku}from"module";import{dirname as Du,isAbsolute as Ym,relative as Km,resolve as Xm,sep as Qm}from"path";var Ra=ku(import.meta.url),Fu=1,xa="0.4.0";function or(){let e=_u();return e.available?{available:!0,packageVersion:e.packageVersion,typescriptVersion:e.typescriptVersion,producerIdentity:e.producerIdentity}:e}function _u(){try{let e=Ra.resolve("@sourcegraph/scip-typescript/package.json"),t=JSON.parse(L(e,"scip-typescript package manifest"));if(t.version!==xa)return{available:!1,reason:`unsupported scip-typescript version ${String(t.version??"unknown")}; expected ${xa}`};let n=Du(e),r=Ra.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:Ou(t.version,i.version)}}catch(e){return{available:!1,reason:`scip-typescript document producer unavailable: ${e instanceof Error?e.message:String(e)}`}}}function Ou(e,t){return`scip-typescript:${e}:typescript:${t}:document-adapter:${Fu}`}import{createHash as Au}from"crypto";import{dirname as Cu,join as Ia}from"path";var Ot=4;var Lu="typescript-index";function Pa(e){let t=Ia(e,Lu),n=ti(t);return{...n,requestDir:n.legacyRequestDir}}function va(e){try{let t=Or(ee(L(Ia(Cu(e),"meta.json"),"reindex metadata")));return t?Au("sha256").update(t).digest("hex"):null}catch{return null}}import{randomUUID as ju}from"crypto";import{existsSync as Nu}from"fs";var Mu=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??Wu(),this.runtime=n.runtime??qu,this.mailboxLimits=n.mailboxLimits??{}}request(t){let n=ii(this.cacheDir),r=Pa(this.cacheDir),i=dn(n.statePath);if(!Ea(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=ni(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(Nu(u.responsePath))return $u(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(!Ea(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 Ea(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 $u(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=Vu(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 Vu(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(Bu)||r.has(o.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(o.relativePath);let a=o.bytesBase64===null?null:Uu(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 Bu(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 Uu(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function Wu(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:Mu}var qu={now:Date.now,monotonicNow:I,randomId:ju,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:ne,readProcessIdentity:te};function Yu(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=et(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=Ku(r,t,e.graph);if(!i)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let o=wa(e.currentSnapshot,e.projectFiles,e.producerIdentity),a=wa(e.previousSnapshot,e.projectFiles,e.producerIdentity);if(o!==a)return{eligible:!1,reason:"TypeScript fragment project identity changed"};let s=ka(e.previousSnapshot,e.projectFiles,e.graph,e.producerIdentity,e.projectFiles);if(!s)return{eligible:!1,reason:"prior document identity unavailable"};let c=ka(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:Ta(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:Ta(e.currentSnapshot,e.producerIdentity),previousDocumentIdentities:s,nextDocumentIdentities:c,projects:i,...d?{tsconfigPath:d.tsconfigPath,projectArgument:d.projectArgument}:{}}}function Ku(e,t,n){let r=new Map;for(let o of e.affectedFiles){let a=Xu(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=>Qu(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 Xu(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 Qu(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 Da(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=st(o,{includeIgnored:!1}).filter(un).sort(),s=ut(o)}finally{o.close()}let c=performance.now()-n,d=Yu({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(Ju(e.projectRoot,"tsconfig.json"))});if(!d.eligible)throw new Error(d.reason);let u=va(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})),f=p.flatMap(v=>v.fragments),g=performance.now()-n,h=zu(e.previousShardPath).size>=Go;n=performance.now();let b=h?null:D(e.previousShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:C}),y=h?{completeIndexBytes:null,affectedIndexBytes:Io(f)}:To({packageVersion:r.packageVersion,baseIndexBytes:b,fragments:f}),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:f}):(Po({cacheDir:e.cacheDir,packageVersion:r.packageVersion,indexBytes:b,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.previousFragmentGeneration,documentIdentities:d.previousDocumentIdentities,allowUntrackedDocuments:!0}),vo({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.nextFragmentGeneration,fragments:f,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(f.map(v=>[v.relativePath,v.referenceFragments])),timings:{runtimeMs:i,graphMs:c,requestMs:g,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 ${g.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 Fa(e){let t=or();if(!t.available)throw new Error(t.reason);let n=Vo({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 wa(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 Ta(e,t){return cr(JSON.stringify({version:1,producerIdentity:t,snapshot:e}))}function ka(e,t,n,r,i){let o=new Set(e.files.map(c=>c.path)),a=oi({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 Hu("sha256").update(e).digest("hex")}import{closeSync as Zu,existsSync as Lt,fstatSync as el,lstatSync as tl,openSync as nl,renameSync as lr,rmSync as jt,statSync as rl,writeSync as il}from"fs";import{cpus as ol}from"os";import{join as pr}from"path";var dr=Symbol("no-error");async function _a(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 al(e,t){if(e.temporaryRootConfigContent===void 0)return null;let n=pr(t,"tsconfig.json"),r=Buffer.from(e.temporaryRootConfigContent,"utf8"),i;try{i=nl(n,"wx",384)}catch(o){if(o.code==="EEXIST")return null;throw o}try{il(i,r);let o=el(i);return{path:n,content:r,device:o.dev,inode:o.ino}}finally{Zu(i)}}function sl(e){if(e)try{let t=tl(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 cl(e,t,n){if(!e.defaultOutputPath)return;let r=pr(t,e.defaultOutputPath);n!==r&&Lt(r)&&lr(r,n)}function dl(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 ul(e){e&&(jt(e.defaultOutputPath,{force:!0}),e.backupPath&&Lt(e.backupPath)&&lr(e.backupPath,e.defaultOutputPath))}function ll(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,ol().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function Aa(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=ll(a.length,r),d=await _a(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(f=>f.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=dl(e.config,t,e.scipPath),o=al(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 yi({command:d.binary,args:d.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:fl(),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}`:""}`)}cl(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: ${pl(u)}`,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:gl(d)}}finally{ul(i),sl(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=rl(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 pl(e){let[t="",...n]=e.split(`
276
+ `),r=n.map(o=>o.trim()).filter(Boolean);if(r.length===0)return t;let i=r.find(o=>/^(?:error:\s*)?[A-Z]\w*Error\b/.test(o))??r[r.length-1];return`${t} ${i}`}function fl(){let e=Number(process.env.CODEBASEIQ_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):mi.indexer}function gl(e){return e instanceof hi?e.kind==="spawn"&&Oa(e.cause):Oa(e)}function Oa(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as La}from"child_process";import{homedir as Ca,platform as ml}from"os";import{delimiter as hl,join as Nt}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(!tn(i.prerequisite))continue;let o=yl(i);t(`Installing immutable ${i.identity} via ${i.label} into ${o}; expected executable: ${r}.`);try{La(i.binary,i.args,{stdio:"inherit",windowsHide:!0,timeout:3e5,env:process.env,shell:ml()==="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 yl(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(hl)[0],"bin")}return e.binary==="dotnet"?Nt(process.env.DOTNET_CLI_HOME??Ca(),".dotnet","tools"):e.binary==="dart"?Nt(process.env.PUB_CACHE??Nt(Ca(),".pub-cache"),"bin"):e.destination}function fr(e,t){try{return La(e,t,{stdio:["ignore","pipe","ignore"],windowsHide:!0,encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}import is from"better-sqlite3";import{existsSync as os}from"fs";import{dirname as as,join as ss,resolve as cs}from"path";import{randomUUID as bl}from"crypto";import{mkdtempSync as Rl,rmSync as xl,statSync as Na}from"fs";import{tmpdir as Il}from"os";import{join as Ma}from"path";import{Worker as Pl}from"worker_threads";function Sl(){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:Sl(),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 vl=3e5,Ga=64*1024*1024,El={createResultDirectory:()=>Rl(Ma(Il(),"codebaseiq-vue-workers-")),spawn:(e,t)=>new Pl(e,{workerData:t}),resultSize:e=>Na(e).size,readResult:e=>E(e,{maxBytes:Ga,inputKind:"Vue worker result"}),removeResultDirectory:e=>xl(e,{recursive:!0,force:!0})};function $a(e){return e.length>=8&&Ba(e.length)>1}async function Va(e,t=El){let n=Ba(e.vueFiles.length),r=Ml(e.vueFiles),i=$l(r,n),o=new URL("./augment-vue-worker.js",import.meta.url),a=e.timeoutMs??jl(),s=e.maxResultBytes??Nl();ja("timeoutMs",a),ja("maxResultBytes",s);let c=bl(),d=t.createResultDirectory(),u=[],l,p,f;try{for(let h=0;h<i.length;h++){let b=h,y=i[h]??[],x=y.map(T=>T.taskId),P=Ma(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:wl(k,b)})}await Tl(u,a);let g=u.sort((h,b)=>h.workerId-b.workerId).map(h=>Dl(h,c,s,t));f={occurrences:g.flatMap(h=>h.occurrences),...Te()};for(let h of g)Mt(f,h)}catch(g){l=g}finally{let g=await kl(u);if(g.length===0)try{t.removeResultDirectory(d)}catch(h){g.push(h)}if(g.length>0){let h=l===void 0?g:[l,...g];p=new AggregateError(h,`Vue worker cleanup failed: ${Ll(h[0])}`)}}if(p)throw p;if(l!==void 0)throw l;if(!f)throw new Error("Vue workers completed without producing a merged result.");return f}function wl(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 kl(e){return(await Promise.allSettled(e.map(async n=>n.handle.terminate()))).flatMap(n=>n.status==="rejected"?[n.reason]:[])}function Dl(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(!Ke(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||!Fl(o.result))throw new Error(`Vue reference worker ${e.workerId} success payload is malformed`);return o.result}function Fl(e){if(!Ke(e)||!Array.isArray(e.occurrences)||!e.occurrences.every(_l)||!X(e.skippedReferences)||!Ke(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(Ol)}function _l(e){return Ke(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 Ol(e){return Ke(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.token=="string"&&Al(e.reason)}function Al(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 Ke(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 ja(e,t){if(!Number.isSafeInteger(t)||t<=0)throw new TypeError(`${e} must be a positive safe integer.`)}function Ll(e){return e instanceof Error?e.message:String(e)}function Ba(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 jl(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_TIMEOUT_MS??0);return Number.isFinite(e)&&e>0?e:vl}function Nl(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_RESULT_MAX_BYTES??0);return Number.isSafeInteger(e)&&e>0?e:Ga}function Ml(e){let t=Gl(),n=[];for(let r of e){let i=Ua(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 Gl(){return Number.POSITIVE_INFINITY}function $l(e,t){let n=Array.from({length:t},()=>({tasks:[],weight:0})),r=e.map(i=>({task:i,weight:Vl(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 Vl(e){return Number.isFinite(e.endOffset)?Math.max(1,e.endOffset-e.startOffset):Math.max(1,Ua(e.fileName)-e.startOffset)}function Ua(e){try{return Na(e).size}catch{return 1}}import{createRequire as Bl}from"module";import{existsSync as Ul}from"fs";import{dirname as Wa,extname as Wl,join as qa,relative as ql,resolve as Hl}from"path";import{pathToFileURL as zl}from"url";function Jl(e){e.transaction(()=>{e.prepare(`
277
277
  DELETE FROM mentions
278
278
  WHERE chunk_id IN (
279
279
  SELECT c.id
@@ -293,7 +293,7 @@ ${l}`:""}`)}al(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw Lr(r,"Reindex
293
293
  FROM documents
294
294
  WHERE language = 'vue' OR relative_path LIKE '%.vue'
295
295
  ORDER BY relative_path
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(`
296
+ `).all().map(r=>Hl(t,r.relativePath))}function Ha(e,t){let{vueCore:n,ts:r,volarTs:i}=Yl(e),{parsed:o,vueOptions:a}=Kl(n,r,t),s=Wa(t),c=n.createVueLanguagePlugin(r,o.options,a,f=>f),d=Xl(n,r,c),u=Ql(s,o),{languageServiceHost:l}=i.createLanguageServiceHost(r,r.sys,d,f=>f,u),p=r.createLanguageService(l);return{ts:r,language:d,languageService:p,fileNames:o.fileNames,configDir:s}}function Yl(e){let t=Bl(zl(qa(e,"package.json")).href);return{vueCore:mr(t,"@vue/language-core",e),ts:mr(t,"typescript",e),volarTs:mr(t,"@volar/typescript",e)}}function Kl(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,Wa(n),void 0,n,void 0,e.getAllExtensions(o).map(a=>({extension:a.slice(1),isMixedContent:!0,scriptKind:t.ScriptKind.Deferred}))),vueOptions:o}}function Xl(e,t,n){let r={},i=e.createLanguage([n],new Map,o=>{if(!Ul(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)??ip(o))});return r.current=i,i}function Ql(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 za(e,t,n){let r=Zl(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:ep(c.starts,s.line,2,i.name)}}function Zl(e){let t=e.prepare(`
297
297
  SELECT
298
298
  d.relative_path AS relativePath,
299
299
  der.start_line AS startLine,
@@ -304,22 +304,22 @@ ${l}`:""}`)}al(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw Lr(r,"Reindex
304
304
  JOIN documents d ON d.id = der.document_id
305
305
  JOIN global_symbols gs ON gs.id = der.symbol_id
306
306
  ORDER BY d.relative_path, (der.end_line - der.start_line) DESC
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(`
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 ep(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=sp(t),i=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),o=e.prepare(`
308
308
  INSERT OR IGNORE INTO global_symbols (symbol, display_name, kind, documentation)
309
309
  VALUES (?, ?, ?, ?)
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(`
310
+ `),a=0,s=new Map;return e.transaction(()=>{for(let d of n){let u=Q(t,d),l=ns(r.name,r.version,u);o.run(l,"default",7,`Vue component|${u}`);let p=cp(i,r,t,d);p&&(a++,s.set(d,p))}})(),{get(d){return s.get(d)??null},syntheticSymbols:a}}function Ja(e,t,n,r,i){return e.transaction(()=>(Jl(e),tp(e,t,n,r),np(e,i)))()}function tp(e,t,n,r){let i=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),o=e.prepare(`
311
311
  INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
312
312
  VALUES (?, ?, ?, ?, X'00')
313
313
  `),a=e.prepare(`
314
314
  INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
315
315
  VALUES (?, ?, 1)
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(`
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 Ya(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 Ka(e){let t=new Set,n=[];for(let r of e){let i=Xa(r);t.has(i)||(t.add(i),n.push(r))}return n}function Xa(e){return[e.sourceFile,e.sourceLine,e.sourceStartChar,e.sourceEndChar,e.symbolId].join(":")}function np(e,t){let n=ap(e,[...new Set(t.map(c=>c.sourceFile))]),r=e.prepare(`
317
317
  INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
318
318
  VALUES (?, ?, ?, ?, X'00')
319
319
  `),i=e.prepare(`
320
320
  INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
321
321
  VALUES (?, ?, 0)
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(`
322
+ `),o=new Set,a=0,s=0;for(let c of t){let d=Xa(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*Qa(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 rp(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 es(e,t){return Q(e,t).startsWith("node_modules/")}function Q(e,t){return ql(e,t).replaceAll("\\","/")}function ip(e){switch(Wl(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 ts(){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:op(n)};return e.set(t,r),r}catch{return e.set(t,null),null}},positionAt:rp}}function op(e){let t=[0];for(let n=0;n<e.length;n++)e.charCodeAt(n)===10&&t.push(n+1);return t}function ap(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 sp(e){try{let t=JSON.parse(E(qa(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 cp(e,t,n,r){let i=Q(n,r),o=ns(t.name,t.version,i);return e.get(o)?.id??null}function ns(e,t,n){let r=n.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${r}/default.`}function ds(e){return{id:"vue-resolved-references",facts:["synthetic-symbol","source-mapped-occurrence","definition-mention","replacement-chunk","fingerprint-cache"],run:t=>pp({projectRoot:t.projectRoot,dbPath:t.dbPath,tsconfig:e.tsconfig,onStatus:t.onStatus})}}function up(e){return U(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),U(ds({tsconfig:e.tsconfig}),{projectRoot:e.projectRoot,dbPath:e.dbPath,onStatus:e.onStatus}).result}async function lp(e){return U(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),fp(e)}function pp(e){let t=cs(e.projectRoot,e.tsconfig);if(!os(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new is(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=ss(as(e.dbPath),"augment-vue-meta.json");return Xi({cachePath:i,readFingerprint:()=>ps(n,e.projectRoot,e.tsconfig),compute:()=>gp({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 fp(e){let t=cs(e.projectRoot,e.tsconfig);if(!os(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new is(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=ss(as(e.dbPath),"augment-vue-meta.json");return await Qi({cachePath:i,readFingerprint:()=>ps(n,e.projectRoot,e.tsconfig),compute:()=>mp({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 gp(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=ls(e,t);return us(e,t,n)}async function mp(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=$a(e.vueFiles)?await Va({projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,vueFiles:e.vueFiles}):ls(e,t);return us(e,t,n)}function us(e,t,n){let r=Ka(n.occurrences),i=Ja(e.db,e.projectRoot,e.vueFiles,t,r),o={vueFiles:e.vueFiles.length,resolvedReferences:r.length,resolvedReferenceSamples:vp(e.db,r,20),insertedMentions:i,skippedReferences:n.skippedReferences,skippedReferenceReasons:n.skippedReferenceReasons,skippedReferenceSamples:Pp(n.skippedReferenceSamples,20),syntheticSymbols:t.syntheticSymbols};return e.onStatus?.(`Resolved ${o.resolvedReferences} Vue references with Volar; inserted ${o.insertedMentions} mentions.`),o}function ls(e,t){let n=hp({db:e.db,projectRoot:e.projectRoot,configPath:e.configPath,vueSymbolLookup:t});return yp({...n,vueFiles:n.context.fileNames.filter(r=>r.endsWith(".vue"))})}function ps(e,t,n){let r=e.prepare(`
323
323
  SELECT
324
324
  (SELECT COUNT(*) FROM documents) AS documents,
325
325
  (SELECT COUNT(*) FROM global_symbols) AS symbols,
@@ -328,10 +328,10 @@ ${l}`:""}`)}al(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw Lr(r,"Reindex
328
328
  (SELECT COUNT(*) FROM defn_enclosing_ranges) AS ranges,
329
329
  (SELECT MAX(id) FROM chunks) AS maxChunkId,
330
330
  (SELECT MAX(id) FROM global_symbols) AS maxSymbolId
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(`
331
+ `).get();return{version:3,tsconfig:n,files:dt(t),db:r}}function hp(e){let t=ts();return{projectRoot:e.projectRoot,context:Ha(e.projectRoot,e.configPath),symbolLookup:za(e.db,e.projectRoot,t),vueSymbolLookup:e.vueSymbolLookup,sourceReader:t}}function yp(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=Sp(e,i);t.push(...o.occurrences),Mt(n,o)}return{occurrences:t,...n}}function Sp(e,t){let n=e.sourceReader.get(t.fileName);if(!n)return rs(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 rs(e.projectRoot,t,"missing-service-script");let o=e.context.language.maps.get(i,r),a=Q(e.projectRoot,t.fileName),s=[...Qa(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:wp(s),processedStarts:new Set};return bp({...e,fileName:t.fileName,sourceInfo:n,sourceFile:a,map:o,tokenContext:c})}function bp(e){let t=[],n=Te();for(let r of e.tokenContext.tokens){if(e.tokenContext.processedStarts.has(r.start)||Rp(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=>!es(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=xp(e.sourceFile,r.text,s);if(c){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,c);continue}let d=Ya(a,e.symbolLookup,e.vueSymbolLookup,e.context,e.projectRoot);if(d===null){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"unindexed-definition");continue}fs(t,e.sourceReader,e.sourceInfo,e.sourceFile,r,s,d),e.tokenContext.processedStarts.add(r.start),Ep(t,e,r,i,s,d)}return{occurrences:t,...n}}function Rp(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 xp(e,t,n){return n===e?"same-file-definition":n.endsWith(".vue")&&t!==n.split("/").at(-1)?.replace(/\.vue$/,"")?"unindexed-definition":null}function rs(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 Ip(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 Pp(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 vp(e,t,n){let r=e.prepare("SELECT symbol FROM global_symbols WHERE id = ?");return Ip(t,n).map(({symbolId:i,...o})=>({...o,definitionSymbol:r.get(i)?.symbol??`symbol-id:${i}`}))}function Ep(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&&(fs(e,t.sourceReader,t.sourceInfo,t.sourceFile,s,i,o),t.tokenContext.processedStarts.add(a))}}function fs(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 wp(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=kp(r,d.textSpan.start,o,i.text);u!==null&&s.push(u)}return s}function kp(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 SS(e){let{projectRoot:t,maxHeapMb:n=8192,onStatus:r=console.log}=e,i=e.skipAutoInstall===!0||e.installMissing!==!0,o=Cp(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=ct("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&&!da(t,o.outputDb)&&gs(o.outputScip)===gs(A(S(o.outputDb),"index.scip"))){let y=Ne(t);if(u=y?.clean?Ft(y,d):void 0,y&&!y.clean&&!Ap(o)){let x=ua(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}),fa(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(!Op(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 pa(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 f=ue(A(S(o.outputDb),"cache-lifecycle.lock"),{waitMs:3e4});if(!f)throw l?.(),new Error(`Could not acquire codebaseiq cache lifecycle lock for ${S(o.outputDb)}.`);let g;try{g=await je("reindex.lock",()=>sf(A(S(o.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:r}),{languages:c.length})}catch(y){throw f.release(),l?.(),y}let h=null,b=bi();try{Hn(o.outputDb,o.outputScip,o.metaPath);let y=Mp(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=ct("reindex.reuse-check",()=>(x=Lp({opts:e,paths:o,languages:c,fingerprint:d,start:a,monotonicStart:s,onStatus:r}),x),()=>({languages:c.length,reused:x!==null}));if(P){ms({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=Np(o);h=k.runDir;let T,v=await je("reindex.fresh",async()=>(T=await Gp({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}));ms({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)});Ls(o.metaPath,x);let P=gi(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)}`)}}g(),f.release(),l?.()}}function ms(e){if(e.snapshot)try{let t=Ne(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=la({snapshot:e.snapshot,sourceCacheDir:S(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let i=Ne(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 Op(e,t){if(!N(e.outputScip)||!N(e.outputDb)||!Cs(e.metaPath,t))return!1;let n=H(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function Ap(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(xi({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 Cp(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 Lp(e){let t=H(e.paths.outputDb,e.paths.metaPath);if(e.opts.skipIfUnchanged===!1||!N(e.paths.outputScip)||!N(e.paths.outputDb)||!Cs(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 Ls(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:jp(e.paths,e.opts.projectRoot,e.languages,e.opts)}}function jp(e,t,n,r){let i=Os(t,n,r);return n.map(o=>({id:o,language:o,reused:!0,fingerprint:Xe(i[o]),outputBytes:Qe(Er(e.outputDb,o)),durationMs:0}))}function Np(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 Mp(e){let t=[],n;try{n=Is(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 Gp(e){let t={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},n,r=await je("reindex.language-indexers",async()=>(n=await Vp(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(", ")}`),$p({run:e,indexedOutputs:i,skippedLanguages:o,reusedLanguages:a})){let f=ct("reindex.publish",()=>Kp(e,i,o,a,s,d),{mode:"metadata-only",languages:i.length,reused:a.length}),g=f.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(g/1e3).toFixed(1)}s`),{languages:i.map(h=>h.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:g,reused:!0,skipped:o,lastRefresh:f,shards:c,writeTelemetry:e.writeTelemetry}}let l=await je("reindex.publish",()=>Yp(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(f=>f.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:o,lastRefresh:l,shards:c,writeTelemetry:e.writeTelemetry}}function $p(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 Vp(e,t){let n=Hp({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?Da({projectRoot:e.projectRoot,cacheDir:S(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:o.scipPath,candidateShardPath:Ze(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:Ze(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:Bp(e,n),{preparedRuns:f,skippedLanguages:g,languageOutputScipPaths:h}=Zp({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?f.filter(M=>M.language!=="typescript"||p.missedProjectIds.has(M.id)):f,y=await Aa(b,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal),x=[];if(p){Wp(e.paths.outputDb,y,e.writeTelemetry);let M=h.typescript??e.tempPaths.tempOutputScip;x=qp({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:M,reusedProjects:p.reusedProjects,writeTelemetry:e.writeTelemetry})}let P=[...y,...x],{indexedOutputs:k}=tf(P,g),T=u?[{language:"typescript",scipPath:u.scipPath}]:[],v=[...r,...T,...k];nf(v,g,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:Qe(u.scipPath)??void 0}]:[],Se=zp(n,[...y,...ye],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0);return{indexedOutputs:v,skippedLanguages:g,reusedLanguages:[...i],languageFingerprints:Jp(n,e.languages),shards:Se,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:u??void 0}}function Bp(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=oo(e.projectRoot,r),o=no(n.fingerprint.files,r),a=ro(r,i),s=io(r,o,a),c=De(e.paths.metaPath),u=Up(c,s,g=>N(Bt(e.paths.outputDb,g))),l=[...u.entries()].filter(([,g])=>g.reused).map(([g])=>g),p=new Set(l),f=new Set(r.filter(g=>!p.has(g)).map(g=>`typescript:${g}`));return{allProjects:r,fingerprints:s,classification:u,reusedProjects:l,missedProjectIds:f}}function Up(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 Wp(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 qp(e){return e.reusedProjects.map((t,n)=>{let r=Bt(e.outputDb,t),i=Ze(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:Qe(i)??void 0}})}function Hp(e){let t=De(e.paths.metaPath),n=Os(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 zp(e,t,n){let r=[];for(let[i,o]of e)o.reused&&r.push({id:i,language:i,reused:!0,fingerprint:Xe(o.fingerprint),outputBytes:Qe(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?Xe(s.fingerprint):o?Xe(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:Xe(o.fingerprint),outputBytes:Qe(Bt(n.outputDb,i)),durationMs:0});return r}function Xe(e){return Dp("sha256").update(Z(e)).digest("hex").slice(0,16)}function Qe(e){try{return Fp(e).size}catch{return null}}function Jp(e,t){let n={};for(let r of t){let i=e.get(r);i&&(n[r]=i.fingerprint)}return n}async function Yp(e,t,n,r,i,o,a,s){$(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,d=!1;c&&(hs(e.paths.outputDb,n,e.writeTelemetry),d=ys(n,e.tempPaths.tempOutputScip,e.onStatus));let u=await rf({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..."),Fa({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 hs(e.paths.outputDb,k,e.writeTelemetry),d=ys(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=ai(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),f=u.mode==="incremental"&&s?af(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"}),g=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}=Es({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,languageFingerprints:b,typescriptProjectShardContext:a,lastRefresh:g});y.scipCompanion=h?"deferred":"current",ws(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)`),Bo(S(e.paths.outputDb),u.mode==="incremental"&&u.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),Do(S(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[]),vs(e.paths.outputDb,f,e.onStatus),g}function Kp(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=Ei("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}=Es({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:d});return ws(e.paths.outputDb,l),wr(e.paths.metaPath,u),zn(e.paths.outputDb,e.paths.metaPath),vs(e.paths.outputDb,s,e.onStatus),d}function vr(e){return _r(De(e)?.fingerprint)}function vs(e,t,n){try{wi(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 Es(e){let t=Xp({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 Xp(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 ws(e,t){let n=As(e);if(t===null){F(()=>ke(n,{recursive:!0,force:!0}));return}let r;try{r=Is(n)}catch{return}for(let i of Qp(r,t))F(()=>ke(A(n,i),{force:!0}))}function Qp(e,t){let n=new Set(t.map(r=>`${kn(r)}.scip`));return e.filter(r=>!n.has(r))}function hs(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 Zp(e){let t=[],n=[],r=e.languages.map((o,a)=>({language:o,scipPath:e.languages.length>1?Ze(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=ef({...e,language:o,scipPath:a});for(let c of s)"skipped"in c?Ts(n,c.skipped):t.push(c.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:i}}function ef(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:Ze(e.tempOutputScip,"typescript-project",r),outputScipPath:e.scipPath,pnpmWorkspaces:!1,projectPath:n})))}function xr(e){let t=mt(e.language),n=Me(t),r=rn(t,e.projectRoot),i=e.trustProjectTools&&r?Zr(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=Ci({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 tf(e,t){let n=new Map;for(let i of e)if(i.skipped)Ts(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&&Ps(o,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath})}return{indexedOutputs:r}}function Ts(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 nf(e,t,n,r,i){if(e.length===0){let o=t.map(a=>` - ${a.language}: ${a.reason}`).join(`
333
333
  `);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
334
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.
335
335
  `+t.map(o=>` - ${o.language}: ${o.reason}`).join(`
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};
336
+ `))}function ys(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 ks(i,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&Ps(e[0].scipPath,t);return!1}async function rf(e){let t;if(of(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();Ss(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=Hi({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 Ss(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 of(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 af(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 Ss(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{ks(go(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 ks(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function Ze(e,t,n){let r=_p(e)||".scip",i=Gt(e,r);return A(S(e),`${i}.${n+1}.${t}${r}`)}async function sf(e,t){for(let n=0;n<2;n++){let r=cf(e,t);if(r)return r;let i=df(e);if(i&&_s(t.trigger,i)){t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}.`);let o;try{o=await lf(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 cf(e,t){let n=te(process.pid),r=nt(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=Ds(r.reclaimed,e);i&&_s(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 df(e){return Ds(Jt(e,{parseLegacy:Vt}),e)}var Vt=e=>{let t=Fs(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function Ds(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 Fs(e.parsed,t)}function Fs(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 _s(e,t){return e?.kind==="manual-cli"&&uf(t?.trigger)}function uf(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function lf(e){return!ne(e.pid)||(Ir(e),bs(e,"SIGTERM"),await Rs(e,2e3))?!0:(Ir(e),bs(e,"SIGKILL"),Rs(e,1e3))}function bs(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 Rs(e,t){let n=I()+t;for(;I()<n;){if(xs(e))return!0;await pf(50)}return xs(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 xs(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 pf(e){return new Promise(t=>setTimeout(t,e))}function Os(e,t,n){return Object.fromEntries(t.map(r=>{let i=r==="typescript"?Jr(n.typescriptProjects):[],o=r==="clojure"?ff(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"&&gf(n),...s,clojureConfigPath:o,files:dt(e,{language:r,markerFiles:a})}]}))}function ff(e){return e?.trim()||void 0}function gf(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function Er(e,t){return A(S(e),"language-indexes",`${t}.scip`)}function As(e){return A(S(e),"language-indexes","typescript-projects")}function Bt(e,t){return A(As(e),`${kn(t)}.scip`)}function De(e){try{return qt(ee(L(e,"reindex metadata")))}catch{return null}}function Cs(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 Ls(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{Ai as INDEXER_CONFIGS,Ri as augmentAuxiliaryDocuments,up as augmentVueResolvedReferences,lp as augmentVueResolvedReferencesAsync,oe as auxiliaryDocumentsAugmentationStage,Me as describeIndexerBinary,ln as detectLanguages,mt as getIndexerConfig,on as getIndexerExecutionEnv,tn as isBinaryAvailable,nn as isIndexerInstalled,xn as mergeScipFiles,Rn as mergeScipIndexes,SS as reindex,Pe as resolveIndexerBinary,rn as resolveProjectLocalIndexerBinary,U as runPostIndexAugmentation,gr as tryInstallIndexer,ds as vueResolvedReferencesAugmentationStage};
337
337
  //# sourceMappingURL=reindex.js.map