scip-query 0.22.0 → 0.24.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 +500 -0
- package/README.md +13 -0
- package/dist/augment-vue-worker.js +1 -1
- package/dist/by-kind-H3P6BR5G.js +2 -0
- package/dist/call-graph-VTG2CUOQ.js +2 -0
- package/dist/call-graph-evidence-BociKRpF.d.ts +19 -0
- package/dist/chunk-2BMSSRBH.js +2 -0
- package/dist/{chunk-TAYD3AE7.js → chunk-2GJSD5GY.js} +2 -2
- package/dist/{chunk-TUQIPUDS.js → chunk-2M2LSIMY.js} +3 -3
- package/dist/{chunk-GIQ6CSL4.js → chunk-2N6WBNDC.js} +2 -2
- package/dist/{chunk-JHH5SCZ3.js → chunk-2OOY75BW.js} +2 -2
- package/dist/{chunk-EELPBR7E.js → chunk-2USA3S3P.js} +2 -2
- package/dist/chunk-2VAHDDLM.js +133 -0
- package/dist/chunk-2XWIUW5Z.js +455 -0
- package/dist/{chunk-57N6LN2A.js → chunk-3AF4TUFK.js} +2 -2
- package/dist/chunk-3D4BOXW6.js +20 -0
- package/dist/{chunk-FFJQZG6J.js → chunk-3LO4FST5.js} +2 -2
- package/dist/{chunk-HXOU4XNH.js → chunk-3WTY4LP2.js} +2 -2
- package/dist/{chunk-DPWKKNKI.js → chunk-3Z5AMSK6.js} +2 -2
- package/dist/{chunk-F24G5NBE.js → chunk-44IETFOU.js} +2 -2
- package/dist/chunk-4FR6GQIT.js +2 -0
- package/dist/chunk-4KBTHJLP.js +2 -0
- package/dist/chunk-5BIKR67W.js +2 -0
- package/dist/{chunk-DJAO2OZJ.js → chunk-5PROPLHI.js} +2 -2
- package/dist/chunk-5V7EPTII.js +2 -0
- package/dist/{chunk-VZ7NXSHV.js → chunk-62LPZCBQ.js} +2 -2
- package/dist/{chunk-LXQUF2RP.js → chunk-64O2JHQA.js} +2 -2
- package/dist/chunk-6D4F5VWG.js +10 -0
- package/dist/{chunk-NEIQPFBI.js → chunk-6ERFBC3X.js} +2 -2
- package/dist/{chunk-4HE7MVWD.js → chunk-6ILKOOGH.js} +2 -2
- package/dist/chunk-6MFXCMZC.js +2 -0
- package/dist/chunk-6O7FACKB.js +2 -0
- package/dist/{chunk-R6M456QG.js → chunk-6TS3KOXR.js} +2 -2
- package/dist/{chunk-7U2YQSDE.js → chunk-76QOU4PK.js} +2 -2
- package/dist/{chunk-25GWKRUZ.js → chunk-7DUI77BN.js} +2 -2
- package/dist/chunk-7F45LJKI.js +2 -0
- package/dist/{chunk-DEAB5TGT.js → chunk-7F7T6DCR.js} +2 -2
- package/dist/chunk-7H6VHWWJ.js +2 -0
- package/dist/chunk-7HXT6YLU.js +5 -0
- package/dist/{chunk-KZYID5KV.js → chunk-7R4V5ES6.js} +4 -4
- package/dist/chunk-7RIRIADH.js +7 -0
- package/dist/chunk-7ZLWLOGT.js +2 -0
- package/dist/{chunk-WHADK6OS.js → chunk-A4WEAK35.js} +2 -2
- package/dist/chunk-AADQLOQ4.js +38 -0
- package/dist/{chunk-XFMVKFSF.js → chunk-AN76MGUE.js} +2 -2
- package/dist/chunk-ANLNLY66.js +2 -0
- package/dist/chunk-ATXPTSEI.js +81 -0
- package/dist/{chunk-EELG7D3Q.js → chunk-AX7IDVFT.js} +2 -2
- package/dist/chunk-B3PYOSCX.js +2 -0
- package/dist/chunk-B7MPDEAK.js +3 -0
- package/dist/chunk-BBB5FBX4.js +2 -0
- package/dist/{chunk-Y2VM4CJC.js → chunk-BHKK5RJY.js} +2 -2
- package/dist/chunk-BJWFVAA5.js +2 -0
- package/dist/chunk-BKVWUP7Y.js +2 -0
- package/dist/{chunk-7XA3OM44.js → chunk-BKZYTLGE.js} +2 -2
- package/dist/chunk-BL6DCHQP.js +2 -0
- package/dist/chunk-BOW7SSQH.js +43 -0
- package/dist/{chunk-KQHJEU6V.js → chunk-C4RHHCKL.js} +2 -2
- package/dist/chunk-C7C6AKAT.js +117 -0
- package/dist/chunk-CD6M6LS2.js +16 -0
- package/dist/chunk-CFE6PSG6.js +2 -0
- package/dist/{chunk-GPGRZJ3R.js → chunk-CFNIGQMT.js} +2 -2
- package/dist/{chunk-K3XFWJI2.js → chunk-CKBUBRYD.js} +2 -2
- package/dist/chunk-CZW5MZ5B.js +2 -0
- package/dist/chunk-DBBZ63ZX.js +2 -0
- package/dist/chunk-DBN7DMJB.js +18 -0
- package/dist/{chunk-CKRWA452.js → chunk-DUULLZHZ.js} +2 -2
- package/dist/{chunk-6HRZQLOI.js → chunk-DV5Y5NOS.js} +2 -2
- package/dist/chunk-DZOIKCTM.js +3 -0
- package/dist/chunk-E4PKTOL3.js +2 -0
- package/dist/{chunk-GVOMSPGL.js → chunk-E65ELFKU.js} +2 -2
- package/dist/{chunk-VXJJTQYE.js → chunk-E7QR35ST.js} +2 -2
- package/dist/{chunk-2RE5OCHZ.js → chunk-EFSXAINW.js} +2 -2
- package/dist/{chunk-GY7CCCEZ.js → chunk-EHVEIEQN.js} +2 -2
- package/dist/{chunk-BVFYEEBH.js → chunk-EHYDXE3Z.js} +2 -2
- package/dist/{chunk-HISEUIL2.js → chunk-EP63Y6LD.js} +2 -2
- package/dist/chunk-EPX6NQN6.js +4 -0
- package/dist/chunk-ETC674NS.js +5 -0
- package/dist/{chunk-5H5WTJSD.js → chunk-F5GSBHC6.js} +2 -2
- package/dist/chunk-FH3DGXC6.js +2 -0
- package/dist/{chunk-2XCGSDIT.js → chunk-FI7VGOR4.js} +2 -2
- package/dist/chunk-FJF6VO2P.js +2 -0
- package/dist/{chunk-FELGD32K.js → chunk-FLMTCX5R.js} +2 -2
- package/dist/chunk-FVFDOIM3.js +2 -0
- package/dist/{chunk-AQ2PORIO.js → chunk-G2HU5WRN.js} +2 -2
- package/dist/{chunk-7YQOCABQ.js → chunk-G4ALYS4J.js} +2 -2
- package/dist/{chunk-SWK4XPUS.js → chunk-G56I7K4W.js} +2 -2
- package/dist/{chunk-JFQBRL3J.js → chunk-GC4DG2V5.js} +2 -2
- package/dist/chunk-GG45PK4S.js +4 -0
- package/dist/{chunk-XN22RGSR.js → chunk-GHNPACNP.js} +2 -2
- package/dist/{chunk-XU75YQN4.js → chunk-GINH3YQU.js} +2 -2
- package/dist/chunk-GTZZVLKJ.js +2 -0
- package/dist/chunk-GXXW5ZHH.js +2 -0
- package/dist/{chunk-RNKPYYYE.js → chunk-HAXXKRTD.js} +2 -2
- package/dist/chunk-HEZWBAZY.js +2 -0
- package/dist/chunk-HMEWLMML.js +2 -0
- package/dist/{chunk-2KVU55CW.js → chunk-HOBOVYPO.js} +2 -2
- package/dist/{chunk-2YC7YNKT.js → chunk-HRFQ6GW5.js} +2 -2
- package/dist/{chunk-RYOYJMGF.js → chunk-HX4X7KG3.js} +2 -2
- package/dist/{chunk-AZS7YPCB.js → chunk-HYT2R7LX.js} +2 -2
- package/dist/chunk-IKQVBVQL.js +40 -0
- package/dist/chunk-J6GLBBRK.js +4 -0
- package/dist/{chunk-TNG2FYS5.js → chunk-J7A4PWFX.js} +2 -2
- package/dist/chunk-JCSAZ35V.js +2 -0
- package/dist/{chunk-EWWY2ZFL.js → chunk-JDU2IV3A.js} +2 -2
- package/dist/{chunk-SB25YMEQ.js → chunk-JFMEXGFE.js} +2 -2
- package/dist/chunk-JFMI5SGB.js +4 -0
- package/dist/chunk-JJP37RGX.js +57 -0
- package/dist/chunk-JZ2A7LDM.js +5 -0
- package/dist/chunk-KNLQGXVH.js +80 -0
- package/dist/chunk-KVQCECPR.js +2 -0
- package/dist/{chunk-F24QUEQP.js → chunk-KXXORBZ2.js} +2 -2
- package/dist/{chunk-IKVNEGTW.js → chunk-L5KYH6U3.js} +2 -2
- package/dist/chunk-L6XHYJPZ.js +21 -0
- package/dist/chunk-L7KTFEAV.js +43 -0
- package/dist/{chunk-UAQ4T73O.js → chunk-LDXHR5EL.js} +2 -2
- package/dist/chunk-LEECKFCJ.js +2 -0
- package/dist/{chunk-LO5JSW2C.js → chunk-MHGDSBFX.js} +2 -2
- package/dist/{chunk-JUN5DOAK.js → chunk-MLQVVDG3.js} +2 -2
- package/dist/chunk-MOKUWRHO.js +3 -0
- package/dist/{chunk-44T4DUAA.js → chunk-MPYAPMNE.js} +2 -2
- package/dist/{chunk-ARVO6TTW.js → chunk-MV6SPXCR.js} +2 -2
- package/dist/{chunk-NRBNAECH.js → chunk-MWN53KRN.js} +2 -2
- package/dist/{chunk-TH6IC56G.js → chunk-MZPXPSUJ.js} +2 -2
- package/dist/{chunk-FBCVASUG.js → chunk-N55KIE46.js} +2 -2
- package/dist/{chunk-VMWUV6WB.js → chunk-NB4D3BNM.js} +2 -2
- package/dist/{chunk-JAT6C3VX.js → chunk-NGKBOT6G.js} +2 -2
- package/dist/{chunk-Q6T2CAJL.js → chunk-NJGKXKQF.js} +2 -2
- package/dist/chunk-NJQISBL4.js +8 -0
- package/dist/chunk-NJT3ZEKY.js +16 -0
- package/dist/{chunk-KFVSJX25.js → chunk-NKMKZP6A.js} +2 -2
- package/dist/chunk-NODFZ6ED.js +2 -0
- package/dist/{chunk-ERCYGVAM.js → chunk-NSM5IEVW.js} +2 -2
- package/dist/{chunk-YAGYMBEX.js → chunk-NTGUVNR2.js} +2 -2
- package/dist/{chunk-N7FP5H5U.js → chunk-NU3KFF2O.js} +8 -8
- package/dist/chunk-NWLVNU66.js +557 -0
- package/dist/{chunk-Q55NF3ZG.js → chunk-NYKZMCRC.js} +2 -2
- package/dist/{chunk-I6UTXNHU.js → chunk-O6BUXZEH.js} +2 -2
- package/dist/chunk-ODPDP7A4.js +3 -0
- package/dist/{chunk-ZAZGGSM3.js → chunk-OHIV323X.js} +2 -2
- package/dist/chunk-OIAPEKMT.js +3 -0
- package/dist/chunk-OIOC5EHF.js +3 -0
- package/dist/{chunk-YIHNPKWD.js → chunk-ONPPQM4G.js} +2 -2
- package/dist/{chunk-RHHCLWQ6.js → chunk-OUHEZBYI.js} +2 -2
- package/dist/{chunk-MSR2QRUE.js → chunk-OVGYW7UD.js} +2 -2
- package/dist/{chunk-OPSAW5DT.js → chunk-OYKU4B3Y.js} +2 -2
- package/dist/{chunk-5YRQIE2B.js → chunk-POBJ6FR2.js} +2 -2
- package/dist/{chunk-ZGW4HLPD.js → chunk-PSZPMMWN.js} +2 -2
- package/dist/chunk-PXTRBKRK.js +3 -0
- package/dist/{chunk-U2N2KE7A.js → chunk-Q5JRIHT3.js} +2 -2
- package/dist/{chunk-GRX7JOXQ.js → chunk-Q7ATHARX.js} +2 -2
- package/dist/{chunk-5ZMBRQFC.js → chunk-Q7CSKIDM.js} +2 -2
- package/dist/{chunk-HG722PO7.js → chunk-QBQE7ZJ5.js} +2 -2
- package/dist/{chunk-Z2PZVKPR.js → chunk-QH22UIXP.js} +2 -2
- package/dist/chunk-QXCKQTKR.js +60 -0
- package/dist/chunk-RBAD4GJ2.js +13 -0
- package/dist/chunk-RMDPFPNW.js +2 -0
- package/dist/chunk-ROPJDEJZ.js +4 -0
- package/dist/{chunk-56NQAEPJ.js → chunk-RVZC6TJE.js} +2 -2
- package/dist/{chunk-XJX6LGHL.js → chunk-S4QZBKSR.js} +2 -2
- package/dist/chunk-SCPMZ73U.js +2 -0
- package/dist/{chunk-7IQXARSQ.js → chunk-SIAP5RGI.js} +2 -2
- package/dist/{chunk-4TQU4TX2.js → chunk-SIX4RFR3.js} +2 -2
- package/dist/{chunk-AYPDH2LU.js → chunk-SKKXTABJ.js} +2 -2
- package/dist/{chunk-ZYM4HOFA.js → chunk-SSRFUQBD.js} +2 -2
- package/dist/chunk-SYVJEEUJ.js +3 -0
- package/dist/chunk-T3CZAZSI.js +8 -0
- package/dist/chunk-T3I6NHBH.js +2 -0
- package/dist/{chunk-GDRJB3SB.js → chunk-T6DWDI5E.js} +2 -2
- package/dist/chunk-T6HRIROJ.js +7 -0
- package/dist/{chunk-OTSPRVNW.js → chunk-TAA7HXHE.js} +2 -2
- package/dist/{chunk-IJMD6BRI.js → chunk-TJ2JQYT3.js} +2 -2
- package/dist/chunk-TULNMD5T.js +368 -0
- package/dist/chunk-U2FPY5XA.js +3 -0
- package/dist/chunk-U3SXIMII.js +38 -0
- package/dist/{chunk-ENWQWA2R.js → chunk-U6KCHXJ4.js} +2 -2
- package/dist/chunk-UH3XSKS5.js +9 -0
- package/dist/{chunk-UDY7MIAW.js → chunk-UIFUZVCC.js} +2 -2
- package/dist/{chunk-BDGTPN27.js → chunk-UXKURIVI.js} +2 -2
- package/dist/{chunk-FGNCOQUX.js → chunk-V2RBODHL.js} +2 -2
- package/dist/chunk-VBKUWB6N.js +2 -0
- package/dist/{chunk-PIFTZEEM.js → chunk-VBV6ALJE.js} +2 -2
- package/dist/{chunk-2OXVP5U5.js → chunk-VDGFWCQV.js} +2 -2
- package/dist/chunk-VDSDOEWF.js +2 -0
- package/dist/{chunk-C76O5MDS.js → chunk-VZPWVCLN.js} +2 -2
- package/dist/chunk-WDSFQDPN.js +2 -0
- package/dist/{chunk-BTVKZGWT.js → chunk-WFA35BGR.js} +2 -2
- package/dist/{chunk-H7CG6LOE.js → chunk-WLMP3OCW.js} +2 -2
- package/dist/{chunk-WOOAY3PA.js → chunk-WSA52GOR.js} +2 -2
- package/dist/chunk-WYPL7GF7.js +2 -0
- package/dist/{chunk-RDULNRSJ.js → chunk-X3YVZAKZ.js} +2 -2
- package/dist/chunk-X6OGVFIT.js +2 -0
- package/dist/{chunk-ISWFRGJ6.js → chunk-XKXTR6ZI.js} +2 -2
- package/dist/chunk-Y5DFAW5W.js +4 -0
- package/dist/chunk-YSYPDRD5.js +3 -0
- package/dist/chunk-ZFVPWH62.js +5 -0
- package/dist/chunk-ZGIHTH27.js +2 -0
- package/dist/{chunk-QKT4UI2Y.js → chunk-ZGIQN2SX.js} +2 -2
- package/dist/chunk-ZHG4WAHR.js +12 -0
- package/dist/{chunk-CLG6DWVS.js → chunk-ZKB2XUEN.js} +2 -2
- package/dist/chunk-ZLMXIQLC.js +21 -0
- package/dist/chunk-ZMCQIHI4.js +2 -0
- package/dist/cli-main.js +2 -2
- package/dist/code-TAVIKWJI.js +2 -0
- package/dist/code-result-json-5FEFQCAQ.js +2 -0
- package/dist/command-descriptors-7BKH53Y3.js +343 -0
- package/dist/dataflow-GFBTVDH3.js +2 -0
- package/dist/dependence-slice-GWGQCODG.js +2 -0
- package/dist/deps-4QHVDPYA.js +2 -0
- package/dist/direct-navigation-4UBC6HNW.js +3 -0
- package/dist/entry-map-QCTF4RVY.js +2 -0
- package/dist/files-M2UBF5HJ.js +2 -0
- package/dist/frontend-profile-roles-D7eCum8P.d.ts +10 -0
- package/dist/{health-CPp2Jf1Z.d.ts → health-BI2a9WPy.d.ts} +60 -2
- package/dist/hierarchy-2UIHRLW4.js +2 -0
- package/dist/imports-WIE3YZOB.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/members-YKD636DA.js +2 -0
- package/dist/methods-VDF4IMYG.js +2 -0
- package/dist/output-continuation-command-4UMDOOLO.js +3 -0
- package/dist/output-pagination-2GME6OPY.js +19 -0
- package/dist/postinstall.js +1 -1
- package/dist/project-reindex-XEQTRCV5.js +3 -0
- package/dist/queries/affected.js +1 -1
- package/dist/queries/anchors.d.ts +1 -1
- package/dist/queries/anchors.js +1 -1
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +2 -0
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +20 -2
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/context.js +1 -1
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +2 -0
- package/dist/queries/dead.js +1 -1
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/dependence-slice.js +1 -1
- package/dist/queries/dependency-depth.js +1 -1
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-impact.d.ts +9 -0
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +28 -1
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/entry-map.d.ts +1 -1
- package/dist/queries/entry-map.js +1 -1
- package/dist/queries/evidence.js +1 -1
- package/dist/queries/extract-candidates.d.ts +50 -23
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +1 -1
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +4 -3
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.js +1 -1
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +9 -1
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +19 -3
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +22 -3
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.d.ts +17 -3
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/reference-neighborhood.js +1 -1
- package/dist/queries/reference-reachability.js +1 -1
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +7 -1
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.js +1 -1
- package/dist/queries/source-inspection.js +1 -1
- package/dist/queries/source-search.js +1 -1
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system-map.d.ts +1 -1
- package/dist/queries/system-map.js +1 -1
- package/dist/queries/system.js +1 -1
- package/dist/queries/test-quality.js +1 -1
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.js +1 -1
- package/dist/queries/twin-drift.d.ts +22 -6
- package/dist/queries/twin-drift.js +1 -1
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/value-flow.js +1 -1
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +16 -1
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/query-service-fastpath.js +5 -5
- package/dist/query-service-server.js +3 -3
- package/dist/refs-JNK5CLM7.js +2 -0
- package/dist/refs-pagination-6BLRYGMV.js +2 -0
- package/dist/reindex-worker.js +25 -25
- package/dist/reindex.d.ts +3 -2
- package/dist/reindex.js +35 -35
- package/dist/runtime.d.ts +34 -2
- package/dist/runtime.js +4 -4
- 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-H-n59izO.d.ts → scip-cli-DOerTq-R.d.ts} +42 -4
- package/dist/slice-PHPVNCWX.js +2 -0
- package/dist/surface-MQX5MPIV.js +2 -0
- package/dist/symbol-resolution-DBLVXLBC.js +2 -0
- package/dist/system-JOPKV4OG.js +2 -0
- package/dist/trace-I2P2YFH4.js +2 -0
- package/dist/typescript-mailbox-worker.js +1 -1
- package/dist/value-flow-JJVMF7NP.js +2 -0
- package/dist/watch-server.js +3 -3
- package/docs/COMMAND_REFERENCE.md +2 -2
- package/docs/DETECTOR_GUIDE.md +51 -12
- package/docs/accuracy-audit-checklist.md +36 -13
- package/docs/locality-analyzer-design.md +9 -9
- package/package.json +2 -2
- package/skills/conductor/SKILL.md +110 -0
- package/skills/conductor/agents/openai.yaml +4 -0
- package/skills/principal-maintainability-review/SKILL.md +273 -0
- package/skills/principal-maintainability-review/agents/openai.yaml +4 -0
- package/skills/scip-calibrate/SKILL.md +102 -0
- package/skills/scip-calibrate/agents/openai.yaml +4 -0
- package/skills/scip-claim-audit/SKILL.md +113 -0
- package/skills/scip-claim-audit/agents/openai.yaml +4 -0
- package/skills/scip-probe-reachability/SKILL.md +93 -0
- package/skills/scip-probe-reachability/agents/openai.yaml +4 -0
- package/skills/scip-root-cause/SKILL.md +160 -0
- package/skills/scip-root-cause/agents/openai.yaml +4 -0
- package/skills/scip-system-compression/SKILL.md +252 -0
- package/skills/scip-system-compression/agents/openai.yaml +4 -0
- package/skills/scip-system-compression/references/compression-atlas.md +116 -0
- package/skills/scip-system-compression/references/compression-patterns.md +87 -0
- package/skills/scip-twin-drift/SKILL.md +109 -0
- package/skills/scip-twin-drift/agents/openai.yaml +4 -0
- package/dist/by-kind-4IYG2SKW.js +0 -2
- package/dist/call-graph-WQNXMNNN.js +0 -2
- package/dist/call-graph-evidence-lZa2dwQA.d.ts +0 -11
- package/dist/chunk-2BTJALUS.js +0 -454
- package/dist/chunk-3QXC54FQ.js +0 -3
- package/dist/chunk-3TJY6M3B.js +0 -7
- package/dist/chunk-42W3LFUK.js +0 -13
- package/dist/chunk-4GAQ6FI4.js +0 -43
- package/dist/chunk-6NC3YSPY.js +0 -38
- package/dist/chunk-6VEFRPTD.js +0 -5
- package/dist/chunk-7C26EKLZ.js +0 -4
- package/dist/chunk-7JYHQAH2.js +0 -22
- package/dist/chunk-7KSO2OAP.js +0 -2
- package/dist/chunk-7XZGZBSQ.js +0 -2
- package/dist/chunk-A77SCPW2.js +0 -3
- package/dist/chunk-AK3PYTIK.js +0 -5
- package/dist/chunk-AMIMMNA4.js +0 -11
- package/dist/chunk-AUY5BL74.js +0 -2
- package/dist/chunk-BDHFVH2M.js +0 -18
- package/dist/chunk-BECZLYNU.js +0 -8
- package/dist/chunk-BUTEIZKP.js +0 -10
- package/dist/chunk-BWVQP3LB.js +0 -38
- package/dist/chunk-BYDAFMSR.js +0 -57
- package/dist/chunk-BZYSGZRK.js +0 -2
- package/dist/chunk-C7IJMOFP.js +0 -134
- package/dist/chunk-CBBHFNLX.js +0 -2
- package/dist/chunk-D2MVJSP4.js +0 -21
- package/dist/chunk-D35XIZGN.js +0 -2
- package/dist/chunk-DKM723YF.js +0 -79
- package/dist/chunk-DRENNWRG.js +0 -2
- package/dist/chunk-E44IVWIJ.js +0 -367
- package/dist/chunk-EDMB6SSO.js +0 -7
- package/dist/chunk-EETGXQY7.js +0 -3
- package/dist/chunk-FKGQOTKD.js +0 -2
- package/dist/chunk-GH5YSGZL.js +0 -5
- package/dist/chunk-GQIDEID3.js +0 -2
- package/dist/chunk-HCVJR2V4.js +0 -3
- package/dist/chunk-IMKZEXZG.js +0 -2
- package/dist/chunk-ISIQLPJ2.js +0 -61
- package/dist/chunk-IXESDH3J.js +0 -2
- package/dist/chunk-JJ62MTQH.js +0 -40
- package/dist/chunk-JT6XX7QY.js +0 -8
- package/dist/chunk-KFOYCQAJ.js +0 -9
- package/dist/chunk-LRI5OMPE.js +0 -2
- package/dist/chunk-MHIEP7EG.js +0 -4
- package/dist/chunk-NK3JMP22.js +0 -2
- package/dist/chunk-NVSZNESQ.js +0 -2
- package/dist/chunk-OJNK5ALA.js +0 -2
- package/dist/chunk-OXYAWIEA.js +0 -2
- package/dist/chunk-OZETODHH.js +0 -2
- package/dist/chunk-PBUH2P5S.js +0 -3
- package/dist/chunk-PLJUQFQN.js +0 -2
- package/dist/chunk-PLYUVM4F.js +0 -2
- package/dist/chunk-PXXYQK55.js +0 -2
- package/dist/chunk-Q5TA4OY4.js +0 -20
- package/dist/chunk-Q7GBK5T7.js +0 -81
- package/dist/chunk-QLBSG7U5.js +0 -3
- package/dist/chunk-QWKHW6VZ.js +0 -2
- package/dist/chunk-RPL3ARU7.js +0 -16
- package/dist/chunk-SVHTMVA4.js +0 -4
- package/dist/chunk-T6QD2ZQB.js +0 -43
- package/dist/chunk-TD7VKJ2Y.js +0 -117
- package/dist/chunk-TKDNDQA7.js +0 -3
- package/dist/chunk-TQZV7KV4.js +0 -2
- package/dist/chunk-TUSPIVZ3.js +0 -4
- package/dist/chunk-URSGGIZX.js +0 -2
- package/dist/chunk-UT7TADJX.js +0 -2
- package/dist/chunk-V4NG5OMS.js +0 -554
- package/dist/chunk-VTCIYFEK.js +0 -2
- package/dist/chunk-VU6LIWHT.js +0 -2
- package/dist/chunk-VUSKPCUB.js +0 -2
- package/dist/chunk-WN3TCGJ4.js +0 -2
- package/dist/chunk-WSLEJSFR.js +0 -2
- package/dist/chunk-WYZIHUPZ.js +0 -16
- package/dist/chunk-XE33FV5W.js +0 -2
- package/dist/chunk-XGGBK66W.js +0 -4
- package/dist/chunk-XSWYJCAK.js +0 -2
- package/dist/chunk-Y334QQU5.js +0 -3
- package/dist/chunk-Z2AWCTN6.js +0 -2
- package/dist/chunk-ZOXKSQQB.js +0 -2
- package/dist/chunk-ZPASRBLF.js +0 -2
- package/dist/chunk-ZZ3Z7D56.js +0 -2
- package/dist/code-EQJFDT6I.js +0 -2
- package/dist/code-result-json-7UWIWBOO.js +0 -2
- package/dist/command-descriptors-ORNTVNYV.js +0 -342
- package/dist/dataflow-6VL54GX5.js +0 -2
- package/dist/dependence-slice-DT2NUHD2.js +0 -2
- package/dist/deps-DB7H5IKC.js +0 -2
- package/dist/direct-navigation-O3LUAYWQ.js +0 -3
- package/dist/entry-map-6K62RV3D.js +0 -2
- package/dist/files-MSLD7MO6.js +0 -2
- package/dist/hierarchy-IVBXAKFA.js +0 -2
- package/dist/imports-FRAVZ3Y2.js +0 -2
- package/dist/members-KJOJDYGO.js +0 -2
- package/dist/methods-2AYABBT3.js +0 -2
- package/dist/output-continuation-command-JHMPH6NC.js +0 -3
- package/dist/output-pagination-3OFL2MJV.js +0 -19
- package/dist/project-reindex-HYO4WD7Z.js +0 -3
- package/dist/refs-ARMA6XUJ.js +0 -2
- package/dist/refs-pagination-VUGIWN6U.js +0 -2
- package/dist/slice-YOB5YFAM.js +0 -2
- package/dist/surface-VY5EFWTW.js +0 -2
- package/dist/symbol-resolution-DGQN4XIV.js +0 -2
- package/dist/system-2KQ3QD2P.js +0 -2
- package/dist/trace-HTIPTXAE.js +0 -2
- package/dist/value-flow-5FV3VQI7.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,506 @@ All notable changes to `scip-query` are documented here. This file starts at 0.1
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.24.0]
|
|
8
|
+
|
|
9
|
+
### Oversized compiler projects are served from file closures
|
|
10
|
+
|
|
11
|
+
- A tsconfig that lists more files than the semantic worker's heap can hold
|
|
12
|
+
(by the same estimate that sizes the heap: 2,560 MB plus 1.25 MB per
|
|
13
|
+
file) is no longer loaded whole and no longer declined. Its compiler
|
|
14
|
+
program starts empty and grows by the import closure of each requested
|
|
15
|
+
file, so callees, callee coverage, signatures, and import usage stay
|
|
16
|
+
exact per file; references and hierarchies, which need every file, are
|
|
17
|
+
declined per request and the cheap paths answer them. The service status
|
|
18
|
+
and provider availability report `projectScope: file-closure`.
|
|
19
|
+
|
|
20
|
+
### Second-repository review: layering, facades, stubs, and configuration entry points
|
|
21
|
+
|
|
22
|
+
- A member that calls another member of its twin cluster leaves the cluster
|
|
23
|
+
before pairing, so a facade method no longer pairs with its near-name
|
|
24
|
+
siblings either; the delegation check follows one re-export hop, so a
|
|
25
|
+
caller importing through a barrel is recognized. A thin forwarder whose
|
|
26
|
+
single call has a different name than its own (a web client calling
|
|
27
|
+
`apiClient.getData`, a vendor adapter) is a stub over its peer's concept,
|
|
28
|
+
not a twin of it. Overrides of one abstract member and key-qualified
|
|
29
|
+
lookup members (`getBySlug`, `findByEmail`) on unrelated classes are
|
|
30
|
+
convention, not drift.
|
|
31
|
+
- A class whose methods forward to members of several collaborators is a
|
|
32
|
+
composed-service facade even when no single collaborator receives three
|
|
33
|
+
forwards. A body of the form `return handler(async () => {...})(req, res,
|
|
34
|
+
next)` is a curried handler, not a literal passthrough.
|
|
35
|
+
- A wrapper forwarding through a module-private variable
|
|
36
|
+
(`return loadedLanguages.has(lang)`) is a boundary signal: inlining it
|
|
37
|
+
would export the state it hides.
|
|
38
|
+
- Rendered extraction regions grow to element boundaries: a region cut
|
|
39
|
+
inside a JSX element now reaches its closing tag or, when it only
|
|
40
|
+
straddles two elements, fails the size rules instead of reporting a
|
|
41
|
+
fragment. Growth stops at the function's own `return`, and the candidate's
|
|
42
|
+
region is the largest extractable one rather than the largest one, so a
|
|
43
|
+
smaller signal-tier region beside a region that holds the function's
|
|
44
|
+
return is the advice.
|
|
45
|
+
- Concise arrow bodies are read past braces in parameter types and type
|
|
46
|
+
arguments (`(x) => client.patchData<{ ok: true }>(x)`), so arrow-function
|
|
47
|
+
wrappers, twins, and duplicate bodies see the real body. A file of
|
|
48
|
+
wrappers that all forward through one receiver (a copy catalog, a client
|
|
49
|
+
object) is a facade over it and its wrappers are signal tier.
|
|
50
|
+
- Co-change findings carry an action tier. Pairs whose shared commits were
|
|
51
|
+
only broad sweeps, stale pairs with at most two focused co-changes, and
|
|
52
|
+
configuration, schema, documentation, or generated partners are signal
|
|
53
|
+
tier and no longer count toward the hidden-coupling score.
|
|
54
|
+
- Source files a root configuration names by path (`next.config.js`
|
|
55
|
+
`images.loaderFile`, a `package.json` script running `src/scripts/x.ts`)
|
|
56
|
+
are entry surfaces: their exports are invoked by the framework or tool,
|
|
57
|
+
not dead.
|
|
58
|
+
- `duplicate-bodies --json` no longer prints policy-exclusion lines into
|
|
59
|
+
the JSON document or export file; they remain in human output.
|
|
60
|
+
- Label sets for dead code, similar pairs, stale abstractions, complexity
|
|
61
|
+
hotspots, large components, and co-change on Launchpoint, and for twin
|
|
62
|
+
drift, wrappers, passthroughs, and extraction on Vega, live under
|
|
63
|
+
`docs/validation/labels/`.
|
|
64
|
+
|
|
65
|
+
### Human output redirected to a file is complete
|
|
66
|
+
|
|
67
|
+
- When stdout is a regular file (`scip-query health --full > report.txt`),
|
|
68
|
+
human output is written in full. Page cursors remain for terminals and
|
|
69
|
+
pipes, where the reader is an agent whose context the page budget
|
|
70
|
+
protects from a client that truncates long tool results.
|
|
71
|
+
|
|
72
|
+
### Call sites the grammar wraps are no longer dropped
|
|
73
|
+
|
|
74
|
+
- `await client.getData<T>(...)` parses with the `await` bound to the member
|
|
75
|
+
expression, and `(a as B).run()`, `a!.run()`, and `(fn)()` wrap the target
|
|
76
|
+
the same way. The call-site extractor now reads through those wrappers,
|
|
77
|
+
so the occurrence and AST callee tiers see the call; source facts carry
|
|
78
|
+
a new payload version. Found by the Vega self-audit's one oracle-only edge.
|
|
79
|
+
|
|
80
|
+
### Evidence products keyed by build
|
|
81
|
+
|
|
82
|
+
- File and project evidence rows are keyed by the running build's digest
|
|
83
|
+
as well as their payload version, and rows another build wrote are pruned
|
|
84
|
+
when the cache opens. A development build with changed analysis logic
|
|
85
|
+
never reads a previous build's rows; compiler-derived callee and reference
|
|
86
|
+
rows keep their schema-only keys.
|
|
87
|
+
|
|
88
|
+
### Dependency cycles classified by component content
|
|
89
|
+
|
|
90
|
+
- A cyclic component is classified by what remains after its barrels,
|
|
91
|
+
tests, and entry files are removed: if the product files still cycle,
|
|
92
|
+
that cycle is the finding and its witness is reported; if not, the
|
|
93
|
+
component only cycles through module bookkeeping. Previously the
|
|
94
|
+
verdict followed one witness path, which could run through a barrel that
|
|
95
|
+
a genuine product cycle sat beside.
|
|
96
|
+
|
|
97
|
+
### Wrapper, passthrough, and twin-drift findings reviewed against source
|
|
98
|
+
|
|
99
|
+
- A wrapper is `forwarding`-shaped only when its body is exactly one call
|
|
100
|
+
with plain-value arguments; a preparatory statement, a callback, a nested
|
|
101
|
+
call, or a literal the body builds now makes it a helper (signal tier, not
|
|
102
|
+
counted by health). The two-statement allowance had classified computed
|
|
103
|
+
keys, reductions, and two-step operations as inline advice.
|
|
104
|
+
- Boundary-term evidence for wrappers and passthroughs reads owner-qualified
|
|
105
|
+
leaf names (`BaseLogger log`) instead of path-qualified short names, so a
|
|
106
|
+
directory both sides live in (`lib/auth/`, `social-providers/`) no longer
|
|
107
|
+
reads as a boundary while an enclosing class still counts, and a term
|
|
108
|
+
present on both sides (`toBaseRate` forwarding to `parseBaseRate`) is
|
|
109
|
+
shared vocabulary rather than a reason to demote the finding.
|
|
110
|
+
- A twin-drift member that calls its same-name counterpart (an operations
|
|
111
|
+
function over its use-case, a component over the function it renders)
|
|
112
|
+
is a layer, not a parallel implementation; the delegation exclusion no
|
|
113
|
+
longer requires the caller to be a thin forwarder, and an aliased import
|
|
114
|
+
of the counterpart counts only under its alias.
|
|
115
|
+
- Reviewed label sets for the three detectors on `launchpoint-backend`
|
|
116
|
+
live under `docs/validation/labels/launchpoint-backend/`; the label
|
|
117
|
+
scorer understands the `direct | signal` tier vocabulary.
|
|
118
|
+
|
|
119
|
+
### The semantic worker loads one compiler project at a time
|
|
120
|
+
|
|
121
|
+
- Compiler projects are built lazily: a tsconfig's project exists only once a
|
|
122
|
+
request needs one of its files, files are routed to the tsconfig that
|
|
123
|
+
lists them, and a project that was never asked for costs nothing. The
|
|
124
|
+
semantic worker now carries the same soft-memory retirement mark as the
|
|
125
|
+
index worker, restarts once after a failure, and a batch whose worker died
|
|
126
|
+
of memory is retried as file halves down to single files before the
|
|
127
|
+
service counts as failed. Worker heaps are sized to the indexed document
|
|
128
|
+
count, capped by physical memory or the container's cgroup limit,
|
|
129
|
+
whichever is lower.
|
|
130
|
+
|
|
131
|
+
### Self-audit distinguishes what the compiler cannot see
|
|
132
|
+
|
|
133
|
+
- A cheap-path answer in a file outside every tsconfig (a test excluded from
|
|
134
|
+
the build config) is reported as outside oracle coverage rather than as a
|
|
135
|
+
false positive, and precision is measured over the rest.
|
|
136
|
+
|
|
137
|
+
### Health report cache keyed by build
|
|
138
|
+
|
|
139
|
+
- The cache key carries a digest of the running entry bundle, so two builds
|
|
140
|
+
under one version string never serve each other's reports.
|
|
141
|
+
|
|
142
|
+
### Compiler callees resolve imported functions, and self-audit measures callee precision
|
|
143
|
+
|
|
144
|
+
- The compiler callee path bound an imported call to its import alias and then
|
|
145
|
+
looked for a definition at the import statement, so every cross-file call to
|
|
146
|
+
an imported function was dropped from the semantic callee product and from
|
|
147
|
+
the self-audit oracle. Aliases now resolve to their declaration; cached
|
|
148
|
+
compiler callees carry a new schema so they recompute.
|
|
149
|
+
- The compiler now also reports, per definition, how many call and render
|
|
150
|
+
sites it resolved inside the repository, resolved to a library or ambient
|
|
151
|
+
symbol, or could not bind at all. `self-audit` treats a definition with no
|
|
152
|
+
unbound site as a complete oracle and measures callee and render precision
|
|
153
|
+
over those symbols; a cheap-only answer next to a partial oracle stays
|
|
154
|
+
unverified. Scores report `completeOracleSymbols`.
|
|
155
|
+
|
|
156
|
+
### Whole-project semantic passes stay inside memory
|
|
157
|
+
|
|
158
|
+
- `extract-candidates --full` (and every other full-mode semantic pass) sent
|
|
159
|
+
the whole candidate set to the semantic service in one request; on a large
|
|
160
|
+
repository the service's worker died at its heap limit and the command then
|
|
161
|
+
loaded the compiler in-process and died at its own. Bulk callee requests are
|
|
162
|
+
now sent in bounded per-file batches, a service failure on a large index
|
|
163
|
+
disables semantic enrichment for the run instead of loading the compiler
|
|
164
|
+
in-process (with a stderr notice), a service that merely lacks a request
|
|
165
|
+
kind keeps serving the others, and the service sizes its compiler worker
|
|
166
|
+
heaps from the indexed document count with a machine-memory ceiling.
|
|
167
|
+
Decoded occurrence data is held in a bounded cache instead of per run.
|
|
168
|
+
|
|
169
|
+
### Extraction candidates require a real block and stay out of control flow
|
|
170
|
+
|
|
171
|
+
- A region must span eight lines, and a region holding a `return` statement
|
|
172
|
+
of the function itself is support tier: it is the function's control flow,
|
|
173
|
+
not a helper. Exclusive call spans inside one multi-line statement (a
|
|
174
|
+
fluent query chain, a large literal) now form one region, since a region
|
|
175
|
+
never cuts through a statement; rendered subtrees keep the proximity rule
|
|
176
|
+
because a subtree is a legitimate cut inside a `return`. A reviewed
|
|
177
|
+
Launchpoint label set
|
|
178
|
+
(`docs/validation/labels/launchpoint-backend/extract-candidates.json`)
|
|
179
|
+
scores against the current output.
|
|
180
|
+
|
|
181
|
+
### Carried publications keep the deferred-companion marker
|
|
182
|
+
|
|
183
|
+
- A publication that carried every language shard rewrote the metadata
|
|
184
|
+
without the `scipCompanion` marker while its publication record still said
|
|
185
|
+
`deferred`; the marker is now carried from the accepted generation.
|
|
186
|
+
|
|
187
|
+
### Health reports name the input they were computed from
|
|
188
|
+
|
|
189
|
+
- `health` now records provenance: the immutable index generation identity
|
|
190
|
+
(with its publication time and mode when the generation store has them),
|
|
191
|
+
the git HEAD, branch, and uncommitted-path count, and the computation time.
|
|
192
|
+
The text report prints it as an `Input:` line under the file and symbol
|
|
193
|
+
counts; `health --json` carries it as `provenance`. Two reports whose
|
|
194
|
+
provenance differs were computed from different inputs, which the file and
|
|
195
|
+
symbol counts alone could not show.
|
|
196
|
+
|
|
197
|
+
### Incremental TypeScript refresh survives a reused-shard publication
|
|
198
|
+
|
|
199
|
+
- A publication that reused the TypeScript shard (only non-TypeScript inputs
|
|
200
|
+
changed) advances the project snapshot without writing a new overlay, so
|
|
201
|
+
the next TypeScript edit looked for an overlay named by the new snapshot,
|
|
202
|
+
found nothing, and every refresh failed with "deferred TypeScript SCIP
|
|
203
|
+
base has no matching overlay generation" until an explicit
|
|
204
|
+
`--allow-expensive-rebuild`. The incremental planner now bases the next
|
|
205
|
+
overlay on the overlay generation the accepted publication carries, which
|
|
206
|
+
is the overlay that exists.
|
|
207
|
+
|
|
208
|
+
### Extraction candidates are exclusive regions, not line coincidences
|
|
209
|
+
|
|
210
|
+
- `extract-candidates` now reports contiguous line ranges whose callees are
|
|
211
|
+
used nowhere else in the function, grown over the enclosing block's opener
|
|
212
|
+
and closer, and only when the range is at least five lines, at most three
|
|
213
|
+
quarters of the body, and leaves the rest of the function with callees of
|
|
214
|
+
its own. Callees used across the body (loggers, translators) are reported
|
|
215
|
+
as ambient instead of gluing every region together. When the indexer
|
|
216
|
+
emitted local-symbol occurrences, each region lists the bindings an
|
|
217
|
+
extraction would take as parameters and hand back. The previous
|
|
218
|
+
implementation keyed callee co-occurrence on a source line, so its
|
|
219
|
+
"clusters" were names sharing one line and its isolation score was always
|
|
220
|
+
100%; `ExtractCandidate.clusters` is replaced by `regions` and the kinds
|
|
221
|
+
are now `call-region` and `render-region`.
|
|
222
|
+
|
|
223
|
+
### Callee edges start from the indexer's own bindings
|
|
224
|
+
|
|
225
|
+
- The cheap callee path now reads the compiler-resolved occurrence the index
|
|
226
|
+
already stores for each call line before falling back to leaf-name
|
|
227
|
+
resolution. Member calls through typed receivers (`this.service.method()`)
|
|
228
|
+
resolve exactly, and a call the indexer bound to a library or ambient symbol
|
|
229
|
+
is no longer guessed onto a same-named repository function. Occurrences are
|
|
230
|
+
decoded per file from the chunk blobs, so no query loads the whole SCIP
|
|
231
|
+
artifact. `CalleeRow.source` gains `scip-occurrence`, `graph` prints it as
|
|
232
|
+
`O`, and `self-audit` reports cheap rows by evidence source. On a NestJS +
|
|
233
|
+
Next.js monorepo, callee recall against the compiler moved from 0.29 to 0.98.
|
|
234
|
+
|
|
235
|
+
### Eight judgment skills restored to the bundled suite
|
|
236
|
+
|
|
237
|
+
- `install-skills` and `setup` now also link `principal-maintainability-review`,
|
|
238
|
+
`scip-system-compression`, `scip-root-cause`, `scip-claim-audit`,
|
|
239
|
+
`scip-probe-reachability`, `scip-twin-drift`, `scip-calibrate`, and
|
|
240
|
+
`conductor` into Claude Code, Codex, and the shared agent root. Each is the
|
|
241
|
+
last full version from this repository's history, ported to the current
|
|
242
|
+
command surface: retired `diff-gate`, `cleanup-apply`, `plan-context`,
|
|
243
|
+
`effectiveness`, and `symbols` references are replaced with `diff-impact`,
|
|
244
|
+
`architecture`, `outline`, and the standalone detectors, and every
|
|
245
|
+
`metadata.commands` template validates against the live descriptors.
|
|
246
|
+
- The repo-local `.agents/skills/principal-maintainability-review` and
|
|
247
|
+
`.agents/skills/scip-system-compression` stubs are removed; the bundled
|
|
248
|
+
skills supersede them.
|
|
249
|
+
|
|
250
|
+
## [0.23.0]
|
|
251
|
+
|
|
252
|
+
### Fresh installs work without Go or the scip binary
|
|
253
|
+
|
|
254
|
+
- The external `scip` binary is no longer required. SCIP is converted to
|
|
255
|
+
SQLite in-process (since 0.22.0), but `reindex` and `setup` still refused to
|
|
256
|
+
run without `scip` on PATH; a fresh machine therefore could not index at all
|
|
257
|
+
unless Go was installed. The requirement now applies only when
|
|
258
|
+
`SCIP_QUERY_SQLITE_CONVERTER=scip-cli` selects the legacy converter, and
|
|
259
|
+
`check-deps` and the setup report say so instead of asking for consent.
|
|
260
|
+
- When the legacy converter is selected, `--install-missing` installs the
|
|
261
|
+
reviewed `scip` release without Go: the pinned archive is downloaded into
|
|
262
|
+
the scip-query cache, verified against its published SHA-256, and extracted;
|
|
263
|
+
the cached reviewed binary then outranks any `scip` on PATH. A PATH binary
|
|
264
|
+
reporting a different version than the pin is reported as unverified, and
|
|
265
|
+
`--install-missing` replaces it with the reviewed release.
|
|
266
|
+
- Tree-sitter grammars and better-sqlite3 ship prebuilt binaries, so npm 11's
|
|
267
|
+
install-script policy skipping their build scripts (which it reports as a
|
|
268
|
+
warning on `npm install -g`) does not affect parsing.
|
|
269
|
+
|
|
270
|
+
### The watcher stops fighting manual refreshes
|
|
271
|
+
|
|
272
|
+
- The automatic resource budget is charged only to refreshes the watcher
|
|
273
|
+
started itself (`watch-*` triggers). `setup` and manual `reindex` runs no
|
|
274
|
+
longer pause the watcher: on a large repository the first setup build alone
|
|
275
|
+
exceeded the 1 GiB write allowance and left the watcher "budget-paused,
|
|
276
|
+
changes pending" for the whole window.
|
|
277
|
+
- When a generation the watcher did not produce is published while work is
|
|
278
|
+
pending (dirty, cooldown, budget pause, or a debounce wait) and the index
|
|
279
|
+
matches the working tree, the watcher drops the pending refresh, reports
|
|
280
|
+
it as suppressed, and returns to idle, instead of holding "changes pending"
|
|
281
|
+
until the budget window or cooldown expired and then re-running a refresh
|
|
282
|
+
that would only be suppressed as fresh. The check runs on the Git poll
|
|
283
|
+
interval and does not depend on a Git checkout.
|
|
284
|
+
|
|
285
|
+
### The full-health prewarm runs in parallel shards and parses each file once
|
|
286
|
+
|
|
287
|
+
- The prewarm's three per-file warm sweeps (definitions, imports and
|
|
288
|
+
re-exports, source facts) parsed the repository twice; they are now one
|
|
289
|
+
sweep that computes every product while the file's syntax tree is still
|
|
290
|
+
cached, one parse per file.
|
|
291
|
+
- On a host that can hold several compiler programs, the prewarm now runs as
|
|
292
|
+
parallel shard workers, each warming a deterministic slice of the indexed
|
|
293
|
+
files (definitions, reference fragments, callees) with a 12 GB heap, and
|
|
294
|
+
the parent writes the completion marker once every shard reports its slice
|
|
295
|
+
warm. The plan takes the memory left after an 8 GB host reserve divided by
|
|
296
|
+
14 GB per worker, capped by cpu count minus one and by four
|
|
297
|
+
(`SCIP_QUERY_HEALTH_PREWARM_SHARDS` overrides it); a machine that cannot
|
|
298
|
+
host two workers runs the single worker as before.
|
|
299
|
+
|
|
300
|
+
### The fragment warm pass stops recomputing hierarchy targets per batch
|
|
301
|
+
|
|
302
|
+
- Profiled on a 7,800-file repository, the prewarm's reference scans spent
|
|
303
|
+
258 s across 61 batches, of which 63 s was the per-file scan; the rest was
|
|
304
|
+
building the class-hierarchy target map, about 20 s per compiler session,
|
|
305
|
+
and the pass discarded its session under heap pressure thirteen times.
|
|
306
|
+
The map depends only on the sources and the definition set, so it is now
|
|
307
|
+
memoized per session and persisted per project generation as the
|
|
308
|
+
`typescript-hierarchy-targets` product; a rebuilt session reads it back.
|
|
309
|
+
A new profile span, `typescript.references-map.hierarchy-targets`, records
|
|
310
|
+
each computation and whether it was a hit.
|
|
311
|
+
- The prewarm's default isolated heap may now reach 16 GB on machines with
|
|
312
|
+
at least 32 GB of memory (it stays at half of physical memory below that),
|
|
313
|
+
so a large compiler program crosses the pressure threshold, and rebuilds
|
|
314
|
+
its session, far less often.
|
|
315
|
+
|
|
316
|
+
### Immutable SCIP shards are hard-linked where reflinks are unavailable
|
|
317
|
+
|
|
318
|
+
- Every reindex staged its SCIP shards into the cache and back with byte
|
|
319
|
+
copies on filesystems without copy-on-write (ext4: ~325 MB per rebuild).
|
|
320
|
+
Cached shards and published index files are never opened for writing, so
|
|
321
|
+
they are now shared by hard link when a reflink is refused; a SQLite
|
|
322
|
+
candidate, which is patched in place, is still a real copy. Every clone
|
|
323
|
+
now removes its target first so no method ever writes through an inode
|
|
324
|
+
another generation still reads. Hard links count as shared bytes in the
|
|
325
|
+
reindex write telemetry, like reflinks.
|
|
326
|
+
|
|
327
|
+
### Complexity reads branch counts from source facts
|
|
328
|
+
|
|
329
|
+
- The source-facts walk now counts branch points per callable (a branch
|
|
330
|
+
inside a nested function counts toward each enclosing callable, as the
|
|
331
|
+
complexity query's own AST pass defined it), and the facts payload version
|
|
332
|
+
is 7. The complexity phase uses that count for every definition whose
|
|
333
|
+
range matches a callable and parses only the rest, so on a warm cache it
|
|
334
|
+
parses nothing; it parsed 4,287 files before.
|
|
335
|
+
- Caller-file evidence is memoized per symbol within a process. The two
|
|
336
|
+
repository scans behind consumer provenance (indexed callsites and
|
|
337
|
+
source-fallback attribution) answer per symbol independently of which
|
|
338
|
+
other symbols were asked for, so a later call scans only for symbols it
|
|
339
|
+
has not seen; the wrapper phase asked three times.
|
|
340
|
+
|
|
341
|
+
### Health phases stop rebuilding the compiler program
|
|
342
|
+
|
|
343
|
+
- Measured per child on a 7,800-file repository (cold cache, no watch
|
|
344
|
+
service): three phase children each spent about 17.5 seconds building the
|
|
345
|
+
TypeScript program to compute 118, 8, and 2 callee cache misses, and the
|
|
346
|
+
complexity phase held 1,975 parsed trees at exit because its per-definition
|
|
347
|
+
source-facts reads parsed every cold file synchronously.
|
|
348
|
+
- The prewarm now persists every file's source-facts product in collecting,
|
|
349
|
+
yielding batches, and its callee pass covers the production-callable
|
|
350
|
+
definition sets the phases use (which add interface and class member
|
|
351
|
+
fallback rows the catalog does not carry), so phase children read the
|
|
352
|
+
cache and parse nothing.
|
|
353
|
+
|
|
354
|
+
### Setup reports what is actually missing
|
|
355
|
+
|
|
356
|
+
- A cold start on a fresh home directory (npm 11, no caches, a fresh clone)
|
|
357
|
+
installed in 7 seconds, indexed 7,780 TypeScript files in 123 seconds, ran
|
|
358
|
+
the full health audit, and answered search, evidence, and diff-impact in
|
|
359
|
+
about 2 seconds each. Its verdict was still `partial`, because setup
|
|
360
|
+
reported two consent skips for things that were not missing and counted
|
|
361
|
+
demand-started watching and an absent Rust toolchain as unavailable.
|
|
362
|
+
- Without consent, the AST parser step now probes which selected-language
|
|
363
|
+
parsers load and reports "nothing to install" when all do; the consent skip
|
|
364
|
+
remains only for a parser that does not load, naming it. Indexer
|
|
365
|
+
remediation reports "nothing to install" when every detected language has a
|
|
366
|
+
runnable indexer. Demand-started watching (the default) is a configured
|
|
367
|
+
state, and its smoke row and the absent-Rust row are optional, so a
|
|
368
|
+
TypeScript repository with everything present reaches `ready`.
|
|
369
|
+
- A wait on a path-change wake also compares each watched path's
|
|
370
|
+
modification time with the last one it settled on, so a change that
|
|
371
|
+
already happened resolves immediately even when the filesystem event
|
|
372
|
+
arrives late.
|
|
373
|
+
|
|
374
|
+
### Children keep the parent's NODE_OPTIONS
|
|
375
|
+
|
|
376
|
+
- Isolated analysis children (the health prewarm, health phases, diff-impact
|
|
377
|
+
batches) replaced `NODE_OPTIONS` wholesale with their heap bound, dropping
|
|
378
|
+
any `--require` preload, inspector flag, or user-set option the parent
|
|
379
|
+
carried. They now replace only the heap bound, the way reindex already did;
|
|
380
|
+
the helper is shared.
|
|
381
|
+
- The reindex runtime-boundary sweep collects before each of its event-loop
|
|
382
|
+
turns, so the trees it parses are freed as it goes.
|
|
383
|
+
- Callee cache scans now record a sample of miss identities in the profile,
|
|
384
|
+
so a profile can say which definitions a warm pass did not cover.
|
|
385
|
+
- The CLI-spawning contract suites allow 30 seconds per test; they spawn the
|
|
386
|
+
built CLI and timed out under load at the 5-second default.
|
|
387
|
+
|
|
388
|
+
### Whole-project parses no longer hold every syntax tree at once
|
|
389
|
+
|
|
390
|
+
- A parsed Tree-sitter tree is native memory behind a wrapper of a few bytes.
|
|
391
|
+
V8 never feels its weight, so it rarely collects the wrapper, and the
|
|
392
|
+
finalizer that frees the tree runs only after a collection has found the
|
|
393
|
+
wrapper dead and the event loop has turned. A whole-project parse therefore
|
|
394
|
+
held every tree it made: on a 7,800-file repository the full-health prewarm
|
|
395
|
+
reached 14,000 trees and ~8.5 GB outside the V8 heap while `heapUsed` sat at
|
|
396
|
+
160 MB. Measured on the same box, forcing a full collection at each batch
|
|
397
|
+
boundary and yielding once keeps a 3,000-file sweep flat at 139 MB across
|
|
398
|
+
three passes; a minor collection frees almost nothing.
|
|
399
|
+
- The prewarm now persists every file's import and re-export products in
|
|
400
|
+
batches that end with a full collection and one event-loop turn, before the
|
|
401
|
+
semantic provider builds, so the provider's synchronous dependency-graph
|
|
402
|
+
build reads products and parses nothing. A non-incremental reindex does the
|
|
403
|
+
same for the previous generation before the affected-set shadow builds its
|
|
404
|
+
graph, and only when that shadow will build one.
|
|
405
|
+
- The native-pressure estimate behind every parse assumed a tree costs 10x its
|
|
406
|
+
source bytes; measured, it is about 23x, so forced collections came several
|
|
407
|
+
gigabytes too late. The estimate is now 24x.
|
|
408
|
+
- The prewarm's first stage read every file's definitions synchronously, and a
|
|
409
|
+
file whose definition product is cold is parsed to compute them: 6,978 trees
|
|
410
|
+
were alive 43 seconds in, before any other stage ran, setting a ~4.7 GB
|
|
411
|
+
high-water mark the process never gave back. Candidate definitions are now
|
|
412
|
+
read in the same collecting, yielding batches; the per-file product they
|
|
413
|
+
persist makes the health phases' later synchronous reads parse nothing.
|
|
414
|
+
- The dependency-graph sweep parsed each file twice, once for imports and
|
|
415
|
+
once for re-exports; the import parse now goes through the exact-bytes tree
|
|
416
|
+
cache, so the re-export pass reuses the same tree.
|
|
417
|
+
- Freed tree memory stays reusable inside the process but is not returned to
|
|
418
|
+
the OS by glibc; the resident high-water mark is now set by one batch plus
|
|
419
|
+
the bounded tree cache rather than by the repository.
|
|
420
|
+
|
|
421
|
+
### Faster full health and a durable dossier
|
|
422
|
+
|
|
423
|
+
- `health --full` phases run in a memory-gated pool instead of strictly one
|
|
424
|
+
at a time: one isolated child per ~7 GiB of half the machine's memory, at
|
|
425
|
+
most four (`SCIP_QUERY_HEALTH_FULL_CONCURRENCY` still overrides). A 61 GiB
|
|
426
|
+
host runs four phases at once; a 16 GiB laptop keeps one. The pool starts
|
|
427
|
+
the heaviest phases first (wrapper candidates, complexity hotspots,
|
|
428
|
+
passthrough candidates, stale abstractions, similar/extract), so the last
|
|
429
|
+
worker does not finish alone. Measured on a 7,800-file repository with
|
|
430
|
+
warm caches and no watch service: 4:20 → 1:29, peak 5.8 GiB.
|
|
431
|
+
- The health dossier is published atomically, so an interrupted setup leaves
|
|
432
|
+
the previous complete dossier in place instead of a half-written one. Each
|
|
433
|
+
audit first records an attempt marker (`health-dossier.attempt.json`, run
|
|
434
|
+
id, start time, index generation) that is cleared only after the dossier
|
|
435
|
+
is written; a later setup reports an interrupted audit instead of letting
|
|
436
|
+
the older dossier pass as current, and the dossier names the index
|
|
437
|
+
generation and attempt it completed.
|
|
438
|
+
- The project-wide TypeScript reference map assembled from persisted
|
|
439
|
+
fragments is now kept per database for the life of the process, so a child
|
|
440
|
+
that runs several health phases (or `isolated`, `dead`, and consumer
|
|
441
|
+
evidence in one command) builds it once instead of once per consumer.
|
|
442
|
+
|
|
443
|
+
### Architecture policy is clean again
|
|
444
|
+
|
|
445
|
+
- The file-access recorder moved from `platform` to `domain` (it has no
|
|
446
|
+
dependencies and is consumed by analysis, symbols, and source code), and the
|
|
447
|
+
compiler-shard planner reads bounded files through the `platform` re-export,
|
|
448
|
+
so `scip-query architecture` reports no forbidden edges and the setup-installed
|
|
449
|
+
Stop hook passes again. Both edges were introduced by the 0.22.0 performance
|
|
450
|
+
work.
|
|
451
|
+
|
|
452
|
+
### Setup no longer replaces symbolic links or misreports configured projects
|
|
453
|
+
|
|
454
|
+
- `setup` (and every other revision-aware file mutation: agent guidance,
|
|
455
|
+
hook files, config, suppressions) now writes through a symbolic link to its
|
|
456
|
+
target instead of renaming a regular file over the link. A repository with
|
|
457
|
+
`CLAUDE.md -> AGENTS.md` keeps the link and receives the guidance block once,
|
|
458
|
+
in `AGENTS.md`; previously the link was silently replaced by a regular copy
|
|
459
|
+
(git mode 120000 → 100644). A dangling link is resolved to the path it names
|
|
460
|
+
so the file is created there.
|
|
461
|
+
- A TypeScript-only project no longer gets a `partial` setup verdict because
|
|
462
|
+
the Rust semantic session was inapplicable, and `watch.enabled=false` or
|
|
463
|
+
`watch.autoStart=false` is reported as a configured state rather than
|
|
464
|
+
incomplete setup. Skips that still mean incomplete setup (no supported
|
|
465
|
+
language, config errors, an incomplete initial refresh) keep `partial`.
|
|
466
|
+
|
|
467
|
+
### Bounded full-health semantic prewarm
|
|
468
|
+
|
|
469
|
+
- `health --full` no longer assembles the project-wide TypeScript reference
|
|
470
|
+
map inside its isolated prewarm child. The prewarm persists reference
|
|
471
|
+
fragments file by file (existence-checked without reading payloads, written
|
|
472
|
+
one provider batch at a time), materializes the remaining per-definition
|
|
473
|
+
references in persisted file batches, and yields between batches so native
|
|
474
|
+
memory is reclaimed. Those fragment rows are the evidence the health phases
|
|
475
|
+
read, so the warm state is unchanged; only the transient multi-gigabyte map
|
|
476
|
+
is gone. On a ~7,800-file TypeScript repository with no watch service
|
|
477
|
+
running (for example during `setup --health`), the child previously grew
|
|
478
|
+
past 17 GiB and aborted with SIGABRT.
|
|
479
|
+
- Heap-pressure relief forces a collection before deciding to discard the
|
|
480
|
+
compiler session, so batch garbage is no longer mistaken for live pressure,
|
|
481
|
+
and the release threshold is 75% of the isolated heap.
|
|
482
|
+
- The prewarm child's default heap is derived from physical memory (half of
|
|
483
|
+
RAM, bounded to 2–8 GiB) instead of a fixed 8 GiB;
|
|
484
|
+
`SCIP_QUERY_HEALTH_SEMANTIC_PREWARM_HEAP_MB` still overrides it.
|
|
485
|
+
- Every consumer of TypeScript reference fragments (health phases,
|
|
486
|
+
`diff-impact` batches, the prewarm) now relieves heap pressure between
|
|
487
|
+
persisted fragment batches: measure after a forced collection, and discard
|
|
488
|
+
the in-process compiler session when live state still exceeds 75% of the
|
|
489
|
+
isolated heap, so the next batch resolves a fresh session. A cold cache with
|
|
490
|
+
no watch service previously failed `diff-impact` on a large repository with
|
|
491
|
+
"JavaScript heap out of memory" because one batch child hosted the whole
|
|
492
|
+
compiler program without ever releasing it.
|
|
493
|
+
- `diff-impact` batch children also run with a bounded isolated heap (half of
|
|
494
|
+
RAM, bounded to 2–6 GiB; `SCIP_QUERY_DIFF_IMPACT_BATCH_HEAP_MB` overrides
|
|
495
|
+
it) instead of Node's default old-space limit, and get the full-health phase
|
|
496
|
+
time budget (10 minutes; `SCIP_QUERY_DIFF_IMPACT_BATCH_TIMEOUT_MS` overrides
|
|
497
|
+
it) instead of the generic 3-minute analysis timeout.
|
|
498
|
+
- A diff-impact batch no longer computes a whole project's reference fragments
|
|
499
|
+
in-process. When more than 256 files have cold fragments and no watch
|
|
500
|
+
service is running, the semantic consumer tier is reported as failed with
|
|
501
|
+
the remedy (`scip-query health --full` once, or `scip-query watch
|
|
502
|
+
--daemon`) and the source-fallback tier still runs; on a 7,800-file
|
|
503
|
+
repository the in-process computation took longer than the 10-minute batch
|
|
504
|
+
budget while the service or the prewarm warms the same rows in the
|
|
505
|
+
background. With warm fragments the same diff-impact takes seconds.
|
|
506
|
+
|
|
7
507
|
## [0.22.0]
|
|
8
508
|
|
|
9
509
|
### Bounded indexing for large TypeScript repositories
|
package/README.md
CHANGED
|
@@ -37,6 +37,17 @@ cd your-repository
|
|
|
37
37
|
scip-query setup
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
npm 11 and newer skip dependency install scripts by default and print an
|
|
41
|
+
`install-scripts` warning listing them. For scip-query every listed script is
|
|
42
|
+
a prebuild check (`node-gyp-build`) or the package's own install hint; the
|
|
43
|
+
Tree-sitter grammars and SQLite binding ship prebuilt binaries for macOS,
|
|
44
|
+
Linux, and Windows, so nothing needs to compile and the warning can be
|
|
45
|
+
ignored. The one grammar without prebuilds, Kotlin, falls back to text
|
|
46
|
+
parsing unless a C toolchain is present and the scripts are allowed. To
|
|
47
|
+
silence the warning for global installs, run the `npm config set
|
|
48
|
+
allow-scripts=... --location=user` command npm prints; `--allow-scripts` is
|
|
49
|
+
rejected inside a project directory by design.
|
|
50
|
+
|
|
40
51
|
Setup detects supported languages, installs or checks their indexers, builds
|
|
41
52
|
the local index, installs the bundled skills, and writes concise agent guidance.
|
|
42
53
|
When the repository declares valid architecture rules, setup also installs one
|
|
@@ -295,6 +306,8 @@ If output prints `Continue exactly:`, run the emitted command unchanged until
|
|
|
295
306
|
transport is complete. Transport completion means every rendered character was
|
|
296
307
|
retrieved; it does not make bounded analysis exhaustive.
|
|
297
308
|
|
|
309
|
+
Output redirected to a regular file (`scip-query health --full > report.txt`) is written in full; page cursors apply to terminals and pipes, where the reader is an agent whose context the page budget protects.
|
|
310
|
+
|
|
298
311
|
Use `--full` only when complete command coverage can change a decision. Always
|
|
299
312
|
read a command's coverage note before claiming that every caller, consumer, or
|
|
300
313
|
finding was considered.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as t}from"./chunk-
|
|
1
|
+
import{d as t}from"./chunk-3LO4FST5.js";import"./chunk-YUKYB54I.js";import"./chunk-BJT7LSPK.js";import"./chunk-YXPUP5G2.js";import"./chunk-MWN53KRN.js";import"./chunk-IW5XQG5G.js";import"./chunk-7HXT6YLU.js";import"./chunk-7F45LJKI.js";import{writeFileSync as s}from"fs";import{workerData as o}from"worker_threads";var r=o;try{let e=t({projectRoot:r.projectRoot,dbPath:r.dbPath,tsconfig:r.tsconfig,vueFiles:r.vueFiles,tasks:r.tasks});s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!0,result:e}))}catch(e){s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!1,error:e instanceof Error?e.message:String(e)}))}
|
|
2
2
|
//# sourceMappingURL=augment-vue-worker.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a,b}from"./chunk-NGKBOT6G.js";import"./chunk-MTDBHTSF.js";import"./chunk-2VAHDDLM.js";import"./chunk-YXPUP5G2.js";import"./chunk-BL6DCHQP.js";import"./chunk-ATXPTSEI.js";import"./chunk-CKBUBRYD.js";import"./chunk-IW5XQG5G.js";import"./chunk-H5EXS3HM.js";import"./chunk-HGFDYOVB.js";import"./chunk-7HXT6YLU.js";import"./chunk-7F45LJKI.js";export{a as byKind,b as kindCounts};
|
|
2
|
+
//# sourceMappingURL=by-kind-H3P6BR5G.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a}from"./chunk-ZGIHTH27.js";import"./chunk-7KCZELVM.js";import"./chunk-BGBBVSH4.js";import"./chunk-AADQLOQ4.js";import"./chunk-MTDBHTSF.js";import"./chunk-WDSFQDPN.js";import"./chunk-ANLNLY66.js";import"./chunk-JCSAZ35V.js";import"./chunk-FI7VGOR4.js";import"./chunk-WRQXLNYE.js";import"./chunk-L7KTFEAV.js";import"./chunk-2USA3S3P.js";import"./chunk-BJT7LSPK.js";import"./chunk-5BIKR67W.js";import"./chunk-CZW5MZ5B.js";import"./chunk-F4FNK44D.js";import"./chunk-ODPDP7A4.js";import"./chunk-MOKUWRHO.js";import"./chunk-FVFDOIM3.js";import"./chunk-2VAHDDLM.js";import"./chunk-YXPUP5G2.js";import"./chunk-BL6DCHQP.js";import"./chunk-EHYDXE3Z.js";import"./chunk-2OOY75BW.js";import"./chunk-U6KCHXJ4.js";import"./chunk-T3I6NHBH.js";import"./chunk-ATXPTSEI.js";import"./chunk-CKBUBRYD.js";import"./chunk-IW5XQG5G.js";import"./chunk-T3CZAZSI.js";import"./chunk-B3PYOSCX.js";import"./chunk-H5EXS3HM.js";import"./chunk-HGFDYOVB.js";import"./chunk-JFMEXGFE.js";import"./chunk-7HXT6YLU.js";import"./chunk-7F45LJKI.js";export{a as callGraph};
|
|
2
|
+
//# sourceMappingURL=call-graph-VTG2CUOQ.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a callee edge came from. `scip-occurrence` is the indexer's own
|
|
3
|
+
* binding at the call line (compiler-resolved at index time); `ast-callsite`
|
|
4
|
+
* is a leaf-name resolution over imports and local receivers; the other two
|
|
5
|
+
* are the on-demand compiler and chunk co-occurrence paths.
|
|
6
|
+
*/
|
|
7
|
+
type CalleeEvidenceSource = 'scip-occurrence' | 'ast-callsite' | 'semantic-callee' | 'scip-chunk';
|
|
8
|
+
interface CalleeRow {
|
|
9
|
+
symbol: string;
|
|
10
|
+
file: string;
|
|
11
|
+
chunkId: number;
|
|
12
|
+
source: CalleeEvidenceSource;
|
|
13
|
+
/** Zero-based source line of the call expression when retained by the evidence source. */
|
|
14
|
+
callsiteLine?: number;
|
|
15
|
+
/** `jsx-render` when the edge is a rendered component element rather than a call expression. */
|
|
16
|
+
kind?: 'jsx-render';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type { CalleeRow as C, CalleeEvidenceSource as a };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as L}from"./chunk-BGBBVSH4.js";import{a as I}from"./chunk-BJWFVAA5.js";import{i as fe}from"./chunk-U3SXIMII.js";import{b as te,d as oe,e as re,f as ae,g as se,h as le,j as T,k as ce,l as _}from"./chunk-SKKXTABJ.js";import{d as ie}from"./chunk-KK7GPALL.js";import{f as ee,h as ne}from"./chunk-NJQISBL4.js";import{b as C}from"./chunk-FLMTCX5R.js";import{b as Q}from"./chunk-BOW7SSQH.js";import{a as U,e as W,i as P,j as A,l as X,m as Y,v,w as J,x as Z,y as $,z as N}from"./chunk-C7C6AKAT.js";import{t as z,v as S}from"./chunk-RBAD4GJ2.js";import{A as y,B as O,O as H,a as M}from"./chunk-ZLMXIQLC.js";import{h as B,m as D}from"./chunk-ETC674NS.js";import{d as w,y as G}from"./chunk-KNLQGXVH.js";function j(n,e,t={}){let i=new Map;if(e&&e.length===0)return i;let r=M(n,{includeIgnored:!1}),o=ae(n),a=e??J(n),f=new Set(a.map(m=>m.symbolId)),c=Ce(a);return ge(n,i,r,o,f,c),he(n,i,a,f),ve(n,i,r,o,f,c),t.semantic!==!1&&t.semanticEvidence&&Le(i,t.semanticEvidence.callerMap(n,Ie(a))),i}function ge(n,e,t,i,r,o){for(let a of t){if(!y(a))continue;let f=z(n,a);if(f)for(let c of f){if(o&&!o.has(c.calleeLeaf))continue;let m=oe(a,i.get(c.calleeLeaf)??[]);if(!m||m.length===0)continue;let s=re(n,a,m,c.memberAccess,c.calleeQualifier);s&&r.has(s.symbolId)&&s.file!==a&&K(e,s.symbolId,a)}}}function he(n,e,t,i){let r=Me(t);for(let o of Re(n,i))n.isIgnored(o.relative_path)||De(o,r.get(o.symbol_id))||K(e,o.symbol_id,o.relative_path)}function Re(n,e){return ie(n,e?[...e]:void 0)}function Me(n){let e=new Map;for(let t of n)e.set(t.symbolId,{docId:t.documentId,startLine:t.startLine,endLine:t.endLine});return e}function De(n,e){return!!e&&e.docId===n.document_id&&n.chunk_start>=e.startLine&&n.chunk_end<=e.endLine}function ve(n,e,t,i,r,o){for(let a of t){if(y(a)!=="rust")continue;let f=S(n,a,{includeRustAttributeNames:!0});if(f.length!==0)for(let{name:c}of f){if(o&&!o.has(c))continue;let m=i.get(c);if(m)for(let s of m)r.has(s.symbolId)&&s.file!==a&&K(e,s.symbolId,a)}}}function K(n,e,t){let i=n.get(e);i||(i=new Set,n.set(e,i)),i.add(t)}function Ce(n){let e=new Set;for(let t of n){let i="leaf"in t&&typeof t.leaf=="string"?t.leaf:"symbol"in t&&typeof t.symbol=="string"?W(t.symbol):"";i&&e.add(i)}return e.size>0?e:null}function Ie(n){return n.filter(e=>"relativePath"in e&&"symbol"in e&&"leaf"in e)}function Le(n,e){for(let[t,i]of e){let r=n.get(t);r||(r=new Set,n.set(t,r));for(let o of i)r.add(o)}}var Fe=w("cross-file-caller-files",{clearGroups:["whole-project","source-file"]}),xe=w("source-fallback-caller-files",{clearGroups:["whole-project","source-file"]});function ue(n,e,t){let i=e.filter(o=>!n.has(o.symbolId));if(i.length>0){let o=t(i);for(let a of i)n.set(a.symbolId,o.get(a.symbolId)??new Set)}let r=new Map;for(let o of e){let a=n.get(o.symbolId);a&&a.size>0&&r.set(o.symbolId,new Set(a))}return r}function q(n,e,t={}){if(e===void 0)return j(n,e,t);let i=ue(Fe.get(n,()=>new Map),e,r=>j(n,r,{semantic:!1}));return t.semantic===!1||!t.semanticEvidence?i:me(i,t.semanticEvidence.callerMap(n,e.filter(r=>"relativePath"in r&&"symbol"in r&&"leaf"in r)))}function V(n,e,t={}){return t.skipPath?_(n,e,t):ue(xe.get(n,()=>new Map),e,i=>_(n,i))}function de(n,e,t={}){let i=q(n,e,{semantic:t.semantic,semanticEvidence:t.semanticEvidence});return t.sourceFallback===!1?i:me(i,V(n,e))}function me(n,e){let t=new Map;for(let[i,r]of n)t.set(i,new Set(r));for(let[i,r]of e){let o=t.get(i)??new Set;for(let a of r)o.add(a);t.set(i,o)}return t}function be(n,e,t){let i=e.identifierResolution==="strict"?T:ce,r=e.candidateNames?se(e.candidateNames):null,o=0,a=0,f=0,c=0,m="";for(let s of e.paths)if(o+=1,m=s,!(!y(s)&&!(e.includeVueSfc&&O(s)))&&!n.isIgnored(s)&&!e.skipPath?.(s))try{if(r&&!le(B(n,s),r))continue;a+=1;let h=(u,b,k,g)=>{if(e.candidateNames&&!e.candidateNames.has(u))return;f+=1;let R=e.resolveTargets?e.resolveTargets({sourceFile:s,name:u,kind:b,defaultTargets:g}):g();for(let E of R)c+=1,t({sourceFile:s,name:u,target:E,occurrences:k,kind:b})},x=te(n,s);for(let[u,b]of x)h(u,"identifier",b.length,()=>i(n,s,u));for(let u of S(n,s,{includeCrossLanguageDispatchNames:e.includeCrossLanguageDispatchNames,includeRustAttributeNames:e.includeRustAttributeNames})){let b=u.kind==="cross-language-dispatch"?()=>T(n,s,u.name):()=>i(n,s,u.name);h(u.name,u.kind,u.occurrences,b)}}finally{e.afterPath?.(s),o%10===0&&G("source-reference-scan.progress",()=>{},()=>({scannedPaths:o,currentPath:m,candidateMatchedPaths:a,visitedNames:f,visitedHits:c}))}}function pe(n,e={}){let{scope:t,files:i,minLoc:r=1,maxLoc:o=Number.POSITIVE_INFINITY,excludeSymbol:a,excludeEntrySurfaces:f=!1,excludeTypesFiles:c=!1,excludeRootedSymbols:m=!1,requireFunctionLikeSymbol:s=!1,requireCallableSymbol:F=!1,excludeRustTraitImplMembers:h=!1,includeSuppressed:x=!1,sortByLocDesc:u=!1}=e,b=[],k=ke(n,{scope:t,files:i,requireFunctionLikeSymbol:s,requireCallableSymbol:F}),g=new Map,R=new Map,E=l=>{let d=g.get(l);if(d!==void 0)return d;let p=ee(n,l);return g.set(l,p),p},Se=l=>{let d=R.get(l);if(d!==void 0)return d;let p=C(l);return R.set(l,p),p};for(let l of k){let d=l.relativePath;if(n.isIgnored(d)||f&&E(d)||!Ee(l,{requireFunctionLikeSymbol:s,requireCallableSymbol:F})||a!==void 0&&l.symbol===a)continue;let p=L(l);p<r||p>o||c&&we(d)||m&&ne(n,l.symbol,d)||h&&X(l.symbol)||Se(d)!=="test"&&(Y(l.symbol)||!x&&D(n,d,l.startLine)||b.push(l))}return u?b.sort((l,d)=>L(d)-L(l)):b}function ke(n,e){return e.files!==void 0?[...new Set(e.files.map(i=>i.replace(/\\/g,"/")))].sort().filter(i=>!e.scope||i.includes(e.scope)).flatMap(i=>v(n,i)):e.requireCallableSymbol?N(n,{scope:e.scope,symbolMatches:P,sqlPrefilter:"callable"}):e.requireFunctionLikeSymbol?N(n,{scope:e.scope,symbolMatches:A,sqlPrefilter:"function-like"}):$(n,e.scope)}function Ee(n,e){return e.requireCallableSymbol?P(n.symbol):e.requireFunctionLikeSymbol?A(n.symbol):n.isFunctionLike}function we(n){return(n.split("/").pop()??"").includes("types")}var ye=class{constructor(e){this.db=e}db;scopedDefinitions(e){return Z(this.db,e)}definitionsForFile(e){return v(this.db,e)}productionCallableDefinitions(e={}){return pe(this.db,e)}calleeMap(e,t={}){return fe(this.db,e,{...t,semanticEvidence:I})}crossFileCallerMap(e,t={}){return q(this.db,e,{...t,semanticEvidence:I})}sourceFallbackCallerFiles(e,t={}){return V(this.db,e,t)}callerFileMap(e,t={}){return de(this.db,e,{...t,semanticEvidence:I})}frameworkReferencedSymbolIds(e){let t=new Map;for(let r of e){if(!r.leaf)continue;let o=t.get(r.leaf)??[];o.push(r.symbolId),t.set(r.leaf,o)}let i=new Set;for(let r of M(this.db,{includeIgnored:!1}))if(y(r)==="rust")for(let{name:o}of S(this.db,r,{includeRustAttributeNames:!0}))for(let a of t.get(o)??[])i.add(a);return i}symbolsWithNonSelfCallees(e,t={}){if(e.length===0)return new Set;let i=new Map(e.map(o=>[o.symbolId,o.symbol])),r=this.calleeMap(e,t);return new Set([...r.entries()].filter(([o,a])=>{let f=i.get(o);return a.some(c=>c.symbol!==f)}).map(([o])=>o))}fileDependencyGraph(e){return Q(this.db,e)}fileKind(e){return C(e)}hasSuppressionComment(e){return D(this.db,e.relativePath,e.startLine)}sourceFiles(){return H(this.db)}scanSourceReferences(e,t){be(this.db,e,t)}callableSignature(e){let t=U(this.db).forFile(e.relativePath,{facts:!0}).facts?.callables.find(i=>i.startLine===e.startLine&&i.endLine===e.endLine);return t?{paramCount:t.paramCount}:null}};export{V as a,me as b,ye as c};
|
|
2
|
+
//# sourceMappingURL=chunk-2BMSSRBH.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{e as i}from"./chunk-
|
|
1
|
+
import{e as i}from"./chunk-C7C6AKAT.js";import{a as o}from"./chunk-RBAD4GJ2.js";import{k as s}from"./chunk-ETC674NS.js";function u(r,e){let t=s(r,e.relativePath);if(t.length===0)return!1;let n=i(e.symbol);if(!n)return!1;let c=t.slice(Math.max(0,e.startLine-2),e.startLine+1).join(`
|
|
2
2
|
`),a=o(n);return new RegExp(`^\\s*export\\s+(?:default\\s+)?(?:(?:async\\s+)?function\\s+${a}\\b|(?:abstract\\s+)?class\\s+${a}\\b|(?:interface|type|enum|namespace|module)\\s+${a}\\b|(?:const|let|var)\\s+${a}\\b)`,"m").test(c)?!0:p(t,n)}function p(r,e){if(!e)return!1;let t=new RegExp(`^\\s*export\\s*\\{[^}\\n]*\\b${o(e)}\\b`);return r.some(n=>t.test(n))}export{u as a};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-2GJSD5GY.js.map
|