agentic-qe 3.15.11 → 3.15.13
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/.claude/hooks/aqe-hook.cjs +38 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +267 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-KCQDVYY2.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-TIDSQ3ZK.js → agent-booster-wasm-6RRQWMNE.js} +2 -2
- package/dist/cli/chunks/{agent-handler-G3EPBVA7.js → agent-handler-AOH6TV7W.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-ARC5C7GW.js → agent-memory-branch-2P54SF5N.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-SAQOHSGN.js +2 -0
- package/dist/cli/chunks/{arena-K4I4QDXB.js → arena-NSVFCAF5.js} +2 -2
- package/dist/cli/chunks/{arena-36DTATJV.js → arena-X6MOGQHA.js} +4 -4
- package/dist/cli/chunks/{audit-WQSJSJZF.js → audit-27DJLQNM.js} +3 -3
- package/dist/cli/chunks/base-WCACU3FN.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-BB4K67MT.js → better-sqlite3-BU5GXILS.js} +2 -2
- package/dist/cli/chunks/{brain-handler-CU3GOIU3.js → brain-handler-GTQNHHZS.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-NJQX7ZNB.js → branch-enumerator-5CLULOCU.js} +2 -2
- package/dist/cli/chunks/{browser-6YJF4FQW.js → browser-R4DMU3LN.js} +2 -2
- package/dist/cli/chunks/browser-workflow-G6IASEAP.js +2 -0
- package/dist/cli/chunks/{chunk-G4FAPO57.js → chunk-2G7TVT6W.js} +2 -2
- package/dist/cli/chunks/{chunk-HDNWSKHA.js → chunk-32ZMWEP3.js} +2 -2
- package/dist/cli/chunks/{chunk-FWSGPE3V.js → chunk-3AN5TNGD.js} +3 -3
- package/dist/cli/chunks/{chunk-X4J73KP3.js → chunk-3LJ7LQMV.js} +1 -1
- package/dist/cli/chunks/{chunk-3RHOPP7A.js → chunk-3QZEGE67.js} +1 -1
- package/dist/cli/chunks/{chunk-RBZCA7SD.js → chunk-3RZV5DGO.js} +2 -2
- package/dist/cli/chunks/{chunk-DDEOZPWJ.js → chunk-3Y2ROSCL.js} +2 -2
- package/dist/cli/chunks/{chunk-LD5CFK53.js → chunk-3Y7TJFHU.js} +2 -2
- package/dist/cli/chunks/{chunk-I36CRDHF.js → chunk-3YNLWPBF.js} +2 -2
- package/dist/cli/chunks/{chunk-ZMC543GI.js → chunk-42J34YG4.js} +2 -2
- package/dist/cli/chunks/{chunk-YNOCQ2SL.js → chunk-4OVC4RIL.js} +1 -1
- package/dist/cli/chunks/{chunk-2KFFEKSI.js → chunk-526QYFJU.js} +2 -2
- package/dist/cli/chunks/{chunk-LBX7M4LW.js → chunk-5FKWCZNF.js} +2 -2
- package/dist/cli/chunks/{chunk-OH5V5EJW.js → chunk-5K26BEYB.js} +2 -2
- package/dist/cli/chunks/{chunk-TCYSBC7Y.js → chunk-5MDERQH3.js} +1 -1
- package/dist/cli/chunks/{chunk-V5AADCBC.js → chunk-5VMAV6T6.js} +1 -1
- package/dist/cli/chunks/{chunk-YBBT3YYG.js → chunk-5ZGM3RMH.js} +1 -1
- package/dist/cli/chunks/{chunk-RTY7VSZB.js → chunk-6KATY3KS.js} +2 -2
- package/dist/cli/chunks/{chunk-LPU6PAJE.js → chunk-6Z7PRBSG.js} +2 -2
- package/dist/cli/chunks/{chunk-6NA3KZZT.js → chunk-72ASBE35.js} +7 -7
- package/dist/cli/chunks/{chunk-GBFUANTC.js → chunk-756CGMEH.js} +1 -1
- package/dist/cli/chunks/{chunk-UTTSH4NH.js → chunk-75RDHBAX.js} +3 -3
- package/dist/cli/chunks/{chunk-XGPTZUKQ.js → chunk-7CMTY45A.js} +2 -2
- package/dist/cli/chunks/{chunk-NC6K7SCQ.js → chunk-7JUC2MVZ.js} +2 -2
- package/dist/cli/chunks/{chunk-RTFKTKSO.js → chunk-7NA7JXNB.js} +2 -2
- package/dist/cli/chunks/{chunk-GWJWSLDA.js → chunk-7PLIEBY7.js} +2 -2
- package/dist/cli/chunks/{chunk-OURITHFV.js → chunk-7YTGHGK4.js} +2 -2
- package/dist/cli/chunks/{chunk-ITL3IN2E.js → chunk-A64JFBWI.js} +2 -2
- package/dist/cli/chunks/{chunk-OHR7C777.js → chunk-AL6FBH3E.js} +2 -2
- package/dist/cli/chunks/{chunk-5N25I53C.js → chunk-AQSVJNEH.js} +2 -2
- package/dist/cli/chunks/{chunk-FL32MTKT.js → chunk-ARJW4I2O.js} +2 -2
- package/dist/cli/chunks/{chunk-ZQHDA4O7.js → chunk-ASQYASNV.js} +1 -1
- package/dist/cli/chunks/{chunk-4HJKQIX5.js → chunk-BEGR4D6N.js} +2 -2
- package/dist/cli/chunks/{chunk-G77MLBDF.js → chunk-BK577VL7.js} +2 -2
- package/dist/cli/chunks/{chunk-NPZOBSAN.js → chunk-BLSLEVDI.js} +2 -2
- package/dist/cli/chunks/{chunk-R5LGV6GZ.js → chunk-BTVEYBW2.js} +2 -2
- package/dist/cli/chunks/{chunk-2CW7VRPH.js → chunk-C6JTLKG7.js} +5 -5
- package/dist/cli/chunks/{chunk-EWPUQCN4.js → chunk-C7JM7CD3.js} +2 -2
- package/dist/cli/chunks/{chunk-325QCVDI.js → chunk-CCMKSHAT.js} +2 -2
- package/dist/cli/chunks/{chunk-V7DA4HAK.js → chunk-CE7B5LU7.js} +1 -1
- package/dist/cli/chunks/{chunk-4RAQ7PJA.js → chunk-CM4LSLKR.js} +2 -2
- package/dist/cli/chunks/chunk-CRWPZT74.js +62 -0
- package/dist/cli/chunks/{chunk-U3LJNNVJ.js → chunk-CT6SAVXQ.js} +2 -2
- package/dist/cli/chunks/chunk-CV77DMDQ.js +2 -0
- package/dist/cli/chunks/{chunk-UMVSWQNB.js → chunk-DFUASIKA.js} +2 -2
- package/dist/cli/chunks/{chunk-KSE5TDM5.js → chunk-DLD7RUZ4.js} +2 -2
- package/dist/cli/chunks/{chunk-4MUBW4RT.js → chunk-DNDL7SOS.js} +2 -2
- package/dist/cli/chunks/{chunk-EJPK7OTR.js → chunk-DVGRPK7A.js} +2 -2
- package/dist/cli/chunks/{chunk-WCVCOT4E.js → chunk-E56B6IDX.js} +2 -2
- package/dist/cli/chunks/{chunk-7HEMJHPP.js → chunk-E7CLYGS7.js} +1 -1
- package/dist/cli/chunks/{chunk-R5GRABPQ.js → chunk-EXGMJFAT.js} +1 -1
- package/dist/cli/chunks/chunk-F3YS57NF.js +21 -0
- package/dist/cli/chunks/{chunk-I4K2HTQU.js → chunk-FZ76G4QJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4UX35V7P.js → chunk-G2Q66Z23.js} +2 -2
- package/dist/cli/chunks/{chunk-KJCIMNHS.js → chunk-G6WDYBLQ.js} +1 -1
- package/dist/cli/chunks/{chunk-VWUZSNVC.js → chunk-G77ERMUD.js} +1 -1
- package/dist/cli/chunks/{chunk-FZHSG75I.js → chunk-GB6HBNH2.js} +2 -2
- package/dist/cli/chunks/{chunk-KDI5JOYZ.js → chunk-GHM6MQNK.js} +2 -2
- package/dist/cli/chunks/{chunk-H7BLYMNU.js → chunk-GHY6Z6KO.js} +5 -5
- package/dist/cli/chunks/{chunk-TFW7CCKS.js → chunk-GII6UM3F.js} +1 -1
- package/dist/cli/chunks/{chunk-DOBZPSKE.js → chunk-GU5HNCWI.js} +1 -1
- package/dist/cli/chunks/{chunk-AFFN6E6Q.js → chunk-H4GG2NLO.js} +2 -2
- package/dist/cli/chunks/{chunk-7R5HC56U.js → chunk-H4H2YSFH.js} +1 -1
- package/dist/cli/chunks/{chunk-J4JMCZVA.js → chunk-HD7YIFOI.js} +2 -2
- package/dist/cli/chunks/{chunk-5MTWCCZJ.js → chunk-HOAJUIBQ.js} +2 -2
- package/dist/cli/chunks/{chunk-T5KHJ3J7.js → chunk-HQZGPJYG.js} +2 -2
- package/dist/cli/chunks/{chunk-VEEYL2CZ.js → chunk-HZ5NXFXH.js} +2 -2
- package/dist/cli/chunks/{chunk-LQ4NUC6Q.js → chunk-I3C7JOXC.js} +2 -2
- package/dist/cli/chunks/{chunk-Z2EA7A4Z.js → chunk-IC3TQEOA.js} +1 -1
- package/dist/cli/chunks/{chunk-E44NNCEU.js → chunk-IJUHSJ2U.js} +2 -2
- package/dist/cli/chunks/{chunk-EH2S6AOR.js → chunk-J2ZIFFM6.js} +2 -2
- package/dist/cli/chunks/{chunk-GVKVJJQX.js → chunk-JGZ722G3.js} +2 -2
- package/dist/cli/chunks/{chunk-EK5GMOSO.js → chunk-JQGMW45H.js} +1 -1
- package/dist/cli/chunks/{chunk-XGBU3KEM.js → chunk-JRRXCODW.js} +2 -2
- package/dist/cli/chunks/{chunk-5WYZHDIZ.js → chunk-K3TLLJMX.js} +1 -1
- package/dist/cli/chunks/{chunk-LXQ3B4RY.js → chunk-K4CZA77U.js} +2 -2
- package/dist/cli/chunks/chunk-K65CGKLD.js +8 -0
- package/dist/cli/chunks/{chunk-HFFPYC4G.js → chunk-KADFXPPN.js} +2 -2
- package/dist/cli/chunks/{chunk-APPZATXA.js → chunk-KB56CPU4.js} +2 -2
- package/dist/cli/chunks/{chunk-25P77WA5.js → chunk-KCW47QR5.js} +1 -1
- package/dist/cli/chunks/{chunk-WM3SRRA6.js → chunk-KDNJ4F3P.js} +2 -2
- package/dist/cli/chunks/{chunk-5ERFHEEE.js → chunk-KDVZND5Q.js} +1 -1
- package/dist/cli/chunks/{chunk-YOCULVHR.js → chunk-KUAKV3IW.js} +1 -1
- package/dist/cli/chunks/{chunk-M5XYIQYZ.js → chunk-KV4T4MXK.js} +2 -2
- package/dist/cli/chunks/{chunk-MIK4RBEH.js → chunk-KWYH3FI4.js} +1 -1
- package/dist/cli/chunks/{chunk-UKKYMW3S.js → chunk-LFJALJOA.js} +2 -2
- package/dist/cli/chunks/{chunk-K7V2WZNF.js → chunk-LL7LDPXS.js} +1 -1
- package/dist/cli/chunks/{chunk-55CH76ZO.js → chunk-LUZNKJE6.js} +3 -3
- package/dist/cli/chunks/{chunk-OV5RPLKV.js → chunk-LWR3FV3Y.js} +2 -2
- package/dist/cli/chunks/{chunk-SMVVAVN2.js → chunk-LZYQHVD4.js} +2 -2
- package/dist/cli/chunks/{chunk-672XOJDG.js → chunk-M6AAGIG7.js} +1 -1
- package/dist/cli/chunks/{chunk-WCAVIJ64.js → chunk-MAMQA43L.js} +1 -1
- package/dist/cli/chunks/chunk-MB46UBGY.js +3 -0
- package/dist/cli/chunks/{chunk-AP3ADWDK.js → chunk-MFW5HSG4.js} +2 -2
- package/dist/cli/chunks/{chunk-NKTWKYHB.js → chunk-MGZ5FJUW.js} +2 -2
- package/dist/cli/chunks/{chunk-ERN43HOX.js → chunk-MVVB7C2E.js} +410 -410
- package/dist/cli/chunks/{chunk-57LNKSW7.js → chunk-N4CYAKOX.js} +2 -2
- package/dist/cli/chunks/chunk-NT4DBXSX.js +2 -0
- package/dist/cli/chunks/{chunk-BZPE3LDO.js → chunk-NU3W5WFT.js} +2 -2
- package/dist/cli/chunks/chunk-NURIILUB.js +2 -0
- package/dist/cli/chunks/{chunk-ITPGWGQS.js → chunk-NW7IBHJA.js} +4 -4
- package/dist/cli/chunks/{chunk-OD5D4LSZ.js → chunk-NZ3GUMB2.js} +2 -2
- package/dist/cli/chunks/{chunk-35M2X3C5.js → chunk-NZD4DPSU.js} +2 -2
- package/dist/cli/chunks/{chunk-EIDJNT5C.js → chunk-O6FGXMHD.js} +1 -1
- package/dist/cli/chunks/{chunk-OYJC3YON.js → chunk-OCAEXYFA.js} +2 -2
- package/dist/cli/chunks/{chunk-Y7B5EUIJ.js → chunk-OFACHK5O.js} +2 -2
- package/dist/cli/chunks/{chunk-5MNASJOH.js → chunk-P7A4NKTZ.js} +2 -2
- package/dist/cli/chunks/{chunk-M7XFBSIK.js → chunk-PB6J6HAA.js} +2 -2
- package/dist/cli/chunks/{chunk-5HQP4SLM.js → chunk-PHP5UBT4.js} +2 -2
- package/dist/cli/chunks/{chunk-KXS3Y2AX.js → chunk-PIDQVU3L.js} +2 -2
- package/dist/cli/chunks/{chunk-4UBVAJFO.js → chunk-PSFSPGUD.js} +2 -2
- package/dist/cli/chunks/chunk-PT4FMJPQ.js +3 -0
- package/dist/cli/chunks/{chunk-HDJUYAZG.js → chunk-Q3UDLV5Z.js} +1 -1
- package/dist/cli/chunks/{chunk-CIAL4YRY.js → chunk-QDEJ4CI2.js} +2 -2
- package/dist/cli/chunks/{chunk-S6IYEBAI.js → chunk-QPNG5ZN2.js} +2 -2
- package/dist/cli/chunks/{chunk-YPX2TV3M.js → chunk-R7SYRCRP.js} +1 -1
- package/dist/cli/chunks/{chunk-XNLIWQYE.js → chunk-RF7HWBHN.js} +2 -2
- package/dist/cli/chunks/{chunk-5YLOLACR.js → chunk-RFNW2LGD.js} +2 -2
- package/dist/cli/chunks/{chunk-2VLYUF7U.js → chunk-S5AZCIZS.js} +2 -2
- package/dist/cli/chunks/{chunk-ETVAYGCB.js → chunk-SE4VNN4I.js} +3 -3
- package/dist/cli/chunks/{chunk-E6PF35JZ.js → chunk-SG3NX7QE.js} +2 -2
- package/dist/cli/chunks/{chunk-VYTILW4R.js → chunk-SSU73QAX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZP75ASUU.js → chunk-SVLQRAMF.js} +1 -1
- package/dist/cli/chunks/{chunk-JGJXXAS6.js → chunk-SYV2V3PL.js} +4 -4
- package/dist/cli/chunks/{chunk-4RH5I24Q.js → chunk-T3PGQFDI.js} +2 -2
- package/dist/cli/chunks/{chunk-O4JAKWWM.js → chunk-TCBBNUBP.js} +17 -17
- package/dist/cli/chunks/{chunk-QDESWOZP.js → chunk-TOQWL2ZF.js} +2 -2
- package/dist/cli/chunks/{chunk-NTB342NJ.js → chunk-TSQC2KKZ.js} +4 -4
- package/dist/cli/chunks/{chunk-NQZNMCZU.js → chunk-TWDW32W2.js} +2 -2
- package/dist/cli/chunks/{chunk-CO3DX2AX.js → chunk-TWJTK4CC.js} +2 -2
- package/dist/cli/chunks/{chunk-FUYOOKTH.js → chunk-U2FUXDDJ.js} +3 -3
- package/dist/cli/chunks/{chunk-XDI5X3FR.js → chunk-UDQSYWVF.js} +1 -1
- package/dist/cli/chunks/chunk-UOC3O6RP.js +5 -0
- package/dist/cli/chunks/chunk-UT2VZ33P.js +2 -0
- package/dist/cli/chunks/{chunk-IOZRKXR5.js → chunk-UTRV7T2N.js} +2 -2
- package/dist/cli/chunks/{chunk-ZMHCMJ4J.js → chunk-UXZSUMEA.js} +2 -2
- package/dist/cli/chunks/{chunk-G4CKPWF6.js → chunk-VRHRBAEM.js} +1 -1
- package/dist/cli/chunks/{chunk-AUUJBXWX.js → chunk-VRVMIPTM.js} +2 -2
- package/dist/cli/chunks/{chunk-IENZSO3K.js → chunk-VTDFVFST.js} +2 -2
- package/dist/cli/chunks/{chunk-JFLU7L3W.js → chunk-VTOBUZL6.js} +2 -2
- package/dist/cli/chunks/{chunk-KKYO2NKV.js → chunk-VU5TBX2V.js} +2 -2
- package/dist/cli/chunks/{chunk-XS2XF3YG.js → chunk-W26B7ERY.js} +1 -1
- package/dist/cli/chunks/{chunk-DOFREOPQ.js → chunk-W2QWSQVE.js} +2 -2
- package/dist/cli/chunks/{chunk-KSLLHFVY.js → chunk-W3INMZZ6.js} +1 -1
- package/dist/cli/chunks/{chunk-FLU5FDSC.js → chunk-W3PPFHI5.js} +59 -59
- package/dist/cli/chunks/chunk-WKGTGOYS.js +13 -0
- package/dist/cli/chunks/{chunk-4X4MWMHB.js → chunk-WNQS4WTS.js} +2 -2
- package/dist/cli/chunks/{chunk-XJKZ7FTR.js → chunk-WO274FRI.js} +2 -2
- package/dist/cli/chunks/{chunk-76SNL7GU.js → chunk-WOCGL4QP.js} +2 -2
- package/dist/cli/chunks/{chunk-HYXUN7BW.js → chunk-WQL7WCIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-BTVWA35P.js → chunk-X2Z7F4EU.js} +2 -2
- package/dist/cli/chunks/{chunk-VBK2YAYY.js → chunk-X7N2JF2X.js} +2 -2
- package/dist/cli/chunks/{chunk-NT7JRHMH.js → chunk-XEAEYC6Y.js} +1 -1
- package/dist/cli/chunks/{chunk-G2IJFNZS.js → chunk-XNBOGCF3.js} +2 -2
- package/dist/cli/chunks/{chunk-LCVEEII4.js → chunk-XPRVF4YE.js} +2 -2
- package/dist/cli/chunks/{chunk-AMZKAJLJ.js → chunk-YBQH2VOP.js} +2 -2
- package/dist/cli/chunks/{chunk-JUMICXM6.js → chunk-YQFLQE53.js} +2 -2
- package/dist/cli/chunks/{chunk-M5RQ6U3G.js → chunk-YSZ5OE3Z.js} +2 -2
- package/dist/cli/chunks/{chunk-RQMCZQN2.js → chunk-YXRASAPI.js} +2 -2
- package/dist/cli/chunks/{chunk-X3PZCXWG.js → chunk-YZEXYO4W.js} +1 -1
- package/dist/cli/chunks/{chunk-TL6OFMXF.js → chunk-YZWBNBTW.js} +2 -2
- package/dist/cli/chunks/{chunk-CFWGGRE7.js → chunk-ZAKQLAHT.js} +1 -1
- package/dist/cli/chunks/ci-ENOASTYB.js +81 -0
- package/dist/cli/chunks/{ci-config-J665XNOX.js → ci-config-B26OXHQM.js} +2 -2
- package/dist/cli/chunks/{ci-output-PEQQQWVD.js → ci-output-JTCLLNOQ.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-HHB2JSKH.js → circuit-breaker-23JMFNM5.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-JKUJRWPN.js → claude-flow-setup-ON6L462G.js} +2 -2
- package/dist/cli/chunks/client-TV3V2YZ5.js +2 -0
- package/dist/cli/chunks/{cline-installer-Y77BWTAN.js → cline-installer-OWQ4D2FQ.js} +2 -2
- package/dist/cli/chunks/{code-LV2HAGJY.js → code-2ZRL7SEU.js} +19 -18
- package/dist/cli/chunks/{code-index-extractor-4GKKSETB.js → code-index-extractor-JXSQVM67.js} +2 -2
- package/dist/cli/chunks/{codex-installer-WMKBYE5Y.js → codex-installer-7LXZYBSQ.js} +2 -2
- package/dist/cli/chunks/{completions-SBGFAOIJ.js → completions-C2LR623C.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-AQHFIJXC.js → complexity-analyzer-TGQLHCYJ.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-26AYFS2E.js → continuedev-installer-RUGD24D2.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-4UD3DK55.js → copilot-installer-ZLFVLEJP.js} +2 -2
- package/dist/cli/chunks/core-handlers-PZT4OLWR.js +2 -0
- package/dist/cli/chunks/{cost-tracker-TP4NZCG4.js → cost-tracker-RT4QL745.js} +2 -2
- package/dist/cli/chunks/{coverage-B2KIXHAI.js → coverage-NV3C4IMM.js} +11 -10
- package/dist/cli/chunks/cross-domain-router-QOFCZ7G4.js +2 -0
- package/dist/cli/chunks/{cursor-installer-AVZEQZ4W.js → cursor-installer-LJKLNFF6.js} +2 -2
- package/dist/cli/chunks/{daemon-XM2A7LQU.js → daemon-BMDXCQT5.js} +3 -3
- package/dist/cli/chunks/{daemon-P574WWBW.js → daemon-FBH3IRYN.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-MIWOZ6ET.js → dag-attention-scheduler-JGDED55I.js} +2 -2
- package/dist/cli/chunks/{detect-TYR7HT23.js → detect-SZIHIVCJ.js} +2 -2
- package/dist/cli/chunks/{dist-node-2DGVQGLS.js → dist-node-FV3KWXQ6.js} +2 -2
- package/dist/cli/chunks/{domain-handler-RRA4ZOMF.js → domain-handler-GI5JWQOV.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-IVZEZ5RB.js → domain-plugins-BUWY36TL.js} +2 -2
- package/dist/cli/chunks/domain-transfer-GCY7W5DA.js +2 -0
- package/dist/cli/chunks/dream-TRFBGDSQ.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-VNIEOVPO.js → embed-and-insert-pattern-GPRR3ZGD.js} +2 -2
- package/dist/cli/chunks/{eval-QV4LVPUF.js → eval-XPB3IGAP.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-DAPKT763.js → experience-capture-middleware-2E554UB3.js} +3 -3
- package/dist/cli/chunks/{fast-paths-WVRFPHX7.js → fast-paths-ZSMWZPUC.js} +2 -2
- package/dist/cli/chunks/{feature-flags-DEFTUIYT.js → feature-flags-GIWVDVVC.js} +2 -2
- package/dist/cli/chunks/{feature-flags-O7ZXDDCD.js → feature-flags-N7EOGE5P.js} +2 -2
- package/dist/cli/chunks/file-discovery-WCKGMSPZ.js +2 -0
- package/dist/cli/chunks/fleet-HCHDOUCX.js +44 -0
- package/dist/cli/chunks/{gnn-wrapper-LS4LZJDR.js → gnn-wrapper-CZNCNXXZ.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-RFTERD4K.js → heartbeat-handler-6YUIF2YQ.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-P44A2OX3.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-ZJQIQJKC.js +2 -0
- package/dist/cli/chunks/hnsw-index-HMG2GH3Z.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-GPKGFFHY.js → hnsw-legacy-bridge-J3M3IK24.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-PHL3F2PR.js → hnswlib-node-ULGTGDZW.js} +2 -2
- package/dist/cli/chunks/{hooks-GYJ6D4QM.js → hooks-C4BUGYUQ.js} +28 -28
- package/dist/cli/chunks/hybrid-backend-B7M74PZG.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-YGEQPCKJ.js → hypergraph-engine-WINGVMPG.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ZIMM647V.js → hypergraph-handler-GADMWKAU.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-PZYOVKQO.js +2 -0
- package/dist/cli/chunks/{init-guard-VOMBXJXG.js → init-guard-K2T4QWAO.js} +2 -2
- package/dist/cli/chunks/{init-handler-PSMUBWK5.js → init-handler-PCZTDZYI.js} +6 -6
- package/dist/cli/chunks/init-wizard-TZDJQK3U.js +2 -0
- package/dist/cli/chunks/kernel-Y6RRIOKW.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2YNTFBWJ.js → kilocode-installer-XENXNEIU.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-XHJDPVAZ.js → kiro-installer-3PG2TJ67.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-BVD5Z66M.js +2 -0
- package/dist/cli/chunks/{learning-GNSIDRNG.js → learning-6KDH7FK4.js} +3 -3
- package/dist/cli/chunks/{llm-router-LQDM7IU2.js → llm-router-RKVDEWU2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-KHCAMSUU.js +2 -0
- package/dist/cli/chunks/{load-YATHI72E.js → load-ITHC564X.js} +2 -2
- package/dist/cli/chunks/load-test-RUF7DZA5.js +2 -0
- package/dist/cli/chunks/{mcp-4Y6GDLYK.js → mcp-TCL5UW3N.js} +2 -2
- package/dist/cli/chunks/{memory-OUW3L7H2.js → memory-BKDAY2N2.js} +5 -5
- package/dist/cli/chunks/memory-backend-7ZLFOVGG.js +2 -0
- package/dist/cli/chunks/{memory-handlers-G3LFF53U.js → memory-handlers-WN4FXFOA.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-UBZJXAD2.js → multi-model-executor-VHAT7ZPF.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-AMMNWVH5.js → opencode-installer-E3VM3EEY.js} +2 -2
- package/dist/cli/chunks/{orchestrator-Y44WDOER.js → orchestrator-BMQ6X762.js} +58 -20
- package/dist/cli/chunks/pattern-null-store-RY6CVYHP.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-ESR42RME.js → pattern-usage-recorder-GOOR2BV5.js} +2 -2
- package/dist/cli/chunks/{pipeline-EDTS6OSC.js → pipeline-5NSFQQIX.js} +2 -2
- package/dist/cli/chunks/{platform-5WONJSUX.js → platform-SQM34J5G.js} +2 -2
- package/dist/cli/chunks/{plugin-IJXPCLD4.js → plugin-UQJZRMZG.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-5ECKGZK6.js → prime-radiant-advanced-wasm-WMDJOL4S.js} +2 -2
- package/dist/cli/chunks/project-root-IO5KRNGL.js +2 -0
- package/dist/cli/chunks/protocol-executor-U2CUDWDE.js +2 -0
- package/dist/cli/chunks/{protocol-handler-DRD3GVNW.js → protocol-handler-OBDCVY6X.js} +2 -2
- package/dist/cli/chunks/{prove-KTGW2HMJ.js → prove-XDC7I4XT.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-DQSSX2IP.js +2 -0
- package/dist/cli/chunks/{quality-DV2WPRRS.js → quality-L4GQ6WX4.js} +2 -2
- package/dist/cli/chunks/{quality-gate-HFUAFVZC.js → quality-gate-MJG66LKN.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-6FN4BZIX.js +2 -0
- package/dist/cli/chunks/real-embeddings-HW4G2LWL.js +2 -0
- package/dist/cli/chunks/{ref-validation-QWSKS5OY.js → ref-validation-FC7JOJ2C.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-RBAYRCHX.js → roocode-installer-KWS4CEIC.js} +2 -2
- package/dist/cli/chunks/router-YUO3I7RU.js +2 -0
- package/dist/cli/chunks/routing-feedback-36SLQGJE.js +2 -0
- package/dist/cli/chunks/{routing-handler-FMPP3XKO.js → routing-handler-QF4WVB2S.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-KZZT4HWF.js → ruvector-commands-2MTCOUK6.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-FRYZH3WZ.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-XXNITL5I.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-7CHEV35N.js → rvf-migration-coordinator-BREJCXWN.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-D2WWKJIV.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-Q2TH52SN.js → rvf-store-integrity-KKC6HOJD.js} +2 -2
- package/dist/cli/chunks/safe-db-4RRIGRXD.js +2 -0
- package/dist/cli/chunks/schedule-25RTO4DQ.js +2 -0
- package/dist/cli/chunks/scheduler-BPIOJZ5P.js +2 -0
- package/dist/cli/chunks/{security-CUEA3UIM.js → security-OSAE7VAP.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-DROMBRV2.js → shared-rvf-adapter-COUOS665.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-DBNABOP7.js → shared-rvf-dual-writer-YXMPZKQE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-EDF47DDX.js +2 -0
- package/dist/cli/chunks/{standalone-memory-IAHA3M6B.js → standalone-memory-E6JBMOIL.js} +2 -2
- package/dist/cli/chunks/{status-handler-AFUCASTX.js → status-handler-AFTCIYIX.js} +2 -2
- package/dist/cli/chunks/{structural-health-AQRV6JJ6.js → structural-health-2FROCEI4.js} +2 -2
- package/dist/cli/chunks/{sync-XW5TLZ7M.js → sync-VAYTOWDC.js} +2 -2
- package/dist/cli/chunks/{sync-GX7FMJHL.js → sync-YIQYOFGW.js} +2 -2
- package/dist/cli/chunks/task-handler-KVQHDEX3.js +62 -0
- package/dist/cli/chunks/task-handlers-MVVECQA6.js +9 -0
- package/dist/cli/chunks/{test-D2XDJNDX.js → test-5JSVTOMY.js} +4 -4
- package/dist/cli/chunks/test-runner-process-LEPF2OSS.js +2 -0
- package/dist/cli/chunks/{test-scheduling-TS6I2PR7.js → test-scheduling-HBOHVLI3.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-HBBLPCZ3.js → token-bootstrap-5VEPTPFA.js} +2 -2
- package/dist/cli/chunks/{token-usage-3MBUX4PR.js → token-usage-TBJHDLY6.js} +2 -2
- package/dist/cli/chunks/{transformers-ZWMQO3L2.js → transformers-VAWYMHMZ.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TSZTCMFV.js +2 -0
- package/dist/cli/chunks/{types-5YEMGPSQ.js → types-R5SDZU2E.js} +2 -2
- package/dist/cli/chunks/unified-memory-TLGSSLMI.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-MSUR7ZOO.js +2 -0
- package/dist/cli/chunks/unified-persistence-VFFOTWK7.js +2 -0
- package/dist/cli/chunks/{upgrade-2TPBKIHI.js → upgrade-K5PIHXRB.js} +2 -2
- package/dist/cli/chunks/{validate-XRAXXFW6.js → validate-RPTS7RYJ.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-IYSCS3BZ.js → validate-swarm-B2ZL556X.js} +2 -2
- package/dist/cli/chunks/visual-security-6Q44XNLB.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-PZQ3ZG2P.js → web-tree-sitter-K4DUJC32.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-U6XWFRVT.js → windsurf-installer-OK2AJN35.js} +2 -2
- package/dist/cli/chunks/witness-chain-KDOMXDQX.js +2 -0
- package/dist/cli/chunks/witness-chain-N3OY2RMH.js +2 -0
- package/dist/cli/chunks/{witness-chain-repair-K7YX2AO6.js → witness-chain-repair-L6Y5RFXR.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-GUTC3W7N.js → witness-chain-verifier-N4CW7FZX.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-YBNKMOP6.js → witness-key-manager-TDNPS3WD.js} +2 -2
- package/dist/cli/chunks/{workflow-UAJUILFQ.js → workflow-XRZA3YCY.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-CVNNT2RJ.js +2 -0
- package/dist/cli/chunks/{wrappers-AVZ3GPAL.js → wrappers-5JIFWKN6.js} +2 -2
- package/dist/cli/commands/ci.js +7 -0
- package/dist/cli/commands/code.js +6 -0
- package/dist/cli/commands/coverage.js +7 -1
- package/dist/cli/commands/fleet-run.d.ts +12 -0
- package/dist/cli/commands/fleet-run.js +175 -0
- package/dist/cli/commands/fleet.js +2 -117
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
- package/dist/cli/handlers/task-handler.d.ts +5 -0
- package/dist/cli/handlers/task-handler.js +26 -0
- package/dist/cli/utils/coverage-verdict.d.ts +11 -2
- package/dist/cli/utils/coverage-verdict.js +26 -6
- package/dist/cli/utils/fleet-operation.d.ts +10 -2
- package/dist/cli/utils/fleet-operation.js +20 -3
- package/dist/cli/utils/fleet-result.d.ts +20 -4
- package/dist/cli/utils/fleet-result.js +32 -21
- package/dist/cli/utils/fleet-shard.d.ts +36 -0
- package/dist/cli/utils/fleet-shard.js +110 -0
- package/dist/coordination/handlers/code-intelligence-handlers.js +21 -1
- package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
- package/dist/coordination/handlers/coverage-collection.js +2 -1
- package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
- package/dist/coordination/handlers/coverage-evidence.js +159 -0
- package/dist/coordination/handlers/coverage-handlers.js +16 -3
- package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
- package/dist/coordination/handlers/coverage-scope.js +321 -0
- package/dist/coordination/handlers/coverage-target.d.ts +9 -0
- package/dist/coordination/handlers/coverage-target.js +15 -5
- package/dist/coordination/handlers/handler-types.d.ts +2 -2
- package/dist/coordination/handlers/handler-utils.d.ts +11 -0
- package/dist/coordination/handlers/handler-utils.js +22 -8
- package/dist/coordination/handlers/misc-handlers.js +5 -2
- package/dist/coordination/handlers/quality-handlers.js +2 -2
- package/dist/coordination/handlers/security-handlers.js +12 -2
- package/dist/coordination/protocols/security-audit.js +11 -1
- package/dist/coordination/task-executor.js +7 -2
- package/dist/domains/code-intelligence/coordinator-gnn.d.ts +2 -16
- package/dist/domains/code-intelligence/coordinator-gnn.js +1 -62
- package/dist/domains/code-intelligence/coordinator.d.ts +12 -6
- package/dist/domains/code-intelligence/coordinator.js +24 -27
- package/dist/domains/code-intelligence/interfaces.d.ts +9 -0
- package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +51 -5
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +144 -78
- package/dist/domains/coverage-analysis/collected-metrics.d.ts +10 -0
- package/dist/domains/coverage-analysis/collected-metrics.js +29 -0
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +11 -3
- package/dist/domains/coverage-analysis/services/coverage-parser.d.ts +2 -0
- package/dist/domains/coverage-analysis/services/coverage-parser.js +18 -2
- package/dist/domains/quality-assessment/coherence/gate-controller.js +16 -4
- package/dist/domains/quality-assessment/coherence/lambda-calculator.d.ts +8 -0
- package/dist/domains/quality-assessment/coherence/lambda-calculator.js +57 -14
- package/dist/domains/quality-assessment/coherence/types.d.ts +12 -7
- package/dist/domains/quality-assessment/coordinator-gate-evaluation.js +3 -1
- package/dist/domains/quality-assessment/coordinator-reports.d.ts +30 -10
- package/dist/domains/quality-assessment/coordinator-reports.js +93 -57
- package/dist/domains/quality-assessment/coordinator.d.ts +14 -40
- package/dist/domains/quality-assessment/coordinator.js +10 -4
- package/dist/domains/quality-assessment/interfaces.d.ts +2 -0
- package/dist/domains/quality-assessment/services/coherence-gate.js +15 -2
- package/dist/domains/quality-assessment/services/quality-gate.js +6 -4
- package/dist/domains/security-compliance/index.d.ts +1 -1
- package/dist/domains/security-compliance/interfaces.d.ts +46 -5
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.d.ts +3 -3
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +15 -14
- package/dist/domains/security-compliance/services/scanners/dast-helpers.d.ts +8 -9
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +19 -44
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.d.ts +3 -3
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +13 -9
- package/dist/domains/security-compliance/services/scanners/dast-requests.d.ts +54 -0
- package/dist/domains/security-compliance/services/scanners/dast-requests.js +125 -0
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +5 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +125 -155
- package/dist/domains/security-compliance/services/scanners/index.d.ts +1 -1
- package/dist/domains/security-compliance/services/scanners/index.js +1 -1
- package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +2 -2
- package/dist/domains/security-compliance/services/security-auditor-dast.js +183 -212
- package/dist/domains/security-compliance/services/security-auditor-reports.js +5 -1
- package/dist/domains/security-compliance/services/security-auditor.d.ts +11 -3
- package/dist/domains/security-compliance/services/security-auditor.js +106 -65
- package/dist/domains/test-execution/coordinator.d.ts +2 -1
- package/dist/domains/test-execution/coordinator.js +33 -27
- package/dist/domains/test-execution/interfaces.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.d.ts +6 -0
- package/dist/domains/test-execution/services/test-executor.js +16 -4
- package/dist/domains/visual-accessibility/coordinator.js +34 -9
- package/dist/domains/visual-accessibility/interfaces.d.ts +27 -0
- package/dist/domains/visual-accessibility/plugin.js +5 -0
- package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.d.ts +13 -21
- package/dist/domains/visual-accessibility/services/accessibility-tester-heuristics.js +13 -297
- package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +13 -5
- package/dist/domains/visual-accessibility/services/accessibility-tester.js +96 -73
- package/dist/init/phases/10-workers.js +42 -4
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +23 -1
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +50 -15
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +7 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +8 -0
- package/dist/integrations/embeddings/index/HNSWIndex.js +8 -4
- package/dist/integrations/ruvector/transfer-coherence-stub.js +5 -10
- package/dist/learning/embedder-endpoint-client.d.ts +8 -0
- package/dist/learning/embedder-endpoint-client.js +20 -0
- package/dist/learning/embedder-recovery.d.ts +63 -0
- package/dist/learning/embedder-recovery.js +94 -0
- package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
- package/dist/learning/qe-reasoning-bank.d.ts +21 -0
- package/dist/learning/qe-reasoning-bank.js +54 -8
- package/dist/learning/real-embeddings.d.ts +23 -0
- package/dist/learning/real-embeddings.js +69 -2
- package/dist/learning/real-qe-reasoning-bank.d.ts +24 -4
- package/dist/learning/real-qe-reasoning-bank.js +58 -20
- package/dist/logging/redaction.js +142 -12
- package/dist/mcp/bundle.js +509 -497
- package/dist/mcp/daemon-mode.d.ts +126 -0
- package/dist/mcp/daemon-mode.js +257 -0
- package/dist/mcp/entry.d.ts +4 -0
- package/dist/mcp/entry.js +50 -2
- package/dist/mcp/handlers/domain-handler-configs.d.ts +8 -0
- package/dist/mcp/handlers/domain-handler-configs.js +14 -2
- package/dist/mcp/handlers/handler-factory.js +3 -0
- package/dist/mcp/handlers/model-route-handlers.d.ts +107 -0
- package/dist/mcp/handlers/model-route-handlers.js +139 -0
- package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
- package/dist/mcp/handlers/orchestrate-routes.js +94 -3
- package/dist/mcp/handlers/task-handlers.d.ts +3 -242
- package/dist/mcp/handlers/task-handlers.js +11 -788
- package/dist/mcp/handlers/task-inference.d.ts +26 -0
- package/dist/mcp/handlers/task-inference.js +156 -0
- package/dist/mcp/handlers/task-learning-handlers.d.ts +92 -0
- package/dist/mcp/handlers/task-learning-handlers.js +230 -0
- package/dist/mcp/handlers/task-orchestrate-handler.d.ts +73 -0
- package/dist/mcp/handlers/task-orchestrate-handler.js +361 -0
- package/dist/mcp/protocol-server.js +15 -2
- package/dist/mcp/services/reasoning-bank-service.d.ts +6 -1
- package/dist/mcp/services/reasoning-bank-service.js +9 -0
- package/dist/mcp/tools/code-intelligence/analyze.js +3 -6
- package/dist/mcp/tools/coverage-analysis/index.d.ts +4 -0
- package/dist/mcp/tools/coverage-analysis/index.js +8 -2
- package/dist/mcp/tools/visual-accessibility/index.d.ts +7 -0
- package/dist/mcp/tools/visual-accessibility/index.js +29 -13
- package/dist/mcp/types.d.ts +14 -0
- package/dist/routing/advisor/redaction.js +22 -2
- package/dist/shared/events/domain-events.d.ts +2 -0
- package/dist/shared/llm/providers/response-deadline.js +16 -2
- package/dist/shared/metrics/code-metrics.js +21 -3
- package/dist/shared/parsers/typescript-parser.d.ts +6 -0
- package/dist/shared/parsers/typescript-parser.js +13 -1
- package/dist/shared/types/index.js +3 -1
- package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
- package/package.json +3 -3
- package/dist/cli/chunks/adapter-V4GSGOOK.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +0 -2
- package/dist/cli/chunks/base-AK7BXBX2.js +0 -2
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +0 -2
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +0 -6
- package/dist/cli/chunks/chunk-72ZBJD2E.js +0 -3
- package/dist/cli/chunks/chunk-EBPJY4DI.js +0 -3
- package/dist/cli/chunks/chunk-H43AFUKL.js +0 -2
- package/dist/cli/chunks/chunk-HJ3XNTTJ.js +0 -2
- package/dist/cli/chunks/chunk-IO5537OM.js +0 -2
- package/dist/cli/chunks/chunk-IW6WDGHM.js +0 -2
- package/dist/cli/chunks/chunk-K2HBNYAZ.js +0 -62
- package/dist/cli/chunks/chunk-LRL56ZYL.js +0 -21
- package/dist/cli/chunks/chunk-VLD7Z2ED.js +0 -13
- package/dist/cli/chunks/chunk-VO3DRK4P.js +0 -3
- package/dist/cli/chunks/ci-6GUFAZMJ.js +0 -81
- package/dist/cli/chunks/client-HL2COSFM.js +0 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +0 -2
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +0 -2
- package/dist/cli/chunks/domain-transfer-DOBI67K6.js +0 -2
- package/dist/cli/chunks/dream-T6EP7B3F.js +0 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +0 -2
- package/dist/cli/chunks/fleet-FVAUMKUT.js +0 -46
- package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +0 -2
- package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +0 -2
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +0 -2
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +0 -2
- package/dist/cli/chunks/init-wizard-FUC7KDVX.js +0 -2
- package/dist/cli/chunks/kernel-ZCPMCVMW.js +0 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +0 -2
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +0 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +0 -2
- package/dist/cli/chunks/memory-backend-AAMQG6WH.js +0 -2
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +0 -2
- package/dist/cli/chunks/project-root-7QL4KP5C.js +0 -2
- package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +0 -2
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +0 -2
- package/dist/cli/chunks/real-embeddings-RQRVOKVM.js +0 -2
- package/dist/cli/chunks/router-LQB5SWAF.js +0 -2
- package/dist/cli/chunks/routing-feedback-OEEXA55N.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +0 -2
- package/dist/cli/chunks/safe-db-PE6G3L55.js +0 -2
- package/dist/cli/chunks/schedule-OLKQ6QYW.js +0 -2
- package/dist/cli/chunks/scheduler-LSGBDFAT.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +0 -2
- package/dist/cli/chunks/task-handler-TFKVUTNF.js +0 -60
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +0 -9
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +0 -2
- package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +0 -2
- package/dist/cli/chunks/unified-persistence-UCV7YETW.js +0 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +0 -2
- package/dist/cli/chunks/witness-chain-CVIWYTD2.js +0 -2
- package/dist/cli/chunks/witness-chain-VBKORKOX.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +0 -2
|
@@ -13,8 +13,8 @@ import type { TestGeneratorService } from '../../domains/test-generation';
|
|
|
13
13
|
import type { KnowledgeGraphService } from '../../domains/code-intelligence';
|
|
14
14
|
import type { ICodeIntelligenceCoordinator } from '../../domains/code-intelligence/coordinator';
|
|
15
15
|
import type { QualityAnalyzerService } from '../../domains/quality-assessment';
|
|
16
|
-
/** The coordinator surface the MCP index-code handler needs (#999). */
|
|
17
|
-
export type ProjectMetricsCollector = Pick<ICodeIntelligenceCoordinator, 'collectProjectMetrics'>;
|
|
16
|
+
/** The coordinator surface the MCP index-code handler needs (#999, #1224). */
|
|
17
|
+
export type ProjectMetricsCollector = Pick<ICodeIntelligenceCoordinator, 'collectProjectMetrics' | 'indexForSearch'>;
|
|
18
18
|
/** Signature of a single task handler */
|
|
19
19
|
export type InstanceTaskHandler = (task: QueenTask) => Promise<Result<unknown, Error>>;
|
|
20
20
|
/**
|
|
@@ -74,6 +74,11 @@ export interface IstanbulFileCoverage {
|
|
|
74
74
|
* Load coverage data from common coverage file formats
|
|
75
75
|
*/
|
|
76
76
|
export declare function loadCoverageData(targetPath: string): Promise<CoverageData | null>;
|
|
77
|
+
/** `loadCoverageData` plus the path of the report it read (#1154: staleness needs it). */
|
|
78
|
+
export declare function loadCoverageReport(targetPath: string): Promise<{
|
|
79
|
+
data: CoverageData;
|
|
80
|
+
path: string;
|
|
81
|
+
} | null>;
|
|
77
82
|
/**
|
|
78
83
|
* Per-line hit counts of one istanbul file entry, computed the way istanbul's
|
|
79
84
|
* own `FileCoverage#getLineCoverage` (and therefore coverage-summary.json
|
|
@@ -118,6 +123,12 @@ export declare function discoverSourceFiles(targetPath: string, options?: {
|
|
|
118
123
|
includeTests?: boolean;
|
|
119
124
|
languages?: string[];
|
|
120
125
|
maxFiles?: number;
|
|
126
|
+
/**
|
|
127
|
+
* #1020: also include component files (.vue, .svelte) and symlinked files.
|
|
128
|
+
* For callers that judge the whole source scope (quality assessment) and
|
|
129
|
+
* read through a reader that contains symlinks to the project root.
|
|
130
|
+
*/
|
|
131
|
+
completeScope?: boolean;
|
|
121
132
|
}): Promise<string[]>;
|
|
122
133
|
/**
|
|
123
134
|
* Generate security recommendations based on findings
|
|
@@ -16,6 +16,10 @@ import { safeJsonParse } from '../../shared/safe-json.js';
|
|
|
16
16
|
* Load coverage data from common coverage file formats
|
|
17
17
|
*/
|
|
18
18
|
export async function loadCoverageData(targetPath) {
|
|
19
|
+
return (await loadCoverageReport(targetPath))?.data ?? null;
|
|
20
|
+
}
|
|
21
|
+
/** `loadCoverageData` plus the path of the report it read (#1154: staleness needs it). */
|
|
22
|
+
export async function loadCoverageReport(targetPath) {
|
|
19
23
|
// Try various coverage file locations (JS, Python, Java, etc.)
|
|
20
24
|
const coverageLocations = [
|
|
21
25
|
// JavaScript/TypeScript (Istanbul/nyc/vitest)
|
|
@@ -36,16 +40,16 @@ export async function loadCoverageData(targetPath) {
|
|
|
36
40
|
// #1161: a report linked out of the project, or to a device, is not read.
|
|
37
41
|
const content = await readConfinedText(coveragePath, { outsideRoot: 'allow' });
|
|
38
42
|
if (coveragePath.endsWith('coverage-summary.json')) {
|
|
39
|
-
return parseCoverageSummaryJson(content);
|
|
43
|
+
return { data: parseCoverageSummaryJson(content), path: coveragePath };
|
|
40
44
|
}
|
|
41
45
|
else if (coveragePath.endsWith('.json')) {
|
|
42
|
-
return parseCoverageJson(content);
|
|
46
|
+
return { data: parseCoverageJson(content), path: coveragePath };
|
|
43
47
|
}
|
|
44
48
|
else if (coveragePath.endsWith('.info')) {
|
|
45
|
-
return parseLcovInfo(content);
|
|
49
|
+
return { data: parseLcovInfo(content), path: coveragePath };
|
|
46
50
|
}
|
|
47
51
|
else if (coveragePath.endsWith('.xml')) {
|
|
48
|
-
return parseCoberturaXml(content);
|
|
52
|
+
return { data: parseCoberturaXml(content), path: coveragePath };
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
catch {
|
|
@@ -413,11 +417,11 @@ export function parseCoberturaXml(content) {
|
|
|
413
417
|
*/
|
|
414
418
|
export async function discoverSourceFiles(targetPath, options = {}) {
|
|
415
419
|
const files = [];
|
|
416
|
-
const { includeTests = true, languages, maxFiles = 5000 } = options;
|
|
420
|
+
const { includeTests = true, languages, maxFiles = 5000, completeScope = false } = options;
|
|
417
421
|
// Determine file extensions to include
|
|
418
422
|
// Default: scan ALL common source languages unless explicitly filtered
|
|
419
423
|
let extensions = [
|
|
420
|
-
'.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', // JavaScript/TypeScript
|
|
424
|
+
'.ts', '.tsx', '.mts', '.cts', '.js', '.jsx', '.mjs', '.cjs', // JavaScript/TypeScript
|
|
421
425
|
'.py', '.pyw', // Python
|
|
422
426
|
'.go', // Go
|
|
423
427
|
'.rs', // Rust
|
|
@@ -433,7 +437,7 @@ export async function discoverSourceFiles(targetPath, options = {}) {
|
|
|
433
437
|
extensions = [];
|
|
434
438
|
for (const lang of languages) {
|
|
435
439
|
if (lang === 'typescript')
|
|
436
|
-
extensions.push('.ts', '.tsx');
|
|
440
|
+
extensions.push('.ts', '.tsx', '.mts', '.cts');
|
|
437
441
|
if (lang === 'javascript')
|
|
438
442
|
extensions.push('.js', '.jsx', '.mjs', '.cjs');
|
|
439
443
|
if (lang === 'python')
|
|
@@ -460,6 +464,8 @@ export async function discoverSourceFiles(targetPath, options = {}) {
|
|
|
460
464
|
extensions.push('.scala');
|
|
461
465
|
}
|
|
462
466
|
}
|
|
467
|
+
if (completeScope && (!languages || languages.length === 0))
|
|
468
|
+
extensions.push('.vue', '.svelte');
|
|
463
469
|
async function walkDir(dir) {
|
|
464
470
|
try {
|
|
465
471
|
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
@@ -484,7 +490,7 @@ export async function discoverSourceFiles(targetPath, options = {}) {
|
|
|
484
490
|
return; // Cap reached
|
|
485
491
|
await walkDir(fullPath);
|
|
486
492
|
}
|
|
487
|
-
else if (entry.isFile()) {
|
|
493
|
+
else if (entry.isFile() || (completeScope && entry.isSymbolicLink() && await isFileTarget(fullPath))) {
|
|
488
494
|
const ext = path.extname(entry.name);
|
|
489
495
|
// Check extension
|
|
490
496
|
if (!extensions.includes(ext))
|
|
@@ -511,6 +517,14 @@ export async function discoverSourceFiles(targetPath, options = {}) {
|
|
|
511
517
|
// Directory not accessible
|
|
512
518
|
}
|
|
513
519
|
}
|
|
520
|
+
async function isFileTarget(linkPath) {
|
|
521
|
+
try {
|
|
522
|
+
return (await fs.stat(linkPath)).isFile();
|
|
523
|
+
}
|
|
524
|
+
catch {
|
|
525
|
+
return false; // dangling link
|
|
526
|
+
}
|
|
527
|
+
}
|
|
514
528
|
// Check if targetPath is a file or directory
|
|
515
529
|
try {
|
|
516
530
|
const stat = await fs.stat(targetPath);
|
|
@@ -16,8 +16,11 @@ export function registerMiscHandlers(ctx) {
|
|
|
16
16
|
passed: false,
|
|
17
17
|
violations: [],
|
|
18
18
|
warnings: [],
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
// #1145: nothing was audited, so `passed: false` is not a verdict and the score is -1
|
|
20
|
+
score: -1,
|
|
21
|
+
measured: false,
|
|
22
|
+
note: 'Accessibility NOT MEASURED: this is not a failing result. ' +
|
|
23
|
+
'Accessibility testing requires a browser environment (Puppeteer/Playwright). ' +
|
|
21
24
|
'Use tools like axe-core, pa11y, or Lighthouse CLI for WCAG compliance testing. ' +
|
|
22
25
|
'Example: npx pa11y ' + (payload.url || '<url>'),
|
|
23
26
|
});
|
|
@@ -89,13 +89,13 @@ async function resolveAnalysisScope(payload) {
|
|
|
89
89
|
throw new CallerInputError(`target ${JSON.stringify(payload.target)} does not exist.`);
|
|
90
90
|
if (stat.isFile())
|
|
91
91
|
return { sourceFiles: [target], explicitFiles: [target], scope: target };
|
|
92
|
-
return { sourceFiles: await discoverSourceFiles(target, { includeTests: false }), explicitFiles: [], scope: target };
|
|
92
|
+
return { sourceFiles: await discoverSourceFiles(target, { includeTests: false, completeScope: true }), explicitFiles: [], scope: target };
|
|
93
93
|
}
|
|
94
94
|
// Default to src/ — scanning the entire project root is too slow
|
|
95
95
|
// (node_modules, dist, .git, etc. make it hang on large projects)
|
|
96
96
|
const srcDir = nodePath.join(root, 'src');
|
|
97
97
|
const targetDir = existsSync(srcDir) ? srcDir : root;
|
|
98
|
-
return { sourceFiles: await discoverSourceFiles(targetDir, { includeTests: false }), explicitFiles: [], scope: targetDir };
|
|
98
|
+
return { sourceFiles: await discoverSourceFiles(targetDir, { includeTests: false, completeScope: true }), explicitFiles: [], scope: targetDir };
|
|
99
99
|
}
|
|
100
100
|
/** #1021: one line per partially measured metric, naming the gap. */
|
|
101
101
|
function describePartialMetrics(partial) {
|
|
@@ -263,8 +263,12 @@ export function registerSecurityHandlers(ctx) {
|
|
|
263
263
|
});
|
|
264
264
|
if (result.success) {
|
|
265
265
|
dastResult = result.value;
|
|
266
|
-
//
|
|
267
|
-
|
|
266
|
+
// #1135: probes the target did not answer make DAST partial; the
|
|
267
|
+
// findings it did collect are kept. A complete run still has no
|
|
268
|
+
// execution coverage receipt, so it stays unverified.
|
|
269
|
+
engines.push(dastResult.status === 'incomplete'
|
|
270
|
+
? { ...partialDastEngine(dastResult.failedRequests), target: payload.targetUrl }
|
|
271
|
+
: { ...unverifiedEngine('dast', 'url'), target: payload.targetUrl });
|
|
268
272
|
}
|
|
269
273
|
else {
|
|
270
274
|
engines.push({ ...failedEngine('dast', 'url', result.error), target: payload.targetUrl });
|
|
@@ -399,6 +403,12 @@ function safeErrorCode(error) {
|
|
|
399
403
|
const code = error?.code;
|
|
400
404
|
return typeof code === 'string' && /^[A-Z0-9_]{1,32}$/.test(code) ? code : 'UNKNOWN';
|
|
401
405
|
}
|
|
406
|
+
function partialDastEngine(failedRequests) {
|
|
407
|
+
const codes = [...new Set(failedRequests.map(failure => failure.code))].join(', ');
|
|
408
|
+
return { id: 'dast', requested: true, required: true, status: 'partial', scope: 'url',
|
|
409
|
+
ruleCoverage: 'unknown', errors: [`dast incomplete: ${failedRequests.length} request(s) not answered (${codes}).`],
|
|
410
|
+
limitations: failedRequests.slice(0, 20).map(failure => `dast not answered: ${failure.url} (${failure.code}: ${failure.reason})`) };
|
|
411
|
+
}
|
|
402
412
|
function unverifiedEngine(id, scope) {
|
|
403
413
|
return { id, requested: true, required: true, status: 'unverified', scope,
|
|
404
414
|
ruleCoverage: 'unknown', errors: [], limitations: [`${id} returned no execution receipt; coverage is unverified.`] };
|
|
@@ -164,11 +164,16 @@ export class SecurityAuditProtocol {
|
|
|
164
164
|
const dastResult = await this.runDASTScan(this.config.targetUrl);
|
|
165
165
|
if (dastResult.success) {
|
|
166
166
|
this.currentAudit = { ...this.currentAudit, dastResult: dastResult.value };
|
|
167
|
+
if (dastResult.value.status !== 'complete') {
|
|
168
|
+
this.recordIncompleteCheck(`DAST scan is incomplete: ${dastResult.value.error ?? 'some requests were not answered'}`);
|
|
169
|
+
}
|
|
167
170
|
this.recordIncompleteCheck('DAST coverage is unverified: the scanner returned no execution receipt');
|
|
168
171
|
await this.publishVulnerabilities(dastResult.value.vulnerabilities);
|
|
169
172
|
}
|
|
170
173
|
else {
|
|
171
|
-
|
|
174
|
+
// #1135: keep the scanner's reason (DAST_AUTHENTICATION_FAILED, DAST_TARGET_UNAVAILABLE, ...).
|
|
175
|
+
const code = dastResult.error.code;
|
|
176
|
+
this.recordIncompleteCheck(`DAST scan did not complete${typeof code === 'string' ? ` (${code})` : ''}: ${dastResult.error.message}`);
|
|
172
177
|
}
|
|
173
178
|
}
|
|
174
179
|
else if (auditOptions.includeDAST) {
|
|
@@ -284,7 +289,10 @@ export class SecurityAuditProtocol {
|
|
|
284
289
|
// Convert scanner result to protocol result format
|
|
285
290
|
return ok({
|
|
286
291
|
vulnerabilities: scanResult.value.vulnerabilities,
|
|
292
|
+
// #1221: this scanner does not look up latest versions; empty is not "up to date".
|
|
287
293
|
outdatedPackages: [],
|
|
294
|
+
outdatedStatus: 'not-run',
|
|
295
|
+
outdatedUnchecked: [],
|
|
288
296
|
summary: scanResult.value.summary,
|
|
289
297
|
status: scanResult.value.status,
|
|
290
298
|
measured: scanResult.value.measured,
|
|
@@ -360,6 +368,8 @@ export class SecurityAuditProtocol {
|
|
|
360
368
|
if (scanResult.success) {
|
|
361
369
|
return ok(scanResult.value);
|
|
362
370
|
}
|
|
371
|
+
// #1135: the scanner's own failure, with its code, not a generic "unavailable".
|
|
372
|
+
return err(scanResult.error);
|
|
363
373
|
}
|
|
364
374
|
catch (scannerError) {
|
|
365
375
|
// Scanner unavailable - log error
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import { v4 as uuidv4 } from 'uuid';
|
|
16
16
|
import { isCallerInputError, toErrorMessage } from '../shared/error-utils.js';
|
|
17
17
|
import { InsufficientQualityEvidenceError } from '../domains/quality-assessment/quality-evidence.js';
|
|
18
|
+
import { isLearnableResult } from '../learning/learnable-result.js';
|
|
18
19
|
import { createResultSaver } from './result-saver.js';
|
|
19
20
|
import { getProjectStorePath } from '../kernel/project-root.js';
|
|
20
21
|
import { createLogger } from '../logging/logger-factory.js';
|
|
@@ -487,8 +488,12 @@ export class DomainTaskExecutor {
|
|
|
487
488
|
};
|
|
488
489
|
}
|
|
489
490
|
await this.publishTaskCompleted(task.id, result.value, domain);
|
|
490
|
-
// ADR-051: Record successful outcome
|
|
491
|
-
|
|
491
|
+
// ADR-051: Record successful outcome. #1020: a run without evidence (a
|
|
492
|
+
// coverage estimate, an insufficient-evidence quality run) completed as a
|
|
493
|
+
// task but is not a success to learn routing from.
|
|
494
|
+
if (isLearnableResult(domain, result.value)) {
|
|
495
|
+
this.recordOutcome(task, routingTier, true, Date.now() - startTime).catch((e) => { logger.warn('recordOutcome failed', { error: e instanceof Error ? e.message : String(e), taskId: task.id }); });
|
|
496
|
+
}
|
|
492
497
|
// Save results to files if enabled. A task can opt out per call with
|
|
493
498
|
// payload.saveResults === false (#925); the executor-wide config still
|
|
494
499
|
// acts as the global switch.
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Code Intelligence - GNN Integration
|
|
3
3
|
* Extracted from coordinator.ts for CQ-004 (file size reduction)
|
|
4
4
|
*
|
|
5
|
-
* Contains: GNN embedding indexing, code embedding generation
|
|
5
|
+
* Contains: GNN embedding indexing, code embedding generation
|
|
6
6
|
*/
|
|
7
7
|
import { QEGNNEmbeddingIndex } from '../../integrations/ruvector/wrappers';
|
|
8
|
-
import type { ImpactRequest
|
|
8
|
+
import type { ImpactRequest } from './interfaces';
|
|
9
9
|
import { FileReader } from '../../shared/io';
|
|
10
10
|
export declare function initializeGNNIndex(domainKey: string): QEGNNEmbeddingIndex;
|
|
11
11
|
/**
|
|
@@ -23,24 +23,10 @@ export declare function generateGraphMAEEmbeddings(fileReader: FileReader, paths
|
|
|
23
23
|
* Generate code embedding using semantic features
|
|
24
24
|
*/
|
|
25
25
|
export declare function generateCodeEmbedding(path: string, content: string): Promise<number[]>;
|
|
26
|
-
/**
|
|
27
|
-
* Search code with GNN for enhanced similarity
|
|
28
|
-
*/
|
|
29
|
-
export declare function searchCodeWithGNN(gnnIndex: QEGNNEmbeddingIndex, query: string): Promise<Array<{
|
|
30
|
-
file: string;
|
|
31
|
-
similarity: number;
|
|
32
|
-
}>>;
|
|
33
26
|
/**
|
|
34
27
|
* Enhance impact analysis with GNN semantic similarity
|
|
35
28
|
*/
|
|
36
29
|
export declare function enhanceImpactAnalysisWithGNN(gnnIndex: QEGNNEmbeddingIndex, fileReader: FileReader, request: ImpactRequest): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Merge search results from semantic search and GNN
|
|
39
|
-
*/
|
|
40
|
-
export declare function mergeSearchResults(semanticResults: SearchResult[], gnnResults: Array<{
|
|
41
|
-
file: string;
|
|
42
|
-
similarity: number;
|
|
43
|
-
}>): SearchResult[];
|
|
44
30
|
/**
|
|
45
31
|
* R6: Train GNN embeddings with memory-bounded cold-tier training.
|
|
46
32
|
* Uses LRU hotset caching when the graph exceeds hotsetSize, falling
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Code Intelligence - GNN Integration
|
|
3
3
|
* Extracted from coordinator.ts for CQ-004 (file size reduction)
|
|
4
4
|
*
|
|
5
|
-
* Contains: GNN embedding indexing, code embedding generation
|
|
5
|
+
* Contains: GNN embedding indexing, code embedding generation
|
|
6
6
|
*/
|
|
7
7
|
import { LoggerFactory } from '../../logging/index.js';
|
|
8
8
|
import { QEGNNIndexFactory, initGNN, } from '../../integrations/ruvector/wrappers.js';
|
|
@@ -148,34 +148,6 @@ export async function generateCodeEmbedding(path, content) {
|
|
|
148
148
|
}
|
|
149
149
|
return features.slice(0, 384);
|
|
150
150
|
}
|
|
151
|
-
/**
|
|
152
|
-
* Search code with GNN for enhanced similarity
|
|
153
|
-
*/
|
|
154
|
-
export async function searchCodeWithGNN(gnnIndex, query) {
|
|
155
|
-
try {
|
|
156
|
-
const queryEmbedding = await generateCodeEmbedding('query', query);
|
|
157
|
-
const queryIEmbedding = {
|
|
158
|
-
vector: queryEmbedding,
|
|
159
|
-
dimension: 384,
|
|
160
|
-
namespace: 'code',
|
|
161
|
-
text: query,
|
|
162
|
-
timestamp: Date.now(),
|
|
163
|
-
quantization: 'none',
|
|
164
|
-
};
|
|
165
|
-
const results = gnnIndex.search(queryIEmbedding, {
|
|
166
|
-
limit: 10,
|
|
167
|
-
namespace: 'code',
|
|
168
|
-
});
|
|
169
|
-
return results.map((r) => ({
|
|
170
|
-
file: r.metadata?.path ?? `file-${r.id}`,
|
|
171
|
-
similarity: 1 - r.distance,
|
|
172
|
-
}));
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
logger.error('Failed to search with GNN:', error instanceof Error ? error : undefined);
|
|
176
|
-
return [];
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
151
|
/**
|
|
180
152
|
* Enhance impact analysis with GNN semantic similarity
|
|
181
153
|
*/
|
|
@@ -206,39 +178,6 @@ export async function enhanceImpactAnalysisWithGNN(gnnIndex, fileReader, request
|
|
|
206
178
|
logger.error('Failed to enhance impact analysis:', error instanceof Error ? error : undefined);
|
|
207
179
|
}
|
|
208
180
|
}
|
|
209
|
-
/**
|
|
210
|
-
* Merge search results from semantic search and GNN
|
|
211
|
-
*/
|
|
212
|
-
export function mergeSearchResults(semanticResults, gnnResults) {
|
|
213
|
-
const scoreMap = new Map();
|
|
214
|
-
const resultMap = new Map();
|
|
215
|
-
for (const result of semanticResults) {
|
|
216
|
-
scoreMap.set(result.file, result.score);
|
|
217
|
-
resultMap.set(result.file, result);
|
|
218
|
-
}
|
|
219
|
-
for (const gnnResult of gnnResults) {
|
|
220
|
-
const existingScore = scoreMap.get(gnnResult.file);
|
|
221
|
-
if (existingScore !== undefined) {
|
|
222
|
-
scoreMap.set(gnnResult.file, (existingScore + gnnResult.similarity) / 2);
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
scoreMap.set(gnnResult.file, gnnResult.similarity * 0.8);
|
|
226
|
-
resultMap.set(gnnResult.file, {
|
|
227
|
-
file: gnnResult.file,
|
|
228
|
-
snippet: '',
|
|
229
|
-
score: gnnResult.similarity * 0.8,
|
|
230
|
-
highlights: [],
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
return Array.from(resultMap.values())
|
|
235
|
-
.map(result => ({
|
|
236
|
-
...result,
|
|
237
|
-
score: scoreMap.get(result.file) ?? result.score,
|
|
238
|
-
}))
|
|
239
|
-
.sort((a, b) => b.score - a.score)
|
|
240
|
-
.slice(0, 20);
|
|
241
|
-
}
|
|
242
181
|
// R6: ColdTier trainer singleton (lazy-initialized)
|
|
243
182
|
let coldTierTrainer = null;
|
|
244
183
|
/**
|
|
@@ -43,6 +43,12 @@ export interface ICodeIntelligenceCoordinator extends CodeIntelligenceAPI {
|
|
|
43
43
|
* @param projectPath - Path to the project root
|
|
44
44
|
*/
|
|
45
45
|
collectProjectMetrics(projectPath: string): Promise<Result<ProjectMetrics, Error>>;
|
|
46
|
+
/**
|
|
47
|
+
* #1224: make indexed files searchable by `search()`. Indexing paths that
|
|
48
|
+
* only fill the knowledge graph (MCP code_index) call this so a later search
|
|
49
|
+
* reads the same project.
|
|
50
|
+
*/
|
|
51
|
+
indexForSearch(paths: string[]): Promise<SearchIndexSummary>;
|
|
46
52
|
/**
|
|
47
53
|
* V3: Find untested functions using hypergraph analysis (GOAP Action 7)
|
|
48
54
|
* Returns functions that have no test coverage based on the code knowledge graph.
|
|
@@ -126,6 +132,11 @@ export interface CoordinatorConfig extends BaseDomainCoordinatorConfig {
|
|
|
126
132
|
* Orchestrates code intelligence workflows and coordinates with agents
|
|
127
133
|
*/
|
|
128
134
|
type CodeIntelligenceWorkflowType = 'index' | 'search' | 'impact' | 'dependency' | 'query';
|
|
135
|
+
/** #1224: what an index run made searchable. */
|
|
136
|
+
export interface SearchIndexSummary {
|
|
137
|
+
searchable: number;
|
|
138
|
+
warnings: string[];
|
|
139
|
+
}
|
|
129
140
|
export declare class CodeIntelligenceCoordinator extends BaseDomainCoordinator<CoordinatorConfig, CodeIntelligenceWorkflowType> implements ICodeIntelligenceCoordinator {
|
|
130
141
|
private readonly memory;
|
|
131
142
|
private readonly agentCoordinator;
|
|
@@ -187,7 +198,6 @@ export declare class CodeIntelligenceCoordinator extends BaseDomainCoordinator<C
|
|
|
187
198
|
* Index code embeddings in GNN for fast similarity search
|
|
188
199
|
*/
|
|
189
200
|
private indexCodeEmbeddings;
|
|
190
|
-
private searchCodeWithGNN;
|
|
191
201
|
private enhanceImpactAnalysisWithGNN;
|
|
192
202
|
/**
|
|
193
203
|
* Adapt search pattern using SONA
|
|
@@ -197,10 +207,6 @@ export declare class CodeIntelligenceCoordinator extends BaseDomainCoordinator<C
|
|
|
197
207
|
* Store impact analysis pattern in SONA
|
|
198
208
|
*/
|
|
199
209
|
private storeImpactPattern;
|
|
200
|
-
/**
|
|
201
|
-
* Merge search results from semantic search and GNN
|
|
202
|
-
*/
|
|
203
|
-
private mergeSearchResults;
|
|
204
210
|
private hashCode;
|
|
205
211
|
private spawnIndexerAgent;
|
|
206
212
|
private spawnSearchAgent;
|
|
@@ -211,7 +217,7 @@ export declare class CodeIntelligenceCoordinator extends BaseDomainCoordinator<C
|
|
|
211
217
|
protected subscribeToEvents(): void;
|
|
212
218
|
private handleTestRunCompleted;
|
|
213
219
|
private handleFilesChanged;
|
|
214
|
-
|
|
220
|
+
indexForSearch(paths: string[]): Promise<SearchIndexSummary>;
|
|
215
221
|
private loadWorkflowState;
|
|
216
222
|
private saveWorkflowState;
|
|
217
223
|
/**
|
|
@@ -59,6 +59,8 @@ const DEFAULT_CONFIG = {
|
|
|
59
59
|
* CQ-002: Extends BaseDomainCoordinator
|
|
60
60
|
*/
|
|
61
61
|
const logger = LoggerFactory.create('code-intelligence');
|
|
62
|
+
/** Files made searchable per index run (content, plus vectors with an embedding model). */
|
|
63
|
+
const SEARCH_INDEX_FILE_LIMIT = 100;
|
|
62
64
|
export class CodeIntelligenceCoordinator extends BaseDomainCoordinator {
|
|
63
65
|
memory;
|
|
64
66
|
agentCoordinator;
|
|
@@ -336,9 +338,12 @@ export class CodeIntelligenceCoordinator extends BaseDomainCoordinator {
|
|
|
336
338
|
}
|
|
337
339
|
}
|
|
338
340
|
this.updateWorkflowProgress(workflowId, 70);
|
|
339
|
-
// Index content for
|
|
341
|
+
// Index content for search
|
|
340
342
|
if (indexedPaths.length > 0) {
|
|
341
|
-
await this.
|
|
343
|
+
const searchIndex = await this.indexForSearch(indexedPaths);
|
|
344
|
+
if (searchIndex.warnings.length > 0) {
|
|
345
|
+
result.value.warnings = [...(result.value.warnings ?? []), ...searchIndex.warnings];
|
|
346
|
+
}
|
|
342
347
|
}
|
|
343
348
|
this.updateWorkflowProgress(workflowId, 85);
|
|
344
349
|
// V3: Rebuild hypergraph from indexed files (keeps hypergraph in sync with KG)
|
|
@@ -414,18 +419,10 @@ export class CodeIntelligenceCoordinator extends BaseDomainCoordinator {
|
|
|
414
419
|
logger.info(`Adapted search pattern with ${pattern.similarity.toFixed(3)} similarity`);
|
|
415
420
|
}
|
|
416
421
|
}
|
|
417
|
-
//
|
|
418
|
-
|
|
419
|
-
if (this.config.enableGNN && this.gnnIndex) {
|
|
420
|
-
gnnResults = await this.searchCodeWithGNN(request);
|
|
421
|
-
}
|
|
422
|
-
// Perform search
|
|
422
|
+
// Perform search. #1224: GNN feature-hash neighbours are not merged in;
|
|
423
|
+
// they do not depend on the query and carried no file name or snippet.
|
|
423
424
|
const result = await this.semanticAnalyzer.search(request);
|
|
424
425
|
if (result.success) {
|
|
425
|
-
// Merge GNN results with semantic search results
|
|
426
|
-
if (gnnResults.length > 0) {
|
|
427
|
-
result.value.results = this.mergeSearchResults(result.value.results, gnnResults);
|
|
428
|
-
}
|
|
429
426
|
this.completeWorkflow(workflowId);
|
|
430
427
|
// Publish events
|
|
431
428
|
if (this.config.publishEvents) {
|
|
@@ -566,11 +563,6 @@ export class CodeIntelligenceCoordinator extends BaseDomainCoordinator {
|
|
|
566
563
|
return;
|
|
567
564
|
await GNNHelpers.indexCodeEmbeddings(this.gnnIndex, this.fileReader, paths);
|
|
568
565
|
}
|
|
569
|
-
async searchCodeWithGNN(request) {
|
|
570
|
-
if (!this.gnnIndex || !this.rlInitialized)
|
|
571
|
-
return [];
|
|
572
|
-
return GNNHelpers.searchCodeWithGNN(this.gnnIndex, request.query);
|
|
573
|
-
}
|
|
574
566
|
async enhanceImpactAnalysisWithGNN(request) {
|
|
575
567
|
if (!this.gnnIndex || !this.rlInitialized)
|
|
576
568
|
return;
|
|
@@ -655,12 +647,6 @@ export class CodeIntelligenceCoordinator extends BaseDomainCoordinator {
|
|
|
655
647
|
// ============================================================================
|
|
656
648
|
// Helper Methods
|
|
657
649
|
// ============================================================================
|
|
658
|
-
/**
|
|
659
|
-
* Merge search results from semantic search and GNN
|
|
660
|
-
*/
|
|
661
|
-
mergeSearchResults(semanticResults, gnnResults) {
|
|
662
|
-
return GNNHelpers.mergeSearchResults(semanticResults, gnnResults);
|
|
663
|
-
}
|
|
664
650
|
hashCode(str) {
|
|
665
651
|
return GNNHelpers.hashCode(str);
|
|
666
652
|
}
|
|
@@ -775,22 +761,33 @@ export class CodeIntelligenceCoordinator extends BaseDomainCoordinator {
|
|
|
775
761
|
// ============================================================================
|
|
776
762
|
// Helper Methods
|
|
777
763
|
// ============================================================================
|
|
778
|
-
async
|
|
779
|
-
// Index a subset of files for
|
|
764
|
+
async indexForSearch(paths) {
|
|
765
|
+
// Index a subset of files for search
|
|
780
766
|
// Limit to 100 files for performance in a single batch
|
|
781
|
-
const filesToIndex = paths.slice(0,
|
|
767
|
+
const filesToIndex = paths.slice(0, SEARCH_INDEX_FILE_LIMIT);
|
|
768
|
+
let searchable = 0;
|
|
782
769
|
for (const path of filesToIndex) {
|
|
783
770
|
try {
|
|
784
771
|
// Read actual file content
|
|
785
772
|
const result = await this.fileReader.readFile(path);
|
|
786
773
|
if (result.success && result.value) {
|
|
787
|
-
await this.semanticAnalyzer.indexCode(path, result.value);
|
|
774
|
+
const indexed = await this.semanticAnalyzer.indexCode(path, result.value);
|
|
775
|
+
if (indexed.success)
|
|
776
|
+
searchable++;
|
|
788
777
|
}
|
|
789
778
|
}
|
|
790
779
|
catch {
|
|
791
780
|
// Continue on error - file may not exist or be unreadable
|
|
792
781
|
}
|
|
793
782
|
}
|
|
783
|
+
// #1224: say when search will not see every indexed file.
|
|
784
|
+
const warnings = [];
|
|
785
|
+
if (searchable < paths.length) {
|
|
786
|
+
warnings.push(`Search covers ${searchable} of ${paths.length} indexed files` +
|
|
787
|
+
(paths.length > SEARCH_INDEX_FILE_LIMIT ? ` (at most ${SEARCH_INDEX_FILE_LIMIT} per index run)` : '') +
|
|
788
|
+
'; code in the other files is not found by search.');
|
|
789
|
+
}
|
|
790
|
+
return { searchable, warnings };
|
|
794
791
|
}
|
|
795
792
|
// ============================================================================
|
|
796
793
|
// State Persistence
|
|
@@ -71,6 +71,13 @@ export interface SearchResults {
|
|
|
71
71
|
results: SearchResult[];
|
|
72
72
|
total: number;
|
|
73
73
|
searchTime: number;
|
|
74
|
+
/**
|
|
75
|
+
* #1224, semantic searches only: 'vector' when an embedding model ranked the
|
|
76
|
+
* results, 'lexical-only' when none was available and query words were
|
|
77
|
+
* matched against the indexed text instead (`reason` says why).
|
|
78
|
+
*/
|
|
79
|
+
mode?: 'vector' | 'lexical-only';
|
|
80
|
+
reason?: string;
|
|
74
81
|
}
|
|
75
82
|
export interface SearchResult {
|
|
76
83
|
file: string;
|
|
@@ -79,6 +86,8 @@ export interface SearchResult {
|
|
|
79
86
|
score: number;
|
|
80
87
|
highlights: string[];
|
|
81
88
|
metadata?: Record<string, unknown>;
|
|
89
|
+
/** #1224: how a semantic hit was found; its score is a text-match score when 'lexical'. */
|
|
90
|
+
matchType?: 'vector' | 'lexical';
|
|
82
91
|
}
|
|
83
92
|
export interface ImpactRequest {
|
|
84
93
|
changedFiles: string[];
|
|
@@ -32,7 +32,10 @@ function interrupted(signal) {
|
|
|
32
32
|
removeHandlers();
|
|
33
33
|
// Restore signal termination (including its exit status) instead of swallowing
|
|
34
34
|
// Ctrl-C or converting a requested shutdown into a successful metrics result.
|
|
35
|
-
|
|
35
|
+
// An embedding host with its own listener already received this signal, so
|
|
36
|
+
// re-raising would deliver it twice; the host decides how to shut down (#992).
|
|
37
|
+
if (process.listenerCount(signal) === 0)
|
|
38
|
+
process.kill(process.pid, signal);
|
|
36
39
|
}
|
|
37
40
|
const signalHandlers = {
|
|
38
41
|
SIGINT: () => interrupted('SIGINT'),
|