codebaseiq 0.1.0 → 0.2.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.
- package/CHANGELOG.md +47 -0
- package/dist/augment-vue-worker.js +1 -1
- package/dist/{chunk-DQMDCD24.js → chunk-27PHVDKL.js} +2 -2
- package/dist/{chunk-ZMI2JSX2.js → chunk-2DMVFAY7.js} +2 -2
- package/dist/{chunk-5PUWMSDU.js → chunk-2E6BTWER.js} +2 -2
- package/dist/{chunk-YESXMKX3.js → chunk-2F5ERMNI.js} +2 -2
- package/dist/chunk-2VKB5CMA.js +60 -0
- package/dist/{chunk-NNJ2KZZG.js → chunk-327YK6TB.js} +4 -4
- package/dist/chunk-347TXATM.js +2 -0
- package/dist/{chunk-VEXUL62T.js → chunk-35YYZD3D.js} +2 -2
- package/dist/chunk-36WRYYTE.js +3 -0
- package/dist/chunk-37TKC6MB.js +2 -0
- package/dist/{chunk-FAJQ7LWY.js → chunk-3AC56WAR.js} +2 -2
- package/dist/{chunk-JE3WZ6II.js → chunk-3NUZVLR7.js} +2 -2
- package/dist/{chunk-UZGZB3VB.js → chunk-3XFJUWJE.js} +2 -2
- package/dist/{chunk-OVTS4DKB.js → chunk-4AOOSCZ7.js} +2 -2
- package/dist/{chunk-LU3BMVH2.js → chunk-4IFISPQW.js} +2 -2
- package/dist/chunk-4NHWNAWQ.js +11 -0
- package/dist/chunk-4O52YNKL.js +5 -0
- package/dist/{chunk-HPJRBHVT.js → chunk-54K6556S.js} +2 -2
- package/dist/{chunk-HRWGYWRJ.js → chunk-57GCCPLS.js} +2 -2
- package/dist/{chunk-J77SU6VA.js → chunk-57KEZDPT.js} +2 -2
- package/dist/{chunk-OFBE4NGP.js → chunk-57KFVPVZ.js} +2 -2
- package/dist/{chunk-WOQBZPIF.js → chunk-5BDK6QC3.js} +2 -2
- package/dist/{chunk-7MGU3HPH.js → chunk-5IO2APSS.js} +2 -2
- package/dist/chunk-5NJPH3QZ.js +61 -0
- package/dist/{chunk-GW6Z3WGY.js → chunk-5WXOEJ4G.js} +2 -2
- package/dist/chunk-5XEVXVTK.js +3 -0
- package/dist/{chunk-RR7SX44N.js → chunk-6OVNYYY4.js} +2 -2
- package/dist/{chunk-ZV3JV5G5.js → chunk-6SDEQTVY.js} +2 -2
- package/dist/{chunk-EF2R3WNQ.js → chunk-6URCE5QY.js} +2 -2
- package/dist/{chunk-UCD3H3UZ.js → chunk-6ZV5EDUT.js} +2 -2
- package/dist/{chunk-C6SBF2WH.js → chunk-77GHPR2R.js} +2 -2
- package/dist/{chunk-YVCIMIOC.js → chunk-7R64XY4Y.js} +2 -2
- package/dist/{chunk-VXYS3FZD.js → chunk-7Z7HCZ7J.js} +2 -2
- package/dist/{chunk-CO5R3UNA.js → chunk-A67HT5FR.js} +2 -2
- package/dist/{chunk-UDS562V4.js → chunk-A7XQT7MH.js} +2 -2
- package/dist/{chunk-RDBI2RXU.js → chunk-ACZDU5GK.js} +2 -2
- package/dist/{chunk-FETNQCFO.js → chunk-AM5SUGHF.js} +2 -2
- package/dist/{chunk-NNOKTMZT.js → chunk-B2E3HZ2A.js} +2 -2
- package/dist/{chunk-CVYSU6BX.js → chunk-BH5CE4LN.js} +2 -2
- package/dist/chunk-BLKYYQ7C.js +543 -0
- package/dist/{chunk-4WKDMDEW.js → chunk-BX2U3QQV.js} +2 -2
- package/dist/{chunk-ZKX2FRS6.js → chunk-CANBLFVQ.js} +2 -2
- package/dist/{chunk-SMRBZ6EC.js → chunk-CCRZLRWJ.js} +2 -2
- package/dist/chunk-CDWSLAPN.js +21 -0
- package/dist/chunk-CIVYHK7U.js +22 -0
- package/dist/{chunk-L57ZKWVG.js → chunk-CMXW7MFV.js} +2 -2
- package/dist/{chunk-T3DGWPXM.js → chunk-CSZOQ7YO.js} +2 -2
- package/dist/{chunk-ZZXSWSN6.js → chunk-CWMHWD56.js} +2 -2
- package/dist/{chunk-6NW7MU72.js → chunk-CZEIHYMP.js} +2 -2
- package/dist/{chunk-DO6WQD2T.js → chunk-D62CTZX6.js} +2 -2
- package/dist/{chunk-XWUOUWYI.js → chunk-DFPAZXLU.js} +2 -2
- package/dist/{chunk-MOVBWNIP.js → chunk-DKJXK3HA.js} +2 -2
- package/dist/{chunk-XMQ23E27.js → chunk-DLC6JDN7.js} +2 -2
- package/dist/chunk-DUKHVPU5.js +4 -0
- package/dist/{chunk-ID63777H.js → chunk-DVYG3JTA.js} +2 -2
- package/dist/{chunk-NE6IU5ZD.js → chunk-EFFMFK7C.js} +2 -2
- package/dist/{chunk-I2T2LLK2.js → chunk-EM5UHLAM.js} +2 -2
- package/dist/chunk-EN4AHLL3.js +3 -0
- package/dist/chunk-EXMVF3JR.js +3 -0
- package/dist/{chunk-SWHMHUKF.js → chunk-FEBLLMTL.js} +2 -2
- package/dist/chunk-FIXYHQ3W.js +3 -0
- package/dist/{chunk-RKEJ6VTF.js → chunk-FLLXYUOL.js} +2 -2
- package/dist/{chunk-KWVHSKHK.js → chunk-FPDL2TUB.js} +2 -2
- package/dist/chunk-FQA3KIFX.js +17 -0
- package/dist/chunk-FWY2PRIF.js +3 -0
- package/dist/chunk-FY5V4V4F.js +2 -0
- package/dist/chunk-G2XUZCF2.js +88 -0
- package/dist/{chunk-QHRNXP3C.js → chunk-GXVDTHFC.js} +2 -2
- package/dist/{chunk-6MUIJMVL.js → chunk-H3CKAL6P.js} +2 -2
- package/dist/chunk-H5QXP63L.js +2 -0
- package/dist/{chunk-VUIYB2V3.js → chunk-HBQGKMM3.js} +2 -2
- package/dist/{chunk-PYAB5SM6.js → chunk-HBXZAGY6.js} +2 -2
- package/dist/{chunk-NNO6A2PO.js → chunk-HCMQZPEO.js} +2 -2
- package/dist/{chunk-Q65CQ4XL.js → chunk-HHBBGWES.js} +2 -2
- package/dist/{chunk-GTXSJDCO.js → chunk-HIEXRDJF.js} +2 -2
- package/dist/{chunk-4FC325IF.js → chunk-HYKSLTAR.js} +2 -2
- package/dist/{chunk-XLQ3GLWZ.js → chunk-I2KP4AGR.js} +2 -2
- package/dist/chunk-I5FCDTK2.js +2 -0
- package/dist/{chunk-QKPLA6IC.js → chunk-I645ZF75.js} +2 -2
- package/dist/{chunk-FDGD5AB5.js → chunk-IBM3F2BJ.js} +2 -2
- package/dist/{chunk-Q72QSKXC.js → chunk-IEL6Q5W3.js} +38 -38
- package/dist/{chunk-NCZUNH3E.js → chunk-IGQQUENU.js} +12 -12
- package/dist/chunk-IGYAZPRX.js +4 -0
- package/dist/chunk-IOVPAZWP.js +3 -0
- package/dist/{chunk-OL6KJP3N.js → chunk-IVJJNVSX.js} +2 -2
- package/dist/{chunk-AKB7V7TV.js → chunk-IWAMYGPN.js} +2 -2
- package/dist/chunk-IYBIBMPF.js +90 -0
- package/dist/{chunk-IOP6FWIM.js → chunk-J24VICI5.js} +2 -2
- package/dist/{chunk-C7QOQX32.js → chunk-JN5LIBT3.js} +2 -2
- package/dist/{chunk-O6QTXQPJ.js → chunk-JOALNFY3.js} +2 -2
- package/dist/{chunk-GCHRX4YW.js → chunk-JUO3Z644.js} +2 -2
- package/dist/{chunk-BJ6SQAEN.js → chunk-JXHLB7TP.js} +2 -2
- package/dist/{chunk-IJ4HMYBE.js → chunk-JYX5UZSZ.js} +2 -2
- package/dist/chunk-K2O7SBAU.js +2 -0
- package/dist/{chunk-OLF4MA5W.js → chunk-K5G7SPAG.js} +2 -2
- package/dist/{chunk-YSNONTJ2.js → chunk-KDYQQJ6X.js} +2 -2
- package/dist/{chunk-7NVGT435.js → chunk-KM4QRWI5.js} +2 -2
- package/dist/{chunk-HKQUXIFO.js → chunk-KNV5VFDV.js} +2 -2
- package/dist/chunk-L3YSDLNB.js +2 -0
- package/dist/{chunk-EZNMUY67.js → chunk-LAGDJXFY.js} +2 -2
- package/dist/{chunk-ENCCHKM6.js → chunk-LY2NB5XR.js} +4 -4
- package/dist/chunk-M4EVGA5S.js +14 -0
- package/dist/chunk-M7LAIM77.js +127 -0
- package/dist/{chunk-BVAJLC5A.js → chunk-MRGTCMDK.js} +2 -2
- package/dist/{chunk-OZYRSMSH.js → chunk-MT5W4DUG.js} +2 -2
- package/dist/{chunk-VE5AVNMP.js → chunk-MTMF4N7F.js} +2 -2
- package/dist/chunk-N3Q3AWGW.js +545 -0
- package/dist/{chunk-TXXOEMZJ.js → chunk-NDGTJHQN.js} +2 -2
- package/dist/chunk-NIO346UL.js +2 -0
- package/dist/chunk-NJA4MMBD.js +2 -0
- package/dist/{chunk-7FND7D7N.js → chunk-NK76RSB6.js} +2 -2
- package/dist/{chunk-H3LGFZVK.js → chunk-NTRW52UR.js} +2 -2
- package/dist/{chunk-JOIRNPPY.js → chunk-OJFLPVBP.js} +2 -2
- package/dist/{chunk-KMITESMT.js → chunk-OMBRP7BB.js} +2 -2
- package/dist/{chunk-UP3BUZR5.js → chunk-OVKZM2XI.js} +2 -2
- package/dist/{chunk-MVB3DAEY.js → chunk-PARCKE3Q.js} +2 -2
- package/dist/{chunk-CAUCPUOF.js → chunk-PFPHS4NO.js} +2 -2
- package/dist/chunk-PHPQ24UG.js +22 -0
- package/dist/chunk-PLZXWZHY.js +77 -0
- package/dist/{chunk-34WBMAYK.js → chunk-PNVZIJ57.js} +2 -2
- package/dist/{chunk-SYDJMPES.js → chunk-QKVTWODE.js} +2 -2
- package/dist/{chunk-FW53T7EB.js → chunk-QLTFXVUI.js} +2 -2
- package/dist/{chunk-PBI2LFKH.js → chunk-QMGWSEPL.js} +2 -2
- package/dist/{chunk-CQP3THUZ.js → chunk-QVHZB75Z.js} +2 -2
- package/dist/{chunk-6BQ3DSPK.js → chunk-QVWDQTMG.js} +2 -2
- package/dist/{chunk-ST7V3SKN.js → chunk-RCPZOPV6.js} +2 -2
- package/dist/chunk-RJWAB4VR.js +345 -0
- package/dist/chunk-RRPK327J.js +20 -0
- package/dist/chunk-RVYLJDXC.js +21 -0
- package/dist/chunk-RWKEXCHU.js +3 -0
- package/dist/{chunk-L4NRUAGJ.js → chunk-S5SKXCND.js} +2 -2
- package/dist/{chunk-RBAS5ZHI.js → chunk-S64NCE2Z.js} +2 -2
- package/dist/{chunk-WMPRTGH2.js → chunk-SF34QLK2.js} +2 -2
- package/dist/{chunk-ANFVSJWQ.js → chunk-SJZQ2PTZ.js} +2 -2
- package/dist/{chunk-4XTAUQFD.js → chunk-SRY26ITJ.js} +2 -2
- package/dist/chunk-SV2LEFVM.js +2 -0
- package/dist/{chunk-7XAN6GKB.js → chunk-T3YFIJ5P.js} +2 -2
- package/dist/chunk-T55YPJGB.js +3 -0
- package/dist/chunk-TAJ6UGCO.js +21 -0
- package/dist/{chunk-PIOMTC27.js → chunk-TUTSO7UZ.js} +2 -2
- package/dist/{chunk-FQKZWM4L.js → chunk-U24M5RQM.js} +5 -5
- package/dist/{chunk-XME3HPXZ.js → chunk-U2XX3BT4.js} +2 -2
- package/dist/{chunk-SZD2KF7Q.js → chunk-UWB5WMC2.js} +2 -2
- package/dist/{chunk-6CS3UQTN.js → chunk-VCL7FK3E.js} +2 -2
- package/dist/{chunk-N3IQCBCF.js → chunk-VCWAJPXQ.js} +2 -2
- package/dist/{chunk-LZYFLFEH.js → chunk-VG55NFXF.js} +2 -2
- package/dist/{chunk-PTAWHLVJ.js → chunk-VLTUX4IF.js} +2 -2
- package/dist/{chunk-JEJLSICM.js → chunk-VVCBMH5O.js} +2 -2
- package/dist/{chunk-JSOYNVWH.js → chunk-VYZQZ4ZN.js} +2 -2
- package/dist/chunk-W3FK73MD.js +8 -0
- package/dist/{chunk-UNBY47BC.js → chunk-W6C6QTXJ.js} +2 -2
- package/dist/chunk-WH5SYOMD.js +2 -0
- package/dist/chunk-WJOQC4P7.js +7 -0
- package/dist/chunk-WO47BIPY.js +3 -0
- package/dist/chunk-WOOTEWQT.js +239 -0
- package/dist/{chunk-UBGWN7I4.js → chunk-X5I2BQGX.js} +2 -2
- package/dist/{chunk-PX4RYAAK.js → chunk-XNUWRTYM.js} +2 -2
- package/dist/{chunk-ICFDQHAM.js → chunk-XUJM6474.js} +2 -2
- package/dist/chunk-XYLV727H.js +21 -0
- package/dist/{chunk-TRRC4ZJ7.js → chunk-YFQPWKHR.js} +2 -2
- package/dist/{chunk-NEDP5RFQ.js → chunk-YIOQJ45A.js} +2 -2
- package/dist/{chunk-Y6KHROC3.js → chunk-YXJ4IAHH.js} +2 -2
- package/dist/chunk-YYFV32WR.js +3 -0
- package/dist/{chunk-BH5F2Q4O.js → chunk-ZB3V5QM7.js} +2 -2
- package/dist/chunk-ZJZQ7Q2Q.js +3 -0
- package/dist/{chunk-EMNIHCRB.js → chunk-ZNQCR656.js} +2 -2
- package/dist/{chunk-TIIC3ZE7.js → chunk-ZOEDRCR4.js} +2 -2
- package/dist/cli-context-TSADTXLB.js +2 -0
- package/dist/cli-context-XEPPF4RX.js +3 -0
- package/dist/cli-program-KJGQEM72.js +7 -0
- package/dist/cli.js +1 -1
- package/dist/{code-DlqpBDd0.d.ts → code-CDe-mIjx.d.ts} +1 -1
- package/dist/code-viewer-YGDON6SY.js +12 -0
- package/dist/code-viewer-ZCTHXQ5C.js +11 -0
- package/dist/command-descriptors-5VAB2MZX.js +335 -0
- package/dist/command-descriptors-EAHKIRAG.js +337 -0
- package/dist/{config-types-BNoC96J3.d.ts → config-types-D6X5S68_.d.ts} +50 -0
- package/dist/{db-D7sauVFH.d.ts → db-DmRNdCtm.d.ts} +1 -1
- package/dist/direct-navigation-B3SGOOBW.js +2 -0
- package/dist/direct-navigation-ZL362KXF.js +3 -0
- package/dist/{graph-evidence-BIFqyisO.d.ts → graph-evidence-Bs54NWws.d.ts} +1 -1
- package/dist/{health-DJaZXg8I.d.ts → health-BnzbSLCE.d.ts} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/invocation-command-descriptors-CSUGUHTT.js +2 -0
- package/dist/invocation-command-descriptors-PPVZOIE5.js +3 -0
- package/dist/output-continuation-command-FTVVBVSN.js +2 -0
- package/dist/output-continuation-command-ITPRC3YV.js +3 -0
- package/dist/project-reindex-7HZSLLLY.js +3 -0
- package/dist/project-reindex-NGM3DYBN.js +2 -0
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/anchors.d.ts +2 -2
- package/dist/queries/anchors.js +1 -1
- package/dist/queries/architecture.d.ts +2 -2
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.d.ts +2 -2
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +2 -2
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +2 -2
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +2 -2
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +3 -3
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +2 -2
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +2 -2
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/context.d.ts +2 -2
- package/dist/queries/context.js +1 -1
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +2 -2
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +2 -2
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +2 -2
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +2 -2
- package/dist/queries/dead.js +1 -1
- package/dist/queries/decorative-checkers.d.ts +2 -2
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/deep-chains.d.ts +2 -2
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/dependence-slice.d.ts +3 -3
- package/dist/queries/dependence-slice.js +1 -1
- package/dist/queries/dependency-depth.d.ts +2 -2
- package/dist/queries/dependency-depth.js +1 -1
- package/dist/queries/deps.d.ts +2 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-impact.d.ts +2 -2
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +2 -2
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +2 -2
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +2 -2
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/entry-map.d.ts +2 -2
- package/dist/queries/entry-map.js +1 -1
- package/dist/queries/evidence.d.ts +3 -3
- package/dist/queries/evidence.js +1 -1
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +2 -2
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +3 -3
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +2 -2
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +2 -2
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +2 -2
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.d.ts +2 -2
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +5 -5
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +2 -2
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +2 -2
- package/dist/queries/not-implemented.js +1 -1
- package/dist/queries/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +2 -2
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +2 -2
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +2 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +2 -2
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.d.ts +2 -2
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.d.ts +2 -2
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +2 -2
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/reference-neighborhood.d.ts +2 -2
- package/dist/queries/reference-neighborhood.js +1 -1
- package/dist/queries/reference-reachability.d.ts +2 -2
- package/dist/queries/reference-reachability.js +1 -1
- package/dist/queries/refs.d.ts +2 -2
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +2 -2
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.d.ts +2 -2
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +2 -2
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +2 -2
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +2 -2
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +1 -1
- package/dist/queries/source-inspection.d.ts +4 -4
- package/dist/queries/source-inspection.js +1 -1
- package/dist/queries/source-search.d.ts +2 -2
- package/dist/queries/source-search.js +1 -1
- package/dist/queries/stale-abstractions.d.ts +2 -2
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +2 -2
- package/dist/queries/surface.d.ts +2 -2
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.d.ts +2 -2
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system-map.d.ts +2 -2
- package/dist/queries/system-map.js +1 -1
- package/dist/queries/system.d.ts +2 -2
- package/dist/queries/system.js +1 -1
- package/dist/queries/test-quality.d.ts +2 -2
- package/dist/queries/test-quality.js +1 -1
- package/dist/queries/trace.d.ts +2 -2
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.d.ts +2 -2
- package/dist/queries/twin-ab.js +1 -1
- package/dist/queries/twin-drift.d.ts +2 -2
- package/dist/queries/twin-drift.js +1 -1
- package/dist/queries/unused-imports.d.ts +2 -2
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.d.ts +2 -2
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/value-flow.d.ts +3 -3
- package/dist/queries/value-flow.js +1 -1
- package/dist/queries/vue-component-duplicates.d.ts +2 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +2 -2
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.d.ts +2 -2
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +2 -2
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/reindex-worker.js +1 -1
- package/dist/reindex.d.ts +3 -3
- package/dist/reindex.js +31 -31
- package/dist/runtime.d.ts +24 -4
- package/dist/runtime.js +3 -3
- package/dist/rust-semantic-session-server.js +1 -1
- package/dist/rust-semantic-session-worker.js +1 -1
- package/dist/rust-semantic-worker.js +1 -1
- package/dist/{scip-cli-B7N3haxa.d.ts → scip-cli-BRFKkHQn.d.ts} +1 -1
- package/dist/sentinel-ensure-command-KYYULCFU.js +2 -0
- package/dist/sentinel-ensure-command-RIZA3RY7.js +3 -0
- package/dist/sentinel-hook.js +39 -0
- package/dist/sentinel-worker.js +16 -0
- package/dist/typescript-mailbox-worker.js +1 -1
- package/dist/watch-server.js +6 -6
- package/docs/COMMAND_REFERENCE.md +5 -3
- package/docs/schemas/project-config.schema.json +159 -0
- package/package.json +9 -5
- package/skills/codebaseiq/SKILL.md +1 -1
- package/skills/concrete-plan/SKILL.md +1 -1
- package/ui/view/api.js +450 -0
- package/ui/view/app.js +394 -0
- package/ui/view/builder.js +323 -0
- package/ui/view/file-panel.js +170 -0
- package/ui/view/focus.js +379 -0
- package/ui/view/index.html +54 -0
- package/ui/view/map.js +424 -0
- package/ui/view/styles.css +1125 -0
- package/dist/chunk-2X7V4HS4.js +0 -88
- package/dist/chunk-3IER7Q6H.js +0 -12
- package/dist/chunk-3JSXXYTZ.js +0 -345
- package/dist/chunk-476NR5B7.js +0 -2
- package/dist/chunk-5VKBFZZU.js +0 -3
- package/dist/chunk-ADTBPVUZ.js +0 -21
- package/dist/chunk-BFFZDZQV.js +0 -2
- package/dist/chunk-BMYOV5GP.js +0 -77
- package/dist/chunk-C74PPYLA.js +0 -3
- package/dist/chunk-CWONGW6P.js +0 -3
- package/dist/chunk-DDZ7VHWV.js +0 -20
- package/dist/chunk-DR2LURYU.js +0 -3
- package/dist/chunk-ECQBG7PW.js +0 -564
- package/dist/chunk-FM5BPL4V.js +0 -60
- package/dist/chunk-G6XFR4ZL.js +0 -4
- package/dist/chunk-GTIYTDRE.js +0 -562
- package/dist/chunk-HOA5YGOH.js +0 -3
- package/dist/chunk-KUW32IRO.js +0 -2
- package/dist/chunk-LTA3BRZX.js +0 -2
- package/dist/chunk-NAUD7LCA.js +0 -2
- package/dist/chunk-OGTFJ3XD.js +0 -2
- package/dist/chunk-Q5ELPRKQ.js +0 -2
- package/dist/chunk-QCN62RTF.js +0 -3
- package/dist/chunk-QW7EP6WI.js +0 -21
- package/dist/chunk-RU65DDUP.js +0 -215
- package/dist/chunk-SELM5MER.js +0 -2
- package/dist/chunk-SNNWPCN7.js +0 -4
- package/dist/chunk-TFZB6XTM.js +0 -239
- package/dist/chunk-UXM43C7T.js +0 -3
- package/dist/chunk-VFY6Y2H6.js +0 -61
- package/dist/chunk-WE5RZHZ7.js +0 -5
- package/dist/chunk-Z54RD7VL.js +0 -3
- package/dist/cli-context-3SNLDYBM.js +0 -3
- package/dist/cli-context-T3B7W6GG.js +0 -2
- package/dist/cli-program-YNOXO72B.js +0 -7
- package/dist/command-descriptors-6AOUKWW7.js +0 -346
- package/dist/command-descriptors-ZFKJSRUP.js +0 -344
- package/dist/direct-navigation-DP4LVMRX.js +0 -3
- package/dist/direct-navigation-FLUS3BT6.js +0 -2
- package/dist/invocation-command-descriptors-QT2JMY5J.js +0 -3
- package/dist/invocation-command-descriptors-YN4QJEAX.js +0 -2
- package/dist/output-continuation-command-2V2SL4TD.js +0 -2
- package/dist/output-continuation-command-65J5IP3O.js +0 -3
- package/dist/project-reindex-5JOKXAXT.js +0 -2
- package/dist/project-reindex-UQBIKO4M.js +0 -3
package/dist/reindex.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{a as
|
|
2
|
-
VALUES (?, ?, NULL, ?)`),c=i.transaction(u=>{let l=0;for(let p of u){if(o.has(p))continue;let g=
|
|
3
|
-
`).filter(r=>r&&t.has(
|
|
1
|
+
import{a as J}from"./chunk-RRPK327J.js";import{a as si,b as ci,c as lt,d as cn,h as dn,i as fi,j as gi,k as un,m as ln,n as mi}from"./chunk-7R64XY4Y.js";import{a as ai}from"./chunk-YIOQJ45A.js";import{e as di,f as ui,g as li,i as pi}from"./chunk-U24M5RQM.js";import"./chunk-MTMF4N7F.js";import{A as ei,B as tn,E as nn,F as ti,G as rn,H as on,I as ni,J as ri,K as an,M as sn,R as ii,T as oi,a as jr,b as G,c as Nr,d as ue,e as ie,f as $,g as Re,h as Gr,i as it,j as Ht,k as V,l as $r,n as Vr,o as Le,p as zt,q as ot,s as le,t as je,u as Pe,v as Me,w as ve,x as Zt,y as en,z as Zr}from"./chunk-6ZV5EDUT.js";import"./chunk-BH5CE4LN.js";import"./chunk-ELNRLMC5.js";import"./chunk-3XFJUWJE.js";import{a as _r,b as Ce,c as te,d as ne,e as I,f as tt,g as Ut,h as Mr,i as F,j as rt,m as Qt,n as Qr}from"./chunk-CANBLFVQ.js";import"./chunk-ZOEDRCR4.js";import"./chunk-YUKYB54I.js";import{a as ut}from"./chunk-B2E3HZ2A.js";import"./chunk-AM5SUGHF.js";import"./chunk-JOALNFY3.js";import{I as Kr,J as Xr,a as at}from"./chunk-RVYLJDXC.js";import{a as j,b as Ae}from"./chunk-PLZXWZHY.js";import{a as Ie,c as Jr,f as Yr,j as dt,k as Kt,l as Xt}from"./chunk-IOVPAZWP.js";import{d as st,e as xe}from"./chunk-3LCDIREB.js";import{A,B as z,C as _,F as D,G as w,H as L,K as Lr,L as et,P as nt,Q as re,R as _e,S as Br,U as qr,V as Wr,W as Ur,X as Hr,Z as Jt,_ as Yt,ca as ct,e as Tr,f as be,fa as zr,g as Bt,h as Dr,i as Fr,k as Ar,l as Ze,m as O,u as Oe,v as ee,w as qt,x as Or,y as Wt,z as Cr}from"./chunk-327YK6TB.js";import{createHash as rp}from"crypto";import{existsSync as M,mkdirSync as Nt,readdirSync as hs,renameSync as ys,rmSync as De,statSync as ip}from"fs";import{basename as Mt,dirname as S,extname as op,join as C,resolve as cs}from"path";import{platform as ap}from"os";import{execFileSync as As}from"child_process";import{constants as Os,copyFileSync as hi,statSync as Cs}from"fs";import{platform as _s}from"os";var Ls=Object.freeze({size:e=>Cs(e).size,clone:Ms,copy:(e,t)=>hi(e,t)}),js=new Set(["ENOSYS","ENOTSUP","EOPNOTSUPP","EINVAL","EXDEV","ENOTTY"]);function pe(e,t,n=Ls){let r=n.size(e);try{return n.clone(e,t),{method:"reflink",bytes:r}}catch(i){if(!Gs(i))throw i}return n.copy(e,t),{method:"copy",bytes:r}}function Ms(e,t){if(_s()!=="darwin"){hi(e,t,Os.COPYFILE_FICLONE_FORCE);return}try{As("/bin/cp",["-c",e,t],{timeout:6e4,maxBuffer:64*1024,stdio:["ignore","ignore","pipe"],windowsHide:!0})}catch(n){throw Ns(n)}}function Ns(e){let t=e?.stderr,n=Buffer.isBuffer(t)?t.toString("utf8"):t??"";return/operation not supported|not supported/i.test(n)?Object.assign(e instanceof Error?e:new Error(String(e)),{code:"ENOTSUP"}):/cross-device link/i.test(n)?Object.assign(e instanceof Error?e:new Error(String(e)),{code:"EXDEV"}):e}function Gs(e){let t=e?.code;return t!==void 0&&js.has(t)}function yi(){return{reflinkedBytes:0,fallbackCopiedBytes:0}}function fe(e,t){t.method==="reflink"?e.reflinkedBytes+=t.bytes:e.fallbackCopiedBytes+=t.bytes}import $s from"better-sqlite3";import{execFileSync as Vs}from"child_process";import{existsSync as Bs,readdirSync as qs}from"fs";import{extname as pt,join as Ws}from"path";function oe(e={}){return{id:"auxiliary-documents",facts:["auxiliary-document"],run:t=>Si({projectRoot:t.projectRoot,dbPath:t.dbPath,extensions:e.extensions,onStatus:t.onStatus})}}function Si(e){let t=new Set((e.extensions??Kr).map(o=>o.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!Bs(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let n=ai(e.projectRoot),r=Us(e.projectRoot,t).filter(o=>!n.isIgnored(o)),i=new $s(j(e.dbPath));try{let o=zs(i,r),a=i.prepare(`INSERT OR IGNORE INTO documents (language, relative_path, position_encoding, text)
|
|
2
|
+
VALUES (?, ?, NULL, ?)`),c=i.transaction(u=>{let l=0;for(let p of u){if(o.has(p))continue;let g=Yr(e.projectRoot,p,{inputKind:"auxiliary source file"}),f=a.run(Js(p),p,g);l+=Number(f.changes)}return l})(r),d={scanned:r.length,inserted:c,existing:r.length-c};return e.onStatus?.(`Augmented SQLite documents with ${c} auxiliary source file${c===1?"":"s"} (${d.existing} already present).`),d}finally{i.close()}}function Us(e,t){let n=Hs(e,t);if(n)return n;let r=[],i=o=>{let a=o?Ws(e,o):e,s;try{s=qs(a,{withFileTypes:!0})}catch{return}for(let c of s){if(Xr.has(c.name))continue;let d=o?`${o}/${c.name}`:c.name;if(c.isDirectory()){i(d);continue}t.has(pt(c.name).toLowerCase())&&r.push(d)}};return i(""),r.sort()}function Hs(e,t){try{return Vs("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:3e4,killSignal:"SIGKILL"}).split(`
|
|
3
|
+
`).filter(r=>r&&t.has(pt(r).toLowerCase())).sort()}catch{return null}}function zs(e,t){let n=new Set,r=500;for(let i=0;i<t.length;i+=r){let o=t.slice(i,i+r),a=e.prepare(`SELECT relative_path FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let s of a)n.add(s.relative_path)}return n}function Js(e){return pt(e).toLowerCase()===".vue"?"vue":pt(e).replace(/^\./,"").toLowerCase()||"source"}import{dirname as Ys,join as Ks}from"path";function bi(e={}){return{id:"runtime-boundaries",facts:["runtime-boundary-observation","runtime-boundary-link"],run:({projectRoot:t,dbPath:n,onStatus:r})=>{let i=new J({projectRoot:t,dbPath:n,indexPath:e.indexPath??Ks(Ys(n),"index.scip")}),o,a=!1,s=!1;try{let d=e.reuseExisting||e.affectedFiles?pi(i):null;e.reuseExisting&&d?.extractorVersion===di?(o=d,a=!0):(o=ui(i,{...d?{previousGraph:d}:{},...e.affectedFiles?{affectedFiles:e.affectedFiles}:{}}),s=(o.coverage.filesReused??0)>0)}finally{i.close()}a||li(n,o);let c={reused:a,incrementallyUpdated:s,observations:o.observations.length,links:o.links.length,frontiers:o.frontiers.length,filesScanned:o.coverage.filesScanned,errors:o.coverage.extractionErrors.length,phases:o.coverage.phases};return r?.(c.reused?`Reused ${c.observations} cached runtime-boundary observation(s) and ${c.links} link(s).`:c.incrementallyUpdated?`Incrementally refreshed runtime-boundary observations (${c.filesScanned-(o.coverage.filesReused??0)} file(s) extracted, ${o.coverage.filesReused??0} reused) and rebuilt ${c.links} link(s).`:`Extracted ${c.observations} runtime-boundary observation(s), ${c.links} link(s), and ${c.frontiers} unresolved frontier(s).`),!a&&o.coverage.phases&&r?.(`Runtime-boundary phases: ${o.coverage.phases.map(d=>`${d.id} ${d.durationMs.toFixed(0)}ms`).join(", ")}.`),c}}}import{createHash as Qs}from"crypto";import{existsSync as Zs}from"fs";import{dirname as ec,join as xi}from"path";function pn(e){let t=new Set;for(let n of e.uncertainty)t.add(n);e.projectIdentityChanged&&t.add("project-identity-changed");for(let n of e.changes)n.kind==="added"&&t.add("file-added"),n.kind==="deleted"&&t.add("file-deleted"),n.inputKind==="config"&&t.add("configuration-changed"),n.inputKind==="ambient"&&t.add("ambient-declaration-changed"),n.inputKind==="other"&&t.add("unclassified-input");return{fullProject:t.size>0,reasons:[...t].sort()}}function ft(e,t,n){let r=e.changes.map(s=>s.path).sort();if(r.length===0&&!e.projectIdentityChanged&&e.uncertainty.length===0)return{mode:"none",changedFiles:r,affectedFiles:[],reasons:[]};let i=new Set(n),o=pn(e),a=new Set(o.reasons);return r.some(s=>!i.has(s))&&a.add("changed-file-outside-project"),t===null?(a.add("dependency-graph-unavailable"),Ri(r,i,a)):a.size>0?Ri(r,i,a):{mode:"closure",changedFiles:r,affectedFiles:Xs(r,t,i),reasons:[]}}function Ri(e,t,n){return{mode:"full-project",changedFiles:e,affectedFiles:[...t].sort(),reasons:[...n].sort()}}function Xs(e,t,n){let r=new Map;for(let[a,s]of t)if(n.has(a))for(let c of s){if(!n.has(c))continue;let d=r.get(c)??new Set;d.add(a),r.set(c,d)}let i=new Set(e),o=[...e];for(let a=0;a<o.length;a+=1){let s=o[a];if(s!==void 0)for(let c of r.get(s)??[])i.has(c)||(i.add(c),o.push(c))}return[...i].sort()}var tc="<global-symbols>";function nc(e){let t=[];for(let n of e.all(`
|
|
4
4
|
SELECT relative_path, language, position_encoding, text
|
|
5
5
|
FROM documents
|
|
6
6
|
`))t.push({relativePath:n.relative_path,kind:"document",values:[n.language,n.position_encoding,n.text]});for(let n of e.all(`
|
|
@@ -27,7 +27,7 @@ import{a as z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
27
27
|
FROM defn_enclosing_ranges r
|
|
28
28
|
JOIN documents d ON d.id = r.document_id
|
|
29
29
|
JOIN global_symbols g ON g.id = r.symbol_id
|
|
30
|
-
`))t.push({relativePath:n.relative_path,kind:"definition",values:
|
|
30
|
+
`))t.push({relativePath:n.relative_path,kind:"definition",values:fn(n,[n.start_line,n.start_char,n.end_line,n.end_char])});for(let n of e.all(`
|
|
31
31
|
SELECT d.relative_path,
|
|
32
32
|
c.chunk_index,
|
|
33
33
|
m.role,
|
|
@@ -42,7 +42,7 @@ import{a as z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
42
42
|
JOIN chunks c ON c.id = m.chunk_id
|
|
43
43
|
JOIN documents d ON d.id = c.document_id
|
|
44
44
|
JOIN global_symbols g ON g.id = m.symbol_id
|
|
45
|
-
`))t.push({relativePath:n.relative_path,kind:"mention",values:
|
|
45
|
+
`))t.push({relativePath:n.relative_path,kind:"mention",values:fn(n,[n.chunk_index,n.role])});for(let n of e.all(`
|
|
46
46
|
SELECT g.symbol,
|
|
47
47
|
g.display_name,
|
|
48
48
|
g.kind,
|
|
@@ -56,8 +56,8 @@ import{a as z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
56
56
|
) AND NOT EXISTS (
|
|
57
57
|
SELECT 1 FROM mentions m WHERE m.symbol_id = g.id
|
|
58
58
|
)
|
|
59
|
-
`))t.push({relativePath:
|
|
60
|
-
`);n.set(r,o.digest("hex"))}return n}function rc(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 pn(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 fn(e,t=dc){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 Pi(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=Xe(e.previousSnapshot,e.currentSnapshot),l=new Set(d),p=u.changes.length>0&&!un(u).fullProject&&u.changes.every(b=>l.has(b.path)),g=lt(u,p?t.dependencyGraph(s):new Map,d),f=rc(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:pn(g,f,d.length)}}catch(d){return a("oracle-error",d instanceof Error?d.message:String(d))}finally{Ri(s),Ri(c)}}function xi(e,t,n,r=Date.now()){return Pi(e,t,r,0,n)}function ic(e){let t=Zs(e);return{latestPath:bi(t,"affected-shadow-latest.json"),historyPath:bi(t,"affected-shadow.jsonl")}}function Ii(e,t,n=uc){let r=ic(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var oc=8*1024*1024,ac=li;function sc(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 cc(e,t,n=oc){pi(e,sc(t),{maxSegmentBytes:n,previousSuffix:ac})}function ln(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 dc={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:I,databaseExists:e=>Qs(e),openDatabase:(e,t,n)=>new z({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>it(e),dependencyGraph:e=>ct(e),factDigests:e=>tc(e)},uc={appendHistory:cc,writeLatest:(e,t)=>re(e,t,{spacing:2,trailingNewline:!0})};function Pi(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 Ri(e){try{e?.close()}catch{}}import{readdirSync as lc}from"fs";import{isAbsolute as vi,join as pc,resolve as fc}from"path";var pt="@sourcegraph/scip-typescript@0.4.0",wi="scip-python-plus@0.7.5",Ei="github.com/sourcegraph/scip-go@v0.2.7",ki="scip-dotnet@0.2.14",gc="scip_dart@1.6.2",Di={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:pt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",pt]}],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:pt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",pt]}],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:wi,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",wi]}],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",vi(r)?r:fc(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:Ei,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Ei]}],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",Ti(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.csharp],installMethods:[{label:"dotnet",identity:ki,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",Ti(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.vb],installMethods:[{label:"dotnet",identity:ki,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:gc,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})=>vi(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 Fi(e){if(!(e.projectPath||e.pnpmWorkspaces)){if(e.language==="typescript")return"{}";if(e.language==="javascript")return'{"compilerOptions":{"allowJs":true}}'}}function ft(e){return Di[e]}function Ti(e,t){let n;try{n=lc(e)}catch{return null}for(let r of t)for(let i of n)if(i.endsWith(r))return pc(e,i);return null}import{writeFileSync as mn}from"fs";import{create as ve}from"@bufbuild/protobuf";import{deserializeSCIP as hn,serializeSCIP as yn,DocumentSchema as xc,IndexSchema as Ci,MetadataSchema as _i,SymbolInformationSchema as Ic}from"@c4312/scip";import{writeFileSync as mc}from"fs";import{create as Ai}from"@bufbuild/protobuf";import{deserializeSCIP as hc,DocumentSchema as yc,IndexSchema as Sc,serializeSCIP as bc,SymbolRole as Rc}from"@c4312/scip";function Oi(e){let t;try{t=hc(D(e,{inputKind:"SCIP sanitization input",maxBytes:_}))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let n=gn(t);return n.touchedDocuments>0&&mc(e,Buffer.from(bc(n.index))),{removedDefinitionOccurrences:n.removedDefinitionOccurrences,touchedDocuments:n.touchedDocuments}}function gn(e){let t=new Set,n=new Map;for(let a of e.documents){n.set(a,kr(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&Rc.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(Ai(yc,{language:a.language,relativePath:s,occurrences:c,symbols:a.symbols,text:a.text,positionEncoding:a.positionEncoding}))}return{index:i===0?e:Ai(Sc,{metadata:e.metadata,documents:o,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:r,touchedDocuments:i}}function Sn(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=vc(e),n=wc(e.flatMap(i=>i.documents??[])),r=Mi(e.flatMap(i=>i.externalSymbols??[]));return ve(Ci,{metadata:t,documents:n,externalSymbols:r})}function bn(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>hn(D(i,{inputKind:"SCIP merge input",maxBytes:_}))),r=Sn(n);return mn(t,Buffer.from(yn(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Li(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>hn(D(i,{inputKind:"SCIP merge input",maxBytes:_}))),r=gn(Sn(n));return mn(t,Buffer.from(yn(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function Pc(e,t,n){let r=e.metadata;if(!r)throw new Error("Cannot rebase a SCIP index without metadata");if(!Se(r.projectRoot,t))throw new Error(`Cannot rebase SCIP project root: expected ${t}, got ${r.projectRoot}`);return ve(Ci,{metadata:ve(_i,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function ji(e,t,n){let r=hn(D(e,{inputKind:"SCIP normalization input",maxBytes:_})),i=Pc(r,t,n);mn(e,Buffer.from(yn(i)))}function vc(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&&!Se(o,n))throw new Error(`Cannot merge SCIP indexes with different project roots: ${n} vs ${o}`)}let r=n&&Er(n);return r===n?t:ve(_i,{...t,projectRoot:r})}function wc(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(xc,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:Ec([...r.occurrences,...n.occurrences]),symbols:Mi([...r.symbols,...n.symbols]),text:Tc(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function Ec(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 Mi(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(Ic,{symbol:r.symbol,documentation:Dc([...r.documentation,...n.documentation]),relationships:kc([...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 kc(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 Tc(e,t){return e?t?e.length>=t.length?e:t:e:t}function Dc(e){return[...new Set(e)]}import{createHash as Fc}from"crypto";import{existsSync as Ni,rmSync as Gi}from"fs";import{resolve as Ac}from"path";import Bi from"better-sqlite3";var Oc={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}]},Cc={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 Wi(e){let t=I(),n=_c(e.affectedFiles);if(Lc(e.previousDbPath,e.miniDbPath,e.candidateDbPath),Gi(e.candidateDbPath,{force:!0}),!Ni(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!Ni(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");$i(e.previousDbPath,"previous SQLite generation",!1),$i(e.miniDbPath,"incremental SQLite mini database");let r=le(e.previousDbPath,e.candidateDbPath);e.writeTelemetry&&pe(e.writeTelemetry,r);let i=null;try{i=new Bi(e.candidateDbPath,{fileMustExist:!0}),i.pragma("busy_timeout = 5000"),i.pragma("foreign_keys = ON"),i.prepare("ATTACH DATABASE ? AS incremental").run(e.miniDbPath),Rn(i,"main","candidate SQLite generation"),Rn(i,"incremental","incremental SQLite mini database"),jc(i,n),Mc(i,n.length);let o=xn(i,"main",!0),a=oe(i,"SELECT COUNT(*) AS value FROM main.documents");i.transaction(()=>{Nc(i),Gc(i),$c(i),e.onStage?.("after-delete"),Vc(i),e.onStage?.("after-symbol-reconciliation"),Bc(i),e.onStage?.("after-insert"),Wc(i),qc(i,n.length,a),e.onStage?.("before-commit")}).immediate(),qi(i,"main","candidate SQLite generation");let d=[...Uc(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{Gi(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${o instanceof Error?o.message:String(o)}`,{cause:o})}}function _c(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 Lc(e,t,n){let r=[e,t,n].map(i=>Ac(i));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function $i(e,t,n=!0){let r=new Bi(e,{readonly:!0,fileMustExist:!0});try{Rn(r,"main",t),n&&qi(r,"main",t)}finally{r.close()}}function Rn(e,t,n){for(let[r,i]of Object.entries(Oc)){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(Cc)){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}`)}Vi(e,t,"documents",["relative_path"],n),Vi(e,t,"global_symbols",["symbol"],n)}function Vi(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 qi(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 jc(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 Mc(e,t){let n=oe(e,"SELECT COUNT(*) AS value FROM incremental.documents"),r=oe(e,`SELECT COUNT(*) AS value
|
|
59
|
+
`))t.push({relativePath:tc,kind:"global-symbol",values:fn(n)});return rc(t)}function rc(e){let t=new Map;for(let r of e){let i=JSON.stringify([r.kind,r.values]),o=t.get(r.relativePath)??[];o.push(i),t.set(r.relativePath,o)}let n=new Map;for(let[r,i]of[...t].sort(([o],[a])=>o.localeCompare(a))){let o=Qs("sha256");for(let a of i.sort())o.update(String(Buffer.byteLength(a))),o.update(":"),o.update(a),o.update(`
|
|
60
|
+
`);n.set(r,o.digest("hex"))}return n}function ic(e,t){let n=[],r=[],i=[],o=[],a=new Set([...e.keys(),...t.keys()]);for(let s of[...a].sort()){let c=e.get(s),d=t.get(s);c===void 0?n.push(s):d===void 0?i.push(s):c!==d?r.push(s):o.push(s)}return{addedFiles:n,modifiedFiles:r,deletedFiles:i,changedFiles:[...n,...r,...i].sort(),unchangedFiles:o}}function gn(e,t,n){let r=new Set(e.affectedFiles),i=new Set(t.changedFiles),o=e.mode==="full-project"?[]:t.changedFiles.filter(c=>!r.has(c)),a=e.affectedFiles.filter(c=>!i.has(c)).sort(),s=t.changedFiles.length-o.length;return{passed:o.length===0,recall:t.changedFiles.length===0?1:s/t.changedFiles.length,affectedRatio:n===0?0:e.affectedFiles.length/n,predictedFiles:[...e.affectedFiles].sort(),actualFiles:[...t.changedFiles],missingFiles:o,extraFiles:a}}function mn(e,t=uc){let n=t.wallNow===void 0&&t.monotonicNow===void 0,r=t.monotonicNow??t.now,i=t.wallNow??t.now,o=r(),a=(d,u)=>{let l=r();return wi(e.refreshResult,d,n?l:i(),Math.max(0,l-o),u)};if(!t.databaseExists(e.previousDbPath))return a("prior-index-unavailable");if(!t.databaseExists(e.candidateDbPath))return a("candidate-index-unavailable");let s=null,c=null;try{s=t.openDatabase(e.projectRoot,e.previousDbPath,e.previousIndexPath),c=t.openDatabase(e.projectRoot,e.candidateDbPath,e.candidateIndexPath);let d=[...new Set([...t.indexedPaths(s),...t.indexedPaths(c)])].sort(),u=Ze(e.previousSnapshot,e.currentSnapshot),l=new Set(d),p=u.changes.length>0&&!pn(u).fullProject&&u.changes.every(b=>l.has(b.path)),g=ft(u,p?t.dependencyGraph(s):new Map,d),f=ic(t.factDigests(s),t.factDigests(c)),h=r();return{version:1,status:"evaluated",refreshResult:e.refreshResult,recordedAt:new Date(n?h:i()).toISOString(),durationMs:Math.max(0,h-o),manifest:u,plan:g,comparison:f,evaluation:gn(g,f,d.length)}}catch(d){return a("oracle-error",d instanceof Error?d.message:String(d))}finally{Ii(s),Ii(c)}}function Pi(e,t,n,r=Date.now()){return wi(e,t,r,0,n)}function oc(e){let t=ec(e);return{latestPath:xi(t,"affected-shadow-latest.json"),historyPath:xi(t,"affected-shadow.jsonl")}}function vi(e,t,n=lc){let r=oc(e);return n.appendHistory(r.historyPath,t),n.writeLatest(r.latestPath,t),r}var ac=8*1024*1024,sc=fi;function cc(e){let t={historyVersion:1,sourceVersion:e.version,refreshResult:e.refreshResult,recordedAt:e.recordedAt,durationMs:e.durationMs};return e.status==="unavailable"?{...t,status:"unavailable",reason:e.reason,...e.error?{error:e.error}:{}}:{...t,status:"evaluated",mode:e.plan.mode,passed:e.evaluation.passed,recall:e.evaluation.recall,affectedRatio:e.evaluation.affectedRatio,predictedFileCount:e.evaluation.predictedFiles.length,actualFileCount:e.evaluation.actualFiles.length,missingFileCount:e.evaluation.missingFiles.length,fallbackReasons:[...e.plan.reasons]}}function dc(e,t,n=ac){gi(e,cc(t),{maxSegmentBytes:n,previousSuffix:sc})}function fn(e,t=[]){let n=[];for(let r of t)n.push(r);return n.push(e.symbol,e.display_name,e.kind,e.documentation,e.signature_hex,e.enclosing_symbol,e.relationships_hex),n}var uc={now:()=>Date.now(),wallNow:()=>Date.now(),monotonicNow:I,databaseExists:e=>Zs(e),openDatabase:(e,t,n)=>new J({projectRoot:e,dbPath:t,indexPath:n}),indexedPaths:e=>at(e),dependencyGraph:e=>ut(e),factDigests:e=>nc(e)},lc={appendHistory:dc,writeLatest:(e,t)=>ie(e,t,{spacing:2,trailingNewline:!0})};function wi(e,t,n,r,i){return{version:1,status:"unavailable",refreshResult:e,recordedAt:new Date(n).toISOString(),durationMs:r,reason:t,...i?{error:i}:{}}}function Ii(e){try{e?.close()}catch{}}import{readdirSync as pc}from"fs";import{isAbsolute as Ei,join as fc,resolve as gc}from"path";var gt="@sourcegraph/scip-typescript@0.4.0",ki="scip-python-plus@0.7.5",Ti="github.com/sourcegraph/scip-go@v0.2.7",Di="scip-dotnet@0.2.14",mc="scip_dart@1.6.2",Ai={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:t,indexerBinary:n,projectPath:r})=>r?{binary:n,args:["index","--output",e,"--no-progress-bar",r]}:t?{binary:n,args:["index","--pnpm-workspaces","--output",e,"--no-progress-bar"]}:{binary:n,args:["index","--output",e,"--no-progress-bar"]},markerFiles:[...O.typescript],installMethods:[{label:"npm",identity:gt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",gt]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,indexerBinary:t})=>({binary:t,args:["index","--output",e,"--no-progress-bar"]}),markerFiles:[...O.javascript],installMethods:[{label:"npm",identity:gt,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",gt]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...O.java],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...O.scala],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:[...O.kotlin],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:Pe.language,indexerBinary:Pe.indexerBinary,checkCommand:`${Pe.indexerBinary} --version`,indexArgs:({outputPath:e})=>({binary:Pe.indexerBinary,args:["scip",".","--output",e]}),markerFiles:[...O.rust],installMethods:[],installUrl:Pe.installUrl},python:{language:"python",indexerBinary:"scip-python-plus",binaryAliases:["scip-python"],checkCommand:"scip-python-plus --version",indexArgs:({outputPath:e,indexerBinary:t})=>({binary:t,args:["index","--output",e,"--project-name","project"]}),markerFiles:[...O.python],installMethods:[{label:"npm",identity:ki,destination:"npm global prefix",prerequisite:"npm",binary:"npm",args:["install","-g",ki]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},clojure:{language:"clojure",indexerBinary:"scip-clojure",projectLocalBinaries:["node_modules/.bin/scip-clojure"],checkCommand:"scip-clojure -h",indexArgs:({projectRoot:e,outputPath:t,indexerBinary:n,configPath:r})=>{let i=["-root",e,"-output",t];return r&&i.push("-config",Ei(r)?r:gc(e,r)),{binary:n,args:i}},markerFiles:[...O.clojure],installMethods:[],installUrl:"https://github.com/PlunderStruck/scip-clojure"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:[...O.ruby],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:[...O.go],installMethods:[{label:"go install",identity:Ti,destination:"Go bin directory (GOBIN or GOPATH/bin)",prerequisite:"go",binary:"go",args:["install",Ti]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:[...O.cpp],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:[...O.c],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",Fi(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.csharp],installMethods:[{label:"dotnet",identity:Di,destination:"dotnet global tool directory",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet","--version","0.2.14"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",Fi(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:[...O.vb],installMethods:[{label:"dotnet",identity:Di,destination:"dotnet global tool directory",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet","--version","0.2.14"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:t})=>({binary:e,args:["--output",t]}),markerFiles:[...O.dart],installMethods:[{label:"dart pub",identity:mc,destination:"Dart pub global cache",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart","1.6.2"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({indexerBinary:e})=>Ei(e)?{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",e]}:{binary:e,args:[]},defaultOutputPath:"index.scip",markerFiles:[...O.php],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function Oi(e){if(!(e.projectPath||e.pnpmWorkspaces)){if(e.language==="typescript")return"{}";if(e.language==="javascript")return'{"compilerOptions":{"allowJs":true}}'}}function mt(e){return Ai[e]}function Fi(e,t){let n;try{n=pc(e)}catch{return null}for(let r of t)for(let i of n)if(i.endsWith(r))return fc(e,i);return null}import{writeFileSync as yn}from"fs";import{create as we}from"@bufbuild/protobuf";import{deserializeSCIP as Sn,serializeSCIP as bn,DocumentSchema as Ic,IndexSchema as Li,MetadataSchema as ji,SymbolInformationSchema as Pc}from"@c4312/scip";import{writeFileSync as hc}from"fs";import{create as Ci}from"@bufbuild/protobuf";import{deserializeSCIP as yc,DocumentSchema as Sc,IndexSchema as bc,serializeSCIP as Rc,SymbolRole as xc}from"@c4312/scip";function _i(e){let t;try{t=yc(D(e,{inputKind:"SCIP sanitization input",maxBytes:_}))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let n=hn(t);return n.touchedDocuments>0&&hc(e,Buffer.from(Rc(n.index))),{removedDefinitionOccurrences:n.removedDefinitionOccurrences,touchedDocuments:n.touchedDocuments}}function hn(e){let t=new Set,n=new Map;for(let a of e.documents){n.set(a,Dr(a.relativePath));for(let s of a.symbols)s.symbol&&t.add(s.symbol)}for(let a of e.externalSymbols)a.symbol&&t.add(a.symbol);let r=0,i=0,o=[];for(let a of e.documents){let s=n.get(a),c=a.occurrences.filter(d=>(d.symbolRoles&xc.Definition)===0||t.has(d.symbol)?!0:(r+=1,!1));if(s===a.relativePath&&c.length===a.occurrences.length){o.push(a);continue}i+=1,o.push(Ci(Sc,{language:a.language,relativePath:s,occurrences:c,symbols:a.symbols,text:a.text,positionEncoding:a.positionEncoding}))}return{index:i===0?e:Ci(bc,{metadata:e.metadata,documents:o,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:r,touchedDocuments:i}}function Rn(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=wc(e),n=Ec(e.flatMap(i=>i.documents??[])),r=Gi(e.flatMap(i=>i.externalSymbols??[]));return we(Li,{metadata:t,documents:n,externalSymbols:r})}function xn(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Sn(D(i,{inputKind:"SCIP merge input",maxBytes:_}))),r=Rn(n);return yn(t,Buffer.from(bn(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Mi(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Sn(D(i,{inputKind:"SCIP merge input",maxBytes:_}))),r=hn(Rn(n));return yn(t,Buffer.from(bn(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function vc(e,t,n){let r=e.metadata;if(!r)throw new Error("Cannot rebase a SCIP index without metadata");if(!be(r.projectRoot,t))throw new Error(`Cannot rebase SCIP project root: expected ${t}, got ${r.projectRoot}`);return we(Li,{metadata:we(ji,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function Ni(e,t,n){let r=Sn(D(e,{inputKind:"SCIP normalization input",maxBytes:_})),i=vc(r,t,n);yn(e,Buffer.from(bn(i)))}function wc(e){let t=e[0]?.metadata;if(!t)return;let n=t.projectRoot;for(let i of e.slice(1)){let o=i.metadata?.projectRoot;if(n&&o&&!be(o,n))throw new Error(`Cannot merge SCIP indexes with different project roots: ${n} vs ${o}`)}let r=n&&Tr(n);return r===n?t:we(ji,{...t,projectRoot:r})}function Ec(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath);if(!r){t.set(n.relativePath,n);continue}t.set(n.relativePath,we(Ic,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:kc([...r.occurrences,...n.occurrences]),symbols:Gi([...r.symbols,...n.symbols]),text:Dc(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function kc(e){let t=new Set,n=[];for(let r of e){let i=JSON.stringify(r);t.has(i)||(t.add(i),n.push(r))}return n}function Gi(e){let t=new Map;for(let n of e){let r=t.get(n.symbol);if(!r){t.set(n.symbol,n);continue}t.set(n.symbol,we(Pc,{symbol:r.symbol,documentation:Fc([...r.documentation,...n.documentation]),relationships:Tc([...r.relationships,...n.relationships]),kind:r.kind||n.kind,displayName:r.displayName||n.displayName,enclosingSymbol:r.enclosingSymbol||n.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??n.signatureDocumentation}))}return[...t.values()]}function Tc(e){let t=new Set,n=[];for(let r of e){let i=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");t.has(i)||(t.add(i),n.push(r))}return n}function Dc(e,t){return e?t?e.length>=t.length?e:t:e:t}function Fc(e){return[...new Set(e)]}import{createHash as Ac}from"crypto";import{existsSync as $i,rmSync as Vi}from"fs";import{resolve as Oc}from"path";import Wi from"better-sqlite3";var Cc={documents:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"language",type:"TEXT",notnull:0,pk:0},{name:"relative_path",type:"TEXT",notnull:1,pk:0},{name:"position_encoding",type:"TEXT",notnull:0,pk:0},{name:"text",type:"TEXT",notnull:0,pk:0}],chunks:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"document_id",type:"INTEGER",notnull:1,pk:0},{name:"chunk_index",type:"INTEGER",notnull:1,pk:0},{name:"start_line",type:"INTEGER",notnull:1,pk:0},{name:"end_line",type:"INTEGER",notnull:1,pk:0},{name:"occurrences",type:"BLOB",notnull:1,pk:0}],global_symbols:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"symbol",type:"TEXT",notnull:1,pk:0},{name:"display_name",type:"TEXT",notnull:0,pk:0},{name:"kind",type:"INTEGER",notnull:0,pk:0},{name:"documentation",type:"TEXT",notnull:0,pk:0},{name:"signature",type:"BLOB",notnull:0,pk:0},{name:"enclosing_symbol",type:"TEXT",notnull:0,pk:0},{name:"relationships",type:"BLOB",notnull:0,pk:0}],mentions:[{name:"chunk_id",type:"INTEGER",notnull:1,pk:1},{name:"symbol_id",type:"INTEGER",notnull:1,pk:2},{name:"role",type:"INTEGER",notnull:1,pk:3}],defn_enclosing_ranges:[{name:"id",type:"INTEGER",notnull:0,pk:1},{name:"document_id",type:"INTEGER",notnull:1,pk:0},{name:"symbol_id",type:"INTEGER",notnull:1,pk:0},{name:"start_line",type:"INTEGER",notnull:1,pk:0},{name:"start_char",type:"INTEGER",notnull:1,pk:0},{name:"end_line",type:"INTEGER",notnull:1,pk:0},{name:"end_char",type:"INTEGER",notnull:1,pk:0}]},_c={idx_chunks_line_range:{table:"chunks",columns:["document_id","start_line","end_line"]},idx_defn_enclosing_ranges_document:{table:"defn_enclosing_ranges",columns:["document_id","start_line","end_line"]},idx_defn_enclosing_ranges_symbol_id:{table:"defn_enclosing_ranges",columns:["symbol_id"]},idx_mentions_symbol_id_role:{table:"mentions",columns:["symbol_id","role"]}};function Ui(e){let t=I(),n=Lc(e.affectedFiles);if(jc(e.previousDbPath,e.miniDbPath,e.candidateDbPath),Vi(e.candidateDbPath,{force:!0}),!$i(e.previousDbPath))throw new Error("previous SQLite generation is unavailable");if(!$i(e.miniDbPath))throw new Error("incremental SQLite mini database is unavailable");Bi(e.previousDbPath,"previous SQLite generation",!1),Bi(e.miniDbPath,"incremental SQLite mini database");let r=pe(e.previousDbPath,e.candidateDbPath);e.writeTelemetry&&fe(e.writeTelemetry,r);let i=null;try{i=new Wi(j(e.candidateDbPath),{fileMustExist:!0}),i.pragma("busy_timeout = 5000"),i.pragma("foreign_keys = ON"),i.prepare("ATTACH DATABASE ? AS incremental").run(j(e.miniDbPath)),In(i,"main","candidate SQLite generation"),In(i,"incremental","incremental SQLite mini database"),Mc(i,n),Nc(i,n.length);let o=Pn(i,"main",!0),a=ae(i,"SELECT COUNT(*) AS value FROM main.documents");i.transaction(()=>{Gc(i),$c(i),Vc(i),e.onStage?.("after-delete"),Bc(i),e.onStage?.("after-symbol-reconciliation"),qc(i),e.onStage?.("after-insert"),Wc(i),Uc(i,n.length,a),e.onStage?.("before-commit")}).immediate(),Hi(i,"main","candidate SQLite generation");let d=[...Hc(i)].filter(([u,l])=>o.get(u)!==l).map(([u])=>u).sort();return i.exec("DETACH DATABASE incremental"),i.close(),i=null,{candidateDbPath:e.candidateDbPath,affectedDocumentCount:n.length,changedDocumentPaths:d,durationMs:I()-t}}catch(o){try{i?.close()}finally{Vi(e.candidateDbPath,{force:!0})}throw new Error(`Incremental SQLite publication rejected: ${o instanceof Error?o.message:String(o)}`,{cause:o})}}function Lc(e){if(e.length===0)throw new Error("incremental SQLite publication requires affected documents");let t=[...e].sort();for(let n of t)if(!n||n.startsWith("/")||n.includes("\\")||n.split("/").includes(".."))throw new Error(`invalid affected document path: ${n}`);if(new Set(t).size!==t.length)throw new Error("incremental SQLite publication contains duplicate affected documents");return t}function jc(e,t,n){let r=[e,t,n].map(i=>Oc(i));if(new Set(r).size!==r.length)throw new Error("previous, mini, and candidate SQLite paths must be distinct")}function Bi(e,t,n=!0){let r=new Wi(j(e),{readonly:!0,fileMustExist:!0});try{In(r,"main",t),n&&Hi(r,"main",t)}finally{r.close()}}function In(e,t,n){for(let[r,i]of Object.entries(Cc)){let a=e.prepare(`PRAGMA ${t}.table_info('${r}')`).all().map(({name:s,type:c,notnull:d,pk:u})=>({name:s,type:c.toUpperCase(),notnull:d,pk:u}));if(JSON.stringify(a)!==JSON.stringify(i))throw new Error(`${n} schema changed for table ${r}`)}for(let[r,i]of Object.entries(_c)){let o=e.prepare(`SELECT tbl_name FROM ${t}.sqlite_master WHERE type = 'index' AND name = ?`).get(r),a=e.prepare(`PRAGMA ${t}.index_info('${r}')`).all().map(s=>s.name);if(o?.tbl_name!==i.table||JSON.stringify(a)!==JSON.stringify(i.columns))throw new Error(`${n} schema changed for index ${r}`)}qi(e,t,"documents",["relative_path"],n),qi(e,t,"global_symbols",["symbol"],n)}function qi(e,t,n,r,i){if(!e.prepare(`PRAGMA ${t}.index_list('${n}')`).all().some(s=>{if(s.unique!==1)return!1;let c=e.prepare(`PRAGMA ${t}.index_info('${s.name}')`).all().map(d=>d.name);return JSON.stringify(c)===JSON.stringify(r)}))throw new Error(`${i} lost the unique ${n}(${r.join(", ")}) constraint`)}function Hi(e,t,n){let r=e.prepare(`PRAGMA ${t}.integrity_check`).pluck().get();if(r!=="ok")throw new Error(`${n} failed integrity_check: ${String(r)}`);if(e.prepare(`PRAGMA ${t}.foreign_key_check`).all().length>0)throw new Error(`${n} failed foreign_key_check`)}function Mc(e,t){e.exec("CREATE TEMP TABLE incremental_affected_paths (relative_path TEXT PRIMARY KEY) WITHOUT ROWID");let n=e.prepare("INSERT INTO temp.incremental_affected_paths(relative_path) VALUES (?)");e.transaction(i=>{for(let o of i)n.run(o)})(t)}function Nc(e,t){let n=ae(e,"SELECT COUNT(*) AS value FROM incremental.documents"),r=ae(e,`SELECT COUNT(*) AS value
|
|
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 z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
67
67
|
FROM incremental.documents d
|
|
68
68
|
LEFT JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path
|
|
69
69
|
WHERE p.relative_path IS NULL
|
|
70
|
-
LIMIT 1`).pluck().get();if(n!==t||r!==t||i!==void 0||o!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set")}function
|
|
70
|
+
LIMIT 1`).pluck().get();if(n!==t||r!==t||i!==void 0||o!==void 0)throw new Error("incremental SQLite mini database does not exactly match the affected document set")}function Gc(e){e.exec(`
|
|
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 z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
94
94
|
FROM incremental.mentions m
|
|
95
95
|
JOIN incremental.global_symbols g ON g.id = m.symbol_id
|
|
96
96
|
WHERE m.role = 1;
|
|
97
|
-
`)}function
|
|
97
|
+
`)}function $c(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 z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
117
117
|
SELECT u.symbol
|
|
118
118
|
FROM unaffected_definitions u
|
|
119
119
|
JOIN changed_symbols c ON c.symbol = u.symbol
|
|
120
|
-
LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function
|
|
120
|
+
LIMIT 1`).pluck().get();if(typeof t=="string")throw new Error(`symbol definition is shared by affected and unaffected documents: ${t}`)}function Vc(e){e.exec(`
|
|
121
121
|
DELETE FROM main.mentions
|
|
122
122
|
WHERE chunk_id IN (
|
|
123
123
|
SELECT c.id
|
|
@@ -139,7 +139,7 @@ import{a as z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
139
139
|
);
|
|
140
140
|
DELETE FROM main.documents
|
|
141
141
|
WHERE relative_path IN (SELECT relative_path FROM temp.incremental_affected_paths);
|
|
142
|
-
`)}function
|
|
142
|
+
`)}function Bc(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 z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
181
181
|
WHERE source.symbol = main.global_symbols.symbol
|
|
182
182
|
)
|
|
183
183
|
WHERE symbol IN (SELECT symbol FROM temp.incremental_new_defined_symbols);
|
|
184
|
-
`)}function
|
|
184
|
+
`)}function qc(e){let t=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.documents"),n=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.chunks"),r=ae(e,"SELECT COALESCE(MAX(id), 0) AS value FROM main.defn_enclosing_ranges");e.prepare(`INSERT INTO main.documents(id, language, relative_path, position_encoding, text)
|
|
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
|
|
@@ -202,9 +202,9 @@ import{a as z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
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
|
|
205
|
+
`)}function Uc(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
|
|
207
|
+
JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path`);if(r!==n||i!==t)throw new Error("candidate SQLite document counts changed unexpectedly");let o=e.prepare("SELECT relative_path FROM main.documents GROUP BY relative_path HAVING COUNT(*) > 1 LIMIT 1").pluck().get(),a=e.prepare("SELECT symbol FROM main.global_symbols GROUP BY symbol HAVING COUNT(*) > 1 LIMIT 1").pluck().get();if(o!==void 0||a!==void 0)throw new Error("candidate SQLite generation contains duplicate document paths or symbols")}function Hc(e){let t=Pn(e,"main",!0),n=Pn(e,"incremental",!1);if(JSON.stringify([...t])!==JSON.stringify([...n]))throw new Error("candidate SQLite affected document facts differ from the mini database");return t}function Pn(e,t,n){let r=n?"JOIN temp.incremental_affected_paths p ON p.relative_path = d.relative_path":"",i=e.prepare(`SELECT d.relative_path, d.language, d.position_encoding, d.text
|
|
208
208
|
FROM ${t}.documents d
|
|
209
209
|
${r}
|
|
210
210
|
ORDER BY d.relative_path`).all(),o=e.prepare(`SELECT d.relative_path, c.chunk_index, c.start_line, c.end_line, hex(c.occurrences) AS occurrences
|
|
@@ -226,12 +226,12 @@ import{a as z}from"./chunk-DDZ7VHWV.js";import{a as oi,b as ai,c as dt,d as an,h
|
|
|
226
226
|
JOIN ${t}.documents d ON d.id = c.document_id
|
|
227
227
|
JOIN ${t}.global_symbols g ON g.id = m.symbol_id
|
|
228
228
|
${r}
|
|
229
|
-
ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),c=new Map;for(let[u,l]of Object.entries({documents:i,chunks:o,definitions:a,mentions:s}))for(let p of l){let g=JSON.stringify([u,p]),f=c.get(p.relative_path)??[];f.push(g),c.set(p.relative_path,f)}let d=new Map;for(let[u,l]of[...c].sort(([p],[g])=>p.localeCompare(g))){let p=
|
|
230
|
-
`);d.set(u,p.digest("hex"))}return d}function
|
|
231
|
-
`)}function
|
|
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 kn(e){try{let t=w(e,{maxBytes:A,inputKind:"TypeScript project manifest"}),n=JSON.parse(cd(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{createHash as Xo,randomUUID as Wd}from"crypto";import{existsSync as se,lstatSync as Jn,mkdirSync as Ee,mkdtempSync as Qo,readdirSync as Zo,realpathSync as ea,renameSync as me,rmSync as ae,statSync as wt}from"fs";import{dirname as Yn,join as m,resolve as Kn}from"path";import{setTimeout as qd}from"timers/promises";import{pathToFileURL as zo}from"url";import{deserializeSCIP as ta}from"@c4312/scip";import Ud from"better-sqlite3";import{lstatSync as Id,readdirSync as Pd}from"fs";import{join as vd,relative as wd,resolve as jn,sep as Ed}from"path";import{createHash as dd}from"crypto";import{existsSync as je,mkdirSync as ud,readdirSync as ao,renameSync as ld,rmSync as so,writeFileSync as pd}from"fs";import{join as J}from"path";import{create as uo,fromBinary as lo,toBinary as fd}from"@bufbuild/protobuf";import{deserializeSCIP as yt,DocumentSchema as Dn,IndexSchema as po,serializeSCIP as fo}from"@c4312/scip";var St=1,Me="typescript-scip-fragments";function go(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=fe(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=lo(Dn,o.bytes);if(s.relativePath!==a)throw new Error(`TypeScript fragment path mismatch: expected ${a}, got ${s.relativePath}`);n.push(s)}let r=fo(uo(po,{documents:n,externalSymbols:[]})),i=yt(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function Ne(e){let t=J(e,Me);return{rootDir:t,blobDir:J(t,"blobs"),generationDir:J(t,"generations")}}function gd(e){let t=yt(e.indexBytes);ko(t.metadata,To(e)),Eo(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let a=fe(o.relativePath);if(n.has(a))throw new Error(`duplicate TypeScript SCIP document path: ${a}`);n.add(a);let s=fd(Dn,o),c=e.documentIdentities.get(a)??(e.allowUntrackedDocuments?ge(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:a,contentHash:ge(s)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${a}`);r.push(Io(e.cacheDir,{relativePath:a,bytes:s,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=Po(e,r);return vo(e.cacheDir,i),i}function mo(e){let t=Ne(e.cacheDir);if(!je(An(t,e.generationIdentity)))return gd(e);let n=yo({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 ho(e){let t=yo({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=fe(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,Io(e.cacheDir,o,s))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=Po(e,[...n.values()]);return vo(e.cacheDir,i),i}function yo(e){let t=Ne(e.cacheDir),n=An(t,e.generationIdentity),r;try{r=Fn(w(n,{maxBytes:A,inputKind:"TypeScript fragment manifest"}))}catch(o){throw new Error(`TypeScript fragment generation is unavailable: ${o instanceof Error?o.message:String(o)}`,{cause:o})}if(r.generationIdentity!==e.generationIdentity)throw new Error("TypeScript fragment generation identity does not match its manifest path");if(e.producerIdentity&&r.producerIdentity!==e.producerIdentity)throw new Error("TypeScript fragment producer identity changed");if(e.projectIdentity&&r.projectIdentity!==e.projectIdentity)throw new Error("TypeScript fragment project identity changed");let i=new Map;for(let o of r.documents){let a=J(t.blobDir,`${o.blobHash}.scipdoc`),s=D(a,{maxBytes:H,inputKind:"TypeScript fragment blob"});if(s.byteLength!==o.byteLength||ge(s)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,s)}return{manifest:r,fragments:i}}function So(e){let t=Ro(e);return Tn(t.baseIndex,t.completeDocuments,"assembled")}function bo(e){let t=Ro(e);return md(t.deletedAffectedPaths),{completeIndexBytes:Tn(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Tn(t.baseIndex,t.affectedDocuments,"affected")}}function Ro(e){let t=yt(e.baseIndexBytes);ko(t.metadata,To(e)),Eo(t.externalSymbols);let n=new Map;for(let s of e.fragments){let c=fe(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=fe(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=lo(Dn,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 Tn(e,t,n){let r=fo(uo(po,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=yt(r);if(i.documents.length!==t.length||i.externalSymbols.length!==0)throw new Error(`${n} TypeScript SCIP index failed structural verification`);return r}function md(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function xo(e,t){let n=Ne(e);if(!je(n.generationDir))return;let r=new Set(t.map(a=>wo(a))),i=ao(n.generationDir).filter(a=>a.endsWith(".json")),o=new Set;for(let a of i.filter(s=>r.has(s))){let s=Fn(w(J(n.generationDir,a),{maxBytes:A,inputKind:"TypeScript fragment manifest"}));for(let c of s.documents)o.add(`${c.blobHash}.scipdoc`)}for(let a of i)r.has(a)||so(J(n.generationDir,a),{force:!0});if(je(n.blobDir))for(let a of ao(n.blobDir))o.has(a)||so(J(n.blobDir,a),{force:!0})}function Io(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=fe(t.relativePath),i=Buffer.from(t.bytes),o=ge(i),a=Ne(e);ud(a.blobDir,{recursive:!0});let s=J(a.blobDir,`${o}.scipdoc`);if(je(s)){let c=D(s,{maxBytes:H,inputKind:"TypeScript fragment blob"});if(c.byteLength!==i.byteLength||ge(c)!==o)throw new Error(`existing TypeScript fragment blob is corrupt: ${r}`)}else{let c=`${s}.${process.pid}.${Date.now()}.tmp`;pd(c,i),ld(c,s)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function Po(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:St,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function vo(e,t){let n=Ne(e),r=An(n,t.generationIdentity);if(je(r)){let i=Fn(w(r,{maxBytes:A,inputKind:"TypeScript fragment manifest"}));if(co(i)!==co(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}re(r,t,{spacing:2,trailingNewline:!0})}function co(e){return ge(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function Fn(e){let t=JSON.parse(e);if(t.version!==St||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(fe(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function An(e,t){return J(e.generationDir,wo(t))}function wo(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${ge(e)}.json`}function Eo(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function ko(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 To(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function fe(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 ge(e){return dd("sha256").update(e).digest("hex")}import{createHash as hd}from"crypto";import{existsSync as Ge,mkdirSync as yd,readdirSync as On,renameSync as Sd,rmSync as Do,writeFileSync as bd}from"fs";import{join as V}from"path";var bt=1,Ao=64*1024*1024,Ve="typescript-scip-overlays";function Oo(e){let t=Lo(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=Ln(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript overlay: ${a}`);r.add(a),n.set(a,Rd(e.cacheDir,o))}if(r.size===0)throw new Error("TypeScript overlay generation requires affected documents");let i={version:bt,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 xd(e.cacheDir,i),i}function Co(e){let t=Lo(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(V(Be(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`),{maxBytes:H,inputKind:"TypeScript overlay blob"});if(i.byteLength!==r.byteLength||$e(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 So({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function _o(e,t){let n=Be(e),r=V(n,"generations");if(!Ge(r))return;let i=new Set(t.map(_n)),o=new Set;for(let s of On(r).filter(c=>i.has(c))){let c=Cn(w(V(r,s),{maxBytes:A,inputKind:"TypeScript overlay manifest"}));for(let d of c.overlays)d.blobHash&&o.add(`${d.blobHash}.scipdoc`)}for(let s of On(r))i.has(s)||Do(V(r,s),{force:!0});let a=V(n,"blobs");if(Ge(a))for(let s of On(a))o.has(s)||Do(V(a,s),{force:!0})}function Lo(e,t){let n=V(Be(e),"generations",_n(t));if(!Ge(n))return null;let r=Cn(w(n,{maxBytes:A,inputKind:"TypeScript overlay manifest"}));if(r.generationIdentity!==t)throw new Error("TypeScript overlay generation identity does not match its path");return r}function Rd(e,t){let n=Ln(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=$e(r),o=V(Be(e),"blobs");yd(o,{recursive:!0});let a=V(o,`${i}.scipdoc`);if(Ge(a)){let s=D(a,{maxBytes:H,inputKind:"TypeScript overlay blob"});if(s.byteLength!==r.byteLength||$e(s)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let s=`${a}.${process.pid}.${Date.now()}.tmp`;bd(s,r),Sd(s,a)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function xd(e,t){let n=V(Be(e),"generations",_n(t.generationIdentity));if(Ge(n)){let r=Cn(w(n,{maxBytes:A,inputKind:"TypeScript overlay manifest"}));if(Fo(r)!==Fo(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}re(n,t,{spacing:2,trailingNewline:!0})}function Cn(e){let t=JSON.parse(e);if(t.version!==bt||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(Ln(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function Be(e){return V(e,Ve)}function _n(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${$e(e)}.json`}function Fo(e){return $e(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Ln(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 $e(e){return hd("sha256").update(e).digest("hex")}var We=1,Mn="language-indexes",jo=["index.db","index.scip","meta.json"],Mo=[Mn,Me,Ve];function Rt(e){let t=[];for(let n of jo)kd(e,n),t.push(n);for(let n of Mo)No(e,n,t);return{version:We,files:t.sort()}}function xt(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(!jo.includes(e)&&!Mo.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function W(e,t){let n=xt(t),r=jn(e),i=jn(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${Ed}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function No(e,t,n){let r=vd(e,t),i;try{i=Pd(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()?No(e,a,n):o.isFile()&&n.push(xt(a))}}function kd(e,t){let n=W(e,t),r;try{r=Id(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(wd(jn(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{createHash as Bn}from"crypto";import{closeSync as Td,existsSync as E,mkdirSync as Dd,openSync as Fd,readSync as Ad,readdirSync as Wn,renameSync as Vn,rmSync as qe,statSync as we}from"fs";import{basename as Bo,dirname as q,join as R,relative as Go}from"path";var Od=Object.freeze({maxGenerations:2,maxLogicalBytes:2*1024*1024*1024});function Pt(e){let t=$(e.outputDb),n=jd(e);e.onStage?.("after-recovery-retained");let r=e.preserveOutputScip?e.outputScip:e.tempOutputScip,i=zn({generationRoot:t,databasePath:e.tempOutputDb,indexPath:E(r)?r:void 0,metadataPath:E(e.tempMetaPath)?e.tempMetaPath:void 0}),o=(e.now??(()=>new Date))().toISOString(),a={version:be,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||$n(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),$n(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),$n(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let c=i.identity,d={...a,stableMirrors:Hn(e.outputDb,e.outputScip)};G(R(t,"state.json"),d,{spacing:2,trailingNewline:!0});let u=Wo(e.outputDb,{now:e.now}),l=Oe(i.directorySync,s.directorySync);return{currentGeneration:c,...n?{previousGeneration:n}:{},retention:u,achievedDurability:l==="synced"?"directory-durable":"file-flushed",directorySync:l}}function qn(e,t,n,r=()=>new Date){if(!E(e))return null;let i=Ce(e),o=R($(e),"state.json");if(i?.artifactSet==="immutable-v1"&&Ut(e,i.currentGeneration))return i;let a=$(e),s=!i&&E(o)?Nd(n,e,t):void 0;if(s&&!rt(a,s))return null;let c=zn({generationRoot:a,databasePath:e,indexPath:E(t)?t:void 0,metadataPath:E(n)?n:void 0,forcedIdentity:i?.currentGeneration??s}),d={version:be,currentGeneration:c.identity,artifactSet:"immutable-v1",stableMirrors:Hn(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 Un(e,t,n=()=>new Date){if(!E(e)||!E(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=Ce(e),i=$(e),o=zn({generationRoot:i,databasePath:e,indexPath:E(R(q(e),"index.scip"))?R(q(e),"index.scip"):void 0,metadataPath:t}),a=r&&r.currentGeneration!==o.identity?Uo(e,r.currentGeneration):void 0,s={version:be,currentGeneration:o.identity,artifactSet:"immutable-v1",stableMirrors:Hn(e,R(q(e),"index.scip")),...a?{previousGeneration:a}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return G(R($(e),"state.json"),s,{spacing:2,trailingNewline:!0}),Wo(e,{now:n}),s}function Wo(e,t={}){let n=Cd(t.limits),i=(t.now??(()=>new Date))().toISOString(),o=de(Nr(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=_d(e),c=Gr(e,s.map(b=>b.identity),{isProcessAlive:t.isProcessAlive??te,readProcessIdentity:t.readProcessIdentity??ee}),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),qe(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 $o(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{$o(e,s)}catch{}return s}finally{o.release()}}function Cd(e={}){let t={...Od,...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 _d(e){let t=$(e);return E(t)?Wn(t,{withFileTypes:!0}).filter(n=>n.isDirectory()&&/^[a-f0-9]{64}$/.test(n.name)).map(n=>{let r=R(t,n.name),i=rt(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:we(r).mtimeMs}}).sort((n,r)=>n.modifiedAtMs-r.modifiedAtMs||n.identity.localeCompare(r.identity)):[]}function qo(e){let t=0;for(let n of Wn(e,{withFileTypes:!0})){let r=R(e,n.name);n.isDirectory()?t+=qo(r):n.isFile()&&(t+=we(r).size)}return t}function $o(e,t){re(R($(e),"gc.json"),t,{spacing:2,trailingNewline:!0})}function U(e,t=R(q(e),"meta.json")){let n=R($(e),"state.json");if(!E(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=Ut(e,r.currentGeneration),o=i!==null,a=i?Ld(e,t,i,r):!1,s=r.previousGeneration?E(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 Ld(e,t,n,r){if(r.stableMirrors&&(r.stableMirrors.databaseFileIdentity!==_e(e)||r.stableMirrors.indexFileIdentity!==void 0&&r.stableMirrors.indexFileIdentity!==_e(R(q(e),"index.scip")))||!Vo(e,n.database))return!1;let i=R(q(e),"index.scip");if(n.index&&!Vo(i,n.index))return!1;if(!n.metadata)return!E(t);if(!E(t))return!1;let o=R($(e),n.identity,n.metadata.file);return E(o)&&ue(L(t,"reindex metadata"))===ue(L(o,"immutable reindex metadata"))}function Vo(e,t){return E(e)&&we(e).isFile()&&we(e).size===t.size}function jd(e){let t=qn(e.outputDb,e.outputScip,e.metaPath);return t?Uo(e.outputDb,t.currentGeneration):void 0}function Hn(e,t){return{databaseFileIdentity:_e(e),...E(t)?{indexFileIdentity:_e(t)}:{}}}function Uo(e,t){let n=R($(e),t),r=R(n,Bo(e)),i=R(n,"meta.json");return{generationIdentity:t,databasePath:Go(q(e),r),...E(i)?{metadataPath:Go(q(e),i)}:{}}}function Md(e){if(E(e)){for(let t of Wn(e,{withFileTypes:!0}))if(t.isDirectory()&&t.name.endsWith(".tmp"))try{qe(R(e,t.name),{recursive:!0,force:!0})}catch{}}}function Nd(e,t,n=R(q(t),"index.scip")){let r=Bn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(It(t)),E(n)&&r.update(`\0${It(n)}`),E(e)&&r.update(`\0${ue(L(e,"reindex metadata"))}`),r.digest("hex")}function zn(e){let t=Nn(e.databasePath),n=e.indexPath?Nn(e.indexPath):void 0,r=e.metadataPath?Nn(e.metadataPath):void 0,i=e.forcedIdentity??Gd(t,n,e.metadataPath),o=R(e.generationRoot,i),a=R(o,qt);if(E(a)){let d=rt(e.generationRoot,i);if(d&&Ho(o,d.database,t)&&Vd(o,d.index,n)&&Bd(o,d.metadata,e.metadataPath))return{identity:i,directorySync:ne(e.generationRoot)};throw new Error(`SQLite generation ${i} already exists with different or corrupt artifacts.`)}let s=[et(e.generationRoot)];Md(e.generationRoot);let c=`${o}.${process.pid}.${Date.now()}.tmp`;qe(c,{recursive:!0,force:!0}),Dd(c,{recursive:!0});try{s.push(Gn(e.databasePath,R(c,t.file))),n&&e.indexPath&&s.push(Gn(e.indexPath,R(c,n.file))),r&&e.metadataPath&&s.push(Gn(e.metadataPath,R(c,r.file)));let d=G(R(c,qt),{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(ne(c)),F(()=>Vn(c,o)),s.push(ne(e.generationRoot))}finally{try{qe(c,{recursive:!0,force:!0})}catch{}}return{identity:i,directorySync:Oe(...s)}}function Gd(e,t,n){let r=Bn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(e.sha256),t&&r.update(`\0${t.sha256}`),n&&r.update(`\0${ue(L(n,"reindex metadata"))}`),r.digest("hex")}function Nn(e){return{file:Bo(e),size:we(e).size,sha256:It(e)}}function It(e){let t=Bn("sha256"),n=Fd(e,"r"),r=Buffer.allocUnsafe(1024*1024);try{for(;;){let i=$d(n,r);if(i===0)break;t.update(r.subarray(0,i))}}finally{Td(n)}return t.digest("hex")}function $d(e,t){let n=0;for(;n<t.length;){let r=Ad(e,t,n,t.length-n,null);if(n+=r,r===0)break}return n}function Gn(e,t){return tt(e,t,{mode:292})}function Ho(e,t,n){let r=R(e,t.file);return t.file===n.file&&t.size===n.size&&t.sha256===n.sha256&&E(r)&&we(r).size===t.size&&It(r)===t.sha256}function Vd(e,t,n){return!t||!n?t===n:Ho(e,t,n)}function Bd(e,t,n){if(!t||!n)return t===void 0&&n===void 0;let r=R(e,t.file);return E(r)&&ue(L(r,"stored reindex metadata"))===ue(L(n,"candidate reindex metadata"))}function $n(e,t){F(()=>qe(`${t}.tmp-replace`,{force:!0})),F(()=>Vn(e,`${t}.tmp-replace`)),F(()=>Vn(`${t}.tmp-replace`,t))}var Xn=1,Jo="CODEBASEIQ_SHARED_CACHE",Hd=2,vt=JSON.stringify({cliVersion:$r,artifactCatalogVersion:We,postIndexAugmentationSchemaVersion:Hd,sqliteGenerationStoreVersion:be,typescriptFragmentStoreVersion:St,typescriptOverlayStoreVersion:bt}),Qn="manifest.json",zd="shared-cache.json",Zn=[Mn,Me,Ve];function Et(e,t){if(!e.clean||!e.treeOid)return;let n=pa(JSON.stringify({version:Xn,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:vt}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:vt,generationId:n,repositoryCacheDir:Wr(e.repositoryId)}}function na(e,t,n){if(process.env[Jo]==="0")return`${Jo}=0`;if(!qr(n))return"explicit cache or database override";if(zt(Yn(t))!==zt(Br(e))||t!==m(Yn(t),"index.db"))return"index database is outside the managed worktree cache"}function Y(e,t=!0){let n=tr(e),r;try{r=ca(w(m(n,Qn),{inputKind:"shared-generation manifest",maxBytes:A}))}catch{return null}if(r.generationId!==e.generationId||r.repositoryId!==e.repositoryId||r.treeOid!==e.treeOid||r.producerIdentity!==e.producerIdentity||JSON.stringify(r.fingerprint)!==JSON.stringify(e.fingerprint))return null;if(!t)return r;try{for(let i of r.artifacts){let o=W(n,i.path),a=wt(o);if(!a.isFile()||a.size!==i.size||Qe(o,{inputKind:"shared-generation artifact",maxBytes:_})!==i.sha256)return null}}catch{return null}return r}function ra(e,t,n){if(!e.treeOid)return null;let r=Yt(t,n),i=m(Vr(),"repositories",e.repositoryId),o;try{let c=Jn(i);if(!c.isDirectory()||c.isSymbolicLink())return null;o=ea(i)}catch{return null}let a=m(o,"generations"),s=[];try{for(let c of Zo(a)){if(!/^[a-f0-9]{64}$/.test(c))continue;let d=m(a,c),u;try{u=Jn(d)}catch{continue}if(!(!u.isDirectory()||u.isSymbolicLink()))try{let l=ca(w(m(d,Qn),{inputKind:"shared-generation baseline manifest",maxBytes:A}));l.generationId===c&&l.repositoryId===e.repositoryId&&l.treeOid===e.treeOid&&l.producerIdentity===vt&&Xd(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=Y(d);if(u)return{snapshot:d,manifest:u}}return null}function ia(e){let t=de(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 Jd(e)}finally{t.release()}}function Jd(e){let t=Y(e.snapshot);if(t)return Yo(e.snapshot,t);if(!la(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=Ko(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=Rt(e.sourceCacheDir),i=m(e.snapshot.repositoryCacheDir,"generations"),o=[et(i)],a=Qo(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(He(h,b,292)),e.onPublicationStage?.("after-artifact-flushed",f);let y=wt(b).size;s.push({path:f,size:y,sha256:Qe(b,{inputKind:"staged shared-generation artifact",maxBytes:_})})}let c=ta(D(m(a,"index.scip"),{inputKind:"staged shared SCIP index",maxBytes:_})).metadata?.projectRoot;if(!c)throw new Error("shared SCIP generation has no project root metadata");let d=nr(e.sourceProjectRoot);if(!Se(c,d))throw new Error("shared SCIP generation root does not match its source worktree");if(Ko(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let u={version:Xn,artifactCatalogVersion:We,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,Qn),u,{spacing:2,trailingNewline:!0});l.directorySync!=="not-requested"&&o.push(l.directorySync),e.onPublicationStage?.("after-manifest-flushed"),o.push(ne(a)),e.onPublicationStage?.("after-staging-directory-synced");let p=tr(e.snapshot);try{if(se(p)&&!Y(e.snapshot)){let f=`${p}.corrupt-${process.pid}-${Date.now()}`;F(()=>me(p,f)),ae(f,{recursive:!0,force:!0})}F(()=>me(a,p))}catch(f){let h=Y(e.snapshot);if(h)return Yo(e.snapshot,h);throw f}e.onPublicationStage?.("after-generation-renamed"),o.push(ne(i)),e.onPublicationStage?.("after-generations-directory-synced");let g=Oe(...o);return{kind:"published",manifest:u,achievedDurability:g==="synced"?"directory-durable":"file-flushed",directorySync:g}}finally{ae(a,{recursive:!0,force:!0})}}function Yo(e,t){let n=ne(m(e.repositoryCacheDir,"generations"));return{kind:"existing",manifest:t,achievedDurability:n==="synced"?"directory-durable":"file-flushed",directorySync:n}}function kt(e){let t=tr(e.snapshot);Ee(e.targetCacheDir,{recursive:!0});let n=de(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=Qo(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(He(d,u),wt(u).size!==c.size||Qe(u,{inputKind:"hydrated shared-generation artifact",maxBytes:_})!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let a=nr(e.targetProjectRoot);if(a!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&ji(W(r,c.path),e.manifest.scipProjectRoot,a);if(!la(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=Qd(e.targetCacheDir,r),o=!0,Zd(r,e.targetCacheDir,i),Pt({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=U(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&&er(e.snapshot,e.targetCacheDir,e.action??"attached",e.now)}catch(a){throw o&&i&&eu(e.targetCacheDir,i),a}finally{r&&ae(r,{recursive:!0,force:!0}),n.release()}}async function oa(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(Y(e))return{kind:"generation-ready"};let d=Ze(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 qd(Math.min(r,u))}return Y(e)?{kind:"generation-ready"}:{kind:"timeout"}}function er(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:sa(i)};return da(e.repositoryCacheDir,o,!0),o}function aa(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:sa(r)};return da(e.repositoryCacheDir,i,!0),i}function sa(e){return pa(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:Kn(e.projectRoot),localCacheDir:Kn(e.localCacheDir)}))}function ca(e){let t=JSON.parse(e);if(t.version!==Xn||t.artifactCatalogVersion!==We||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!==vt||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(xt(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 He(e,t,n=384){return tt(e,t,{mode:n})}function Yd(e,t,n){Ee(e,{recursive:!0}),G(m(e,zd),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function Ko(e){try{let t=Rt(e),n=Xo("sha256");for(let r of t.files){let i=W(e,r),o=wt(i).size;n.update(r).update("\0").update(String(o)).update("\0"),Cr(i,{inputKind:"source-generation artifact",maxBytes:_},a=>n.update(a)),n.update("\0")}return n.digest("hex")}catch{return null}}function Kd(e){try{let t=Z(w(m(e,"meta.json"),{inputKind:"reindex metadata",maxBytes:A}));return(t.kind==="legacy"||t.kind==="supported")&&t.capabilities.publishableGeneration?t.metadata:void 0}catch{return}}function Xd(e,t){let n=Yt(e.languages,e);return JSON.stringify(n)===JSON.stringify(t)}function tr(e){return m(e.repositoryCacheDir,"generations",e.generationId)}function da(e,t,n){let r=jr(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId??t.baseGenerationId;if(!o||!se(m(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=m(e,"worktrees");Ee(i,{recursive:!0}),G(m(i,`${t.worktreeId}.json`),t,{spacing:2,trailingNewline:!0}),Yd(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function Qd(e,t){let n=m(t,".rollback"),r=new Map,i=new Map;Ee(n,{recursive:!0});for(let s of["index.scip","index.db","meta.json"]){let c=m(e,s),d=se(c);r.set(s,d),d&&He(c,m(n,"stable",s))}for(let s of Zn){let c=m(e,s),d=se(c);if(d){let u=Jn(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,nt),a=se(o);return a&&ua(o,m(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:a}}function Zd(e,t,n){for(let r of Zn){let i=m(t,r);if(n.managedDirectories.get(r)){let a=m(n.root,"managed",r);Ee(Yn(a),{recursive:!0}),F(()=>me(i,a))}let o=m(e,r);se(o)&&F(()=>me(o,i))}}function eu(e,t){for(let i of Zn){let o=m(e,i),a=m(t.root,"managed",i);t.managedDirectories.get(i)?se(a)&&(ae(o,{recursive:!0,force:!0}),F(()=>me(a,o))):ae(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let a=m(e,i);if(!o){ae(a,{force:!0});continue}let s=`${a}.shared-restore-${Wd()}`;He(m(t.root,"stable",i),s),F(()=>ae(a,{force:!0})),F(()=>me(s,a))}let n=m(e,nt);ae(n,{recursive:!0,force:!0});let r=m(t.root,"sqlite-generations");t.generationStoreExisted&&se(r)&&F(()=>me(r,n))}function ua(e,t){Ee(t,{recursive:!0});for(let n of Zo(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()?ua(r,i):n.isFile()&&He(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 la(e,t,n,r=!0,i=!0){try{let o=Kd(e);if(!o||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return Ue("source validation rejected metadata"),!1;let a=Rt(e),s=U(m(e,"index.db"),m(e,"meta.json"));if(r?s.state!=="current":s.state==="invalid"||s.state==="drifted")return Ue(`source validation rejected SQLite generation state ${s.state}`),!1;let c=new Ud(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=nr(t),l=(i?a.files.filter(p=>p.endsWith(".scip")):["index.scip"]).every(p=>{let g=ta(D(W(e,p),{inputKind:"shared SCIP validation artifact",maxBytes:_})).metadata?.projectRoot,f=g!==void 0&&Se(g,d);return f||Ue(`source validation rejected SCIP root for ${p}: ${String(g)}`),f});return l||Ue("source validation rejected SCIP project roots"),l}catch(o){return Ue(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function Ue(e){process.env.CODEBASEIQ_DEBUG&&console.error(`shared-cache: ${e}`)}function nr(e){try{return zo(ea(e)).href}catch{return zo(Kn(e)).href}}function pa(e){return Xo("sha256").update(e).digest("hex")}import{createHash as Ru}from"crypto";import{existsSync as ir,statSync as xu,writeFileSync as or}from"fs";import{join as Iu}from"path";import{createRequire as nu}from"module";import{dirname as ru,isAbsolute as dm,relative as um,resolve as lm,sep as pm}from"path";var fa=nu(import.meta.url),iu=1,ga="0.4.0";function rr(){let e=ou();return e.available?{available:!0,packageVersion:e.packageVersion,typescriptVersion:e.typescriptVersion,producerIdentity:e.producerIdentity}:e}function ou(){try{let e=fa.resolve("@sourcegraph/scip-typescript/package.json"),t=JSON.parse(L(e,"scip-typescript package manifest"));if(t.version!==ga)return{available:!1,reason:`unsupported scip-typescript version ${String(t.version??"unknown")}; expected ${ga}`};let n=ru(e),r=fa.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:au(t.version,i.version)}}catch(e){return{available:!1,reason:`scip-typescript document producer unavailable: ${e instanceof Error?e.message:String(e)}`}}}function au(e,t){return`scip-typescript:${e}:typescript:${t}:document-adapter:${iu}`}import{createHash as su}from"crypto";import{dirname as cu,join as ma}from"path";var Tt=4;var du="typescript-index";function ha(e){let t=ma(e,du),n=Zr(t);return{...n,requestDir:n.legacyRequestDir}}function ya(e){try{let t=Fr(Z(L(ma(cu(e),"meta.json"),"reindex metadata")));return t?su("sha256").update(t).digest("hex"):null}catch{return null}}import{randomUUID as uu}from"crypto";import{existsSync as lu}from"fs";var pu=12e4,fu=5,Dt=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;constructor(t,n={}){this.projectRoot=Ur(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??Su(),this.runtime=n.runtime??bu,this.mailboxLimits=n.mailboxLimits??{}}request(t){let n=ti(this.cacheDir),r=ha(this.cacheDir),i=rn(n.statePath);if(!Sa(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=tn("typescript-index-v4",{baseGeneration:this.baseGeneration,request:t}),d=nn(c),u=ei(r,{mailboxVersion:en,operationKey:c,clientId:this.runtime.randomId(),enqueuedAtMs:o,deadlineAtMs:a,protocolVersion:Tt,id:d,baseGeneration:this.baseGeneration,request:t},{nowMs:o,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??I)()<=s;){if(lu(u.responsePath))return gu(w(u.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),d,c,this.baseGeneration,t.producerIdentity,t.affectedFiles);let l=rn(n.statePath);if(!Sa(l,this.projectRoot,this.runtime))throw new Error("TypeScript index service stopped while processing a request.");this.runtime.sleep(fu)}throw new Error(`TypeScript index service timed out after ${this.timeoutMs}ms.`)}};function Sa(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===Tt&&n.isProcessAlive(e.pid)&&(!e.processIdentity||r!=null&&Ae(e.processIdentity,r))}function gu(e,t,n,r,i,o){let a=JSON.parse(e);if(a.protocolVersion!==Tt||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=mu(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 mu(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(hu)||r.has(o.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(o.relativePath);let a=o.bytesBase64===null?null:yu(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 hu(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 yu(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function Su(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:pu}var bu={now:Date.now,monotonicNow:I,randomId:uu,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:te,readProcessIdentity:ee};function Pu(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=Xe(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"||!on(u.path)))return{eligible:!1,reason:"change is not a modified TypeScript source file"};let r=lt(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=vu(r,t,e.graph);if(!i)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let o=ba(e.currentSnapshot,e.projectFiles,e.producerIdentity),a=ba(e.previousSnapshot,e.projectFiles,e.producerIdentity);if(o!==a)return{eligible:!1,reason:"TypeScript fragment project identity changed"};let s=xa(e.previousSnapshot,e.projectFiles,e.graph,e.producerIdentity,e.projectFiles);if(!s)return{eligible:!1,reason:"prior document identity unavailable"};let c=xa(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:Ra(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:Ra(e.currentSnapshot,e.producerIdentity),previousDocumentIdentities:s,nextDocumentIdentities:c,projects:i,...d?{tsconfigPath:d.tsconfigPath,projectArgument:d.projectArgument}:{}}}function vu(e,t,n){let r=new Map;for(let o of e.affectedFiles){let a=wu(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=>Eu(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 wu(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)=>Ft(a)-Ft(o)||o.localeCompare(a)),i=r[0];return r[1]&&Ft(r[1])===Ft(i)?null:i}function Ft(e){return e==="."?0:e.split("/").filter(Boolean).length}function Eu(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 Ia(e){let t=I();try{if(!ir(e.previousDbPath)||!ir(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=rr();if(!r.available)throw new Error(r.reason);let i=performance.now()-n;n=performance.now();let o=new z({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),a,s;try{a=it(o,{includeIgnored:!1}).filter(on).sort(),s=ct(o)}finally{o.close()}let c=performance.now()-n,d=Pu({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:ir(Iu(e.projectRoot,"tsconfig.json"))});if(!d.eligible)throw new Error(d.reason);let u=ya(e.previousDbPath);if(!u)throw new Error("published TypeScript base generation unavailable");n=performance.now();let l=new Dt({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=xu(e.previousShardPath).size>=Ao;n=performance.now();let b=h?null:D(e.previousShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:_}),y=h?{completeIndexBytes:null,affectedIndexBytes:go(g)}:bo({packageVersion:r.packageVersion,baseIndexBytes:b,fragments:g}),x=performance.now()-n;n=performance.now(),h?Oo({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,nextGenerationIdentity:d.nextFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,baseShardCurrent:e.baseShardCurrent,fragments:g}):(mo({cacheDir:e.cacheDir,packageVersion:r.packageVersion,indexBytes:b,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.previousFragmentGeneration,documentIdentities:d.previousDocumentIdentities,allowUntrackedDocuments:!0}),ho({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&&or(e.candidateShardPath,y.completeIndexBytes),or(e.candidateAffectedScipPath,y.affectedIndexBytes);let T=performance.now()-n,k={scipPath:h?e.previousShardPath:e.candidateShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,completeScipUpdated:!h,durationMs:I()-t,cold:p.some(v=>v.cold),changedFiles:d.plan.changedFiles,affectedFiles:d.plan.affectedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:d.previousFragmentGeneration,nextFragmentGeneration:d.nextFragmentGeneration,manifest:d.manifest,plan:d.plan,projectFileCount:a.length,referenceFragmentsByFile:new Map(g.map(v=>[v.relativePath,v.referenceFragments])),timings:{runtimeMs:i,graphMs:c,requestMs:f,serviceMs:p.reduce((v,he)=>v+he.durationMs,0),assemblyMs:x,fragmentStoreMs:P,writeMs:T}};return e.onStatus(`Incremental TypeScript index emitted ${k.affectedFiles.length} affected document(s) across ${d.projects.length} project(s) in ${(k.durationMs/1e3).toFixed(3)}s (${k.cold?"cold":"warm"} service; ${h?"whole SCIP deferred":"whole SCIP current"}; runtime ${i.toFixed(0)}ms, graph ${c.toFixed(0)}ms, request ${f.toFixed(0)}ms, assembly ${x.toFixed(0)}ms, fragments ${P.toFixed(0)}ms, write ${T.toFixed(0)}ms).`),k}catch(n){return e.onStatus(`Incremental TypeScript index unavailable: ${n instanceof Error?n.message:String(n)}. Falling back to the whole-project indexer.`),null}}function Pa(e){let t=rr();if(!t.available)throw new Error(t.reason);let n=Co({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:D(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:_}),packageVersion:t.packageVersion});or(e.candidateShardPath,n)}function ba(e,t,n){let r=e.files.filter(i=>Tr(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 ar(JSON.stringify({version:1,producerIdentity:n,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),projectFiles:[...t].sort(),nonSourceInputs:r}))}function Ra(e,t){return ar(JSON.stringify({version:1,producerIdentity:t,snapshot:e}))}function xa(e,t,n,r,i){let o=new Set(e.files.map(c=>c.path)),a=ni({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,ar(JSON.stringify({version:1,producerIdentity:r,generatedDocument:c})))}return s}function ar(e){return Ru("sha256").update(e).digest("hex")}import{closeSync as ku,existsSync as At,fstatSync as Tu,lstatSync as Du,openSync as Fu,renameSync as dr,rmSync as Ot,statSync as Au,writeSync as Ou}from"fs";import{cpus as Cu}from"os";import{join as ur}from"path";var sr=Symbol("no-error");async function va(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=sr,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===sr&&(s=l),c=!1}}});if(await Promise.all(d),s!==sr)throw s;return r}function _u(e,t){if(e.temporaryRootConfigContent===void 0)return null;let n=ur(t,"tsconfig.json"),r=Buffer.from(e.temporaryRootConfigContent,"utf8"),i;try{i=Fu(n,"wx",384)}catch(o){if(o.code==="EEXIST")return null;throw o}try{Ou(i,r);let o=Tu(i);return{path:n,content:r,device:o.dev,inode:o.ino}}finally{ku(i)}}function Lu(e){if(e)try{let t=Du(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;Ot(e.path)}catch(t){if(t.code!=="ENOENT")throw t}}function ju(e,t,n){if(!e.defaultOutputPath)return;let r=ur(t,e.defaultOutputPath);n!==r&&At(r)&&dr(r,n)}function Mu(e,t,n){if(!e.defaultOutputPath)return null;let r=ur(t,e.defaultOutputPath);if(r===n)return null;let i=`${n}.default-output-backup`;return Ot(i,{force:!0}),At(r)?(dr(r,i),{defaultOutputPath:r,backupPath:i}):{defaultOutputPath:r,backupPath:null}}function Nu(e){e&&(Ot(e.defaultOutputPath,{force:!0}),e.backupPath&&At(e.backupPath)&&dr(e.backupPath,e.defaultOutputPath))}function Gu(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,Cu().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function Ea(e,t,n,r,i){N(i,"Reindex cancelled by its owner.");let o=e.filter(u=>u.config.defaultOutputPath),a=e.filter(u=>!u.config.defaultOutputPath),s=[],c=Gu(a.length,r),d=await va(a,c,u=>cr(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...`),N(i,"Reindex cancelled by its owner."),u.set(p.id,(await cr(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)N(i,"Reindex cancelled by its owner."),s.push((await cr(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 cr(e,t,n,r){N(r,"Reindex cancelled by its owner."),n(`Indexing ${e.label} with ${e.resolvedBinary}...`),Ot(e.scipPath,{force:!0});let i=Mu(e.config,t,e.scipPath),o=_u(e,t),a=[e.binary,...e.args].join(" "),s=I();try{e.trustedProjectTool&&Qr(t,e.trustedProjectTool);let d=Kr(e.binary,e.args),u=await dt({command:d.binary,args:d.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:$u(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,signal:r});if(u.status!==0){let l=u.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${u.status}${l?`:
|
|
233
|
-
${l}`:""}`)}
|
|
234
|
-
`)[0]}`,p=e.label===e.language?l:`${e.label}: ${l}`;return n(`Skipping ${e.label}: ${l}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:I()-s,command:a,skipped:{language:e.language,reason:p}},retryable:
|
|
229
|
+
ORDER BY d.relative_path, c.chunk_index, m.role, g.symbol`).all(),c=new Map;for(let[u,l]of Object.entries({documents:i,chunks:o,definitions:a,mentions:s}))for(let p of l){let g=JSON.stringify([u,p]),f=c.get(p.relative_path)??[];f.push(g),c.set(p.relative_path,f)}let d=new Map;for(let[u,l]of[...c].sort(([p],[g])=>p.localeCompare(g))){let p=Ac("sha256");for(let g of l.sort())p.update(g).update(`
|
|
230
|
+
`);d.set(u,p.digest("hex"))}return d}function ae(e,t){return e.prepare(t).get().value}import zc from"better-sqlite3";var ht="idx_mentions_definitions",Jc=["symbol_id","chunk_id"];function vn(e){let t=new zc(j(e)),n=[],r=[],i=[];try{return t.transaction(()=>{Yc(t,n),yt(t,"idx_global_symbols_symbol")?.join("\0")==="symbol"&&zi(t,"global_symbols").some(s=>s.name!=="idx_global_symbols_symbol"&&s.unique&&s.columns.join("\0")==="symbol")?(t.exec('DROP INDEX "idx_global_symbols_symbol"'),r.push("idx_global_symbols_symbol")):yt(t,"idx_global_symbols_symbol")&&i.push("idx_global_symbols_symbol");let o=yt(t,"idx_chunks_doc_id"),a=zi(t,"chunks").some(s=>s.name!=="idx_chunks_doc_id"&&s.columns.length>1&&s.columns[0]==="document_id");o?.join("\0")==="document_id"&&a?(t.exec('DROP INDEX "idx_chunks_doc_id"'),r.push("idx_chunks_doc_id")):o&&i.push("idx_chunks_doc_id"),t.exec("ANALYZE")})(),{added:n,removed:r,retained:i,analyzed:!0}}catch(o){if(o.code==="SQLITE_NOTADB")return{added:[],removed:[],retained:[],analyzed:!1,skippedReason:"not-a-sqlite-database"};throw o}finally{t.close()}}function Yc(e,t){let n=Ji(e,ht);if(n){let r=n.columns.join("\0")===Jc.join("\0"),i=/\bWHERE\s+role\s*=\s*1\b/iu.test(n.sql??"");if(!r||!i||n.table!=="mentions")throw new Error(`${ht} exists with an incompatible definition`);return}e.exec(`CREATE INDEX "${ht}" ON mentions(symbol_id, chunk_id) WHERE role = 1`),t.push(ht)}function zi(e,t){return e.prepare(`PRAGMA index_list('${t.replaceAll("'","''")}')`).all().map(n=>({name:n.name,unique:n.unique===1,columns:yt(e,n.name)??[]}))}function yt(e,t){return Ji(e,t)?.columns??null}function Ji(e,t){let n=e.prepare("SELECT tbl_name, sql FROM sqlite_master WHERE type = 'index' AND name = ?").get(t);if(!n)return null;let r=e.prepare(`PRAGMA index_info('${t.replaceAll("'","''")}')`).all().map(i=>i.name);return{table:n.tbl_name,sql:n.sql,columns:r}}import{writeFileSync as Kc}from"fs";function q(e,t){let n=performance.now(),r=e.run(t);return{stageId:e.id,facts:e.facts,durationMs:performance.now()-n,result:r}}function Ki(e){let t=e.readFingerprint(),n=Qi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=e.compute();return Zi(e.cachePath,e.readFingerprint(),r),r}async function Xi(e){let t=e.readFingerprint(),n=Qi(e.cachePath,t);if(n)return e.onCacheHit?.(n.result),n.result;let r=await e.compute();return Zi(e.cachePath,e.readFingerprint(),r),r}function Qi(e,t){try{let n=JSON.parse(w(e,{maxBytes:A,inputKind:"post-index augmentation cache"}));return Yi(n.fingerprint)===Yi(t)?{result:n.result}:null}catch{return null}}function Zi(e,t,n){Kc(e,`${JSON.stringify({updatedAt:new Date().toISOString(),fingerprint:t,result:n},null,2)}
|
|
231
|
+
`)}function Yi(e){return JSON.stringify(e)}import{createHash as Xc}from"crypto";import{existsSync as wn,readdirSync as Qc}from"fs";import{dirname as En,join as St,relative as Zc,resolve as kn,sep as eo}from"path";function to(e,t){let n=t.includes("."),r={};for(let o of t)r[o]=[];let i=[];for(let o of e){let a=oo(o.path,t);a?r[a].push(o):n?r["."].push(o):i.push(o)}return{files:r,shared:i}}function no(e,t){let n=new Map;for(let i of e){let o=t[i]?.packageName;o&&n.set(o,i)}let r=new Map;for(let i of e)r.set(i,new Set);for(let i of e){let o=t[i],a=r.get(i);if(!o||o.parseFailed){for(let s of e)s!==i&&a.add(s);continue}for(let s of o.dependencyNames){let c=n.get(s);c&&c!==i&&a.add(c)}for(let s of[...o.pathsTargets,...o.referencesPaths]){let c=oo(s,e);c&&c!==i&&a.add(c)}}return ed(e,r)}function ro(e,t,n){let r={};for(let i of e){let o=new Map;for(let a of t.files[i]??[])o.set(a.path,a);for(let a of n[i]??[])for(let s of t.files[a]??[])o.set(s.path,s);for(let a of t.shared)o.set(a.path,a);r[i]={files:[...o.values()].sort((a,s)=>a.path.localeCompare(s.path))}}return r}function Tn(e){if(e===".")return"root";let t=Xc("sha256").update(e).digest("hex").slice(0,8);return`${e.split("/").join("__")}-${t}`}function io(e,t){let n=kn(e),r={};for(let i of t)r[i]=td(n,i);return r}function oo(e,t){let n;for(let r of t)r!=="."&&(e===r||e.startsWith(`${r}/`))&&(!n||r.length>n.length)&&(n=r);return n}function ed(e,t){let n={};for(let r of e){let i=new Set,o=[...t.get(r)??[]];for(;o.length>0;){let a=o.pop();if(!(a===r||i.has(a))){i.add(a);for(let s of t.get(a)??[])s!==r&&!i.has(s)&&o.push(s)}}n[r]=[...i].sort((a,s)=>a.localeCompare(s))}return n}function td(e,t){let n=t==="."?e:St(e,t),r=nd(n),i=rd(n),o=i?id(i,e):{pathsTargets:[],referencesPaths:[],failed:!1};return{packageName:r.name,dependencyNames:r.dependencyNames,pathsTargets:o.pathsTargets,referencesPaths:o.referencesPaths,parseFailed:r.failed||o.failed}}function nd(e){let t=St(e,"package.json");if(!wn(t))return{name:void 0,dependencyNames:[],failed:!1};let n=Dn(t);if(!n.ok)return{name:void 0,dependencyNames:[],failed:!0};let r=typeof n.value.name=="string"?n.value.name:void 0,i=new Set;for(let o of["dependencies","devDependencies","peerDependencies"]){let a=n.value[o];if(a&&typeof a=="object"&&!Array.isArray(a))for(let s of Object.keys(a))i.add(s)}return{name:r,dependencyNames:[...i],failed:!1}}function rd(e){let t=St(e,"tsconfig.json");if(wn(t))return t;let n;try{n=Qc(e).filter(r=>/^tsconfig.*\.json$/.test(r))}catch{return}return n.sort((r,i)=>r.localeCompare(i)),n.length>0?St(e,n[0]):void 0}function id(e,t){let n=Dn(e);if(!n.ok)return{pathsTargets:[],referencesPaths:[],failed:!0};let r=od(n.value,e,t),i=ao(e,n.value,t,0);return{pathsTargets:i.pathsTargets,referencesPaths:r,failed:i.failed}}function od(e,t,n){let r=e.references;if(!Array.isArray(r))return[];let i=En(t),o=new Set;for(let a of r){if(!a||typeof a!="object")continue;let s=a.path;if(typeof s!="string"||s.trim()==="")continue;let c=so(s,i,n);c&&o.add(c)}return[...o]}function ao(e,t,n,r){let i=ad(t);if(i)return{pathsTargets:sd(i,En(e),n),failed:!1};if(r>=5)return{pathsTargets:[],failed:!1};let o=cd(t.extends,e,n);if(!o)return{pathsTargets:[],failed:!1};let a=Dn(o);return a.ok?ao(o,a.value,n,r+1):{pathsTargets:[],failed:!0}}function ad(e){let t=e.compilerOptions;if(!t||typeof t!="object"||Array.isArray(t))return;let n=t.paths;return n&&typeof n=="object"&&!Array.isArray(n)?n:void 0}function sd(e,t,n){let r=new Set;for(let i of Object.values(e))if(Array.isArray(i))for(let o of i){if(typeof o!="string")continue;let a=so(o,t,n);a&&r.add(a)}return[...r]}function cd(e,t,n){let r=Array.isArray(e)?e.at(-1):e;if(typeof r!="string"||r.trim()===""||!r.startsWith(".")&&!r.startsWith("/"))return;let i=kn(En(t),r);if(i.endsWith(".json")||(i=`${i}.json`),!i.split(eo).includes("node_modules")&&Bt(n,i)&&wn(i))return i}function so(e,t,n){let r=e.replace(/\/?\*+$/,""),i=kn(t,r===""?".":r);if(!Bt(n,i))return;let a=Zc(n,i).split(eo).join("/");return a===""?".":a}function dd(e){let t="",n=0,r=!1,i=e.length;for(;n<i;){let o=e[n];if(r){if(t+=o,o==="\\"&&n+1<i){t+=e[n+1],n+=2;continue}o==='"'&&(r=!1),n+=1;continue}if(o==='"'){r=!0,t+=o,n+=1;continue}if(o==="/"&&e[n+1]==="/"){for(n+=2;n<i&&e[n]!==`
|
|
232
|
+
`;)n+=1;continue}if(o==="/"&&e[n+1]==="*"){for(n+=2;n<i&&!(e[n]==="*"&&e[n+1]==="/");)n+=1;n+=2;continue}t+=o,n+=1}return t}function Dn(e){try{let t=w(e,{maxBytes:A,inputKind:"TypeScript project manifest"}),n=JSON.parse(dd(t));return n&&typeof n=="object"&&!Array.isArray(n)?{ok:!0,value:n}:{ok:!1}}catch{return{ok:!1}}}import{createHash as Zo,randomUUID as Wd}from"crypto";import{existsSync as ce,lstatSync as Kn,mkdirSync as ke,readdirSync as ea,realpathSync as ta,renameSync as he,rmSync as se,statSync as kt}from"fs";import{dirname as Xn,join as m,resolve as Qn}from"path";import{setTimeout as Ud}from"timers/promises";import{pathToFileURL as Yo}from"url";import{deserializeSCIP as na}from"@c4312/scip";import Hd from"better-sqlite3";import{lstatSync as Pd,readdirSync as vd}from"fs";import{join as wd,relative as Ed,resolve as Nn,sep as kd}from"path";import{createHash as ud}from"crypto";import{existsSync as Ne,mkdirSync as ld,readdirSync as co,renameSync as pd,rmSync as uo,writeFileSync as fd}from"fs";import{join as Y}from"path";import{create as po,fromBinary as fo,toBinary as gd}from"@bufbuild/protobuf";import{deserializeSCIP as bt,DocumentSchema as An,IndexSchema as go,serializeSCIP as mo}from"@c4312/scip";var Rt=1,Ge="typescript-scip-fragments";function ho(e){if(e.length===0)throw new Error("affected TypeScript mini index requires documents");let t=new Set,n=[];for(let o of e){let a=ge(o.relativePath);if(t.has(a))throw new Error(`duplicate TypeScript fragment replacement: ${a}`);if(t.add(a),o.bytes===null)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${a}`);let s=fo(An,o.bytes);if(s.relativePath!==a)throw new Error(`TypeScript fragment path mismatch: expected ${a}, got ${s.relativePath}`);n.push(s)}let r=mo(po(go,{documents:n,externalSymbols:[]})),i=bt(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function $e(e){let t=Y(e,Ge);return{rootDir:t,blobDir:Y(t,"blobs"),generationDir:Y(t,"generations")}}function md(e){let t=bt(e.indexBytes);Do(t.metadata,Fo(e)),To(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let a=ge(o.relativePath);if(n.has(a))throw new Error(`duplicate TypeScript SCIP document path: ${a}`);n.add(a);let s=gd(An,o),c=e.documentIdentities.get(a)??(e.allowUntrackedDocuments?me(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:a,contentHash:me(s)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${a}`);r.push(vo(e.cacheDir,{relativePath:a,bytes:s,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=wo(e,r);return Eo(e.cacheDir,i),i}function yo(e){let t=$e(e.cacheDir);if(!Ne(Cn(t,e.generationIdentity)))return md(e);let n=bo({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity});if(!e.allowUntrackedDocuments&&n.manifest.documents.length!==e.documentIdentities.size)throw new Error("TypeScript fragment generation document identities changed");for(let r of n.manifest.documents){let i=e.documentIdentities.get(r.relativePath);if(!(i===void 0&&e.allowUntrackedDocuments)&&i!==r.documentIdentity)throw new Error(`TypeScript fragment generation document identity changed: ${r.relativePath}`)}return n.manifest}function So(e){let t=bo({cacheDir:e.cacheDir,generationIdentity:e.previousGenerationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity}).manifest,n=new Map(t.documents.map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let a=ge(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript fragment replacement: ${a}`);if(r.add(a),!n.has(a))throw new Error(`TypeScript fragment replacement has no prior document: ${a}`);let s=e.documentIdentities.get(a);if(!s)throw new Error(`missing TypeScript document identity: ${a}`);o.bytes===null?n.delete(a):n.set(a,vo(e.cacheDir,o,s))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=wo(e,[...n.values()]);return Eo(e.cacheDir,i),i}function bo(e){let t=$e(e.cacheDir),n=Cn(t,e.generationIdentity),r;try{r=On(w(n,{maxBytes:A,inputKind:"TypeScript fragment manifest"}))}catch(o){throw new Error(`TypeScript fragment generation is unavailable: ${o instanceof Error?o.message:String(o)}`,{cause:o})}if(r.generationIdentity!==e.generationIdentity)throw new Error("TypeScript fragment generation identity does not match its manifest path");if(e.producerIdentity&&r.producerIdentity!==e.producerIdentity)throw new Error("TypeScript fragment producer identity changed");if(e.projectIdentity&&r.projectIdentity!==e.projectIdentity)throw new Error("TypeScript fragment project identity changed");let i=new Map;for(let o of r.documents){let a=Y(t.blobDir,`${o.blobHash}.scipdoc`),s=D(a,{maxBytes:z,inputKind:"TypeScript fragment blob"});if(s.byteLength!==o.byteLength||me(s)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,s)}return{manifest:r,fragments:i}}function Ro(e){let t=Io(e);return Fn(t.baseIndex,t.completeDocuments,"assembled")}function xo(e){let t=Io(e);return hd(t.deletedAffectedPaths),{completeIndexBytes:Fn(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Fn(t.baseIndex,t.affectedDocuments,"affected")}}function Io(e){let t=bt(e.baseIndexBytes);Do(t.metadata,Fo(e)),To(t.externalSymbols);let n=new Map;for(let s of e.fragments){let c=ge(s.relativePath);if(n.has(c))throw new Error(`duplicate TypeScript fragment replacement: ${c}`);n.set(c,s)}if(n.size===0)throw new Error("TypeScript index assembly requires at least one replacement");let r=new Set,i=[],o=[],a=[];for(let s of t.documents){let c=ge(s.relativePath);if(r.has(c))throw new Error(`duplicate TypeScript SCIP document path: ${c}`);r.add(c);let d=n.get(c);if(!d){i.push(s);continue}if(n.delete(c),d.bytes===null){a.push(c);continue}let u=fo(An,d.bytes);if(u.relativePath!==c)throw new Error(`TypeScript fragment path mismatch: expected ${c}, got ${u.relativePath}`);i.push(u),o.push(u)}if(n.size>0)throw new Error(`TypeScript fragment replacement has no prior document: ${[...n.keys()].sort()[0]}`);return{baseIndex:t,completeDocuments:i,affectedDocuments:o,deletedAffectedPaths:a}}function Fn(e,t,n){let r=mo(po(go,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=bt(r);if(i.documents.length!==t.length||i.externalSymbols.length!==0)throw new Error(`${n} TypeScript SCIP index failed structural verification`);return r}function hd(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function Po(e,t){let n=$e(e);if(!Ne(n.generationDir))return;let r=new Set(t.map(a=>ko(a))),i=co(n.generationDir).filter(a=>a.endsWith(".json")),o=new Set;for(let a of i.filter(s=>r.has(s))){let s=On(w(Y(n.generationDir,a),{maxBytes:A,inputKind:"TypeScript fragment manifest"}));for(let c of s.documents)o.add(`${c.blobHash}.scipdoc`)}for(let a of i)r.has(a)||uo(Y(n.generationDir,a),{force:!0});if(Ne(n.blobDir))for(let a of co(n.blobDir))o.has(a)||uo(Y(n.blobDir,a),{force:!0})}function vo(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=ge(t.relativePath),i=Buffer.from(t.bytes),o=me(i),a=$e(e);ld(a.blobDir,{recursive:!0});let s=Y(a.blobDir,`${o}.scipdoc`);if(Ne(s)){let c=D(s,{maxBytes:z,inputKind:"TypeScript fragment blob"});if(c.byteLength!==i.byteLength||me(c)!==o)throw new Error(`existing TypeScript fragment blob is corrupt: ${r}`)}else{let c=`${s}.${process.pid}.${Date.now()}.tmp`;fd(c,i),pd(c,s)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function wo(e,t){if(!e.producerIdentity||!e.projectIdentity||!e.generationIdentity)throw new Error("TypeScript fragment generation identities must be non-empty");let n=[...t].sort((r,i)=>r.relativePath.localeCompare(i.relativePath));if(new Set(n.map(r=>r.relativePath)).size!==n.length)throw new Error("TypeScript fragment generation contains duplicate document paths");return{version:Rt,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function Eo(e,t){let n=$e(e),r=Cn(n,t.generationIdentity);if(Ne(r)){let i=On(w(r,{maxBytes:A,inputKind:"TypeScript fragment manifest"}));if(lo(i)!==lo(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}ie(r,t,{spacing:2,trailingNewline:!0})}function lo(e){return me(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function On(e){let t=JSON.parse(e);if(t.version!==Rt||typeof t.producerIdentity!="string"||typeof t.projectIdentity!="string"||typeof t.generationIdentity!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.documents))throw new Error("invalid TypeScript fragment generation manifest");let n=new Set;for(let r of t.documents){if(!r||typeof r.relativePath!="string"||typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash)||typeof r.byteLength!="number"||!Number.isInteger(r.byteLength)||r.byteLength<0||typeof r.documentIdentity!="string"||!r.documentIdentity)throw new Error("invalid TypeScript fragment record");if(ge(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function Cn(e,t){return Y(e.generationDir,ko(t))}function ko(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${me(e)}.json`}function To(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function Do(e,t){if(!e||typeof e!="object")throw new Error("TypeScript SCIP shard has no producer metadata");let n=e,r=n.toolInfo??n.tool_info;if(!r||typeof r!="object")throw new Error("TypeScript SCIP shard has no producer tool identity");let i=r;if(i.name!=="scip-typescript"||i.version!==t)throw new Error("TypeScript SCIP shard producer identity changed")}function Fo(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function ge(e){if(!e||e.startsWith("/")||e.startsWith("\\")||e.includes("\\"))throw new Error(`invalid TypeScript SCIP document path: ${e}`);let t=e.split("/");if(t.includes("")||t.includes(".")||t.includes(".."))throw new Error(`invalid TypeScript SCIP document path: ${e}`);return e}function me(e){return ud("sha256").update(e).digest("hex")}import{createHash as yd}from"crypto";import{existsSync as Ve,mkdirSync as Sd,readdirSync as _n,renameSync as bd,rmSync as Ao,writeFileSync as Rd}from"fs";import{join as B}from"path";var xt=1,Co=64*1024*1024,qe="typescript-scip-overlays";function _o(e){let t=Mo(e.cacheDir,e.previousGenerationIdentity);if(!t&&!e.baseShardCurrent)throw new Error("deferred TypeScript SCIP base has no matching overlay generation");if(t&&(t.producerIdentity!==e.producerIdentity||t.projectIdentity!==e.projectIdentity))throw new Error("TypeScript overlay producer or project identity changed");let n=new Map((t?.overlays??[]).map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let a=Mn(o.relativePath);if(r.has(a))throw new Error(`duplicate TypeScript overlay: ${a}`);r.add(a),n.set(a,xd(e.cacheDir,o))}if(r.size===0)throw new Error("TypeScript overlay generation requires affected documents");let i={version:xt,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:t?.baseGenerationIdentity??e.previousGenerationIdentity,generationIdentity:e.nextGenerationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),overlays:[...n.values()].sort((o,a)=>o.relativePath.localeCompare(a.relativePath))};return Id(e.cacheDir,i),i}function Lo(e){let t=Mo(e.cacheDir,e.generationIdentity);if(!t)throw new Error("TypeScript overlay generation is unavailable");let n=t.overlays.map(r=>{if(r.blobHash===null)return{relativePath:r.relativePath,bytes:null,occurrences:0,symbols:0,referenceFragments:[]};let i=D(B(We(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`),{maxBytes:z,inputKind:"TypeScript overlay blob"});if(i.byteLength!==r.byteLength||Be(i)!==r.blobHash)throw new Error(`TypeScript overlay blob is corrupt: ${r.relativePath}`);return{relativePath:r.relativePath,bytes:i,occurrences:0,symbols:0,referenceFragments:[]}});return Ro({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function jo(e,t){let n=We(e),r=B(n,"generations");if(!Ve(r))return;let i=new Set(t.map(jn)),o=new Set;for(let s of _n(r).filter(c=>i.has(c))){let c=Ln(w(B(r,s),{maxBytes:A,inputKind:"TypeScript overlay manifest"}));for(let d of c.overlays)d.blobHash&&o.add(`${d.blobHash}.scipdoc`)}for(let s of _n(r))i.has(s)||Ao(B(r,s),{force:!0});let a=B(n,"blobs");if(Ve(a))for(let s of _n(a))o.has(s)||Ao(B(a,s),{force:!0})}function Mo(e,t){let n=B(We(e),"generations",jn(t));if(!Ve(n))return null;let r=Ln(w(n,{maxBytes:A,inputKind:"TypeScript overlay manifest"}));if(r.generationIdentity!==t)throw new Error("TypeScript overlay generation identity does not match its path");return r}function xd(e,t){let n=Mn(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=Be(r),o=B(We(e),"blobs");Sd(o,{recursive:!0});let a=B(o,`${i}.scipdoc`);if(Ve(a)){let s=D(a,{maxBytes:z,inputKind:"TypeScript overlay blob"});if(s.byteLength!==r.byteLength||Be(s)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let s=`${a}.${process.pid}.${Date.now()}.tmp`;Rd(s,r),bd(s,a)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function Id(e,t){let n=B(We(e),"generations",jn(t.generationIdentity));if(Ve(n)){let r=Ln(w(n,{maxBytes:A,inputKind:"TypeScript overlay manifest"}));if(Oo(r)!==Oo(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}ie(n,t,{spacing:2,trailingNewline:!0})}function Ln(e){let t=JSON.parse(e);if(t.version!==xt||typeof t.producerIdentity!="string"||!t.producerIdentity||typeof t.projectIdentity!="string"||!t.projectIdentity||typeof t.baseGenerationIdentity!="string"||!t.baseGenerationIdentity||typeof t.generationIdentity!="string"||!t.generationIdentity||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.overlays))throw new Error("invalid TypeScript overlay manifest");let n=new Set;for(let r of t.overlays){if(!r||typeof r.relativePath!="string"||r.blobHash!==null&&(typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash))||!Number.isInteger(r.byteLength)||r.byteLength<0||r.blobHash===null&&r.byteLength!==0)throw new Error("invalid TypeScript overlay record");if(Mn(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function We(e){return B(e,qe)}function jn(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Be(e)}.json`}function Oo(e){return Be(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Mn(e){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(t=>!t||t==="."))throw new Error(`invalid TypeScript overlay path: ${e}`);if(e.split("/").includes(".."))throw new Error(`invalid TypeScript overlay path: ${e}`);return e}function Be(e){return yd("sha256").update(e).digest("hex")}var Ue=1,Gn="language-indexes",No=["index.db","index.scip","meta.json"],Go=[Gn,Ge,qe];function It(e){let t=[];for(let n of No)Td(e,n),t.push(n);for(let n of Go)$o(e,n,t);return{version:Ue,files:t.sort()}}function Pt(e){if(!e||e.includes("\0")||e.startsWith("/")||e.includes("\\"))throw new Error(`invalid index artifact path: ${e||"<empty>"}`);let t=e.split("/");if(t.some(r=>!r||r==="."||r===".."))throw new Error(`invalid index artifact path: ${e}`);let n=t[0];if(!No.includes(e)&&!Go.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function W(e,t){let n=Pt(t),r=Nn(e),i=Nn(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${kd}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function $o(e,t,n){let r=wd(e,t),i;try{i=vd(r,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let o of i){let a=`${t}/${o.name}`;if(o.isSymbolicLink())throw new Error(`index artifact cannot be a symlink: ${a}`);o.isDirectory()?$o(e,a,n):o.isFile()&&n.push(Pt(a))}}function Td(e,t){let n=W(e,t),r;try{r=Pd(n)}catch{throw new Error(`required index artifact is missing: ${t}`)}if(!r.isFile()||r.isSymbolicLink())throw new Error(`required index artifact is not a regular file: ${t}`);if(Ed(Nn(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{createHash as Wn}from"crypto";import{closeSync as Dd,existsSync as E,mkdirSync as Fd,openSync as Ad,readSync as Od,readdirSync as Un,renameSync as qn,rmSync as He,statSync as Ee}from"fs";import{basename as Wo,dirname as U,join as R,relative as Vo}from"path";var Cd=Object.freeze({maxGenerations:2,maxLogicalBytes:2*1024*1024*1024});function wt(e){let t=V(e.outputDb),n=Md(e);e.onStage?.("after-recovery-retained");let r=e.preserveOutputScip?e.outputScip:e.tempOutputScip,i=Yn({generationRoot:t,databasePath:e.tempOutputDb,indexPath:E(r)?r:void 0,metadataPath:E(e.tempMetaPath)?e.tempMetaPath:void 0}),o=(e.now??(()=>new Date))().toISOString(),a={version:Re,currentGeneration:i.identity,artifactSet:"immutable-v1",...n?{previousGeneration:n}:{},...e.publication?{publication:e.publication}:{},publishedAt:o},s=$(R(t,"state.json"),a,{spacing:2,trailingNewline:!0});e.onStage?.("after-pointer-handoff"),e.preserveOutputScip||Bn(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),Bn(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),Bn(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let c=i.identity,d={...a,stableMirrors:Jn(e.outputDb,e.outputScip)};$(R(t,"state.json"),d,{spacing:2,trailingNewline:!0});let u=Uo(e.outputDb,{now:e.now}),l=_e(i.directorySync,s.directorySync);return{currentGeneration:c,...n?{previousGeneration:n}:{},retention:u,achievedDurability:l==="synced"?"directory-durable":"file-flushed",directorySync:l}}function Hn(e,t,n,r=()=>new Date){if(!E(e))return null;let i=Le(e),o=R(V(e),"state.json");if(i?.artifactSet==="immutable-v1"&&zt(e,i.currentGeneration))return i;let a=V(e),s=!i&&E(o)?Gd(n,e,t):void 0;if(s&&!ot(a,s))return null;let c=Yn({generationRoot:a,databasePath:e,indexPath:E(t)?t:void 0,metadataPath:E(n)?n:void 0,forcedIdentity:i?.currentGeneration??s}),d={version:Re,currentGeneration:c.identity,artifactSet:"immutable-v1",stableMirrors:Jn(e,t),...i?.previousGeneration?{previousGeneration:i.previousGeneration}:{},...i?.publication?{publication:i.publication}:{},publishedAt:i?.publishedAt??r().toISOString()};return $(R(a,"state.json"),d,{spacing:2,trailingNewline:!0}),d}function zn(e,t,n=()=>new Date){if(!E(e)||!E(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=Le(e),i=V(e),o=Yn({generationRoot:i,databasePath:e,indexPath:E(R(U(e),"index.scip"))?R(U(e),"index.scip"):void 0,metadataPath:t}),a=r&&r.currentGeneration!==o.identity?zo(e,r.currentGeneration):void 0,s={version:Re,currentGeneration:o.identity,artifactSet:"immutable-v1",stableMirrors:Jn(e,R(U(e),"index.scip")),...a?{previousGeneration:a}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return $(R(V(e),"state.json"),s,{spacing:2,trailingNewline:!0}),Uo(e,{now:n}),s}function Uo(e,t={}){let n=_d(t.limits),i=(t.now??(()=>new Date))().toISOString(),o=ue($r(e),{waitMs:0});if(!o)return{state:"deferred",generationCount:0,logicalBytes:0,protectedGenerations:0,activeReaderLeases:0,staleReaderLeasesRemoved:0,malformedReaderLeases:0,removedGenerations:0,removedLogicalBytes:0,limits:n,at:i,reason:"another process owns local generation retention"};try{let a=Le(e),s=Ld(e),c=Vr(e,s.map(b=>b.identity),{isProcessAlive:t.isProcessAlive??ne,readProcessIdentity:t.readProcessIdentity??te}),d=new Set(c.protectedGenerations);a?.currentGeneration&&d.add(a.currentGeneration),a?.previousGeneration?.generationIdentity&&d.add(a.previousGeneration.generationIdentity);let u=s.length,l=s.reduce((b,y)=>b+y.logicalBytes,0),p=0,g=0;for(let b of s){if(u<=n.maxGenerations&&l<=n.maxLogicalBytes)break;d.has(b.identity)||(t.onBeforeRemove?.(b.identity),He(b.path,{recursive:!0,force:!0}),u-=1,l-=b.logicalBytes,p+=1,g+=b.logicalBytes)}let f=u>n.maxGenerations||l>n.maxLogicalBytes,h={state:f?"protected":p>0?"collected":"within-bounds",generationCount:u,logicalBytes:l,protectedGenerations:d.size,activeReaderLeases:c.activeLeases,staleReaderLeasesRemoved:c.staleLeasesRemoved,malformedReaderLeases:c.malformedLeases,removedGenerations:p,removedLogicalBytes:g,limits:n,at:i,...f?{reason:c.malformedLeases>0?"malformed reader ownership evidence fails closed":"retention bounds cannot be met without deleting a protected generation"}:{}};return Bo(e,h),h}catch(a){let s={state:"error",generationCount:0,logicalBytes:0,protectedGenerations:0,activeReaderLeases:0,staleReaderLeasesRemoved:0,malformedReaderLeases:0,removedGenerations:0,removedLogicalBytes:0,limits:n,at:i,reason:a instanceof Error?a.message:String(a)};try{Bo(e,s)}catch{}return s}finally{o.release()}}function _d(e={}){let t={...Cd,...e};if(!Number.isSafeInteger(t.maxGenerations)||t.maxGenerations<2)throw new Error("Local SQLite generation retention must keep at least current and previous generations.");if(!Number.isSafeInteger(t.maxLogicalBytes)||t.maxLogicalBytes<=0)throw new Error("Local SQLite generation byte retention must be a positive safe integer.");return t}function Ld(e){let t=V(e);return E(t)?Un(t,{withFileTypes:!0}).filter(n=>n.isDirectory()&&/^[a-f0-9]{64}$/.test(n.name)).map(n=>{let r=R(t,n.name),i=ot(t,n.name),o=i?i.database.size+(i.index?.size??0)+(i.metadata?.size??0):Ho(r);return{identity:n.name,path:r,logicalBytes:o,modifiedAtMs:Ee(r).mtimeMs}}).sort((n,r)=>n.modifiedAtMs-r.modifiedAtMs||n.identity.localeCompare(r.identity)):[]}function Ho(e){let t=0;for(let n of Un(e,{withFileTypes:!0})){let r=R(e,n.name);n.isDirectory()?t+=Ho(r):n.isFile()&&(t+=Ee(r).size)}return t}function Bo(e,t){ie(R(V(e),"gc.json"),t,{spacing:2,trailingNewline:!0})}function H(e,t=R(U(e),"meta.json")){let n=R(V(e),"state.json");if(!E(n))return{state:"legacy",statePath:n};let r=Le(e);if(!r)return{state:"invalid",statePath:n,reason:"generation state is malformed"};try{let i=zt(e,r.currentGeneration),o=i!==null,a=i?jd(e,t,i,r):!1,s=r.previousGeneration?E(R(U(e),r.previousGeneration.databasePath)):!0;return!a||!o||!s?{state:"drifted",statePath:n,currentMatches:a,recoveryExists:s,generation:r,reason:o?a?"retained recovery database is missing":"stable database or metadata no longer matches the published generation":"published immutable generation is missing"}:{state:"current",statePath:n,currentMatches:a,recoveryExists:s,generation:r}}catch(i){return{state:"drifted",statePath:n,currentMatches:!1,recoveryExists:!1,generation:r,reason:i instanceof Error?i.message:String(i)}}}function jd(e,t,n,r){if(r.stableMirrors&&(r.stableMirrors.databaseFileIdentity!==je(e)||r.stableMirrors.indexFileIdentity!==void 0&&r.stableMirrors.indexFileIdentity!==je(R(U(e),"index.scip")))||!qo(e,n.database))return!1;let i=R(U(e),"index.scip");if(n.index&&!qo(i,n.index))return!1;if(!n.metadata)return!E(t);if(!E(t))return!1;let o=R(V(e),n.identity,n.metadata.file);return E(o)&&le(L(t,"reindex metadata"))===le(L(o,"immutable reindex metadata"))}function qo(e,t){return E(e)&&Ee(e).isFile()&&Ee(e).size===t.size}function Md(e){let t=Hn(e.outputDb,e.outputScip,e.metaPath);return t?zo(e.outputDb,t.currentGeneration):void 0}function Jn(e,t){return{databaseFileIdentity:je(e),...E(t)?{indexFileIdentity:je(t)}:{}}}function zo(e,t){let n=R(V(e),t),r=R(n,Wo(e)),i=R(n,"meta.json");return{generationIdentity:t,databasePath:Vo(U(e),r),...E(i)?{metadataPath:Vo(U(e),i)}:{}}}function Nd(e){if(E(e)){for(let t of Un(e,{withFileTypes:!0}))if(t.isDirectory()&&t.name.endsWith(".tmp"))try{He(R(e,t.name),{recursive:!0,force:!0})}catch{}}}function Gd(e,t,n=R(U(t),"index.scip")){let r=Wn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(vt(t)),E(n)&&r.update(`\0${vt(n)}`),E(e)&&r.update(`\0${le(L(e,"reindex metadata"))}`),r.digest("hex")}function Yn(e){let t=$n(e.databasePath),n=e.indexPath?$n(e.indexPath):void 0,r=e.metadataPath?$n(e.metadataPath):void 0,i=e.forcedIdentity??$d(t,n,e.metadataPath),o=R(e.generationRoot,i),a=R(o,Ht);if(E(a)){let d=ot(e.generationRoot,i);if(d&&Jo(o,d.database,t)&&Bd(o,d.index,n)&&qd(o,d.metadata,e.metadataPath))return{identity:i,directorySync:re(e.generationRoot)};throw new Error(`SQLite generation ${i} already exists with different or corrupt artifacts.`)}let s=[nt(e.generationRoot)];Nd(e.generationRoot);let c=`${o}.${process.pid}.${Date.now()}.tmp`;He(c,{recursive:!0,force:!0}),Fd(c,{recursive:!0});try{s.push(Vn(e.databasePath,R(c,t.file))),n&&e.indexPath&&s.push(Vn(e.indexPath,R(c,n.file))),r&&e.metadataPath&&s.push(Vn(e.metadataPath,R(c,r.file)));let d=$(R(c,Ht),{version:Gr,identity:i,database:t,...n?{index:n}:{},...r?{metadata:r}:{}},{spacing:2,trailingNewline:!0});d.directorySync!=="not-requested"&&s.push(d.directorySync),s.push(re(c)),F(()=>qn(c,o)),s.push(re(e.generationRoot))}finally{try{He(c,{recursive:!0,force:!0})}catch{}}return{identity:i,directorySync:_e(...s)}}function $d(e,t,n){let r=Wn("sha256").update("sqlite-generation-artifacts-v1\0");return r.update(e.sha256),t&&r.update(`\0${t.sha256}`),n&&r.update(`\0${le(L(n,"reindex metadata"))}`),r.digest("hex")}function $n(e){return{file:Wo(e),size:Ee(e).size,sha256:vt(e)}}function vt(e){let t=Wn("sha256"),n=Ad(e,"r"),r=Buffer.allocUnsafe(1024*1024);try{for(;;){let i=Vd(n,r);if(i===0)break;t.update(r.subarray(0,i))}}finally{Dd(n)}return t.digest("hex")}function Vd(e,t){let n=0;for(;n<t.length;){let r=Od(e,t,n,t.length-n,null);if(n+=r,r===0)break}return n}function Vn(e,t){return rt(e,t,{mode:292})}function Jo(e,t,n){let r=R(e,t.file);return t.file===n.file&&t.size===n.size&&t.sha256===n.sha256&&E(r)&&Ee(r).size===t.size&&vt(r)===t.sha256}function Bd(e,t,n){return!t||!n?t===n:Jo(e,t,n)}function qd(e,t,n){if(!t||!n)return t===void 0&&n===void 0;let r=R(e,t.file);return E(r)&&le(L(r,"stored reindex metadata"))===le(L(n,"candidate reindex metadata"))}function Bn(e,t){F(()=>He(`${t}.tmp-replace`,{force:!0})),F(()=>qn(e,`${t}.tmp-replace`)),F(()=>qn(`${t}.tmp-replace`,t))}var Zn=1,Ko="CODEBASEIQ_SHARED_CACHE",zd=2,Et=JSON.stringify({cliVersion:Br,artifactCatalogVersion:Ue,postIndexAugmentationSchemaVersion:zd,sqliteGenerationStoreVersion:Re,typescriptFragmentStoreVersion:Rt,typescriptOverlayStoreVersion:xt}),er="manifest.json",Jd="shared-cache.json",tr=[Gn,Ge,qe];function Tt(e,t){if(!e.clean||!e.treeOid)return;let n=fa(JSON.stringify({version:Zn,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:Et}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:Et,generationId:n,repositoryCacheDir:Ur(e.repositoryId)}}function ra(e,t,n){if(process.env[Ko]==="0")return`${Ko}=0`;if(!Hr(n))return"explicit cache or database override";if(Yt(Xn(t))!==Yt(Wr(e))||t!==m(Xn(t),"index.db"))return"index database is outside the managed worktree cache"}function K(e,t=!0){let n=rr(e),r;try{r=da(w(m(n,er),{inputKind:"shared-generation manifest",maxBytes:A}))}catch{return null}if(r.generationId!==e.generationId||r.repositoryId!==e.repositoryId||r.treeOid!==e.treeOid||r.producerIdentity!==e.producerIdentity||JSON.stringify(r.fingerprint)!==JSON.stringify(e.fingerprint))return null;if(!t)return r;try{for(let i of r.artifacts){let o=W(n,i.path),a=kt(o);if(!a.isFile()||a.size!==i.size||et(o,{inputKind:"shared-generation artifact",maxBytes:_})!==i.sha256)return null}}catch{return null}return r}function ia(e,t,n){if(!e.treeOid)return null;let r=Xt(t,n),i=m(qr(),"repositories",e.repositoryId),o;try{let c=Kn(i);if(!c.isDirectory()||c.isSymbolicLink())return null;o=ta(i)}catch{return null}let a=m(o,"generations"),s=[];try{for(let c of ea(a)){if(!/^[a-f0-9]{64}$/.test(c))continue;let d=m(a,c),u;try{u=Kn(d)}catch{continue}if(!(!u.isDirectory()||u.isSymbolicLink()))try{let l=da(w(m(d,er),{inputKind:"shared-generation baseline manifest",maxBytes:A}));l.generationId===c&&l.repositoryId===e.repositoryId&&l.treeOid===e.treeOid&&l.producerIdentity===Et&&Qd(l.fingerprint,r)&&s.push(l)}catch{continue}}}catch{return null}s.sort((c,d)=>Date.parse(d.createdAt)-Date.parse(c.createdAt)||c.generationId.localeCompare(d.generationId));for(let c of s){let d={repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:c.fingerprint,producerIdentity:c.producerIdentity,generationId:c.generationId,repositoryCacheDir:o},u=K(d);if(u)return{snapshot:d,manifest:u}}return null}function oa(e){let t=ue(m(e.snapshot.repositoryCacheDir,"locks",`${e.snapshot.generationId}.publish.lock`));if(!t)throw new Error(`shared generation publication is already in progress for ${e.snapshot.generationId}`);try{return Yd(e)}finally{t.release()}}function Yd(e){let t=K(e.snapshot);if(t)return Xo(e.snapshot,t);if(!pa(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=Qo(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=It(e.sourceCacheDir),i=m(e.snapshot.repositoryCacheDir,"generations"),o=[nt(i)],a=Ae(m(i,`.tmp-${process.pid}-`));try{let s=[];for(let f of r.files){let h=W(e.sourceCacheDir,f),b=W(a,f);o.push(Je(h,b,292)),e.onPublicationStage?.("after-artifact-flushed",f);let y=kt(b).size;s.push({path:f,size:y,sha256:et(b,{inputKind:"staged shared-generation artifact",maxBytes:_})})}let c=na(D(m(a,"index.scip"),{inputKind:"staged shared SCIP index",maxBytes:_})).metadata?.projectRoot;if(!c)throw new Error("shared SCIP generation has no project root metadata");let d=ir(e.sourceProjectRoot);if(!be(c,d))throw new Error("shared SCIP generation root does not match its source worktree");if(Qo(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let u={version:Zn,artifactCatalogVersion:Ue,generationId:e.snapshot.generationId,repositoryId:e.snapshot.repositoryId,treeOid:e.snapshot.treeOid,fingerprint:e.snapshot.fingerprint,producerIdentity:e.snapshot.producerIdentity,sourceProjectRoot:e.sourceProjectRoot,scipProjectRoot:c,createdAt:(e.now??(()=>new Date))().toISOString(),artifacts:s.sort((f,h)=>f.path.localeCompare(h.path))},l=$(m(a,er),u,{spacing:2,trailingNewline:!0});l.directorySync!=="not-requested"&&o.push(l.directorySync),e.onPublicationStage?.("after-manifest-flushed"),o.push(re(a)),e.onPublicationStage?.("after-staging-directory-synced");let p=rr(e.snapshot);try{if(ce(p)&&!K(e.snapshot)){let f=`${p}.corrupt-${process.pid}-${Date.now()}`;F(()=>he(p,f)),se(f,{recursive:!0,force:!0})}F(()=>he(a,p))}catch(f){let h=K(e.snapshot);if(h)return Xo(e.snapshot,h);throw f}e.onPublicationStage?.("after-generation-renamed"),o.push(re(i)),e.onPublicationStage?.("after-generations-directory-synced");let g=_e(...o);return{kind:"published",manifest:u,achievedDurability:g==="synced"?"directory-durable":"file-flushed",directorySync:g}}finally{se(a,{recursive:!0,force:!0})}}function Xo(e,t){let n=re(m(e.repositoryCacheDir,"generations"));return{kind:"existing",manifest:t,achievedDurability:n==="synced"?"directory-durable":"file-flushed",directorySync:n}}function Dt(e){let t=rr(e.snapshot);ke(e.targetCacheDir,{recursive:!0});let n=ue(m(e.targetCacheDir,"cache-lifecycle.lock"),{waitMs:3e4});if(!n)throw new Error("timed out waiting for another cache hydration");let r,i,o=!1;try{r=Ae(m(e.targetCacheDir,".shared-hydrate-")),nu(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let d=W(t,c.path),u=W(r,c.path);if(Je(d,u),kt(u).size!==c.size||et(u,{inputKind:"hydrated shared-generation artifact",maxBytes:_})!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let a=ir(e.targetProjectRoot);if(a!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&Ni(W(r,c.path),e.manifest.scipProjectRoot,a);if(!pa(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=Zd(e.targetCacheDir,r),o=!0,eu(r,e.targetCacheDir,i),wt({tempOutputScip:m(r,"index.scip"),tempOutputDb:m(r,"index.db"),tempMetaPath:m(r,"meta.json"),outputScip:m(e.targetCacheDir,"index.scip"),outputDb:m(e.targetCacheDir,"index.db"),metaPath:m(e.targetCacheDir,"meta.json"),now:e.now});let s=H(m(e.targetCacheDir,"index.db"),m(e.targetCacheDir,"meta.json"));if(s.state==="invalid"||s.state==="drifted")throw new Error(`hydrated SQLite generation failed validation: ${s.reason}`);e.persistLease!==!1&&nr(e.snapshot,e.targetCacheDir,e.action??"attached",e.now)}catch(a){throw o&&i&&tu(e.targetCacheDir,i),a}finally{r&&se(r,{recursive:!0,force:!0}),n.release()}}async function aa(e,t={}){let n=t.timeoutMs??3e4,r=t.pollMs??100,i=t.now??I,o=i()+n,a=m(e.repositoryCacheDir,"locks"),s=m(a,`${e.generationId}.lock`),c=d=>{if(!d||typeof d!="object"||Array.isArray(d))return null;let u=d.pid;return typeof u=="number"&&Number.isSafeInteger(u)&&u>0?{pid:u}:null};for(;i()<=o;){if(K(e))return{kind:"generation-ready"};let d=tt(s,{kind:"shared-generation-build",detail:{generationId:e.generationId},parseLegacy:c});if(d.kind==="acquired")return{kind:"owner",release:()=>d.lock.release()};let u=o-i();if(u<=0)break;await Ud(Math.min(r,u))}return K(e)?{kind:"generation-ready"}:{kind:"timeout"}}function nr(e,t,n,r=void 0){let i={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,activeGenerationId:e.generationId,lastAction:n,lastSeenAt:(r??(()=>new Date))().toISOString()},o={...i,ownershipChecksum:ca(i)};return ua(e.repositoryCacheDir,o,!0),o}function sa(e,t,n=void 0){let r={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,lastAction:"overlay",lastReason:`private cache forked from shared baseline ${e.generationId}`,lastSeenAt:(n??(()=>new Date))().toISOString()},i={...r,ownershipChecksum:ca(r)};return ua(e.repositoryCacheDir,i,!0),i}function ca(e){return fa(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:Qn(e.projectRoot),localCacheDir:Qn(e.localCacheDir)}))}function da(e){let t=JSON.parse(e);if(t.version!==Zn||t.artifactCatalogVersion!==Ue||typeof t.generationId!="string"||!/^[a-f0-9]{64}$/.test(t.generationId)||typeof t.repositoryId!="string"||!/^[a-f0-9]{24}$/.test(t.repositoryId)||typeof t.treeOid!="string"||!t.treeOid||typeof t.producerIdentity!="string"||t.producerIdentity!==Et||typeof t.sourceProjectRoot!="string"||typeof t.scipProjectRoot!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!t.fingerprint||!Array.isArray(t.artifacts))throw new Error("invalid shared generation manifest");let n=new Set;for(let r of t.artifacts){if(!r||typeof r.path!="string"||typeof r.size!="number"||r.size<0||typeof r.sha256!="string"||!/^[a-f0-9]{64}$/.test(r.sha256))throw new Error("invalid shared generation artifact");if(Pt(r.path),n.has(r.path))throw new Error(`duplicate shared generation artifact: ${r.path}`);n.add(r.path)}for(let r of["index.db","index.scip","meta.json"])if(!n.has(r))throw new Error(`shared generation is missing ${r}`);return t}function Je(e,t,n=384){return rt(e,t,{mode:n})}function Kd(e,t,n){ke(e,{recursive:!0}),$(m(e,Jd),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function Qo(e){try{let t=It(e),n=Zo("sha256");for(let r of t.files){let i=W(e,r),o=kt(i).size;n.update(r).update("\0").update(String(o)).update("\0"),Lr(i,{inputKind:"source-generation artifact",maxBytes:_},a=>n.update(a)),n.update("\0")}return n.digest("hex")}catch{return null}}function Xd(e){try{let t=ee(w(m(e,"meta.json"),{inputKind:"reindex metadata",maxBytes:A}));return(t.kind==="legacy"||t.kind==="supported")&&t.capabilities.publishableGeneration?t.metadata:void 0}catch{return}}function Qd(e,t){let n=Xt(e.languages,e);return JSON.stringify(n)===JSON.stringify(t)}function rr(e){return m(e.repositoryCacheDir,"generations",e.generationId)}function ua(e,t,n){let r=Nr(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId??t.baseGenerationId;if(!o||!ce(m(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=m(e,"worktrees");ke(i,{recursive:!0}),$(m(i,`${t.worktreeId}.json`),t,{spacing:2,trailingNewline:!0}),Kd(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function Zd(e,t){let n=m(t,".rollback"),r=new Map,i=new Map;ke(n,{recursive:!0});for(let s of["index.scip","index.db","meta.json"]){let c=m(e,s),d=ce(c);r.set(s,d),d&&Je(c,m(n,"stable",s))}for(let s of tr){let c=m(e,s),d=ce(c);if(d){let u=Kn(c);if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`managed artifact path is not a directory: ${s}`)}i.set(s,d)}let o=m(e,it),a=ce(o);return a&&la(o,m(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:a}}function eu(e,t,n){for(let r of tr){let i=m(t,r);if(n.managedDirectories.get(r)){let a=m(n.root,"managed",r);ke(Xn(a),{recursive:!0}),F(()=>he(i,a))}let o=m(e,r);ce(o)&&F(()=>he(o,i))}}function tu(e,t){for(let i of tr){let o=m(e,i),a=m(t.root,"managed",i);t.managedDirectories.get(i)?ce(a)&&(se(o,{recursive:!0,force:!0}),F(()=>he(a,o))):se(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let a=m(e,i);if(!o){se(a,{force:!0});continue}let s=`${a}.shared-restore-${Wd()}`;Je(m(t.root,"stable",i),s),F(()=>se(a,{force:!0})),F(()=>he(s,a))}let n=m(e,it);se(n,{recursive:!0,force:!0});let r=m(t.root,"sqlite-generations");t.generationStoreExisted&&ce(r)&&F(()=>he(r,n))}function la(e,t){ke(t,{recursive:!0});for(let n of ea(e,{withFileTypes:!0})){let r=m(e,n.name),i=m(t,n.name);if(n.isSymbolicLink())throw new Error(`managed cache backup cannot contain a symlink: ${r}`);n.isDirectory()?la(r,i):n.isFile()&&Je(r,i)}}function nu(e,t){if(e.generationId!==t.generationId||e.repositoryId!==t.repositoryId||e.treeOid!==t.treeOid||e.producerIdentity!==t.producerIdentity||JSON.stringify(e.fingerprint)!==JSON.stringify(t.fingerprint))throw new Error("shared generation manifest does not match the requested snapshot")}function pa(e,t,n,r=!0,i=!0){try{let o=Xd(e);if(!o||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return ze("source validation rejected metadata"),!1;let a=It(e),s=H(m(e,"index.db"),m(e,"meta.json"));if(r?s.state!=="current":s.state==="invalid"||s.state==="drifted")return ze(`source validation rejected SQLite generation state ${s.state}`),!1;let c=new Hd(j(m(e,"index.db")),{readonly:!0,fileMustExist:!0});try{if(i){if(c.pragma("quick_check(1)",{simple:!0})!=="ok")return!1}else c.pragma("schema_version",{simple:!0})}finally{c.close()}let d=ir(t),l=(i?a.files.filter(p=>p.endsWith(".scip")):["index.scip"]).every(p=>{let g=na(D(W(e,p),{inputKind:"shared SCIP validation artifact",maxBytes:_})).metadata?.projectRoot,f=g!==void 0&&be(g,d);return f||ze(`source validation rejected SCIP root for ${p}: ${String(g)}`),f});return l||ze("source validation rejected SCIP project roots"),l}catch(o){return ze(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function ze(e){process.env.CODEBASEIQ_DEBUG&&console.error(`shared-cache: ${e}`)}function ir(e){try{return Yo(ta(e)).href}catch{return Yo(Qn(e)).href}}function fa(e){return Zo("sha256").update(e).digest("hex")}import{createHash as xu}from"crypto";import{existsSync as ar,statSync as Iu,writeFileSync as sr}from"fs";import{join as Pu}from"path";import{createRequire as ru}from"module";import{dirname as iu,isAbsolute as fm,relative as gm,resolve as mm,sep as hm}from"path";var ga=ru(import.meta.url),ou=1,ma="0.4.0";function or(){let e=au();return e.available?{available:!0,packageVersion:e.packageVersion,typescriptVersion:e.typescriptVersion,producerIdentity:e.producerIdentity}:e}function au(){try{let e=ga.resolve("@sourcegraph/scip-typescript/package.json"),t=JSON.parse(L(e,"scip-typescript package manifest"));if(t.version!==ma)return{available:!1,reason:`unsupported scip-typescript version ${String(t.version??"unknown")}; expected ${ma}`};let n=iu(e),r=ga.resolve("typescript/package.json",{paths:[n]}),i=JSON.parse(L(r,"TypeScript package manifest"));return typeof i.version!="string"||!i.version?{available:!1,reason:"scip-typescript TypeScript compiler version is unavailable"}:{available:!0,packageRoot:n,packageVersion:t.version,typescriptVersion:i.version,producerIdentity:su(t.version,i.version)}}catch(e){return{available:!1,reason:`scip-typescript document producer unavailable: ${e instanceof Error?e.message:String(e)}`}}}function su(e,t){return`scip-typescript:${e}:typescript:${t}:document-adapter:${ou}`}import{createHash as cu}from"crypto";import{dirname as du,join as ha}from"path";var Ft=4;var uu="typescript-index";function ya(e){let t=ha(e,uu),n=ti(t);return{...n,requestDir:n.legacyRequestDir}}function Sa(e){try{let t=Or(ee(L(ha(du(e),"meta.json"),"reindex metadata")));return t?cu("sha256").update(t).digest("hex"):null}catch{return null}}import{randomUUID as lu}from"crypto";import{existsSync as pu}from"fs";var fu=12e4,gu=5,At=class{projectRoot;cacheDir;baseGeneration;timeoutMs;runtime;mailboxLimits;constructor(t,n={}){this.projectRoot=zr(t.projectRoot),this.cacheDir=t.cacheDir,this.baseGeneration=t.baseGeneration,this.timeoutMs=n.timeoutMs??bu(),this.runtime=n.runtime??Ru,this.mailboxLimits=n.mailboxLimits??{}}request(t){let n=ri(this.cacheDir),r=ya(this.cacheDir),i=an(n.statePath);if(!ba(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript index service is not running.");let o=this.runtime.now(),a=o+this.timeoutMs,s=(this.runtime.monotonicNow??I)()+this.timeoutMs,c=rn("typescript-index-v4",{baseGeneration:this.baseGeneration,request:t}),d=on(c),u=ni(r,{mailboxVersion:nn,operationKey:c,clientId:this.runtime.randomId(),enqueuedAtMs:o,deadlineAtMs:a,protocolVersion:Ft,id:d,baseGeneration:this.baseGeneration,request:t},{nowMs:o,limits:this.mailboxLimits});for(;(this.runtime.monotonicNow??I)()<=s;){if(pu(u.responsePath))return mu(w(u.responsePath,{maxBytes:this.mailboxLimits.maxItemBytes??64*1024*1024,inputKind:"TypeScript index mailbox response"}),d,c,this.baseGeneration,t.producerIdentity,t.affectedFiles);let l=an(n.statePath);if(!ba(l,this.projectRoot,this.runtime))throw new Error("TypeScript index service stopped while processing a request.");this.runtime.sleep(gu)}throw new Error(`TypeScript index service timed out after ${this.timeoutMs}ms.`)}};function ba(e,t,n){let r=e?.processIdentity?n.readProcessIdentity?.(e.pid):null;return e!==null&&e.projectRoot===t&&e.typescriptIndex?.protocolVersion===Ft&&n.isProcessAlive(e.pid)&&(!e.processIdentity||r!=null&&Ce(e.processIdentity,r))}function mu(e,t,n,r,i,o){let a=JSON.parse(e);if(a.protocolVersion!==Ft||a.id!==t||a.operationKey!==n||a.ok===!0&&a.baseGeneration!==r)throw new Error("TypeScript index service wrote an incompatible response.");if(a.ok!==!0)throw new Error(typeof a.error=="string"?a.error:"TypeScript index service request failed.");let s=hu(a.response,i),c=[...new Set(o)].sort(),d=s.fragments.map(u=>u.relativePath).sort();if(JSON.stringify(d)!==JSON.stringify(c))throw new Error("TypeScript index service omitted or added an affected document.");return s}function hu(e,t){if(!e||typeof e!="object")throw new Error("TypeScript index service wrote an invalid response.");let n=e;if(n.producerIdentity!==t||typeof n.cold!="boolean"||typeof n.durationMs!="number"||!Number.isFinite(n.durationMs)||!Array.isArray(n.fragments))throw new Error("TypeScript index service wrote an invalid response.");let r=new Set,i=n.fragments.map(o=>{if(!o||typeof o.relativePath!="string"||o.bytesBase64!==null&&typeof o.bytesBase64!="string"||typeof o.occurrences!="number"||!Number.isInteger(o.occurrences)||o.occurrences<0||typeof o.symbols!="number"||!Number.isInteger(o.symbols)||o.symbols<0||!Array.isArray(o.referenceFragments)||!o.referenceFragments.every(yu)||r.has(o.relativePath))throw new Error("TypeScript index service wrote an invalid fragment.");r.add(o.relativePath);let a=o.bytesBase64===null?null:Su(o.bytesBase64);return{relativePath:o.relativePath,bytes:a,occurrences:o.occurrences,symbols:o.symbols,referenceFragments:o.referenceFragments}});return{producerIdentity:n.producerIdentity,cold:n.cold,durationMs:n.durationMs,fragments:i}}function yu(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.targetSymbol=="string"&&!!t.location&&typeof t.location.file=="string"&&Number.isInteger(t.location.line)&&Number.isInteger(t.location.column)}function Su(e){let t=Buffer.from(e,"base64");if(t.toString("base64")!==e)throw new Error("TypeScript index service wrote invalid base64.");return t}function bu(){let e=Number(process.env.SCIP_TYPESCRIPT_INDEX_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:fu}var Ru={now:Date.now,monotonicNow:I,randomId:lu,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:ne,readProcessIdentity:te};function vu(e){let t=e.projectMode==="workspace"?e.workspaceProjects??[]:["."];if(t.length===0)return{eligible:!1,reason:"workspace project roots unavailable"};if(t.length===1&&t[0]==="."&&!e.rootTsconfigExists)return{eligible:!1,reason:"root tsconfig unavailable"};if(!e.previousSnapshot)return{eligible:!1,reason:"prior project snapshot unavailable"};if(e.graph===null)return{eligible:!1,reason:"dependency graph unavailable"};if(e.projectFiles.length===0)return{eligible:!1,reason:"prior TypeScript documents unavailable"};let n=Ze(e.previousSnapshot,e.currentSnapshot);if(n.changes.length===0)return{eligible:!1,reason:"no changed project inputs"};if(n.changes.some(u=>u.kind!=="modified"||u.inputKind!=="source"||!sn(u.path)))return{eligible:!1,reason:"change is not a modified TypeScript source file"};let r=ft(n,e.graph,e.projectFiles);if(r.mode!=="closure"||r.affectedFiles.length===0)return{eligible:!1,reason:r.reasons.length>0?`affected set widened: ${r.reasons.join(", ")}`:"empty affected set"};let i=wu(r,t,e.graph);if(!i)return{eligible:!1,reason:"affected files cross or ambiguously match TypeScript projects"};let o=Ra(e.currentSnapshot,e.projectFiles,e.producerIdentity),a=Ra(e.previousSnapshot,e.projectFiles,e.producerIdentity);if(o!==a)return{eligible:!1,reason:"TypeScript fragment project identity changed"};let s=Ia(e.previousSnapshot,e.projectFiles,e.graph,e.producerIdentity,e.projectFiles);if(!s)return{eligible:!1,reason:"prior document identity unavailable"};let c=Ia(e.currentSnapshot,e.projectFiles,e.graph,e.producerIdentity,r.affectedFiles);if(!c)return{eligible:!1,reason:"next document identity unavailable"};let d=i.length===1?i[0]:void 0;return{eligible:!0,manifest:n,plan:r,projectIdentity:o,previousFragmentGeneration:xa(e.previousSnapshot,e.producerIdentity),nextFragmentGeneration:xa(e.currentSnapshot,e.producerIdentity),previousDocumentIdentities:s,nextDocumentIdentities:c,projects:i,...d?{tsconfigPath:d.tsconfigPath,projectArgument:d.projectArgument}:{}}}function wu(e,t,n){let r=new Map;for(let o of e.affectedFiles){let a=Eu(o,t);if(!a)return null;let s=r.get(a)??[];s.push(o),r.set(a,s)}let i=[];for(let[o,a]of[...r].sort(([s],[c])=>s.localeCompare(c))){let s=new Set(a),c=e.changedFiles.filter(d=>s.has(d)||a.some(u=>ku(u,d,n)));if(c.length===0)return null;i.push({projectArgument:o,tsconfigPath:o==="."?"tsconfig.json":`${o}/tsconfig.json`,modifiedFiles:c,affectedFiles:[...a].sort()})}return i}function Eu(e,t){let n=t.filter(o=>o==="."||e===o||e.startsWith(`${o}/`));if(n.length===0)return null;let r=[...new Set(n)].sort((o,a)=>Ot(a)-Ot(o)||o.localeCompare(a)),i=r[0];return r[1]&&Ot(r[1])===Ot(i)?null:i}function Ot(e){return e==="."?0:e.split("/").filter(Boolean).length}function ku(e,t,n){let r=new Set,i=[e];for(let o=0;o<i.length;o+=1){let a=i[o];if(!(!a||r.has(a))){r.add(a);for(let s of n.get(a)??[]){if(s===t)return!0;r.has(s)||i.push(s)}}}return!1}function Pa(e){let t=I();try{if(!ar(e.previousDbPath)||!ar(e.previousShardPath))throw new Error("prior TypeScript graph or language shard unavailable");let n=performance.now(),r=or();if(!r.available)throw new Error(r.reason);let i=performance.now()-n;n=performance.now();let o=new J({projectRoot:e.projectRoot,dbPath:e.previousDbPath,indexPath:e.previousIndexPath}),a,s;try{a=at(o,{includeIgnored:!1}).filter(sn).sort(),s=ut(o)}finally{o.close()}let c=performance.now()-n,d=vu({projectMode:e.projectMode,workspaceProjects:e.projectMode==="workspace"?Ie(e.projectRoot,e.currentSnapshot.typescriptProjects):void 0,previousSnapshot:e.previousSnapshot,currentSnapshot:e.currentSnapshot,projectFiles:a,graph:s,producerIdentity:r.producerIdentity,rootTsconfigExists:ar(Pu(e.projectRoot,"tsconfig.json"))});if(!d.eligible)throw new Error(d.reason);let u=Sa(e.previousDbPath);if(!u)throw new Error("published TypeScript base generation unavailable");n=performance.now();let l=new At({projectRoot:e.projectRoot,cacheDir:e.cacheDir,baseGeneration:u}),p=d.projects.map(v=>l.request({kind:"emit-documents",tsconfigPath:v.tsconfigPath,projectArgument:v.projectArgument,projectIdentity:d.projectIdentity,producerIdentity:r.producerIdentity,modifiedFiles:v.modifiedFiles,affectedFiles:v.affectedFiles})),g=p.flatMap(v=>v.fragments),f=performance.now()-n,h=Iu(e.previousShardPath).size>=Co;n=performance.now();let b=h?null:D(e.previousShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:_}),y=h?{completeIndexBytes:null,affectedIndexBytes:ho(g)}:xo({packageVersion:r.packageVersion,baseIndexBytes:b,fragments:g}),x=performance.now()-n;n=performance.now(),h?_o({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,nextGenerationIdentity:d.nextFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,baseShardCurrent:e.baseShardCurrent,fragments:g}):(yo({cacheDir:e.cacheDir,packageVersion:r.packageVersion,indexBytes:b,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.previousFragmentGeneration,documentIdentities:d.previousDocumentIdentities,allowUntrackedDocuments:!0}),So({cacheDir:e.cacheDir,previousGenerationIdentity:d.previousFragmentGeneration,producerIdentity:r.producerIdentity,projectIdentity:d.projectIdentity,generationIdentity:d.nextFragmentGeneration,fragments:g,documentIdentities:d.nextDocumentIdentities}));let P=performance.now()-n;n=performance.now(),y.completeIndexBytes&&sr(e.candidateShardPath,y.completeIndexBytes),sr(e.candidateAffectedScipPath,y.affectedIndexBytes);let T=performance.now()-n,k={scipPath:h?e.previousShardPath:e.candidateShardPath,candidateScipPath:e.candidateShardPath,affectedScipPath:e.candidateAffectedScipPath,completeScipUpdated:!h,durationMs:I()-t,cold:p.some(v=>v.cold),changedFiles:d.plan.changedFiles,affectedFiles:d.plan.affectedFiles,producerIdentity:r.producerIdentity,previousFragmentGeneration:d.previousFragmentGeneration,nextFragmentGeneration:d.nextFragmentGeneration,manifest:d.manifest,plan:d.plan,projectFileCount:a.length,referenceFragmentsByFile:new Map(g.map(v=>[v.relativePath,v.referenceFragments])),timings:{runtimeMs:i,graphMs:c,requestMs:f,serviceMs:p.reduce((v,ye)=>v+ye.durationMs,0),assemblyMs:x,fragmentStoreMs:P,writeMs:T}};return e.onStatus(`Incremental TypeScript index emitted ${k.affectedFiles.length} affected document(s) across ${d.projects.length} project(s) in ${(k.durationMs/1e3).toFixed(3)}s (${k.cold?"cold":"warm"} service; ${h?"whole SCIP deferred":"whole SCIP current"}; runtime ${i.toFixed(0)}ms, graph ${c.toFixed(0)}ms, request ${f.toFixed(0)}ms, assembly ${x.toFixed(0)}ms, fragments ${P.toFixed(0)}ms, write ${T.toFixed(0)}ms).`),k}catch(n){return e.onStatus(`Incremental TypeScript index unavailable: ${n instanceof Error?n.message:String(n)}. Falling back to the whole-project indexer.`),null}}function va(e){let t=or();if(!t.available)throw new Error(t.reason);let n=Lo({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,baseIndexBytes:D(e.baseShardPath,{inputKind:"TypeScript base SCIP shard",maxBytes:_}),packageVersion:t.packageVersion});sr(e.candidateShardPath,n)}function Ra(e,t,n){let r=e.files.filter(i=>Fr(i.path,e.languages)!=="source").map(i=>({path:i.path,size:i.size,hash:i.hash})).sort((i,o)=>i.path.localeCompare(o.path));return cr(JSON.stringify({version:1,producerIdentity:n,pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:[...e.typescriptProjects].sort(),projectFiles:[...t].sort(),nonSourceInputs:r}))}function xa(e,t){return cr(JSON.stringify({version:1,producerIdentity:t,snapshot:e}))}function Ia(e,t,n,r,i){let o=new Set(e.files.map(c=>c.path)),a=ii({projectFiles:t.filter(c=>o.has(c)),snapshot:e,graph:n,engineIdentity:r}),s=new Map;for(let c of i){let d=a.identityFor(c,"typescript-scip-document-v1");if(d.key){s.set(c,d.key);continue}if(o.has(c))return null;s.set(c,cr(JSON.stringify({version:1,producerIdentity:r,generatedDocument:c})))}return s}function cr(e){return xu("sha256").update(e).digest("hex")}import{closeSync as Tu,existsSync as Ct,fstatSync as Du,lstatSync as Fu,openSync as Au,renameSync as lr,rmSync as _t,statSync as Ou,writeSync as Cu}from"fs";import{cpus as _u}from"os";import{join as pr}from"path";var dr=Symbol("no-error");async function wa(e,t,n){if(e.length===0)return[];let r=new Array(e.length),i=Number.isFinite(t)?Math.max(1,Math.floor(t)):1,o=Math.min(e.length,i),a=0,s=dr,c=!0,d=Array.from({length:o},async()=>{for(;c&&a<e.length;){let u=a++;try{r[u]=await n(e[u])}catch(l){s===dr&&(s=l),c=!1}}});if(await Promise.all(d),s!==dr)throw s;return r}function Lu(e,t){if(e.temporaryRootConfigContent===void 0)return null;let n=pr(t,"tsconfig.json"),r=Buffer.from(e.temporaryRootConfigContent,"utf8"),i;try{i=Au(n,"wx",384)}catch(o){if(o.code==="EEXIST")return null;throw o}try{Cu(i,r);let o=Du(i);return{path:n,content:r,device:o.dev,inode:o.ino}}finally{Tu(i)}}function ju(e){if(e)try{let t=Fu(e.path);if(!t.isFile()||t.dev!==e.device||t.ino!==e.inode||t.size!==e.content.byteLength)return;let n;try{n=D(e.path,{maxBytes:e.content.byteLength,inputKind:"temporary TypeScript index configuration"})}catch{return}if(!n.equals(e.content))return;_t(e.path)}catch(t){if(t.code!=="ENOENT")throw t}}function Mu(e,t,n){if(!e.defaultOutputPath)return;let r=pr(t,e.defaultOutputPath);n!==r&&Ct(r)&&lr(r,n)}function Nu(e,t,n){if(!e.defaultOutputPath)return null;let r=pr(t,e.defaultOutputPath);if(r===n)return null;let i=`${n}.default-output-backup`;return _t(i,{force:!0}),Ct(r)?(lr(r,i),{defaultOutputPath:r,backupPath:i}):{defaultOutputPath:r,backupPath:null}}function Gu(e){e&&(_t(e.defaultOutputPath,{force:!0}),e.backupPath&&Ct(e.backupPath)&&lr(e.backupPath,e.defaultOutputPath))}function $u(e,t){if(e<=1)return 1;let n=Number(process.env.CODEBASEIQ_INDEXER_CONCURRENCY??0),r=Number.isFinite(t)&&t&&t>0?t:Number.isFinite(n)&&n>0?n:Math.min(8,Math.max(1,_u().length));return Math.max(1,Math.min(e,Math.floor(r)))}async function ka(e,t,n,r,i){G(i,"Reindex cancelled by its owner.");let o=e.filter(u=>u.config.defaultOutputPath),a=e.filter(u=>!u.config.defaultOutputPath),s=[],c=$u(a.length,r),d=await wa(a,c,u=>ur(u,t,n,i));if(c>1){let u=new Map;for(let l of d.filter(p=>p.result.skipped&&p.retryable)){let p=a.find(g=>g.id===l.result.id);p&&(n(`Retrying ${p.label} indexer serially after parallel failure...`),G(i,"Reindex cancelled by its owner."),u.set(p.id,(await ur(p,t,n,i)).result))}s.push(...d.map(({result:l})=>u.get(l.id)??l))}else s.push(...d.map(({result:u})=>u));for(let u of o)G(i,"Reindex cancelled by its owner."),s.push((await ur(u,t,n,i)).result);return s.sort((u,l)=>e.findIndex(p=>p.id===u.id)-e.findIndex(p=>p.id===l.id))}async function ur(e,t,n,r){G(r,"Reindex cancelled by its owner."),n(`Indexing ${e.label} with ${e.resolvedBinary}...`),_t(e.scipPath,{force:!0});let i=Nu(e.config,t,e.scipPath),o=Lu(e,t),a=[e.binary,...e.args].join(" "),s=I();try{e.trustedProjectTool&&ei(t,e.trustedProjectTool);let d=Qr(e.binary,e.args),u=await lt({command:d.binary,args:d.args,label:`${e.label} indexer`,cwd:t,env:e.env,timeoutMs:Vu(),maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,signal:r});if(u.status!==0){let l=u.stderr.trim();throw new Error(`${e.resolvedBinary} exited with status ${u.status}${l?`:
|
|
233
|
+
${l}`:""}`)}Mu(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw jr(r,"Reindex cancelled by its owner.");let u=d instanceof Error?d.message:String(d),l=`${e.resolvedBinary} indexer failed: ${u.split(`
|
|
234
|
+
`)[0]}`,p=e.label===e.language?l:`${e.label}: ${l}`;return n(`Skipping ${e.label}: ${l}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:I()-s,command:a,skipped:{language:e.language,reason:p}},retryable:Bu(d)}}finally{Gu(i),ju(o)}if(!Ct(e.scipPath)){let d=`${e.resolvedBinary} indexer completed but did not produce ${e.scipPath}`,u=e.label===e.language?d:`${e.label}: ${d}`;return n(`Skipping ${e.label}: ${d}`),{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:I()-s,command:a,skipped:{language:e.language,reason:u}},retryable:!1}}let c;try{c=Ou(e.scipPath).size}catch{c=void 0}return{result:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,durationMs:I()-s,command:a,outputBytes:c},retryable:!1}}function Vu(){let e=Number(process.env.CODEBASEIQ_INDEXER_TIMEOUT_MS);return Number.isFinite(e)&&e>0?Math.floor(e):si.indexer}function Bu(e){return e instanceof ci?e.kind==="spawn"&&Ea(e.cause):Ea(e)}function Ea(e){let t=e?.code;return t==="EAGAIN"||t==="ENOMEM"||t==="EMFILE"||t==="ENFILE"||t==="ETXTBSY"}import{execFileSync as Da}from"child_process";import{homedir as Ta,platform as qu}from"os";import{delimiter as Wu,join as Lt}from"path";function gr(e,t){let n=e.installMethods,r=Me(e);if(!n?.length)return t(`No auto-install method available for ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1;for(let i of n){if(!i.identity||!i.destination){t(`Refusing ${i.label} installation for ${r}: the installer descriptor lacks an immutable identity or destination.`);continue}if(!Qt(i.prerequisite))continue;let o=Uu(i);t(`Installing immutable ${i.identity} via ${i.label} into ${o}; expected executable: ${r}.`);try{Da(i.binary,i.args,{stdio:"inherit",windowsHide:!0,timeout:3e5,env:process.env,shell:qu()==="win32"});let a=ve(e);if(a){let s=a===e.indexerBinary?"":` (using ${a})`;return t(`Successfully installed ${i.identity} via ${i.label}${s}; resolved executable: ${a}.`),!0}t(`${i.label} command completed but ${r} was not found on PATH`)}catch(a){let s=a instanceof Error?a.message:String(a);t(`${i.label} install failed: ${s}`)}}return t(`Could not auto-install ${r}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function Uu(e){if(e.binary==="npm")return fr("npm",["root","-g"])??e.destination;if(e.binary==="go"){let t=fr("go",["env","GOBIN"]);if(t)return t;let n=fr("go",["env","GOPATH"]);if(n)return Lt(n.split(Wu)[0],"bin")}return e.binary==="dotnet"?Lt(process.env.DOTNET_CLI_HOME??Ta(),".dotnet","tools"):e.binary==="dart"?Lt(process.env.PUB_CACHE??Lt(Ta(),".pub-cache"),"bin"):e.destination}function fr(e,t){try{return Da(e,t,{stdio:["ignore","pipe","ignore"],windowsHide:!0,encoding:"utf8",timeout:1e4,killSignal:"SIGKILL",env:process.env}).trim()||null}catch{return null}}import Qa from"better-sqlite3";import{existsSync as Za}from"fs";import{dirname as es,join as ts,resolve as ns}from"path";import{randomUUID as zu}from"crypto";import{mkdtempSync as Ju,rmSync as Yu,statSync as Aa}from"fs";import{tmpdir as Ku}from"os";import{join as Oa}from"path";import{Worker as Xu}from"worker_threads";function Hu(){return{"missing-source-file":0,"missing-service-script":0,"no-definition":0,"same-file-definition":0,"unindexed-definition":0}}function Te(){return{skippedReferences:0,skippedReferenceReasons:Hu(),skippedReferenceSamples:[]}}function jt(e,t){e.skippedReferences+=t.skippedReferences;for(let n of Object.keys(e.skippedReferenceReasons)){e.skippedReferenceReasons[n]+=t.skippedReferenceReasons[n];for(let r of t.skippedReferenceSamples.filter(i=>i.reason===n))e.skippedReferenceSamples.filter(o=>o.reason===n&&o.sourceFile===r.sourceFile).length<2&&e.skippedReferenceSamples.push(r)}}var Qu=3e5,Ca=64*1024*1024,Zu={createResultDirectory:()=>Ju(Oa(Ku(),"codebaseiq-vue-workers-")),spawn:(e,t)=>new Xu(e,{workerData:t}),resultSize:e=>Aa(e).size,readResult:e=>w(e,{maxBytes:Ca,inputKind:"Vue worker result"}),removeResultDirectory:e=>Yu(e,{recursive:!0,force:!0})};function _a(e){return e.length>=8&&ja(e.length)>1}async function La(e,t=Zu){let n=ja(e.vueFiles.length),r=pl(e.vueFiles),i=gl(r,n),o=new URL("./augment-vue-worker.js",import.meta.url),a=e.timeoutMs??ul(),s=e.maxResultBytes??ll();Fa("timeoutMs",a),Fa("maxResultBytes",s);let c=zu(),d=t.createResultDirectory(),u=[],l,p,g;try{for(let h=0;h<i.length;h++){let b=h,y=i[h]??[],x=y.map(k=>k.taskId),P=Oa(d,`${b}.json`),T=t.spawn(o,{projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,tasks:y,resultPath:P,runId:c,workerId:b,taskIds:x});u.push({workerId:b,taskIds:x,resultPath:P,handle:T,completion:el(T,b)})}await tl(u,a);let f=u.sort((h,b)=>h.workerId-b.workerId).map(h=>rl(h,c,s,t));g={occurrences:f.flatMap(h=>h.occurrences),...Te()};for(let h of f)jt(g,h)}catch(f){l=f}finally{let f=await nl(u);if(f.length===0)try{t.removeResultDirectory(d)}catch(h){f.push(h)}if(f.length>0){let h=l===void 0?f:[l,...f];p=new AggregateError(h,`Vue worker cleanup failed: ${dl(h[0])}`)}}if(p)throw p;if(l!==void 0)throw l;if(!g)throw new Error("Vue workers completed without producing a merged result.");return g}function el(e,t){return new Promise((n,r)=>{let i=!1,o=c=>{i||(i=!0,e.off("error",a),e.off("exit",s),c?r(c):n())},a=c=>{o(new Error(`Vue reference worker ${t} failed: ${c.message}`,{cause:c}))},s=c=>{o(c===0?void 0:new Error(`Vue reference worker ${t} exited with code ${c}`))};e.once("error",a),e.once("exit",s)})}async function tl(e,t){let n;try{await Promise.race([Promise.all(e.map(r=>r.completion)),new Promise((r,i)=>{n=setTimeout(()=>i(new Error(`Vue reference workers timed out after ${(t/1e3).toFixed(3)}s`)),t),n.unref()})])}finally{n&&clearTimeout(n)}}async function nl(e){return(await Promise.allSettled(e.map(async n=>n.handle.terminate()))).flatMap(n=>n.status==="rejected"?[n.reason]:[])}function rl(e,t,n,r){let i=r.resultSize(e.resultPath);if(!Number.isSafeInteger(i)||i<0||i>n)throw new Error(`Vue reference worker ${e.workerId} result is ${i} bytes; limit is ${n} bytes`);let o;try{o=JSON.parse(r.readResult(e.resultPath))}catch(a){throw new Error(`Vue reference worker ${e.workerId} produced invalid JSON`,{cause:a})}if(!Ye(o)||o.version!==1||o.runId!==t||o.workerId!==e.workerId)throw new Error(`Vue reference worker ${e.workerId} result identity does not match its assignment`);if(!cl(o.taskIds,e.taskIds))throw new Error(`Vue reference worker ${e.workerId} result task identities do not match its assignment`);if(o.ok===!1)throw typeof o.error!="string"?new Error(`Vue reference worker ${e.workerId} failure payload is malformed`):new Error(`Vue reference worker ${e.workerId} failed: ${o.error}`);if(o.ok!==!0||!il(o.result))throw new Error(`Vue reference worker ${e.workerId} success payload is malformed`);return o.result}function il(e){if(!Ye(e)||!Array.isArray(e.occurrences)||!e.occurrences.every(ol)||!X(e.skippedReferences)||!Ye(e.skippedReferenceReasons))return!1;for(let t of["missing-source-file","missing-service-script","no-definition","same-file-definition","unindexed-definition"])if(!X(e.skippedReferenceReasons[t]))return!1;return Array.isArray(e.skippedReferenceSamples)&&e.skippedReferenceSamples.every(al)}function ol(e){return Ye(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.sourceToken=="string"&&typeof e.definitionFile=="string"&&X(e.symbolId)}function al(e){return Ye(e)&&typeof e.sourceFile=="string"&&X(e.sourceLine)&&X(e.sourceStartChar)&&X(e.sourceEndChar)&&typeof e.token=="string"&&sl(e.reason)}function sl(e){return e==="missing-source-file"||e==="missing-service-script"||e==="no-definition"||e==="same-file-definition"||e==="unindexed-definition"}function X(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>=0}function Ye(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function cl(e,t){return Array.isArray(e)&&e.length===t.length&&e.every((n,r)=>typeof n=="string"&&n===t[r])}function Fa(e,t){if(!Number.isSafeInteger(t)||t<=0)throw new TypeError(`${e} must be a positive safe integer.`)}function dl(e){return e instanceof Error?e.message:String(e)}function ja(e){let t=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKERS??0),n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.min(e,n))}function ul(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_TIMEOUT_MS??0);return Number.isFinite(e)&&e>0?e:Qu}function ll(){let e=Number(process.env.CODEBASEIQ_AUGMENT_VUE_WORKER_RESULT_MAX_BYTES??0);return Number.isSafeInteger(e)&&e>0?e:Ca}function pl(e){let t=fl(),n=[];for(let r of e){let i=Ma(r),o=Math.max(1,Math.ceil(i/t));for(let a=0;a<o;a++)n.push({taskId:`${n.length}:${r}:${a}`,fileName:r,startOffset:Math.floor(i*a/o),endOffset:a===o-1?Number.POSITIVE_INFINITY:Math.floor(i*(a+1)/o),countFileSkip:a===0})}return n}function fl(){return Number.POSITIVE_INFINITY}function gl(e,t){let n=Array.from({length:t},()=>({tasks:[],weight:0})),r=e.map(i=>({task:i,weight:ml(i)})).sort((i,o)=>o.weight-i.weight);for(let i of r){let o=n.reduce((a,s)=>s.weight<a.weight?s:a);o.tasks.push(i.task),o.weight+=i.weight}return n.map(i=>i.tasks).filter(i=>i.length>0)}function ml(e){return Number.isFinite(e.endOffset)?Math.max(1,e.endOffset-e.startOffset):Math.max(1,Ma(e.fileName)-e.startOffset)}function Ma(e){try{return Aa(e).size}catch{return 1}}import{createRequire as hl}from"module";import{existsSync as yl}from"fs";import{dirname as Na,extname as Sl,join as Ga,relative as bl,resolve as Rl}from"path";import{pathToFileURL as xl}from"url";function Il(e){e.transaction(()=>{e.prepare(`
|
|
235
235
|
DELETE FROM mentions
|
|
236
236
|
WHERE chunk_id IN (
|
|
237
237
|
SELECT c.id
|
|
@@ -246,12 +246,12 @@ ${l}`:""}`)}ju(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw _r(r,"Reindex
|
|
|
246
246
|
FROM documents
|
|
247
247
|
WHERE language = 'vue' OR relative_path LIKE '%.vue'
|
|
248
248
|
)
|
|
249
|
-
`).run()})()}function
|
|
249
|
+
`).run()})()}function hr(e,t){return e.prepare(`
|
|
250
250
|
SELECT relative_path AS relativePath
|
|
251
251
|
FROM documents
|
|
252
252
|
WHERE language = 'vue' OR relative_path LIKE '%.vue'
|
|
253
253
|
ORDER BY relative_path
|
|
254
|
-
`).all().map(r=>
|
|
254
|
+
`).all().map(r=>Rl(t,r.relativePath))}function $a(e,t){let{vueCore:n,ts:r,volarTs:i}=Pl(e),{parsed:o,vueOptions:a}=vl(n,r,t),s=Na(t),c=n.createVueLanguagePlugin(r,o.options,a,g=>g),d=wl(n,r,c),u=El(s,o),{languageServiceHost:l}=i.createLanguageServiceHost(r,r.sys,d,g=>g,u),p=r.createLanguageService(l);return{ts:r,language:d,languageService:p,fileNames:o.fileNames,configDir:s}}function Pl(e){let t=hl(xl(Ga(e,"package.json")).href);return{vueCore:mr(t,"@vue/language-core",e),ts:mr(t,"typescript",e),volarTs:mr(t,"@volar/typescript",e)}}function vl(e,t,n){let r=t.readConfigFile(n,t.sys.readFile);if(r.error||!r.config)throw new Error(`Failed to read ${n}`);let o=e.createParsedCommandLine(t,t.sys,n).vueOptions;return typeof e.createGlobalTypesWriter=="function"&&(o.globalTypesPath=e.createGlobalTypesWriter(o,t.sys.writeFile)),{parsed:t.parseJsonConfigFileContent(r.config,t.sys,Na(n),void 0,n,void 0,e.getAllExtensions(o).map(a=>({extension:a.slice(1),isMixedContent:!0,scriptKind:t.ScriptKind.Deferred}))),vueOptions:o}}function wl(e,t,n){let r={},i=e.createLanguage([n],new Map,o=>{if(!yl(o))return;let a=w(o,{maxBytes:z,inputKind:"Vue language-service source file"});r.current?.scripts.set(o,t.ScriptSnapshot.fromString(a),n.getLanguageId(o)??Ol(o))});return r.current=i,i}function El(e,t){return{getCurrentDirectory:()=>e,getCompilationSettings:()=>t.options,getScriptFileNames:()=>t.fileNames,getProjectReferences:()=>t.projectReferences,getProjectVersion:()=>"0"}}function mr(e,t,n){try{return e(t)}catch(r){throw(typeof r=="object"&&r!==null&&"code"in r?r.code:null)==="MODULE_NOT_FOUND"?new Error(`Vue augmentation requires ${t} to be installed in ${n}. Install Vue/Volar dependencies for that project, then rerun augment-vue.`,{cause:r}):r}}function Va(e,t,n){let r=kl(e);return i=>{if(!i.name)return null;let o=Q(t,i.fileName),a=n.get(i.fileName);if(!a)return null;let s=n.positionAt(a,i.textSpan.start),c=r.get(o);if(!c)return null;let d=c.starts.find(l=>l.line===s.line&&l.displayName===i.name);if(d)return d.symbolId;let u=c.containingByLine.get(s.line);return u&&u.displayName===i.name?u.symbolId:Tl(c.starts,s.line,2,i.name)}}function kl(e){let t=e.prepare(`
|
|
255
255
|
SELECT
|
|
256
256
|
d.relative_path AS relativePath,
|
|
257
257
|
der.start_line AS startLine,
|
|
@@ -262,22 +262,22 @@ ${l}`:""}`)}ju(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw _r(r,"Reindex
|
|
|
262
262
|
JOIN documents d ON d.id = der.document_id
|
|
263
263
|
JOIN global_symbols gs ON gs.id = der.symbol_id
|
|
264
264
|
ORDER BY d.relative_path, (der.end_line - der.start_line) DESC
|
|
265
|
-
`).all(),n=new Map;for(let r of t){let i=n.get(r.relativePath);i||(i={containingByLine:new Map,starts:[]},n.set(r.relativePath,i)),i.starts.push({line:r.startLine,symbolId:r.symbolId,displayName:r.displayName});for(let o=r.startLine;o<=r.endLine;o++)i.containingByLine.set(o,{symbolId:r.symbolId,displayName:r.displayName})}for(let r of n.values())r.starts.sort((i,o)=>i.line-o.line);return n}function
|
|
265
|
+
`).all(),n=new Map;for(let r of t){let i=n.get(r.relativePath);i||(i={containingByLine:new Map,starts:[]},n.set(r.relativePath,i)),i.starts.push({line:r.startLine,symbolId:r.symbolId,displayName:r.displayName});for(let o=r.startLine;o<=r.endLine;o++)i.containingByLine.set(o,{symbolId:r.symbolId,displayName:r.displayName})}for(let r of n.values())r.starts.sort((i,o)=>i.line-o.line);return n}function Tl(e,t,n,r){let i=0,o=e.length-1;for(;i<=o;){let s=Math.floor((i+o)/2);e[s].line<t?i=s+1:o=s-1}let a=null;for(let s of[o,i]){let c=e[s];if(!c||c.displayName!==r)continue;let d=Math.abs(c.line-t);d>n||(!a||d<a.distance)&&(a={distance:d,symbolId:c.symbolId})}return a?.symbolId??null}function yr(e,t,n){let r=Ll(t),i=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),o=e.prepare(`
|
|
266
266
|
INSERT OR IGNORE INTO global_symbols (symbol, display_name, kind, documentation)
|
|
267
267
|
VALUES (?, ?, ?, ?)
|
|
268
|
-
`),a=0,s=new Map;return e.transaction(()=>{for(let d of n){let u=
|
|
268
|
+
`),a=0,s=new Map;return e.transaction(()=>{for(let d of n){let u=Q(t,d),l=Ka(r.name,r.version,u);o.run(l,"default",7,`Vue component|${u}`);let p=jl(i,r,t,d);p&&(a++,s.set(d,p))}})(),{get(d){return s.get(d)??null},syntheticSymbols:a}}function Ba(e,t,n,r,i){return e.transaction(()=>(Il(e),Dl(e,t,n,r),Fl(e,i)))()}function Dl(e,t,n,r){let i=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),o=e.prepare(`
|
|
269
269
|
INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
|
|
270
270
|
VALUES (?, ?, ?, ?, X'00')
|
|
271
271
|
`),a=e.prepare(`
|
|
272
272
|
INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
|
|
273
273
|
VALUES (?, ?, 1)
|
|
274
|
-
`);for(let s of n){let c=r.get(s);if(!c)continue;let d=
|
|
274
|
+
`);for(let s of n){let c=r.get(s);if(!c)continue;let d=Q(t,s),u=i.get(d);if(!u)continue;let l=o.run(u.id,-1,0,0);a.run(Number(l.lastInsertRowid),c)}}function qa(e,t,n,r,i){if(e.fileName.endsWith(".vue")){let o=r.language.scripts.get(e.fileName),a=o?.generated?.languagePlugin.typescript?.getServiceScript(o.generated.root)?.code;if(o&&a){let s=r.language.maps.get(a,o);if(Sr(s,e.textSpan.start)!==null)return n.get(e.fileName)}return e.fileName.startsWith(i)?n.get(e.fileName):null}return t(e)}function Wa(e){let t=new Set,n=[];for(let r of e){let i=Ua(r);t.has(i)||(t.add(i),n.push(r))}return n}function Ua(e){return[e.sourceFile,e.sourceLine,e.sourceStartChar,e.sourceEndChar,e.symbolId].join(":")}function Fl(e,t){let n=_l(e,[...new Set(t.map(c=>c.sourceFile))]),r=e.prepare(`
|
|
275
275
|
INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
|
|
276
276
|
VALUES (?, ?, ?, ?, X'00')
|
|
277
277
|
`),i=e.prepare(`
|
|
278
278
|
INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
|
|
279
279
|
VALUES (?, ?, 0)
|
|
280
|
-
`),o=new Set,a=0,s=0;for(let c of t){let d=
|
|
280
|
+
`),o=new Set,a=0,s=0;for(let c of t){let d=Ua(c);if(o.has(d))continue;o.add(d);let u=n.get(c.sourceFile);if(!u)continue;let l=r.run(u,s++,c.sourceLine,c.sourceLine),p=i.run(Number(l.lastInsertRowid),c.symbolId);a+=Number(p.changes)}return a}function*Ha(e){let t=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,n=new Set(["script","setup","template","style","lang","scoped","true","false","null","undefined","const","let","var","import","from","export","return","if","else","for","while","function","class","type","interface","as","await","async"]),r;for(;r=t.exec(e);){let i=r[0];n.has(i)||(yield{text:i,start:r.index,end:r.index+i.length})}}function za(e,t){for(let[n]of e.toGeneratedLocation(t,r=>!!r.navigation))return n;return null}function Sr(e,t){let n=e;for(let[r]of n.toSourceLocation(t,i=>!!i.navigation))return r;return null}function Al(e,t){let n=0,r=e.lineStarts.length-1;for(;n<=r;){let o=Math.floor((n+r)/2);e.lineStarts[o]<=t?n=o+1:r=o-1}let i=Math.max(0,r);return{line:i,character:t-e.lineStarts[i]}}function Ja(e,t){return Q(e,t).startsWith("node_modules/")}function Q(e,t){return bl(e,t).replaceAll("\\","/")}function Ol(e){switch(Sl(e)){case".vue":return"vue";case".tsx":return"typescriptreact";case".ts":case".mts":case".cts":return"typescript";case".jsx":return"javascriptreact";case".js":case".mjs":case".cjs":return"javascript";case".json":return"json";default:return"typescript"}}function Ya(){let e=new Map;return{get(t){if(e.has(t))return e.get(t)??null;try{let n=w(t,{maxBytes:z,inputKind:"Vue source file"}),r={text:n,lineStarts:Cl(n)};return e.set(t,r),r}catch{return e.set(t,null),null}},positionAt:Al}}function Cl(e){let t=[0];for(let n=0;n<e.length;n++)e.charCodeAt(n)===10&&t.push(n+1);return t}function _l(e,t){let n=new Map,r=500;for(let i=0;i<t.length;i+=r){let o=t.slice(i,i+r),a=e.prepare(`SELECT id, relative_path AS relativePath FROM documents WHERE relative_path IN (${o.map(()=>"?").join(",")})`).all(...o);for(let s of a)n.set(s.relativePath,s.id)}return n}function Ll(e){try{let t=JSON.parse(w(Ga(e,"package.json"),{maxBytes:A,inputKind:"project package manifest"}));return{name:t.name??"workspace",version:t.version??"0.0.0"}}catch{return{name:"workspace",version:"0.0.0"}}}function jl(e,t,n,r){let i=Q(n,r),o=Ka(t.name,t.version,i);return e.get(o)?.id??null}function Ka(e,t,n){let r=n.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${r}/default.`}function rs(e){return{id:"vue-resolved-references",facts:["synthetic-symbol","source-mapped-occurrence","definition-mention","replacement-chunk","fingerprint-cache"],run:t=>$l({projectRoot:t.projectRoot,dbPath:t.dbPath,tsconfig:e.tsconfig,onStatus:t.onStatus})}}function Nl(e){return q(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),q(rs({tsconfig:e.tsconfig}),{projectRoot:e.projectRoot,dbPath:e.dbPath,onStatus:e.onStatus}).result}async function Gl(e){return q(oe(),{projectRoot:e.projectRoot,dbPath:e.dbPath}),Vl(e)}function $l(e){let t=ns(e.projectRoot,e.tsconfig);if(!Za(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new Qa(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=ts(es(e.dbPath),"augment-vue-meta.json");return Ki({cachePath:i,readFingerprint:()=>as(n,e.projectRoot,e.tsconfig),compute:()=>Bl({db:n,projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,configPath:t,vueFiles:r,onStatus:e.onStatus}),onCacheHit:o=>e.onStatus?.(`Vue references unchanged; reused ${o.resolvedReferences} cached resolved references.`)})}finally{n.close()}}async function Vl(e){let t=ns(e.projectRoot,e.tsconfig);if(!Za(t))throw new Error(`Vue tsconfig not found at ${t}`);let n=new Qa(j(e.dbPath));try{let r=hr(n,e.projectRoot),i=ts(es(e.dbPath),"augment-vue-meta.json");return await Xi({cachePath:i,readFingerprint:()=>as(n,e.projectRoot,e.tsconfig),compute:()=>ql({db:n,projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,configPath:t,vueFiles:r,onStatus:e.onStatus}),onCacheHit:o=>e.onStatus?.(`Vue references unchanged; reused ${o.resolvedReferences} cached resolved references.`)})}finally{n.close()}}function Bl(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=os(e,t);return is(e,t,n)}async function ql(e){let t=yr(e.db,e.projectRoot,e.vueFiles),n=_a(e.vueFiles)?await La({projectRoot:e.projectRoot,dbPath:e.dbPath,tsconfig:e.tsconfig,vueFiles:e.vueFiles}):os(e,t);return is(e,t,n)}function is(e,t,n){let r=Wa(n.occurrences),i=Ba(e.db,e.projectRoot,e.vueFiles,t,r),o={vueFiles:e.vueFiles.length,resolvedReferences:r.length,resolvedReferenceSamples:Ql(e.db,r,20),insertedMentions:i,skippedReferences:n.skippedReferences,skippedReferenceReasons:n.skippedReferenceReasons,skippedReferenceSamples:Xl(n.skippedReferenceSamples,20),syntheticSymbols:t.syntheticSymbols};return e.onStatus?.(`Resolved ${o.resolvedReferences} Vue references with Volar; inserted ${o.insertedMentions} mentions.`),o}function os(e,t){let n=Wl({db:e.db,projectRoot:e.projectRoot,configPath:e.configPath,vueSymbolLookup:t});return Ul({...n,vueFiles:n.context.fileNames.filter(r=>r.endsWith(".vue"))})}function as(e,t,n){let r=e.prepare(`
|
|
281
281
|
SELECT
|
|
282
282
|
(SELECT COUNT(*) FROM documents) AS documents,
|
|
283
283
|
(SELECT COUNT(*) FROM global_symbols) AS symbols,
|
|
@@ -286,13 +286,13 @@ ${l}`:""}`)}ju(e.config,t,e.scipPath)}catch(d){if(r?.aborted)throw _r(r,"Reindex
|
|
|
286
286
|
(SELECT COUNT(*) FROM defn_enclosing_ranges) AS ranges,
|
|
287
287
|
(SELECT MAX(id) FROM chunks) AS maxChunkId,
|
|
288
288
|
(SELECT MAX(id) FROM global_symbols) AS maxSymbolId
|
|
289
|
-
`).get();return{version:3,tsconfig:n,files:
|
|
290
|
-
`,t-1)+1,r=e.slice(n,t);return/\bfrom\s+['"][^'"]*$/.test(r)||/\bimport\s*\(\s*['"][^'"]*$/.test(r)}function Jl(e,t,n){return n===e?"same-file-definition":n.endsWith(".vue")&&t!==n.split("/").at(-1)?.replace(/\.vue$/,"")?"unindexed-definition":null}function Ka(e,t,n){let r=ke();return t.countFileSkip&&(r.skippedReferences=1,r.skippedReferenceReasons[n]=1,r.skippedReferenceSamples.push({sourceFile:X(e,t.fileName),sourceLine:0,sourceStartChar:0,sourceEndChar:0,token:"",reason:n})),{occurrences:[],...r}}function yr(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 Sr(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 Yl(e,t){let n=Sr(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=Sr(e.filter(o=>!r.has(`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),t-n.length);return[...n,...i]}function Kl(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(...Sr(e.filter(c=>c.reason===o),s))}return r.slice(0,t)}function Xl(e,t,n){let r=e.prepare("SELECT symbol FROM global_symbols WHERE id = ?");return Yl(t,n).map(({symbolId:i,...o})=>({...o,definitionSymbol:r.get(i)?.symbol??`symbol-id:${i}`}))}function Ql(e,t,n,r,i,o){if(!((t.tokenContext.tokenTextCounts.get(n.text)??0)<=1))for(let a of ep(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&&(as(e,t.sourceReader,t.sourceInfo,t.sourceFile,s,i,o),t.tokenContext.processedStarts.add(a))}}function as(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 Zl(e){let t=new Map;for(let n of e)t.set(n.text,(t.get(n.text)??0)+1);return t}function ep(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=tp(r,d.textSpan.start,o,i.text);u!==null&&s.push(u)}return s}function tp(e,t,n,r){let i=n.get(t);if(i?.text===r)return i.start;let o=hr(e,t);if(o===null)return null;let a=n.get(o);return a?.text===r?a.start:null}async function Cy(e){let{projectRoot:t,maxHeapMb:n=8192,onStatus:r=console.log}=e,i=e.skipAutoInstall===!0||e.installMissing!==!0,o=dp(e),a=Date.now(),s=I();jt(S(o.outputScip),{recursive:!0}),jt(S(o.outputDb),{recursive:!0});let c=e.languages??cn(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=ot("reindex.fingerprint",()=>Jt(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),{languages:c.length}),u,l;if(e.skipIfUnchanged!==!1&&!na(t,o.outputDb)&&ss(o.outputScip)===ss(C(S(o.outputDb),"index.scip"))){let y=at(t);if(u=y?.clean?Et(y,d):void 0,y&&!y.clean&&!cp(o)){let x=ra(y,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath});if(x)try{kt({snapshot:x.snapshot,manifest:x.manifest,targetCacheDir:S(o.outputDb),targetProjectRoot:t,persistLease:!1}),aa(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: ${ce(P)}`)}}else if(u){let x=Y(u);if(x){if(!sp(o,d))try{kt({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: ${ce(P)}`)}}else{let P=await oa(u);if(P.kind==="owner")l=P.release;else if(P.kind==="generation-ready"){let T=Y(u);if(T)try{kt({snapshot:u,manifest:T,targetCacheDir:S(o.outputDb),targetProjectRoot:t,action:"waited"}),r(`Attached shared generation ${u.generationId.slice(0,12)} after waiting`)}catch(k){r(`Shared generation attach failed after waiting; continuing locally: ${ce(k)}`)}}else r("Shared generation build lock timed out; continuing with an isolated local reindex")}}}let g=de(C(S(o.outputDb),"cache-lifecycle.lock"),{waitMs:3e4});if(!g)throw l?.(),new Error(`Could not acquire codebaseiq cache lifecycle lock for ${S(o.outputDb)}.`);let f;try{f=await Re("reindex.lock",()=>jp(C(S(o.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:r}),{languages:c.length})}catch(y){throw g.release(),l?.(),y}let h=null,b=mi();try{qn(o.outputDb,o.outputScip,o.metaPath);let y=fp(S(o.outputDb));y.removed>0&&r(`Removed ${y.removed} abandoned reindex workspace(s)`);for(let ye of y.errors)r(`Could not remove abandoned reindex workspace: ${ye}`);let x=null,P=ot("reindex.reuse-check",()=>(x=up({opts:e,paths:o,languages:c,fingerprint:d,start:a,monotonicStart:s,onStatus:r}),x),()=>({languages:c.length,reused:x!==null}));if(P){cs({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let ye=dn(o.outputDb,P);return ye.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${ye.reason}`),Ht(t,S(o.outputDb)),P}await Re("reindex.scip-cli-ready",()=>Tp(i,r));let T=pp(o);h=T.runDir;let k,v=await Re("reindex.fresh",async()=>(k=await gp({opts:e,languages:c,projectRoot:t,paths:o,tempPaths:T,fingerprint:d,start:a,monotonicStart:s,maxHeapMb:n,skipAutoInstall:i,onStatus:r,writeTelemetry:b}),k),()=>({languages:c.length,reused:k?.reused,skipped:k?.skipped.length}));cs({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let he=dn(o.outputDb,v);return he.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${he.reason}`),Ht(t,S(o.outputDb)),v}catch(y){let x=Gt({trigger:e.trigger,result:"failed",start:a,monotonicStart:s,error:y instanceof Error?y.message:String(y)});Ds(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(()=>Te(y,{recursive:!0,force:!0}))}catch(x){r(`Warning: temporary reindex workspace was left behind: ${ce(x)}`)}}f(),g.release(),l?.()}}function cs(e){if(e.snapshot)try{let t=at(e.projectRoot),n=t?Et(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=ia({snapshot:e.snapshot,sourceCacheDir:S(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let i=at(e.projectRoot);return(i?Et(i,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});er(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: ${ce(t)}`)}}function sp(e,t){if(!j(e.outputScip)||!j(e.outputDb)||!Ts(e.metaPath,t))return!1;let n=U(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function cp(e){if(!j(e.outputScip)||!j(e.outputDb)||!De(e.metaPath))return!1;let t=U(e.outputDb,e.metaPath);return t.state!=="invalid"&&t.state!=="drifted"}function ce(e){return e instanceof Error?e.message:String(e)}function xr(e,t,n,r,i,o){try{B(yi({indexPath:n,reuseExisting:i,affectedFiles:o}),{projectRoot:e,dbPath:t,onStatus:r})}catch(a){r(`Runtime-boundary extraction unavailable: ${a instanceof Error?a.message:String(a)}.`)}}function dp(e){let t=e.outputScip??C(e.projectRoot,"index.scip"),n=e.outputDb??C(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:C(S(n),"meta.json")}}function up(e){let t=U(e.paths.outputDb,e.paths.metaPath);if(e.opts.skipIfUnchanged===!1||!j(e.paths.outputScip)||!j(e.paths.outputDb)||!Ts(e.paths.metaPath,e.fingerprint)||t.state==="invalid"||t.state==="drifted")return null;B(ie(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),xr(e.opts.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0),U(e.paths.outputDb,e.paths.metaPath).state==="drifted"&&(Un(e.paths.outputDb,e.paths.metaPath),e.onStatus("Published refreshed SQLite generation after post-index augmentation"));let n=I()-e.monotonicStart,r=Gt({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return Ds(e.paths.metaPath,r),e.onStatus(`Index unchanged; reused existing SQLite index in ${(n/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:n,reused:!0,skipped:[],lastRefresh:r,shards:lp(e.paths,e.opts.projectRoot,e.languages,e.opts)}}function lp(e,t,n,r){let i=Es(t,n,r);return n.map(o=>({id:o,language:o,reused:!0,fingerprint:Je(i[o]),outputBytes:Ye(Pr(e.outputDb,o)),durationMs:0}))}function pp(e){let t=rp(C(S(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:C(t,Lt(e.outputScip)),tempOutputDb:C(t,Lt(e.outputDb)),tempMetaPath:C(t,Lt(e.metaPath))}}function fp(e){let t=[],n;try{n=ms(e,{withFileTypes:!0})}catch(i){return{removed:0,errors:[ce(i)]}}let r=0;for(let i of n)if(!(!i.name.startsWith("reindex-")||!i.isDirectory()))try{Te(C(e,i.name),{recursive:!0,force:!0}),r+=1}catch(o){t.push(`${i.name}: ${ce(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 Re("reindex.language-indexers",async()=>(n=await hp(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:i,skippedLanguages:o,reusedLanguages:a,languageFingerprints:s,shards:c,typescriptProjectShardContext:d,incrementalTypeScript:u}=r;if(a.length>0&&e.onStatus(`Reused ${a.length} cached language shard(s): ${a.join(", ")}`),mp({run:e,indexedOutputs:i,skippedLanguages:o,reusedLanguages:a})){let g=ot("reindex.publish",()=>wp(e,i,o,a,s,d),{mode:"metadata-only",languages:i.length,reused:a.length}),f=g.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(f/1e3).toFixed(1)}s`),{languages:i.map(h=>h.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:f,reused:!0,skipped:o,lastRefresh:g,shards:c,writeTelemetry:e.writeTelemetry}}let l=await Re("reindex.publish",()=>vp(e,t,i,o,a,s,d,u),{mode:u?"incremental-or-fallback":"full",languages:i.length,reused:a.length,skipped:o.length}),p=l.durationMs;return e.onStatus(`Done in ${(p/1e3).toFixed(1)}s`),{languages:i.map(g=>g.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:o,lastRefresh:l,shards:c,writeTelemetry:e.writeTelemetry}}function mp(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!j(e.run.paths.outputScip)||!j(e.run.paths.outputDb))return!1;let t=U(e.run.paths.outputDb,e.run.paths.metaPath);if(t.state==="invalid"||t.state==="drifted")return!1;let n=new Set(e.reusedLanguages),r=new Set(e.indexedOutputs.map(i=>i.language));return e.run.languages.length>0&&r.size===e.run.languages.length&&e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(i=>n.has(i)&&r.has(i))}async function hp(e,t){let n=xp({paths:e.paths,projectRoot:e.projectRoot,languages:e.languages,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,clojureConfigPath:e.opts.clojureConfigPath}),r=[],i=new Set;for(let[M,wr]of n)wr.reused&&(r.push({language:M,scipPath:wr.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=U(e.paths.outputDb,e.paths.metaPath),s=De(e.paths.metaPath),c=a.state==="legacy"||a.state==="current",d=s?.scipCompanion!=="deferred"&&(a.state!=="current"||a.generation.publication?.scipCompanion!=="deferred"),u=o&&!o.reused&&c?Ia({projectRoot:e.projectRoot,cacheDir:S(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:o.scipPath,candidateShardPath:Ke(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:Ke(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:d,previousSnapshot:Ir(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus}):null,l=new Set(u?["typescript"]:[]),p=u?void 0:yp(e,n),{preparedRuns:g,skippedLanguages:f,languageOutputScipPaths:h}=Dp({languages:e.languages.filter(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 Ea(b,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal),x=[];if(p){bp(e.paths.outputDb,y,e.writeTelemetry);let M=h.typescript??e.tempPaths.tempOutputScip;x=Rp({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:M,reusedProjects:p.reusedProjects,writeTelemetry:e.writeTelemetry})}let P=[...y,...x],{indexedOutputs:T}=Ap(P,f),k=u?[{language:"typescript",scipPath:u.scipPath}]:[],v=[...r,...k,...T];Op(v,f,e.languages,e.opts.allowPartial,e.onStatus);let he=u?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:u.scipPath,outputScipPath:u.scipPath,durationMs:u.durationMs,command:"watch-service:typescript-index",outputBytes:Ye(u.scipPath)??void 0}]:[],ye=Ip(n,[...y,...he],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0);return{indexedOutputs:v,skippedLanguages:f,reusedLanguages:[...i],languageFingerprints:Pp(n,e.languages),shards:ye,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:u??void 0}}function yp(e,t){let n=t.get("typescript");if(!n||n.reused||e.opts.typescriptProjectMode!=="workspace")return;let r=xe(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let i=no(e.projectRoot,r),o=Zi(n.fingerprint.files,r),a=eo(r,i),s=to(r,o,a),c=De(e.paths.metaPath),u=Sp(c,s,f=>j(Nt(e.paths.outputDb,f))),l=[...u.entries()].filter(([,f])=>f.reused).map(([f])=>f),p=new Set(l),g=new Set(r.filter(f=>!p.has(f)).map(f=>`typescript:${f}`));return{allProjects:r,fingerprints:s,classification:u,reusedProjects:l,missedProjectIds:g}}function Sp(e,t,n){let r=new Map;for(let i of Object.keys(t)){let o=t[i];if(!e){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:o});continue}let a=e.version===Fe&&Bt(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(Q(a)!==Q(o)){r.set(i,{reused:!1,reason:"project inputs changed since last index",fingerprint:o});continue}r.set(i,{reused:!0,fingerprint:o})}return r}function bp(e,t,n){for(let r of t){if(r.skipped||!r.id.startsWith("typescript:"))continue;let i=r.id.slice(11),o=Nt(e,i);jt(S(o),{recursive:!0}),pe(n,le(r.scipPath,o))}}function Rp(e){return e.reusedProjects.map((t,n)=>{let r=Nt(e.outputDb,t),i=Ke(e.tempOutputScip,"typescript-project-cached",n);return pe(e.writeTelemetry,le(r,i)),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:i,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:Ye(i)??void 0}})}function xp(e){let t=De(e.paths.metaPath),n=Es(e.projectRoot,e.languages,e),r=new Map;for(let i of e.languages){let o=Pr(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!==Fe){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(!Bt(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(!j(o)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:a,scipPath:o});continue}if(Q(s)!==Q(a)){r.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:a,scipPath:o});continue}r.set(i,{reused:!0,fingerprint:a,scipPath:o})}return r}function Ip(e,t,n){let r=[];for(let[i,o]of e)o.reused&&r.push({id:i,language:i,reused:!0,fingerprint:Je(o.fingerprint),outputBytes:Ye(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?Je(s.fingerprint):o?Je(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:Je(o.fingerprint),outputBytes:Ye(Nt(n.outputDb,i)),durationMs:0});return r}function Je(e){return np("sha256").update(Q(e)).digest("hex").slice(0,16)}function Ye(e){try{return ip(e).size}catch{return null}}function Pp(e,t){let n={};for(let r of t){let i=e.get(r);i&&(n[r]=i.fingerprint)}return n}async function vp(e,t,n,r,i,o,a,s){N(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,d=!1;c&&(ds(e.paths.outputDb,n,e.writeTelemetry),d=us(n,e.tempPaths.tempOutputScip,e.onStatus));let u=await Cp({run:e,env:t,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,incrementalTypeScript:s,completeScipAvailable:c,completeScipSanitized:d,materializeFullFallback:async()=>{if(N(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..."),Pa({cacheDir:S(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let T=n.map(k=>k.language==="typescript"?{language:k.language,scipPath:s.candidateScipPath}:k);return ds(e.paths.outputDb,T,e.writeTelemetry),d=us(T,e.tempPaths.tempOutputScip,e.onStatus),d}});N(e.opts.signal,"Reindex cancelled by its owner."),B(ie(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus}),xr(e.projectRoot,e.tempPaths.tempOutputDb,e.tempPaths.tempOutputScip,e.onStatus,!1,s?.affectedFiles);let l=In(e.tempPaths.tempOutputDb);if(l.added.length>0&&e.onStatus(`Added SQLite query indexes: ${l.added.join(", ")}`),l.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${l.removed.join(", ")}`),u.mode==="incremental"&&s){let T=null,k=null;try{T=new z({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip}),k=new z({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let v=ri(T,e.fingerprint,s.referenceFragmentsByFile,k);e.onStatus(`Cached exact TypeScript reference fragments for ${v} affected document(s).`)}catch(v){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${v instanceof Error?v.message:String(v)}.`)}finally{T?.close(),k?.close()}}let p=Ir(e.paths.metaPath),g=u.mode==="incremental"&&s?Lp(s,u.changedDocumentPaths):fn({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=Gt({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(T=>T.language),skipped:[...r]}),h=u.mode==="incremental"&&u.scipCompanion==="deferred",b={...o};h&&delete b.typescript;let{metadata:y,pruneProjects:x}=Ss({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,languageFingerprints:b,typescriptProjectShardContext:a,lastRefresh:f});y.scipCompanion=h?"deferred":"current",bs(e.paths.outputDb,x),vr(e.tempPaths.tempMetaPath,y);let P=Pt({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)`),_o(S(e.paths.outputDb),u.mode==="incremental"&&u.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),xo(S(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[]),ys(e.paths.outputDb,g,e.onStatus),f}function wp(e,t,n,r,i,o){let a=Ir(e.paths.metaPath),s=null;try{pe(e.writeTelemetry,le(e.paths.outputDb,e.tempPaths.tempOutputDb))}catch(p){s=xi("reused","oracle-error",`Could not snapshot the prior database: ${p instanceof Error?p.message:String(p)}`)}B(ie(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),xr(e.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0);let c=In(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??=fn({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=Gt({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(p=>p.language),skipped:[...n]}),{metadata:u,pruneProjects:l}=Ss({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:d});return bs(e.paths.outputDb,l),vr(e.paths.metaPath,u),Un(e.paths.outputDb,e.paths.metaPath),ys(e.paths.outputDb,s,e.onStatus),d}function Ir(e){return Dr(De(e)?.fingerprint)}function ys(e,t,n){try{Ii(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 Ss(e){let t=Ep({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:Fe,status:e.skippedLanguages.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.run.fingerprint,sqliteLayoutVersion:1,languageFingerprints:e.languageFingerprints,typescriptProjectShards:t.field,requestedLanguages:e.run.languages,indexedLanguages:e.indexedOutputs.map(n=>n.language),skipped:[...e.skippedLanguages],lastRefresh:e.lastRefresh},pruneProjects:t.pruneProjects}}function Ep(e){if(e.mode!=="workspace")return{field:void 0,pruneProjects:null};if(e.skippedLanguages.some(t=>t.language==="typescript"))return{field:void 0,pruneProjects:null};if(e.reusedLanguages.includes("typescript")){let t=De(e.metaPath),n=t?.version===Fe?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 bs(e,t){let n=ks(e);if(t===null){F(()=>Te(n,{recursive:!0,force:!0}));return}let r;try{r=ms(n)}catch{return}for(let i of kp(r,t))F(()=>Te(C(n,i),{force:!0}))}function kp(e,t){let n=new Set(t.map(r=>`${En(r)}.scip`));return e.filter(r=>!n.has(r))}function ds(e,t,n){for(let r of t){let i=Pr(e,r.language);jt(S(i),{recursive:!0}),r.scipPath!==i&&pe(n,le(r.scipPath,i))}}async function Tp(e,t){if(!an()){if(ap()==="win32")throw new Error("The scip CLI was not found. On Windows it ships via the npm sidecar package codebaseiq-windows (installed automatically with codebaseiq). Reinstall codebaseiq with optional dependencies enabled, or follow 'codebaseiq setup' guidance for the exact sidecar package version, or set CODEBASEIQ_SCIP_BIN to a local scip.exe path.");if(e)throw new Error(`The scip CLI is required but not found on PATH.
|
|
289
|
+
`).get();return{version:3,tsconfig:n,files:dt(t),db:r}}function Wl(e){let t=Ya();return{projectRoot:e.projectRoot,context:$a(e.projectRoot,e.configPath),symbolLookup:Va(e.db,e.projectRoot,t),vueSymbolLookup:e.vueSymbolLookup,sourceReader:t}}function Ul(e){let t=[],n=Te(),r=e.tasks??e.vueFiles.map(i=>({fileName:i,startOffset:0,endOffset:Number.POSITIVE_INFINITY,countFileSkip:!0}));for(let i of r){let o=Hl(e,i);t.push(...o.occurrences),jt(n,o)}return{occurrences:t,...n}}function Hl(e,t){let n=e.sourceReader.get(t.fileName);if(!n)return Xa(e.projectRoot,t,"missing-source-file");let r=e.context.language.scripts.get(t.fileName),i=r?.generated?.languagePlugin.typescript?.getServiceScript(r.generated.root)?.code;if(!r||!i)return Xa(e.projectRoot,t,"missing-service-script");let o=e.context.language.maps.get(i,r),a=Q(e.projectRoot,t.fileName),s=[...Ha(n.text)],c={tokens:s.filter(d=>d.start>=t.startOffset&&d.start<t.endOffset),tokenByStart:new Map(s.map(d=>[d.start,d])),tokenTextCounts:ep(s),processedStarts:new Set};return zl({...e,fileName:t.fileName,sourceInfo:n,sourceFile:a,map:o,tokenContext:c})}function zl(e){let t=[],n=Te();for(let r of e.tokenContext.tokens){if(e.tokenContext.processedStarts.has(r.start)||Jl(e.sourceInfo.text,r.start))continue;let i=za(e.map,r.start);if(i===null)continue;let a=(e.context.languageService.getDefinitionAtPosition(e.fileName,i+1)??[]).find(u=>!Ja(e.projectRoot,u.fileName));if(!a){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"no-definition");continue}let s=Q(e.projectRoot,a.fileName),c=Yl(e.sourceFile,r.text,s);if(c){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,c);continue}let d=qa(a,e.symbolLookup,e.vueSymbolLookup,e.context,e.projectRoot);if(d===null){br(n,e.sourceReader,e.sourceInfo,e.sourceFile,r,"unindexed-definition");continue}ss(t,e.sourceReader,e.sourceInfo,e.sourceFile,r,s,d),e.tokenContext.processedStarts.add(r.start),Zl(t,e,r,i,s,d)}return{occurrences:t,...n}}function Jl(e,t){let n=e.lastIndexOf(`
|
|
290
|
+
`,t-1)+1,r=e.slice(n,t);return/\bfrom\s+['"][^'"]*$/.test(r)||/\bimport\s*\(\s*['"][^'"]*$/.test(r)}function Yl(e,t,n){return n===e?"same-file-definition":n.endsWith(".vue")&&t!==n.split("/").at(-1)?.replace(/\.vue$/,"")?"unindexed-definition":null}function Xa(e,t,n){let r=Te();return t.countFileSkip&&(r.skippedReferences=1,r.skippedReferenceReasons[n]=1,r.skippedReferenceSamples.push({sourceFile:Q(e,t.fileName),sourceLine:0,sourceStartChar:0,sourceEndChar:0,token:"",reason:n})),{occurrences:[],...r}}function br(e,t,n,r,i,o){if(e.skippedReferences++,e.skippedReferenceReasons[o]++,e.skippedReferenceSamples.filter(s=>s.reason===o&&s.sourceFile===r).length>=2)return;let a=t.positionAt(n,i.start);e.skippedReferenceSamples.push({sourceFile:r,sourceLine:a.line,sourceStartChar:a.character,sourceEndChar:a.character+i.text.length,token:i.text,reason:o})}function Rr(e,t){let n=new Map;for(let o of e){let a=n.get(o.sourceFile)??[];a.push(o),n.set(o.sourceFile,a)}let r=[...n.keys()].sort(),i=[];for(let o=0;i.length<t;o++){let a=!1;for(let s of r){let c=n.get(s)?.[o];if(c&&(i.push(c),a=!0,i.length===t))break}if(!a)break}return i}function Kl(e,t){let n=Rr(e.filter(o=>o.sourceFile!==o.definitionFile),Math.ceil(t/2)),r=new Set(n.map(o=>`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),i=Rr(e.filter(o=>!r.has(`${o.sourceFile}:${o.sourceLine}:${o.sourceStartChar}:${o.sourceEndChar}:${o.symbolId}`)),t-n.length);return[...n,...i]}function Xl(e,t){let n=[...new Set(e.map(i=>i.reason))].sort(),r=[];for(let[i,o]of n.entries()){let a=n.length-i,s=Math.ceil((t-r.length)/a);r.push(...Rr(e.filter(c=>c.reason===o),s))}return r.slice(0,t)}function Ql(e,t,n){let r=e.prepare("SELECT symbol FROM global_symbols WHERE id = ?");return Kl(t,n).map(({symbolId:i,...o})=>({...o,definitionSymbol:r.get(i)?.symbol??`symbol-id:${i}`}))}function Zl(e,t,n,r,i,o){if(!((t.tokenContext.tokenTextCounts.get(n.text)??0)<=1))for(let a of tp(t.context.languageService,t.fileName,r+1,t.map,n,t.tokenContext.tokenByStart)){if(t.tokenContext.processedStarts.has(a))continue;let s=t.tokenContext.tokenByStart.get(a);s&&(ss(e,t.sourceReader,t.sourceInfo,t.sourceFile,s,i,o),t.tokenContext.processedStarts.add(a))}}function ss(e,t,n,r,i,o,a){let s=t.positionAt(n,i.start);e.push({sourceFile:r,sourceLine:s.line,sourceStartChar:s.character,sourceEndChar:s.character+i.text.length,sourceToken:i.text,definitionFile:o,symbolId:a})}function ep(e){let t=new Map;for(let n of e)t.set(n.text,(t.get(n.text)??0)+1);return t}function tp(e,t,n,r,i,o){let a=e.getDocumentHighlights?.(t,n,[t])??[],s=[];for(let c of a)if(c.fileName===t)for(let d of c.highlightSpans){let u=np(r,d.textSpan.start,o,i.text);u!==null&&s.push(u)}return s}function np(e,t,n,r){let i=n.get(t);if(i?.text===r)return i.start;let o=Sr(e,t);if(o===null)return null;let a=n.get(o);return a?.text===r?a.start:null}async function Gy(e){let{projectRoot:t,maxHeapMb:n=8192,onStatus:r=console.log}=e,i=e.skipAutoInstall===!0||e.installMissing!==!0,o=dp(e),a=Date.now(),s=I();Nt(S(o.outputScip),{recursive:!0}),Nt(S(o.outputDb),{recursive:!0});let c=e.languages??un(t);if(c.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");r(`Detected languages: ${c.join(", ")}`);let d=st("reindex.fingerprint",()=>Kt(t,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath}),{languages:c.length}),u,l;if(e.skipIfUnchanged!==!1&&!ra(t,o.outputDb)&&cs(o.outputScip)===cs(C(S(o.outputDb),"index.scip"))){let y=ct(t);if(u=y?.clean?Tt(y,d):void 0,y&&!y.clean&&!cp(o)){let x=ia(y,c,{pnpmWorkspaces:e.pnpmWorkspaces,typescriptProjectMode:e.typescriptProjectMode,typescriptProjects:e.typescriptProjects,clojureConfigPath:e.clojureConfigPath});if(x)try{Dt({snapshot:x.snapshot,manifest:x.manifest,targetCacheDir:S(o.outputDb),targetProjectRoot:t,persistLease:!1}),sa(x.snapshot,S(o.outputDb)),r(`Forked shared baseline ${x.snapshot.generationId.slice(0,12)} for dirty worktree reindex`)}catch(P){r(`Shared baseline fork failed; continuing locally: ${de(P)}`)}}else if(u){let x=K(u);if(x){if(!sp(o,d))try{Dt({snapshot:u,manifest:x,targetCacheDir:S(o.outputDb),targetProjectRoot:t}),r(`Attached shared generation ${u.generationId.slice(0,12)}`)}catch(P){r(`Shared generation attach failed; continuing locally: ${de(P)}`)}}else{let P=await aa(u);if(P.kind==="owner")l=P.release;else if(P.kind==="generation-ready"){let T=K(u);if(T)try{Dt({snapshot:u,manifest:T,targetCacheDir:S(o.outputDb),targetProjectRoot:t,action:"waited"}),r(`Attached shared generation ${u.generationId.slice(0,12)} after waiting`)}catch(k){r(`Shared generation attach failed after waiting; continuing locally: ${de(k)}`)}}else r("Shared generation build lock timed out; continuing with an isolated local reindex")}}}let g=ue(C(S(o.outputDb),"cache-lifecycle.lock"),{waitMs:3e4});if(!g)throw l?.(),new Error(`Could not acquire codebaseiq cache lifecycle lock for ${S(o.outputDb)}.`);let f;try{f=await xe("reindex.lock",()=>jp(C(S(o.outputDb),"index.lock"),{projectRoot:t,trigger:e.trigger,onStatus:r}),{languages:c.length})}catch(y){throw g.release(),l?.(),y}let h=null,b=yi();try{Hn(o.outputDb,o.outputScip,o.metaPath);let y=fp(S(o.outputDb));y.removed>0&&r(`Removed ${y.removed} abandoned reindex workspace(s)`);for(let Se of y.errors)r(`Could not remove abandoned reindex workspace: ${Se}`);let x=null,P=st("reindex.reuse-check",()=>(x=up({opts:e,paths:o,languages:c,fingerprint:d,start:a,monotonicStart:s,onStatus:r}),x),()=>({languages:c.length,reused:x!==null}));if(P){ds({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let Se=ln(o.outputDb,P);return Se.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${Se.reason}`),Jt(t,S(o.outputDb)),P}await xe("reindex.scip-cli-ready",()=>Tp(i,r));let T=pp(o);h=T.runDir;let k,v=await xe("reindex.fresh",async()=>(k=await gp({opts:e,languages:c,projectRoot:t,paths:o,tempPaths:T,fingerprint:d,start:a,monotonicStart:s,maxHeapMb:n,skipAutoInstall:i,onStatus:r,writeTelemetry:b}),k),()=>({languages:c.length,reused:k?.reused,skipped:k?.skipped.length}));ds({snapshot:u,paths:o,projectRoot:t,fingerprint:d,onStatus:r});let ye=ln(o.outputDb,v);return ye.state==="failed"&&r(`Warning: reindex succeeded, but activity telemetry was not recorded: ${ye.reason}`),Jt(t,S(o.outputDb)),v}catch(y){let x=Vt({trigger:e.trigger,result:"failed",start:a,monotonicStart:s,error:y instanceof Error?y.message:String(y)});Fs(o.metaPath,x);let P=mi(o.outputDb,x);throw P.state==="failed"&&r(`Warning: failed reindex activity telemetry was not recorded: ${P.reason}`),y}finally{if(h){let y=h;try{F(()=>De(y,{recursive:!0,force:!0}))}catch(x){r(`Warning: temporary reindex workspace was left behind: ${de(x)}`)}}f(),g.release(),l?.()}}function ds(e){if(e.snapshot)try{let t=ct(e.projectRoot),n=t?Tt(t,e.fingerprint):void 0;if(!n||n.generationId!==e.snapshot.generationId){e.onStatus("Skipped shared generation publication because the worktree changed during indexing");return}let r=oa({snapshot:e.snapshot,sourceCacheDir:S(e.paths.outputDb),sourceProjectRoot:e.projectRoot,sourceStillValid:()=>{let i=ct(e.projectRoot);return(i?Tt(i,e.fingerprint):void 0)?.generationId===e.snapshot?.generationId}});nr(e.snapshot,S(e.paths.outputDb),"built"),e.onStatus(r.kind==="published"?`Published shared generation ${e.snapshot.generationId.slice(0,12)} (${r.achievedDurability})`:`Shared generation ${e.snapshot.generationId.slice(0,12)} was already available (${r.achievedDurability})`)}catch(t){e.onStatus(`Shared generation publication failed; local index remains valid: ${de(t)}`)}}function sp(e,t){if(!M(e.outputScip)||!M(e.outputDb)||!Ds(e.metaPath,t))return!1;let n=H(e.outputDb,e.metaPath);return n.state!=="invalid"&&n.state!=="drifted"}function cp(e){if(!M(e.outputScip)||!M(e.outputDb)||!Fe(e.metaPath))return!1;let t=H(e.outputDb,e.metaPath);return t.state!=="invalid"&&t.state!=="drifted"}function de(e){return e instanceof Error?e.message:String(e)}function Pr(e,t,n,r,i,o){try{q(bi({indexPath:n,reuseExisting:i,affectedFiles:o}),{projectRoot:e,dbPath:t,onStatus:r})}catch(a){r(`Runtime-boundary extraction unavailable: ${a instanceof Error?a.message:String(a)}.`)}}function dp(e){let t=e.outputScip??C(e.projectRoot,"index.scip"),n=e.outputDb??C(e.projectRoot,"index.db");return{outputScip:t,outputDb:n,metaPath:C(S(n),"meta.json")}}function up(e){let t=H(e.paths.outputDb,e.paths.metaPath);if(e.opts.skipIfUnchanged===!1||!M(e.paths.outputScip)||!M(e.paths.outputDb)||!Ds(e.paths.metaPath,e.fingerprint)||t.state==="invalid"||t.state==="drifted")return null;q(oe(),{projectRoot:e.opts.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Pr(e.opts.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0),H(e.paths.outputDb,e.paths.metaPath).state==="drifted"&&(zn(e.paths.outputDb,e.paths.metaPath),e.onStatus("Published refreshed SQLite generation after post-index augmentation"));let n=I()-e.monotonicStart,r=Vt({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:e.languages,skipped:[]});return Fs(e.paths.metaPath,r),e.onStatus(`Index unchanged; reused existing SQLite index in ${(n/1e3).toFixed(1)}s`),{languages:e.languages,indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:n,reused:!0,skipped:[],lastRefresh:r,shards:lp(e.paths,e.opts.projectRoot,e.languages,e.opts)}}function lp(e,t,n,r){let i=ks(t,n,r);return n.map(o=>({id:o,language:o,reused:!0,fingerprint:Ke(i[o]),outputBytes:Xe(wr(e.outputDb,o)),durationMs:0}))}function pp(e){let t=Ae(C(S(e.outputDb),"reindex-"));return{runDir:t,tempOutputScip:C(t,Mt(e.outputScip)),tempOutputDb:C(t,Mt(e.outputDb)),tempMetaPath:C(t,Mt(e.metaPath))}}function fp(e){let t=[],n;try{n=hs(e,{withFileTypes:!0})}catch(i){return{removed:0,errors:[de(i)]}}let r=0;for(let i of n)if(!(!i.name.startsWith("reindex-")||!i.isDirectory()))try{De(C(e,i.name),{recursive:!0,force:!0}),r+=1}catch(o){t.push(`${i.name}: ${de(o)}`)}return{removed:r,errors:t}}async function gp(e){let t={...process.env,NODE_OPTIONS:`--max-old-space-size=${e.maxHeapMb}`},n,r=await xe("reindex.language-indexers",async()=>(n=await hp(e,t),n),()=>({languages:e.languages.length,indexed:n?.indexedOutputs.length,reused:n?.reusedLanguages.length,skipped:n?.skippedLanguages.length})),{indexedOutputs:i,skippedLanguages:o,reusedLanguages:a,languageFingerprints:s,shards:c,typescriptProjectShardContext:d,incrementalTypeScript:u}=r;if(a.length>0&&e.onStatus(`Reused ${a.length} cached language shard(s): ${a.join(", ")}`),mp({run:e,indexedOutputs:i,skippedLanguages:o,reusedLanguages:a})){let g=st("reindex.publish",()=>wp(e,i,o,a,s,d),{mode:"metadata-only",languages:i.length,reused:a.length}),f=g.durationMs;return e.onStatus(`All language shards unchanged; reused existing SQLite index in ${(f/1e3).toFixed(1)}s`),{languages:i.map(h=>h.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:f,reused:!0,skipped:o,lastRefresh:g,shards:c,writeTelemetry:e.writeTelemetry}}let l=await xe("reindex.publish",()=>vp(e,t,i,o,a,s,d,u),{mode:u?"incremental-or-fallback":"full",languages:i.length,reused:a.length,skipped:o.length}),p=l.durationMs;return e.onStatus(`Done in ${(p/1e3).toFixed(1)}s`),{languages:i.map(g=>g.language),indexPath:e.paths.outputScip,dbPath:e.paths.outputDb,durationMs:p,reused:!1,skipped:o,lastRefresh:l,shards:c,writeTelemetry:e.writeTelemetry}}function mp(e){if(e.run.opts.skipIfUnchanged===!1||e.skippedLanguages.length>0||!M(e.run.paths.outputScip)||!M(e.run.paths.outputDb))return!1;let t=H(e.run.paths.outputDb,e.run.paths.metaPath);if(t.state==="invalid"||t.state==="drifted")return!1;let n=new Set(e.reusedLanguages),r=new Set(e.indexedOutputs.map(i=>i.language));return e.run.languages.length>0&&r.size===e.run.languages.length&&e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(i=>n.has(i)&&r.has(i))}async function hp(e,t){let n=xp({paths:e.paths,projectRoot:e.projectRoot,languages:e.languages,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,clojureConfigPath:e.opts.clojureConfigPath}),r=[],i=new Set;for(let[N,kr]of n)kr.reused&&(r.push({language:N,scipPath:kr.scipPath}),i.add(N));for(let N of i)e.onStatus(`Reusing cached ${N} SCIP shard (language inputs unchanged).`);let o=n.get("typescript"),a=H(e.paths.outputDb,e.paths.metaPath),s=Fe(e.paths.metaPath),c=a.state==="legacy"||a.state==="current",d=s?.scipCompanion!=="deferred"&&(a.state!=="current"||a.generation.publication?.scipCompanion!=="deferred"),u=o&&!o.reused&&c?Pa({projectRoot:e.projectRoot,cacheDir:S(e.paths.outputDb),previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,previousShardPath:o.scipPath,candidateShardPath:Qe(e.tempPaths.tempOutputScip,"typescript-incremental",0),candidateAffectedScipPath:Qe(e.tempPaths.tempOutputScip,"typescript-affected",0),baseShardCurrent:d,previousSnapshot:vr(e.paths.metaPath),currentSnapshot:e.fingerprint,projectMode:e.opts.typescriptProjectMode,onStatus:e.onStatus}):null,l=new Set(u?["typescript"]:[]),p=u?void 0:yp(e,n),{preparedRuns:g,skippedLanguages:f,languageOutputScipPaths:h}=Dp({languages:e.languages.filter(N=>!i.has(N)&&!l.has(N)),tempOutputScip:e.tempPaths.tempOutputScip,projectRoot:e.projectRoot,env:t,skipAutoInstall:e.skipAutoInstall,trustProjectTools:e.opts.trustProjectTools===!0,pnpmWorkspaces:e.opts.pnpmWorkspaces,typescriptProjectMode:e.opts.typescriptProjectMode,typescriptProjects:e.opts.typescriptProjects,preDiscoveredTypeScriptProjects:p?.allProjects,clojureConfigPath:e.opts.clojureConfigPath,onStatus:e.onStatus}),b=p?g.filter(N=>N.language!=="typescript"||p.missedProjectIds.has(N.id)):g,y=await ka(b,e.projectRoot,e.onStatus,e.opts.indexerConcurrency,e.opts.signal),x=[];if(p){bp(e.paths.outputDb,y,e.writeTelemetry);let N=h.typescript??e.tempPaths.tempOutputScip;x=Rp({outputDb:e.paths.outputDb,tempOutputScip:e.tempPaths.tempOutputScip,outputScipPath:N,reusedProjects:p.reusedProjects,writeTelemetry:e.writeTelemetry})}let P=[...y,...x],{indexedOutputs:T}=Ap(P,f),k=u?[{language:"typescript",scipPath:u.scipPath}]:[],v=[...r,...k,...T];Op(v,f,e.languages,e.opts.allowPartial,e.onStatus);let ye=u?[{id:"typescript",language:"typescript",label:"typescript (incremental documents)",scipPath:u.scipPath,outputScipPath:u.scipPath,durationMs:u.durationMs,command:"watch-service:typescript-index",outputBytes:Xe(u.scipPath)??void 0}]:[],Se=Ip(n,[...y,...ye],p?{outputDb:e.paths.outputDb,classification:p.classification}:void 0);return{indexedOutputs:v,skippedLanguages:f,reusedLanguages:[...i],languageFingerprints:Pp(n,e.languages),shards:Se,typescriptProjectShardContext:p?{projects:p.allProjects,fingerprints:p.fingerprints}:void 0,incrementalTypeScript:u??void 0}}function yp(e,t){let n=t.get("typescript");if(!n||n.reused||e.opts.typescriptProjectMode!=="workspace")return;let r=Ie(e.projectRoot,e.opts.typescriptProjects);if(r.length===0)return;let i=io(e.projectRoot,r),o=to(n.fingerprint.files,r),a=no(r,i),s=ro(r,o,a),c=Fe(e.paths.metaPath),u=Sp(c,s,f=>M($t(e.paths.outputDb,f))),l=[...u.entries()].filter(([,f])=>f.reused).map(([f])=>f),p=new Set(l),g=new Set(r.filter(f=>!p.has(f)).map(f=>`typescript:${f}`));return{allProjects:r,fingerprints:s,classification:u,reusedProjects:l,missedProjectIds:g}}function Sp(e,t,n){let r=new Map;for(let i of Object.keys(t)){let o=t[i];if(!e){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:o});continue}let a=e.version===Oe&&Wt(e).typescriptProjectShardReuse?e.typescriptProjectShards?.[i]:void 0;if(!a){r.set(i,{reused:!1,reason:"no cached fingerprint for this project",fingerprint:o});continue}if(!n(i)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:o});continue}if(Z(a)!==Z(o)){r.set(i,{reused:!1,reason:"project inputs changed since last index",fingerprint:o});continue}r.set(i,{reused:!0,fingerprint:o})}return r}function bp(e,t,n){for(let r of t){if(r.skipped||!r.id.startsWith("typescript:"))continue;let i=r.id.slice(11),o=$t(e,i);Nt(S(o),{recursive:!0}),fe(n,pe(r.scipPath,o))}}function Rp(e){return e.reusedProjects.map((t,n)=>{let r=$t(e.outputDb,t),i=Qe(e.tempOutputScip,"typescript-project-cached",n);return fe(e.writeTelemetry,pe(r,i)),{id:`typescript:${t}`,language:"typescript",label:`typescript (${t})`,scipPath:i,outputScipPath:e.outputScipPath,durationMs:0,command:"cached",outputBytes:Xe(i)??void 0}})}function xp(e){let t=Fe(e.paths.metaPath),n=ks(e.projectRoot,e.languages,e),r=new Map;for(let i of e.languages){let o=wr(e.paths.outputDb,i),a=n[i];if(!t){r.set(i,{reused:!1,reason:"no reindex metadata found",fingerprint:a,scipPath:o});continue}if(t.version!==Oe){r.set(i,{reused:!1,reason:`metadata version ${String(t.version??"unknown")} predates per-language shard caching`,fingerprint:a,scipPath:o});continue}if(i==="typescript"&&t.scipCompanion==="deferred"){r.set(i,{reused:!1,reason:"whole TypeScript SCIP companion is deferred behind changed-document overlays",fingerprint:a,scipPath:o});continue}if(!Wt(t).languageShardReuse||!t.languageFingerprints){r.set(i,{reused:!1,reason:"no per-language fingerprints recorded in metadata",fingerprint:a,scipPath:o});continue}let s=t.languageFingerprints[i];if(!s){r.set(i,{reused:!1,reason:"no cached fingerprint for this language",fingerprint:a,scipPath:o});continue}if(!M(o)){r.set(i,{reused:!1,reason:"cached shard file missing on disk",fingerprint:a,scipPath:o});continue}if(Z(s)!==Z(a)){r.set(i,{reused:!1,reason:"language inputs changed since last index",fingerprint:a,scipPath:o});continue}r.set(i,{reused:!0,fingerprint:a,scipPath:o})}return r}function Ip(e,t,n){let r=[];for(let[i,o]of e)o.reused&&r.push({id:i,language:i,reused:!0,fingerprint:Ke(o.fingerprint),outputBytes:Xe(o.scipPath),durationMs:0});for(let i of t){let o=e.get(i.language),a=n&&i.id.startsWith("typescript:")?i.id.slice(11):null,s=a?n.classification.get(a):void 0;r.push({id:i.id,language:i.language,reused:!1,missReason:s?.reason??o?.reason??i.skipped?.reason,fingerprint:s?Ke(s.fingerprint):o?Ke(o.fingerprint):"unknown",outputBytes:i.outputBytes??null,durationMs:i.durationMs,command:i.command})}if(n)for(let[i,o]of n.classification)o.reused&&r.push({id:`typescript:${i}`,language:"typescript",reused:!0,fingerprint:Ke(o.fingerprint),outputBytes:Xe($t(n.outputDb,i)),durationMs:0});return r}function Ke(e){return rp("sha256").update(Z(e)).digest("hex").slice(0,16)}function Xe(e){try{return ip(e).size}catch{return null}}function Pp(e,t){let n={};for(let r of t){let i=e.get(r);i&&(n[r]=i.fingerprint)}return n}async function vp(e,t,n,r,i,o,a,s){G(e.opts.signal,"Reindex cancelled by its owner.");let c=!s||s.completeScipUpdated,d=!1;c&&(us(e.paths.outputDb,n,e.writeTelemetry),d=ls(n,e.tempPaths.tempOutputScip,e.onStatus));let u=await Cp({run:e,env:t,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,incrementalTypeScript:s,completeScipAvailable:c,completeScipSanitized:d,materializeFullFallback:async()=>{if(G(e.opts.signal,"Reindex cancelled by its owner."),!s||s.completeScipUpdated)return d;e.onStatus("Materializing the deferred whole TypeScript SCIP companion for full conversion..."),va({cacheDir:S(e.paths.outputDb),generationIdentity:s.nextFragmentGeneration,baseShardPath:s.scipPath,candidateShardPath:s.candidateScipPath});let T=n.map(k=>k.language==="typescript"?{language:k.language,scipPath:s.candidateScipPath}:k);return us(e.paths.outputDb,T,e.writeTelemetry),d=ls(T,e.tempPaths.tempOutputScip,e.onStatus),d}});G(e.opts.signal,"Reindex cancelled by its owner."),q(oe(),{projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,onStatus:e.onStatus}),Pr(e.projectRoot,e.tempPaths.tempOutputDb,e.tempPaths.tempOutputScip,e.onStatus,!1,s?.affectedFiles);let l=vn(e.tempPaths.tempOutputDb);if(l.added.length>0&&e.onStatus(`Added SQLite query indexes: ${l.added.join(", ")}`),l.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${l.removed.join(", ")}`),u.mode==="incremental"&&s){let T=null,k=null;try{T=new J({projectRoot:e.projectRoot,dbPath:e.tempPaths.tempOutputDb,indexPath:e.tempPaths.tempOutputScip}),k=new J({projectRoot:e.projectRoot,dbPath:e.paths.outputDb,indexPath:e.paths.outputScip});let v=oi(T,e.fingerprint,s.referenceFragmentsByFile,k);e.onStatus(`Cached exact TypeScript reference fragments for ${v} affected document(s).`)}catch(v){e.onStatus(`Exact TypeScript reference fragment prefill unavailable: ${v instanceof Error?v.message:String(v)}.`)}finally{T?.close(),k?.close()}}let p=vr(e.paths.metaPath),g=u.mode==="incremental"&&s?Lp(s,u.changedDocumentPaths):mn({projectRoot:e.projectRoot,previousDbPath:e.paths.outputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.tempPaths.tempOutputDb,candidateIndexPath:e.tempPaths.tempOutputScip,previousSnapshot:p,currentSnapshot:e.fingerprint,refreshResult:"rebuilt"}),f=Vt({trigger:e.opts.trigger,result:"rebuilt",start:e.start,monotonicStart:e.monotonicStart,languages:n.map(T=>T.language),skipped:[...r]}),h=u.mode==="incremental"&&u.scipCompanion==="deferred",b={...o};h&&delete b.typescript;let{metadata:y,pruneProjects:x}=bs({run:e,indexedOutputs:n,skippedLanguages:r,reusedLanguages:i,languageFingerprints:b,typescriptProjectShardContext:a,lastRefresh:f});y.scipCompanion=h?"deferred":"current",Rs(e.paths.outputDb,x),Er(e.tempPaths.tempMetaPath,y);let P=wt({tempOutputScip:e.tempPaths.tempOutputScip,tempOutputDb:e.tempPaths.tempOutputDb,tempMetaPath:e.tempPaths.tempMetaPath,outputScip:e.paths.outputScip,outputDb:e.paths.outputDb,metaPath:e.paths.metaPath,preserveOutputScip:u.mode==="incremental"&&u.scipCompanion==="deferred",publication:u.mode==="incremental"?{mode:"incremental",validation:"passed",converterDurationMs:u.converterDurationMs,affectedDocumentCount:s?.affectedFiles.length,changedDocumentCount:u.changedDocumentPaths.length,producerDurationMs:s?.timings.serviceMs,materializationDurationMs:s?.durationMs,patchDurationMs:u.patchDurationMs,scipCompanion:u.scipCompanion,...u.scipCompanion==="deferred"&&s?{typescriptOverlayGeneration:s.nextFragmentGeneration}:{}}:{mode:"full",validation:"passed",converterDurationMs:u.converterDurationMs,scipCompanion:"current",...u.fallbackReason?{fallbackReason:u.fallbackReason}:{}}});return P.achievedDurability==="file-flushed"&&e.onStatus(`Published local generation ${P.currentGeneration.slice(0,12)} (file-flushed; directory sync unsupported)`),jo(S(e.paths.outputDb),u.mode==="incremental"&&u.scipCompanion==="deferred"?[s.nextFragmentGeneration]:[]),Po(S(e.paths.outputDb),s?.completeScipUpdated?[s.nextFragmentGeneration]:[]),Ss(e.paths.outputDb,g,e.onStatus),f}function wp(e,t,n,r,i,o){let a=vr(e.paths.metaPath),s=null;try{fe(e.writeTelemetry,pe(e.paths.outputDb,e.tempPaths.tempOutputDb))}catch(p){s=Pi("reused","oracle-error",`Could not snapshot the prior database: ${p instanceof Error?p.message:String(p)}`)}q(oe(),{projectRoot:e.projectRoot,dbPath:e.paths.outputDb,onStatus:e.onStatus}),Pr(e.projectRoot,e.paths.outputDb,e.paths.outputScip,e.onStatus,!0);let c=vn(e.paths.outputDb);c.added.length>0&&e.onStatus(`Added SQLite query indexes: ${c.added.join(", ")}`),c.removed.length>0&&e.onStatus(`Removed redundant SQLite indexes: ${c.removed.join(", ")}`),s??=mn({projectRoot:e.projectRoot,previousDbPath:e.tempPaths.tempOutputDb,previousIndexPath:e.paths.outputScip,candidateDbPath:e.paths.outputDb,candidateIndexPath:e.paths.outputScip,previousSnapshot:a,currentSnapshot:e.fingerprint,refreshResult:"reused"});let d=Vt({trigger:e.opts.trigger,result:"reused",start:e.start,monotonicStart:e.monotonicStart,languages:t.map(p=>p.language),skipped:[...n]}),{metadata:u,pruneProjects:l}=bs({run:e,indexedOutputs:t,skippedLanguages:n,reusedLanguages:r,languageFingerprints:i,typescriptProjectShardContext:o,lastRefresh:d});return Rs(e.paths.outputDb,l),Er(e.paths.metaPath,u),zn(e.paths.outputDb,e.paths.metaPath),Ss(e.paths.outputDb,s,e.onStatus),d}function vr(e){return Ar(Fe(e)?.fingerprint)}function Ss(e,t,n){try{vi(e,t),t.status==="evaluated"?n(`Affected-set shadow: ${(t.evaluation.recall*100).toFixed(1)}% recall; ${t.plan.affectedFiles.length} predicted, ${t.comparison.changedFiles.length} changed.`):n(`Affected-set shadow unavailable: ${t.reason}.`)}catch(r){n(`Affected-set shadow telemetry unavailable: ${r instanceof Error?r.message:String(r)}`)}}function bs(e){let t=Ep({mode:e.run.opts.typescriptProjectMode,skippedLanguages:e.skippedLanguages,reusedLanguages:e.reusedLanguages,context:e.typescriptProjectShardContext,metaPath:e.run.paths.metaPath});return{metadata:{version:Oe,status:e.skippedLanguages.length===0?"complete":"partial",updatedAt:new Date().toISOString(),fingerprint:e.run.fingerprint,sqliteLayoutVersion:1,languageFingerprints:e.languageFingerprints,typescriptProjectShards:t.field,requestedLanguages:e.run.languages,indexedLanguages:e.indexedOutputs.map(n=>n.language),skipped:[...e.skippedLanguages],lastRefresh:e.lastRefresh},pruneProjects:t.pruneProjects}}function Ep(e){if(e.mode!=="workspace")return{field:void 0,pruneProjects:null};if(e.skippedLanguages.some(t=>t.language==="typescript"))return{field:void 0,pruneProjects:null};if(e.reusedLanguages.includes("typescript")){let t=Fe(e.metaPath),n=t?.version===Oe?t.typescriptProjectShards:void 0;return{field:n,pruneProjects:n?Object.keys(n):[]}}return e.context?{field:e.context.fingerprints,pruneProjects:e.context.projects}:{field:void 0,pruneProjects:[]}}function Rs(e,t){let n=Ts(e);if(t===null){F(()=>De(n,{recursive:!0,force:!0}));return}let r;try{r=hs(n)}catch{return}for(let i of kp(r,t))F(()=>De(C(n,i),{force:!0}))}function kp(e,t){let n=new Set(t.map(r=>`${Tn(r)}.scip`));return e.filter(r=>!n.has(r))}function us(e,t,n){for(let r of t){let i=wr(e,r.language);Nt(S(i),{recursive:!0}),r.scipPath!==i&&fe(n,pe(r.scipPath,i))}}async function Tp(e,t){if(!cn()){if(ap()==="win32")throw new Error("The scip CLI was not found. On Windows it ships via the npm sidecar package codebaseiq-windows (installed automatically with codebaseiq). Reinstall codebaseiq with optional dependencies enabled, or follow 'codebaseiq setup' guidance for the exact sidecar package version, or set CODEBASEIQ_SCIP_BIN to a local scip.exe path.");if(e)throw new Error(`The scip CLI is required but not found on PATH.
|
|
291
291
|
To install the reviewed version, run: codebaseiq reindex --install-missing
|
|
292
|
-
Or install manually from: https://github.com/sourcegraph/scip/releases`);if(t("scip CLI not found on PATH. Attempting auto-install..."),!
|
|
293
|
-
Install manually from: https://github.com/sourcegraph/scip/releases`)}}function Dp(e){let t=[],n=[],r=e.languages.map((o,a)=>({language:o,scipPath:e.languages.length>1?
|
|
292
|
+
Or install manually from: https://github.com/sourcegraph/scip/releases`);if(t("scip CLI not found on PATH. Attempting auto-install..."),!dn(t))throw new Error(`The scip CLI is required but could not be installed.
|
|
293
|
+
Install manually from: https://github.com/sourcegraph/scip/releases`)}}function Dp(e){let t=[],n=[],r=e.languages.map((o,a)=>({language:o,scipPath:e.languages.length>1?Qe(e.tempOutputScip,o,a):e.tempOutputScip})),i=Object.fromEntries(r.map(({language:o,scipPath:a})=>[o,a]));for(let{language:o,scipPath:a}of r){let s=Fp({...e,language:o,scipPath:a});for(let c of s)"skipped"in c?xs(n,c.skipped):t.push(c.prepared)}return{preparedRuns:t,skippedLanguages:n,languageOutputScipPaths:i}}function Fp(e){if(e.language!=="typescript"||e.typescriptProjectMode!=="workspace")return[xr({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})];let t=e.preDiscoveredTypeScriptProjects??Ie(e.projectRoot,e.typescriptProjects);return t.length===0?[xr({...e,id:e.language,label:e.language,outputScipPath:e.scipPath})]:(e.onStatus(`Indexing TypeScript workspace as ${t.length} project shard(s).`),t.map((n,r)=>xr({...e,id:`typescript:${n}`,label:`typescript (${n})`,scipPath:Qe(e.tempOutputScip,"typescript-project",r),outputScipPath:e.scipPath,pnpmWorkspaces:!1,projectPath:n})))}function xr(e){let t=mt(e.language),n=Me(t),r=en(t,e.projectRoot),i=e.trustProjectTools&&r?Zr(t,e.projectRoot):null,o=ve(t);if(!i&&!o&&r){let u=`${n} is available only as repository-local code at ${r}. Review that exact tool and rerun with --trust-project-tools.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}if(!i&&!o&&!Zt(t)){if(e.skipAutoInstall){let u=`${n} not found on PATH. To install the reviewed version, run: codebaseiq reindex --install-missing${t.installUrl?` (manual source: ${t.installUrl})`:""}`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}if(e.onStatus(`${n} not found. Attempting auto-install...`),!gr(t,e.onStatus)){let u=`${n} could not be auto-installed. ${t.installUrl?`Install manually from ${t.installUrl}`:`Install ${n} and put it on PATH.`}`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}}let a=i?.canonicalPath??ve(t);if(!a){let u=`${n} was not found after installation checks.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}let{binary:s,args:c}=t.indexArgs({projectRoot:e.projectRoot,outputPath:e.scipPath,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:a,projectPath:e.projectPath,configPath:e.language==="clojure"?e.clojureConfigPath:void 0}),d=Oi({language:e.language,projectPath:e.projectPath,pnpmWorkspaces:e.pnpmWorkspaces});if(i&&!i.executable){let u=`${i.relativePath} is not executable; refusing project-local indexer.`;return e.onStatus(`Skipping ${e.language}: ${u}`),{skipped:{language:e.language,reason:u}}}return i&&e.onStatus(`Trusted project-local ${e.language} indexer ${i.relativePath} (${i.sha256.slice(0,12)}\u2026, ${i.canonicalPath}).`),{prepared:{id:e.id,language:e.language,label:e.label,scipPath:e.scipPath,outputScipPath:e.outputScipPath,config:t,resolvedBinary:a,binary:s,args:c,env:tn(t,e.env,a),...d===void 0?{}:{temporaryRootConfigContent:d},...i?{trustedProjectTool:i}:{}}}}function Ap(e,t){let n=new Map;for(let i of e)if(i.skipped)xs(t,i.skipped);else{let o=`${i.language}\0${i.outputScipPath}`,a=n.get(o)??{language:i.language,outputScipPath:i.outputScipPath,scipPaths:[]};a.scipPaths.push(i.scipPath),n.set(o,a)}let r=[];for(let i of n.values())if(i.scipPaths.length>1)xn(i.scipPaths,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath});else{let o=i.scipPaths[0];o!==i.outputScipPath&&ys(o,i.outputScipPath),r.push({language:i.language,scipPath:i.outputScipPath})}return{indexedOutputs:r}}function xs(e,t){let n=e.find(r=>r.language===t.language);if(!n){e.push(t);return}n.reason.includes(t.reason)||(n.reason=`${n.reason}; ${t.reason}`)}function Op(e,t,n,r,i){if(e.length===0){let o=t.map(a=>` - ${a.language}: ${a.reason}`).join(`
|
|
294
294
|
`);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
|
|
295
295
|
`+o)}if(t.length!==0&&(i(`Indexed ${e.length} language output(s); skipped or incomplete: ${t.map(o=>o.language).join(", ")}.`),!r))throw new Error(`Failed to index all required languages; preserving the previous index. Pass --allow-partial to intentionally write an incomplete index.
|
|
296
296
|
`+t.map(o=>` - ${o.language}: ${o.reason}`).join(`
|
|
297
|
-
`))}function
|
|
297
|
+
`))}function ls(e,t,n){if(e.length>1){n(`Merging ${e.length} language indexes...`);let r=performance.now(),i=Mi(e.map(o=>o.scipPath),t);return Ps(i,n),n(`Merged and sanitized SCIP indexes in ${(performance.now()-r).toFixed(0)}ms.`),!0}else e[0].scipPath!==t&&ys(e[0].scipPath,t);return!1}async function Cp(e){let t;if(_p(e)){let i=C(e.run.tempPaths.runDir,"typescript-affected.db");try{Is(e.incrementalTypeScript.affectedScipPath,e.run.onStatus),e.run.onStatus(`Converting ${e.incrementalTypeScript.affectedFiles.length} affected TypeScript document(s) to SQLite...`);let o=performance.now();await ps(e.incrementalTypeScript.affectedScipPath,i,e.env,e.run.onStatus,!1,e.run.opts.signal),e.run.onStatus(`Converted affected SCIP documents in ${(performance.now()-o).toFixed(0)}ms.`);let a=Ui({previousDbPath:e.run.paths.outputDb,miniDbPath:i,candidateDbPath:e.run.tempPaths.tempOutputDb,affectedFiles:e.incrementalTypeScript.affectedFiles,writeTelemetry:e.run.writeTelemetry});return e.run.onStatus(`Patched ${a.affectedDocumentCount} SQLite document(s) in ${(a.durationMs/1e3).toFixed(3)}s.`),{mode:"incremental",changedDocumentPaths:a.changedDocumentPaths,patchDurationMs:a.durationMs,converterDurationMs:performance.now()-o,scipCompanion:e.incrementalTypeScript.completeScipUpdated?"current":"deferred"}}catch(o){G(e.run.opts.signal,"Reindex cancelled by its owner."),t=o instanceof Error?o.message:String(o),F(()=>De(i,{force:!0})),F(()=>De(e.run.tempPaths.tempOutputDb,{force:!0})),e.run.onStatus(`Incremental SQLite publication unavailable: ${t}. Falling back to complete conversion.`)}}let n=e.completeScipSanitized;e.completeScipAvailable||(n=await e.materializeFullFallback());let r=performance.now();return await ps(e.run.tempPaths.tempOutputScip,e.run.tempPaths.tempOutputDb,e.env,e.run.onStatus,n,e.run.opts.signal),{mode:"full",converterDurationMs:performance.now()-r,...t?{fallbackReason:t}:{}}}function _p(e){if(!e.incrementalTypeScript||e.skippedLanguages.length>0||!M(e.run.paths.outputDb)||!M(e.run.paths.outputScip))return!1;let t=new Set(e.reusedLanguages);return e.indexedOutputs.length===e.run.languages.length&&e.run.languages.every(n=>n==="typescript"||t.has(n))}function Lp(e,t){let n=I(),r=[...t].sort(),i=new Set(r),o={addedFiles:[],modifiedFiles:r,deletedFiles:[],changedFiles:r,unchangedFiles:e.affectedFiles.filter(a=>!i.has(a)).sort()};return{version:1,status:"evaluated",refreshResult:"rebuilt",recordedAt:new Date().toISOString(),durationMs:I()-n,manifest:e.manifest,plan:e.plan,comparison:o,evaluation:gn(e.plan,o,e.projectFileCount)}}async function ps(e,t,n,r,i=!1,o){if(G(o,"Reindex cancelled by its owner."),r("Converting to SQLite..."),!M(e))throw new Error(`SCIP index not found at ${e} after indexing`);try{i||Is(e,r);let a=cn();if(!a)throw new Error("scip CLI is not available");let s=await lt({command:a,args:["expt-convert","--output",t,e],label:"SCIP SQLite conversion",env:n,maxStdoutBytes:50*1024*1024,maxStderrBytes:50*1024*1024,timeoutMs:3e5,signal:o});if(s.status!==0)throw new Error(`scip expt-convert exited with ${s.status}${s.stderr.trim()?`: ${s.stderr.trim()}`:""}`)}catch(a){G(o,"Reindex cancelled by its owner.");let s=a instanceof Error?a.message:String(a);throw new Error(`Failed to convert SCIP index to SQLite: ${s}`,{cause:a})}}function Is(e,t){let n=_i(e);Ps(n,t)}function Ps(e,t){e.removedDefinitionOccurrences!==0&&t(`Sanitized ${e.removedDefinitionOccurrences} invalid definition occurrences across ${e.touchedDocuments} documents before SQLite conversion.`)}function Qe(e,t,n){let r=op(e)||".scip",i=Mt(e,r);return C(S(e),`${i}.${n+1}.${t}${r}`)}async function jp(e,t){for(let n=0;n<2;n++){let r=Mp(e,t);if(r)return r;let i=Np(e);if(i&&Es(t.trigger,i)){t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}.`);let o;try{o=await $p(i)}catch(s){throw new Error(`Could not verify the watcher's in-progress reindex owner (pid ${i.pid}); refusing to steal an active lock: ${de(s)}`,{cause:s})}if(!o)throw new Error(`Could not confirm the watcher's in-progress reindex (pid ${i.pid}) terminated for ${S(e)}; refusing to steal an active lock.`);let a=Ut(e,{parseLegacy:Gt});if(!Mr(e,a,{parseLegacy:Gt}))throw new Error(`Reindex lock ownership changed before preemption completed for ${S(e)}.`);continue}throw new Error(`Another codebaseiq reindex is already running for ${S(e)}.`)}throw new Error(`Could not acquire codebaseiq reindex lock for ${S(e)}.`)}function Mp(e,t){let n=te(process.pid),r=tt(e,{kind:"reindex",processIdentity:n,detail:{projectRoot:t.projectRoot,...process.env.SCIP_REINDEX_PROCESS_GROUP_LEADER==="1"?{processGroupLeader:!0}:{},...t.trigger?{trigger:t.trigger}:{}},parseLegacy:Gt});if(r.kind==="acquired"&&r.reclaimed){let i=vs(r.reclaimed,e);i&&Es(t.trigger,i)?t.onStatus(`Manual reindex preempting watcher refresh started at ${i.startedAt}; its prior owner was already stale.`):t.onStatus(`Recovered an abandoned or incomplete reindex lock for ${S(e)}.`)}return r.kind==="acquired"?()=>{r.lock.release()}:null}function Np(e){return vs(Ut(e,{parseLegacy:Gt}),e)}var Gt=e=>{let t=ws(e,"");return t?{pid:t.pid,...t.processIdentity?{processIdentity:t.processIdentity}:{}}:null};function vs(e,t){if(e.state==="valid"&&e.record?.kind==="reindex"){let n=e.record.detail??{};return{version:2,pid:e.record.pid,...e.record.processIdentity?{processIdentity:e.record.processIdentity}:{},...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:S(t),startedAt:e.record.startedAt,trigger:n.trigger}}return ws(e.parsed,t)}function ws(e,t){try{let n=e;return typeof n.pid!="number"||!Number.isInteger(n.pid)||n.pid<=0?null:{version:n.version===2?2:1,pid:n.pid,...n.processIdentity===void 0?{}:(()=>{let r=_r(n.processIdentity);return r?.pid===n.pid?{processIdentity:r}:{}})(),...n.processGroupLeader===!0?{processGroupLeader:!0}:{},projectRoot:typeof n.projectRoot=="string"?n.projectRoot:S(t),startedAt:typeof n.startedAt=="string"?n.startedAt:"unknown",trigger:n.trigger}}catch{return null}}function Es(e,t){return e?.kind==="manual-cli"&&Gp(t?.trigger)}function Gp(e){return e?.kind==="watch-source"||e?.kind==="watch-git-head"||e?.kind==="watch-git-index"||e?.kind==="watch-git-state"}async function $p(e){return!ne(e.pid)||(Ir(e),fs(e,"SIGTERM"),await gs(e,2e3))?!0:(Ir(e),fs(e,"SIGKILL"),gs(e,1e3))}function fs(e,t){if(e.processGroupLeader)try{process.kill(-e.pid,t);return}catch{if(!ne(e.pid))return;Ir(e)}try{process.kill(e.pid,t)}catch{}}async function gs(e,t){let n=I()+t;for(;I()<n;){if(ms(e))return!0;await Vp(50)}return ms(e)}function Ir(e){if(!e.processIdentity)throw new Error(`Refusing to signal reindex pid ${e.pid}: its ownership record has no process identity.`);let t=te(e.pid);if(!t)throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity is unavailable.`);if(!Ce(e.processIdentity,t))throw new Error(`Refusing to signal reindex pid ${e.pid}: its process identity does not match the ownership record.`)}function ms(e){if(!ne(e.pid))return!0;if(!e.processIdentity)return!1;let t=te(e.pid);return t!==null&&!Ce(e.processIdentity,t)}function Vp(e){return new Promise(t=>setTimeout(t,e))}function ks(e,t,n){return Object.fromEntries(t.map(r=>{let i=r==="typescript"?Jr(n.typescriptProjects):[],o=r==="clojure"?Bp(n.clojureConfigPath):void 0,a=[...mt(r).markerFiles,...i,...o?[o]:[]],s=r==="typescript"?{typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:i}:{typescriptProjectMode:"single",typescriptProjects:[]};return[r,{version:2,languages:[r],pnpmWorkspaces:r==="typescript"&&qp(n),...s,clojureConfigPath:o,files:dt(e,{language:r,markerFiles:a})}]}))}function Bp(e){return e?.trim()||void 0}function qp(e){return e.typescriptProjectMode!=="workspace"&&e.pnpmWorkspaces===!0}function wr(e,t){return C(S(e),"language-indexes",`${t}.scip`)}function Ts(e){return C(S(e),"language-indexes","typescript-projects")}function $t(e,t){return C(Ts(e),`${Tn(t)}.scip`)}function Fe(e){try{return qt(ee(L(e,"reindex metadata")))}catch{return null}}function Ds(e,t){try{let n=ee(L(e,"reindex metadata"));if(n.kind!=="legacy"&&n.kind!=="supported")return!1;let r=n.metadata;return n.capabilities.publishableGeneration&&Cr(r)&&Z(r.fingerprint)===Z(t)&&Z([...r.indexedLanguages??[]].sort())===Z(t.languages)}catch{return!1}}function Er(e,t){$(e,t,{spacing:2,trailingNewline:!0})}function Fs(e,t){try{let n=qt(ee(L(e,"reindex metadata")));if(!n)return;Er(e,{...n,lastRefresh:t})}catch{}}function Vt(e){return{trigger:e.trigger??{kind:"unknown"},result:e.result,startedAt:new Date(e.start).toISOString(),completedAt:new Date().toISOString(),durationMs:I()-e.monotonicStart,indexedLanguages:e.languages?[...e.languages]:void 0,skipped:e.skipped?[...e.skipped]:void 0,error:e.error}}function Z(e){return JSON.stringify(e)}export{Ai as INDEXER_CONFIGS,Si as augmentAuxiliaryDocuments,Nl as augmentVueResolvedReferences,Gl as augmentVueResolvedReferencesAsync,oe as auxiliaryDocumentsAugmentationStage,Me as describeIndexerBinary,un as detectLanguages,mt as getIndexerConfig,tn as getIndexerExecutionEnv,Qt as isBinaryAvailable,Zt as isIndexerInstalled,xn as mergeScipFiles,Rn as mergeScipIndexes,Gy as reindex,ve as resolveIndexerBinary,en as resolveProjectLocalIndexerBinary,q as runPostIndexAugmentation,gr as tryInstallIndexer,dn as tryInstallScipCli,rs as vueResolvedReferencesAugmentationStage};
|
|
298
298
|
//# sourceMappingURL=reindex.js.map
|