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
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* - measured — an instrumented report covers the target: judged on the
|
|
10
10
|
* metrics the report collected (an uncollected metric is null,
|
|
11
|
-
* never 0%, and is left out of the threshold)
|
|
11
|
+
* never 0%, and is left out of the threshold). When target
|
|
12
|
+
* files are missing from the report, or the report is older
|
|
13
|
+
* than the sources, the evidence is insufficient (#1154): the
|
|
14
|
+
* threshold is not met and the exit code is 3;
|
|
12
15
|
* - unmeasured — the report has no entry for the target, the runner ran 0
|
|
13
16
|
* tests, or only test files were reported: no figure, exit 3;
|
|
14
17
|
* - estimate — no report exists, so the CLI shows a labelled STATIC
|
|
@@ -18,6 +21,7 @@
|
|
|
18
21
|
*/
|
|
19
22
|
import { type CoverageData } from './coverage-data.js';
|
|
20
23
|
import { type NoDataReason } from '../../coordination/handlers/coverage-target.js';
|
|
24
|
+
import { type CoverageEvidence } from '../../coordination/handlers/coverage-evidence.js';
|
|
21
25
|
/** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
|
|
22
26
|
export declare const EXIT_UNMEASURED = 3;
|
|
23
27
|
/** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
|
|
@@ -27,6 +31,7 @@ export type CliCoverage = {
|
|
|
27
31
|
kind: 'data';
|
|
28
32
|
data: CoverageData;
|
|
29
33
|
projectRoot?: string;
|
|
34
|
+
evidence?: CoverageEvidence;
|
|
30
35
|
} | {
|
|
31
36
|
kind: 'no-data';
|
|
32
37
|
reason: NoDataReason;
|
|
@@ -112,6 +117,9 @@ export type CliCoverageOutcome = {
|
|
|
112
117
|
meetsThreshold: boolean;
|
|
113
118
|
};
|
|
114
119
|
recommendations: string[];
|
|
120
|
+
/** #1154: why the report cannot support a verdict for the target; empty when it can. */
|
|
121
|
+
insufficientEvidence: string[];
|
|
122
|
+
evidence?: CoverageEvidence;
|
|
115
123
|
};
|
|
116
124
|
/** Caller-facing explanation of a static estimate. */
|
|
117
125
|
export declare function estimateMessage(): string;
|
|
@@ -122,7 +130,8 @@ export declare function estimateMessage(): string;
|
|
|
122
130
|
export declare function evaluateCliCoverage(api: CoverageAnalyzeAPI, targetPath: string, threshold: number, log?: (message: string) => void): Promise<CliCoverageOutcome>;
|
|
123
131
|
/**
|
|
124
132
|
* Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
|
|
125
|
-
* 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
|
|
133
|
+
* 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
|
|
134
|
+
* or insufficient evidence (target files missing from the report, stale report).
|
|
126
135
|
*/
|
|
127
136
|
export declare function coverageExitCode(outcome: CliCoverageOutcome, threshold: number): number;
|
|
128
137
|
/** The `-F json` document for an outcome (same shape in every case). */
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
*
|
|
9
9
|
* - measured — an instrumented report covers the target: judged on the
|
|
10
10
|
* metrics the report collected (an uncollected metric is null,
|
|
11
|
-
* never 0%, and is left out of the threshold)
|
|
11
|
+
* never 0%, and is left out of the threshold). When target
|
|
12
|
+
* files are missing from the report, or the report is older
|
|
13
|
+
* than the sources, the evidence is insufficient (#1154): the
|
|
14
|
+
* threshold is not met and the exit code is 3;
|
|
12
15
|
* - unmeasured — the report has no entry for the target, the runner ran 0
|
|
13
16
|
* tests, or only test files were reported: no figure, exit 3;
|
|
14
17
|
* - estimate — no report exists, so the CLI shows a labelled STATIC
|
|
@@ -20,6 +23,7 @@ import chalk from 'chalk';
|
|
|
20
23
|
import { walkSourceFiles } from './file-discovery.js';
|
|
21
24
|
import { buildCoverageData, summarizeCoverage } from './coverage-data.js';
|
|
22
25
|
import { describeNoData, reconcileRecommendations, resolveExistingCoverage, thresholdVerdict, } from '../../coordination/handlers/coverage-target.js';
|
|
26
|
+
import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
|
|
23
27
|
/** `aqe coverage` exit code when no coverage measurement exists for the target (#995). */
|
|
24
28
|
export const EXIT_UNMEASURED = 3;
|
|
25
29
|
/** Provenance labels, the same vocabulary as MCP `coverage_analyze_sublinear`. */
|
|
@@ -46,8 +50,12 @@ export async function resolveCliCoverageData(targetPath, log = message => consol
|
|
|
46
50
|
if (existing.status === 'evaluated') {
|
|
47
51
|
const { evaluation, projectRoot } = existing;
|
|
48
52
|
if (evaluation.status === 'measured') {
|
|
49
|
-
const files = evaluation
|
|
50
|
-
|
|
53
|
+
const { files, evidence } = evaluation;
|
|
54
|
+
const data = {
|
|
55
|
+
files, summary: summarizeCoverage(files), instrumented: true,
|
|
56
|
+
...(evidence.unmeasuredFiles.length > 0 ? { unmeasuredFiles: evidence.unmeasuredFiles } : {}),
|
|
57
|
+
};
|
|
58
|
+
return { kind: 'data', data, projectRoot, evidence };
|
|
51
59
|
}
|
|
52
60
|
return { kind: 'no-data', reason: evaluation.reason, message: describeNoData(evaluation.reason, targetPath, projectRoot) };
|
|
53
61
|
}
|
|
@@ -104,12 +112,17 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
|
|
|
104
112
|
// #995 review NB5: a metric the report never collected is null — not 0 —
|
|
105
113
|
// and is left out of the threshold verdict (same rule as MCP).
|
|
106
114
|
const collected = metricsCollected(data);
|
|
107
|
-
const
|
|
115
|
+
const figures = thresholdVerdict(report.summary, threshold, collected);
|
|
116
|
+
// #1154: figures over part of the target, or from a stale report, never meet the threshold.
|
|
117
|
+
const insufficientEvidence = describeEvidence(resolved.evidence, resolved.projectRoot ?? targetPath);
|
|
118
|
+
const verdict = { ...figures, meetsThreshold: figures.meetsThreshold && insufficientEvidence.length === 0 };
|
|
108
119
|
return {
|
|
109
120
|
kind: 'measured',
|
|
110
121
|
data,
|
|
111
122
|
collected,
|
|
112
123
|
verdict,
|
|
124
|
+
insufficientEvidence,
|
|
125
|
+
...(resolved.evidence ? { evidence: resolved.evidence } : {}),
|
|
113
126
|
summary: {
|
|
114
127
|
...report.summary,
|
|
115
128
|
branch: collected.branch ? report.summary.branch : null,
|
|
@@ -117,16 +130,19 @@ export async function evaluateCliCoverage(api, targetPath, threshold, log) {
|
|
|
117
130
|
statement: collected.statement ? report.summary.statement : null,
|
|
118
131
|
},
|
|
119
132
|
// NB-A: the shortfall advice comes from the same verdict (shared with MCP).
|
|
120
|
-
recommendations: reconcileRecommendations(report.recommendations ?? [],
|
|
133
|
+
recommendations: reconcileRecommendations(report.recommendations ?? [], figures, threshold, collected),
|
|
121
134
|
};
|
|
122
135
|
}
|
|
123
136
|
/**
|
|
124
137
|
* Exit code: 0 meets (by more than 5%), 1 below / error, 2 within 5% above,
|
|
125
|
-
* 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
|
|
138
|
+
* 3 UNMEASURED (not in the report, 0 tests, test-only report, or estimate only)
|
|
139
|
+
* or insufficient evidence (target files missing from the report, stale report).
|
|
126
140
|
*/
|
|
127
141
|
export function coverageExitCode(outcome, threshold) {
|
|
128
142
|
switch (outcome.kind) {
|
|
129
143
|
case 'measured': {
|
|
144
|
+
if (outcome.insufficientEvidence.length > 0)
|
|
145
|
+
return EXIT_UNMEASURED;
|
|
130
146
|
const { overall, meetsThreshold } = outcome.verdict;
|
|
131
147
|
if (!meetsThreshold)
|
|
132
148
|
return 1;
|
|
@@ -158,6 +174,10 @@ export function coverageJson(outcome, threshold, target) {
|
|
|
158
174
|
functionDataCollected: outcome.collected.function,
|
|
159
175
|
statementDataCollected: outcome.collected.statement,
|
|
160
176
|
...(outcome.data.unmeasuredFiles?.length ? { unmeasuredFiles: outcome.data.unmeasuredFiles } : {}),
|
|
177
|
+
...(outcome.evidence ? { evidenceStatus: outcome.evidence.status } : {}),
|
|
178
|
+
...(outcome.evidence?.stale ? { staleReport: outcome.evidence.stale } : {}),
|
|
179
|
+
...(outcome.insufficientEvidence.length > 0
|
|
180
|
+
? { warning: `INSUFFICIENT EVIDENCE: ${outcome.insufficientEvidence.join('; ')}` } : {}),
|
|
161
181
|
};
|
|
162
182
|
case 'estimate':
|
|
163
183
|
return {
|
|
@@ -17,6 +17,11 @@ export interface FleetOperationTask {
|
|
|
17
17
|
domain: DomainName;
|
|
18
18
|
type: string;
|
|
19
19
|
payload: Record<string, unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* #1154: why the input cannot support a passing verdict (target files missing
|
|
22
|
+
* from the coverage report, a stale report). The verdict fails while non-empty.
|
|
23
|
+
*/
|
|
24
|
+
insufficientEvidence?: string[];
|
|
20
25
|
}
|
|
21
26
|
export type FleetOperationPlan = {
|
|
22
27
|
success: true;
|
|
@@ -27,6 +32,9 @@ export type FleetOperationPlan = {
|
|
|
27
32
|
};
|
|
28
33
|
/** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
|
|
29
34
|
export declare const FLEET_COVERAGE_THRESHOLD = 80;
|
|
30
|
-
/**
|
|
31
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Build the domain task for a fleet operation on `target`, or say why it
|
|
37
|
+
* cannot run. `projectRoot` defaults to the project `aqe` runs in.
|
|
38
|
+
*/
|
|
39
|
+
export declare function planFleetOperation(operation: FleetOperation, target: string, projectRoot?: string): Promise<FleetOperationPlan>;
|
|
32
40
|
//# sourceMappingURL=fleet-operation.d.ts.map
|
|
@@ -15,18 +15,30 @@ import { extname, resolve } from 'node:path';
|
|
|
15
15
|
import { walkSourceFiles } from './file-discovery.js';
|
|
16
16
|
import { summarizeCoverage } from './coverage-data.js';
|
|
17
17
|
import { describeNoData, resolveExistingCoverage } from '../../coordination/handlers/coverage-target.js';
|
|
18
|
+
import { describeEvidence } from '../../coordination/handlers/coverage-evidence.js';
|
|
18
19
|
import { MAX_SAST_FILE_BYTES } from '../../domains/security-compliance/sast-path-guard.js';
|
|
20
|
+
import { confinePayloadPaths } from '../../shared/io/payload-path-guard.js';
|
|
19
21
|
export const FLEET_OPERATIONS = ['test', 'analyze', 'scan'];
|
|
20
22
|
/** Coverage threshold `analyze` judges against, as `aqe coverage` does by default. */
|
|
21
23
|
export const FLEET_COVERAGE_THRESHOLD = 80;
|
|
22
24
|
/** Extensions the built-in SAST patterns cover (sast-scanner.ts). */
|
|
23
25
|
const SAST_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']);
|
|
24
26
|
const refuse = (error) => ({ success: false, error });
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Build the domain task for a fleet operation on `target`, or say why it
|
|
29
|
+
* cannot run. `projectRoot` defaults to the project `aqe` runs in.
|
|
30
|
+
*/
|
|
31
|
+
export async function planFleetOperation(operation, target, projectRoot) {
|
|
27
32
|
const targetPath = resolve(target);
|
|
28
33
|
if (!existsSync(targetPath))
|
|
29
34
|
return refuse(`Target does not exist: ${target}`);
|
|
35
|
+
// #1146: the target is confined to the project, as handler paths are
|
|
36
|
+
// (#1096): a symlink that leads out of the project is refused here instead
|
|
37
|
+
// of failing every worker later.
|
|
38
|
+
const { skipped } = await confinePayloadPaths([target], { projectRoot, allowDirectory: true });
|
|
39
|
+
if (skipped[0]?.reason === 'outside-project-root') {
|
|
40
|
+
return refuse(`Target ${target} resolves outside the project. Run aqe from the project the target belongs to.`);
|
|
41
|
+
}
|
|
30
42
|
switch (operation) {
|
|
31
43
|
case 'test': {
|
|
32
44
|
const sourceFiles = walkSourceFiles(targetPath, { includeTests: false });
|
|
@@ -61,9 +73,14 @@ export async function planFleetOperation(operation, target) {
|
|
|
61
73
|
if (evaluation.status !== 'measured')
|
|
62
74
|
return refuse(describeNoData(evaluation.reason, target, projectRoot));
|
|
63
75
|
const coverageData = { files: evaluation.files, summary: summarizeCoverage(evaluation.files) };
|
|
76
|
+
const insufficientEvidence = describeEvidence(evaluation.evidence, projectRoot);
|
|
64
77
|
return {
|
|
65
78
|
success: true,
|
|
66
|
-
task: {
|
|
79
|
+
task: {
|
|
80
|
+
domain: 'coverage-analysis', type: 'analyze-coverage',
|
|
81
|
+
payload: { coverageData, threshold: FLEET_COVERAGE_THRESHOLD },
|
|
82
|
+
...(insufficientEvidence.length > 0 ? { insufficientEvidence } : {}),
|
|
83
|
+
},
|
|
67
84
|
};
|
|
68
85
|
}
|
|
69
86
|
}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* - test fails when no test was generated or a generated test failed
|
|
9
9
|
* the test quality gate;
|
|
10
10
|
* - analyze fails when coverage over the collected metrics is below the
|
|
11
|
-
* threshold (an uncollected metric is not counted as 0%)
|
|
11
|
+
* threshold (an uncollected metric is not counted as 0%), or when
|
|
12
|
+
* the report leaves target files unmeasured or is stale (#1154).
|
|
12
13
|
* A result without the expected shape fails rather than passing unread.
|
|
13
14
|
*/
|
|
14
15
|
import { type FleetOperation } from './fleet-operation.js';
|
|
@@ -20,12 +21,27 @@ export interface FleetResultSummary {
|
|
|
20
21
|
}
|
|
21
22
|
/** Summarize one completed task's result for its fleet operation. */
|
|
22
23
|
export declare function summarizeFleetResult(operation: FleetOperation, result: unknown): FleetResultSummary;
|
|
24
|
+
export interface FleetVerdict {
|
|
25
|
+
/** The workers' results combined into one (#1146); undefined when no worker completed. */
|
|
26
|
+
combined: unknown;
|
|
27
|
+
/** Summary of the combined result; undefined when no worker completed. */
|
|
28
|
+
summary?: FleetResultSummary;
|
|
29
|
+
passed: boolean;
|
|
30
|
+
reasons: string[];
|
|
31
|
+
}
|
|
23
32
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
33
|
+
* Judge a fleet run: the completed workers' results are combined (each worker
|
|
34
|
+
* handled its own share of the target, #1146) and summarized once.
|
|
35
|
+
* `insufficientEvidence` (from the operation's plan) fails the verdict whatever
|
|
36
|
+
* the workers returned.
|
|
26
37
|
*/
|
|
38
|
+
export declare function judgeFleetRun(operation: FleetOperation, workers: ReadonlyArray<{
|
|
39
|
+
success: boolean;
|
|
40
|
+
result: unknown;
|
|
41
|
+
}>, insufficientEvidence?: readonly string[]): FleetVerdict;
|
|
42
|
+
/** Print the combined result and the verdict over all workers. Returns whether the operation passed. */
|
|
27
43
|
export declare function reportFleetVerdict(operation: FleetOperation, workers: ReadonlyArray<{
|
|
28
44
|
success: boolean;
|
|
29
45
|
result: unknown;
|
|
30
|
-
}>, log?: (line: string) => void): boolean;
|
|
46
|
+
}>, log?: (line: string) => void, insufficientEvidence?: readonly string[]): boolean;
|
|
31
47
|
//# sourceMappingURL=fleet-result.d.ts.map
|
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
* - test fails when no test was generated or a generated test failed
|
|
9
9
|
* the test quality gate;
|
|
10
10
|
* - analyze fails when coverage over the collected metrics is below the
|
|
11
|
-
* threshold (an uncollected metric is not counted as 0%)
|
|
11
|
+
* threshold (an uncollected metric is not counted as 0%), or when
|
|
12
|
+
* the report leaves target files unmeasured or is stale (#1154).
|
|
12
13
|
* A result without the expected shape fails rather than passing unread.
|
|
13
14
|
*/
|
|
14
15
|
import chalk from 'chalk';
|
|
15
16
|
import { FLEET_COVERAGE_THRESHOLD } from './fleet-operation.js';
|
|
16
17
|
import { thresholdVerdict } from '../../coordination/handlers/coverage-target.js';
|
|
18
|
+
import { combineFleetResults } from './fleet-shard.js';
|
|
17
19
|
const SEVERITIES = ['critical', 'high', 'medium', 'low', 'informational'];
|
|
18
20
|
const MAX_LISTED_FINDINGS = 10;
|
|
19
21
|
const asRecord = (value) => value !== null && typeof value === 'object' ? value : undefined;
|
|
@@ -32,8 +34,9 @@ function summarizeScan(result) {
|
|
|
32
34
|
`Files scanned: ${coverage?.filesScanned ?? 'n/a'} (evidence: ${completeness})`,
|
|
33
35
|
...findings.slice(0, MAX_LISTED_FINDINGS).map(f => ` [${f.severity ?? '?'}] ${f.title ?? 'untitled'} @ ${f.location?.file ?? '?'}:${f.location?.line ?? '?'}`),
|
|
34
36
|
];
|
|
35
|
-
if (findings.length > MAX_LISTED_FINDINGS)
|
|
36
|
-
lines.push(` … ${findings.length - MAX_LISTED_FINDINGS} more`);
|
|
37
|
+
if (findings.length > MAX_LISTED_FINDINGS) {
|
|
38
|
+
lines.push(` … ${findings.length - MAX_LISTED_FINDINGS} more (--format json lists every finding)`);
|
|
39
|
+
}
|
|
37
40
|
const reasons = [];
|
|
38
41
|
if (count('critical') + count('high') > 0)
|
|
39
42
|
reasons.push(`${count('critical')} critical and ${count('high')} high findings`);
|
|
@@ -96,29 +99,37 @@ export function summarizeFleetResult(operation, result) {
|
|
|
96
99
|
}
|
|
97
100
|
}
|
|
98
101
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
102
|
+
* Judge a fleet run: the completed workers' results are combined (each worker
|
|
103
|
+
* handled its own share of the target, #1146) and summarized once.
|
|
104
|
+
* `insufficientEvidence` (from the operation's plan) fails the verdict whatever
|
|
105
|
+
* the workers returned.
|
|
101
106
|
*/
|
|
102
|
-
export function
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
export function judgeFleetRun(operation, workers, insufficientEvidence = []) {
|
|
108
|
+
const completed = workers.filter(w => w.success).map(w => w.result);
|
|
109
|
+
const combined = completed.length > 0 ? combineFleetResults(operation, completed) : undefined;
|
|
110
|
+
const summary = completed.length > 0 ? summarizeFleetResult(operation, combined) : undefined;
|
|
111
|
+
const incomplete = workers.length - completed.length;
|
|
112
|
+
const reasons = [...(summary?.reasons ?? [])];
|
|
113
|
+
if (insufficientEvidence.length > 0)
|
|
114
|
+
reasons.push('insufficient evidence: the coverage report is incomplete or stale for the target');
|
|
115
|
+
if (incomplete > 0)
|
|
116
|
+
reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
|
|
117
|
+
return { combined, ...(summary ? { summary } : {}), passed: reasons.length === 0, reasons };
|
|
118
|
+
}
|
|
119
|
+
/** Print the combined result and the verdict over all workers. Returns whether the operation passed. */
|
|
120
|
+
export function reportFleetVerdict(operation, workers, log = line => console.log(line), insufficientEvidence = []) {
|
|
121
|
+
const verdict = judgeFleetRun(operation, workers, insufficientEvidence);
|
|
122
|
+
if (verdict.summary) {
|
|
110
123
|
log('');
|
|
111
|
-
for (const line of summary.lines)
|
|
124
|
+
for (const line of verdict.summary.lines)
|
|
112
125
|
log(` ${line}`);
|
|
113
126
|
}
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
if (incomplete > 0)
|
|
117
|
-
reasons.unshift(`${incomplete} of ${workers.length} workers did not complete`);
|
|
127
|
+
for (const reason of insufficientEvidence)
|
|
128
|
+
log(chalk.yellow(` Evidence: ${reason}`));
|
|
118
129
|
log('');
|
|
119
|
-
log(
|
|
130
|
+
log(verdict.passed
|
|
120
131
|
? chalk.green(' Verdict: PASSED')
|
|
121
|
-
: chalk.red(` Verdict: FAILED (${reasons.join('; ')})`));
|
|
122
|
-
return
|
|
132
|
+
: chalk.red(` Verdict: FAILED (${verdict.reasons.join('; ')})`));
|
|
133
|
+
return verdict.passed;
|
|
123
134
|
}
|
|
124
135
|
//# sourceMappingURL=fleet-result.js.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - `aqe fleet run` work split (#1146)
|
|
3
|
+
*
|
|
4
|
+
* `--parallel N` used to submit the same payload N times, so every worker did
|
|
5
|
+
* the whole job again. Now the target's files are split across the workers:
|
|
6
|
+
* - scan -> each worker scans its own share of the files
|
|
7
|
+
* - test -> each worker generates tests for its own share of the source files
|
|
8
|
+
* - analyze -> one coverage report is judged as a whole, so it runs as one task
|
|
9
|
+
* The shard results are then combined into one result for the verdict. Only
|
|
10
|
+
* figures the workers returned are combined; nothing is estimated.
|
|
11
|
+
*/
|
|
12
|
+
import type { FleetOperation } from './fleet-operation.js';
|
|
13
|
+
/** Workers used when --parallel is not given. */
|
|
14
|
+
export declare const DEFAULT_FLEET_WORKERS = 4;
|
|
15
|
+
export interface FleetShardPlan {
|
|
16
|
+
/** One payload per worker. */
|
|
17
|
+
payloads: Array<Record<string, unknown>>;
|
|
18
|
+
/** Files given to each worker (empty for an operation that is not split). */
|
|
19
|
+
files: string[][];
|
|
20
|
+
/** Why fewer workers run than were asked for, if they do. */
|
|
21
|
+
note?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Split `items` into at most `parts` contiguous chunks whose sizes differ by at most one. */
|
|
24
|
+
export declare function splitEvenly<T>(items: readonly T[], parts: number): T[][];
|
|
25
|
+
/**
|
|
26
|
+
* Split an operation's payload across workers. `requested` is the --parallel
|
|
27
|
+
* value, or undefined when the flag was not given.
|
|
28
|
+
*/
|
|
29
|
+
export declare function shardFleetPayload(operation: FleetOperation, payload: Record<string, unknown>, requested: number | undefined): FleetShardPlan;
|
|
30
|
+
/**
|
|
31
|
+
* Combine the results of the workers that completed into one result of the
|
|
32
|
+
* operation's shape. Returns undefined when a result cannot be read, so the
|
|
33
|
+
* verdict fails as unreadable instead of passing on part of the results.
|
|
34
|
+
*/
|
|
35
|
+
export declare function combineFleetResults(operation: FleetOperation, results: readonly unknown[]): unknown;
|
|
36
|
+
//# sourceMappingURL=fleet-shard.d.ts.map
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - `aqe fleet run` work split (#1146)
|
|
3
|
+
*
|
|
4
|
+
* `--parallel N` used to submit the same payload N times, so every worker did
|
|
5
|
+
* the whole job again. Now the target's files are split across the workers:
|
|
6
|
+
* - scan -> each worker scans its own share of the files
|
|
7
|
+
* - test -> each worker generates tests for its own share of the source files
|
|
8
|
+
* - analyze -> one coverage report is judged as a whole, so it runs as one task
|
|
9
|
+
* The shard results are then combined into one result for the verdict. Only
|
|
10
|
+
* figures the workers returned are combined; nothing is estimated.
|
|
11
|
+
*/
|
|
12
|
+
/** Workers used when --parallel is not given. */
|
|
13
|
+
export const DEFAULT_FLEET_WORKERS = 4;
|
|
14
|
+
/** The payload field each splittable operation's files are in. */
|
|
15
|
+
const SHARD_FIELD = { scan: 'files', test: 'sourceFiles' };
|
|
16
|
+
/** Split `items` into at most `parts` contiguous chunks whose sizes differ by at most one. */
|
|
17
|
+
export function splitEvenly(items, parts) {
|
|
18
|
+
const count = Math.max(1, Math.min(parts, items.length));
|
|
19
|
+
const base = Math.floor(items.length / count);
|
|
20
|
+
const extra = items.length % count;
|
|
21
|
+
const chunks = [];
|
|
22
|
+
let start = 0;
|
|
23
|
+
for (let i = 0; i < count; i++) {
|
|
24
|
+
const size = base + (i < extra ? 1 : 0);
|
|
25
|
+
chunks.push(items.slice(start, start + size));
|
|
26
|
+
start += size;
|
|
27
|
+
}
|
|
28
|
+
return chunks;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Split an operation's payload across workers. `requested` is the --parallel
|
|
32
|
+
* value, or undefined when the flag was not given.
|
|
33
|
+
*/
|
|
34
|
+
export function shardFleetPayload(operation, payload, requested) {
|
|
35
|
+
const field = SHARD_FIELD[operation];
|
|
36
|
+
if (!field) {
|
|
37
|
+
const note = requested !== undefined && requested > 1
|
|
38
|
+
? `${operation} judges one coverage report as a whole, so it runs as one task; --parallel ${requested} does not apply.`
|
|
39
|
+
: undefined;
|
|
40
|
+
return { payloads: [payload], files: [[]], ...(note ? { note } : {}) };
|
|
41
|
+
}
|
|
42
|
+
const files = Array.isArray(payload[field]) ? payload[field] : [];
|
|
43
|
+
const wanted = requested ?? DEFAULT_FLEET_WORKERS;
|
|
44
|
+
const chunks = splitEvenly(files, wanted);
|
|
45
|
+
const note = requested !== undefined && chunks.length < requested
|
|
46
|
+
? `--parallel ${requested} asks for more workers than there are files (${files.length}); ${chunks.length} run.`
|
|
47
|
+
: undefined;
|
|
48
|
+
return {
|
|
49
|
+
payloads: chunks.map(chunk => ({ ...payload, [field]: chunk })),
|
|
50
|
+
files: chunks,
|
|
51
|
+
...(note ? { note } : {}),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const asRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
55
|
+
const SCAN_COUNTS = ['critical', 'high', 'medium', 'low', 'informational', 'totalFiles'];
|
|
56
|
+
function sum(records, key) {
|
|
57
|
+
const values = records.map(r => r?.[key]);
|
|
58
|
+
return values.every(v => typeof v === 'number') ? values.reduce((a, b) => a + b, 0) : undefined;
|
|
59
|
+
}
|
|
60
|
+
function combineScans(results) {
|
|
61
|
+
if (!results.every(r => asRecord(r.summary) && Array.isArray(r.vulnerabilities)))
|
|
62
|
+
return undefined;
|
|
63
|
+
const summaries = results.map(r => asRecord(r.summary));
|
|
64
|
+
const summary = {};
|
|
65
|
+
for (const key of SCAN_COUNTS) {
|
|
66
|
+
const total = sum(summaries, key);
|
|
67
|
+
if (total !== undefined)
|
|
68
|
+
summary[key] = total;
|
|
69
|
+
}
|
|
70
|
+
const coverages = results.map(r => asRecord(r.coverage));
|
|
71
|
+
const filesScanned = sum(coverages, 'filesScanned');
|
|
72
|
+
const linesScanned = sum(coverages, 'linesScanned');
|
|
73
|
+
// Complete only when every shard says so; a shard without evidence leaves it unknown.
|
|
74
|
+
const completeness = results.map(r => asRecord(r.evidence)?.completeness);
|
|
75
|
+
const combinedCompleteness = !completeness.every(c => typeof c === 'string') ? undefined
|
|
76
|
+
: completeness.every(c => c === 'complete') ? 'complete'
|
|
77
|
+
: completeness.every(c => c === 'none') ? 'none' : 'partial';
|
|
78
|
+
return {
|
|
79
|
+
vulnerabilities: results.flatMap(r => r.vulnerabilities),
|
|
80
|
+
summary,
|
|
81
|
+
...(filesScanned !== undefined || linesScanned !== undefined
|
|
82
|
+
? { coverage: { ...(filesScanned !== undefined ? { filesScanned } : {}), ...(linesScanned !== undefined ? { linesScanned } : {}) } }
|
|
83
|
+
: {}),
|
|
84
|
+
...(combinedCompleteness ? { evidence: { completeness: combinedCompleteness } } : {}),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Combine the results of the workers that completed into one result of the
|
|
89
|
+
* operation's shape. Returns undefined when a result cannot be read, so the
|
|
90
|
+
* verdict fails as unreadable instead of passing on part of the results.
|
|
91
|
+
*/
|
|
92
|
+
export function combineFleetResults(operation, results) {
|
|
93
|
+
if (results.length === 0)
|
|
94
|
+
return undefined;
|
|
95
|
+
if (results.length === 1)
|
|
96
|
+
return results[0];
|
|
97
|
+
const records = results.map(asRecord);
|
|
98
|
+
if (records.some(r => !r))
|
|
99
|
+
return undefined;
|
|
100
|
+
const valid = records;
|
|
101
|
+
switch (operation) {
|
|
102
|
+
case 'scan': return combineScans(valid);
|
|
103
|
+
case 'test':
|
|
104
|
+
return valid.every(r => Array.isArray(r.tests)) ? { tests: valid.flatMap(r => r.tests) } : undefined;
|
|
105
|
+
case 'analyze':
|
|
106
|
+
// Never split, so several results mean duplicated work; none is preferred.
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=fleet-shard.js.map
|
|
@@ -52,6 +52,25 @@ async function confineTarget(taskType, target) {
|
|
|
52
52
|
return ok(undefined);
|
|
53
53
|
return requirePayloadPath(taskType, 'target', target, { allowDirectory: true, allowMissing: true });
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* #1224: index the files for the code-intelligence search (the index the
|
|
57
|
+
* Queen's `search` task reads), not only the knowledge graph. Returns warnings
|
|
58
|
+
* for the index result.
|
|
59
|
+
*/
|
|
60
|
+
async function indexFilesForSearch(ctx, indexedFiles) {
|
|
61
|
+
const unavailable = 'Search index not updated: the code-intelligence domain is unavailable, so a code search will not find these files.';
|
|
62
|
+
if (!ctx.getCodeIntelligenceCoordinator)
|
|
63
|
+
return [unavailable];
|
|
64
|
+
try {
|
|
65
|
+
const coordinator = await ctx.getCodeIntelligenceCoordinator();
|
|
66
|
+
if (!coordinator)
|
|
67
|
+
return [unavailable];
|
|
68
|
+
return (await coordinator.indexForSearch(indexedFiles)).warnings;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
return [`Search index not updated: ${toError(error).message}`];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
55
74
|
export function registerCodeIntelligenceHandlers(ctx) {
|
|
56
75
|
// Register code indexing handler - REAL IMPLEMENTATION
|
|
57
76
|
ctx.registerHandler('index-code', async (task) => {
|
|
@@ -108,6 +127,7 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
108
127
|
// caller's target the way #997 resolves it. Best-effort: indexing has
|
|
109
128
|
// already succeeded, so a metric failure only omits projectMetrics.
|
|
110
129
|
const projectMetrics = await collectProjectMetricsForTarget(ctx, targetPath, indexedFiles);
|
|
130
|
+
const searchWarnings = await indexFilesForSearch(ctx, indexedFiles);
|
|
111
131
|
// Detect languages from files
|
|
112
132
|
const detectedLanguages = new Set();
|
|
113
133
|
const extToLang = {
|
|
@@ -140,7 +160,7 @@ export function registerCodeIntelligenceHandlers(ctx) {
|
|
|
140
160
|
languages: Array.from(detectedLanguages),
|
|
141
161
|
duration: indexResult.duration,
|
|
142
162
|
errors: indexResult.errors,
|
|
143
|
-
warnings: indexResult.warnings,
|
|
163
|
+
warnings: [...(indexResult.warnings ?? []), ...searchWarnings],
|
|
144
164
|
skipped: indexResult.skipped ?? [],
|
|
145
165
|
...(projectMetrics ? { projectMetrics } : {}),
|
|
146
166
|
});
|
|
@@ -141,6 +141,8 @@ export declare function isRustProject(targetPath: string): boolean;
|
|
|
141
141
|
export declare function collectRustCoverage(targetPath: string, options?: {
|
|
142
142
|
timeoutMs?: number;
|
|
143
143
|
}): Promise<CollectedCoverage | null>;
|
|
144
|
+
/** Production source files under a directory (test, build and vendored directories skipped). */
|
|
145
|
+
export declare function walkSourceFiles(targetPath: string): string[];
|
|
144
146
|
/**
|
|
145
147
|
* Static coverage estimate from source shape, for when no instrumentation could
|
|
146
148
|
* be run.
|
|
@@ -502,7 +502,8 @@ function withRecomputedSummary(files) {
|
|
|
502
502
|
},
|
|
503
503
|
};
|
|
504
504
|
}
|
|
505
|
-
|
|
505
|
+
/** Production source files under a directory (test, build and vendored directories skipped). */
|
|
506
|
+
export function walkSourceFiles(targetPath) {
|
|
506
507
|
const found = [];
|
|
507
508
|
// Classification is relative to the analysis root (see isTestPath).
|
|
508
509
|
const rootDir = targetPath;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coverage evidence: is a report complete and current for its target? (#1154)
|
|
3
|
+
*
|
|
4
|
+
* A report judged over only the files it happens to contain says nothing
|
|
5
|
+
* about the target's other files. `aqe fleet run analyze --target src` printed
|
|
6
|
+
* "100% over 1 files" and "Verdict: PASSED" from a report that listed
|
|
7
|
+
* `src/math.js` while `src/unsafe.js` had no measurement at all, and a report
|
|
8
|
+
* written before the sources last changed was judged as if it were current.
|
|
9
|
+
*
|
|
10
|
+
* This module answers two questions for every caller of the shared resolver
|
|
11
|
+
* (MCP `coverage_analyze_sublinear` / `task_orchestrate`, `aqe coverage`,
|
|
12
|
+
* `aqe ci`, `aqe fleet run analyze`):
|
|
13
|
+
* 1. Which production source files under the target are not in the report?
|
|
14
|
+
* They are UNMEASURED: not 0%, and not left out silently.
|
|
15
|
+
* 2. Is the report older than source files it is judged against? (stale)
|
|
16
|
+
* Either one makes the evidence insufficient: no verdict may pass on it.
|
|
17
|
+
*/
|
|
18
|
+
import type { FileCoverage } from '../../domains/coverage-analysis/interfaces';
|
|
19
|
+
/** The report is older than these source files. */
|
|
20
|
+
export interface StaleReport {
|
|
21
|
+
reportPath: string;
|
|
22
|
+
reportModified: string;
|
|
23
|
+
newerFiles: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface CoverageEvidence {
|
|
26
|
+
/** `insufficient-evidence` when any target file is unmeasured or the report is stale. */
|
|
27
|
+
status: 'complete' | 'insufficient-evidence';
|
|
28
|
+
/** Production source files under the target with no entry in the report (absolute paths). */
|
|
29
|
+
unmeasuredFiles: string[];
|
|
30
|
+
/** Production source files under the target, measured or not. */
|
|
31
|
+
targetFiles: number;
|
|
32
|
+
stale?: StaleReport;
|
|
33
|
+
/** The coverage config whose include/exclude scoped `unmeasuredFiles`, if any. */
|
|
34
|
+
coverageScope?: {
|
|
35
|
+
source: string;
|
|
36
|
+
readable: boolean;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Production source files under a directory `target` that the report has no
|
|
41
|
+
* entry for. Only files in a language the report covers count: a JS report
|
|
42
|
+
* does not make a Python helper script unmeasured. Files the project's coverage
|
|
43
|
+
* config leaves out (include/exclude) were never meant to be measured and do
|
|
44
|
+
* not count either.
|
|
45
|
+
*/
|
|
46
|
+
export declare function findUnmeasuredSourceFiles(reportFiles: FileCoverage[], projectRoot: string, target: string): {
|
|
47
|
+
targetFiles: string[];
|
|
48
|
+
unmeasured: string[];
|
|
49
|
+
coverageScope?: {
|
|
50
|
+
source: string;
|
|
51
|
+
readable: boolean;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/** Source files modified after the report was written; `undefined` when the report is current. */
|
|
55
|
+
export declare function findStaleness(reportPath: string, sourceFiles: string[]): StaleReport | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* The evidence a report gives for `target`.
|
|
58
|
+
*
|
|
59
|
+
* `measuredFiles` are the report entries already scoped to the target.
|
|
60
|
+
* Completeness is checked only when `checkCompleteness` is set (a directory
|
|
61
|
+
* target, not a report file given as the target), staleness only when the
|
|
62
|
+
* report's path is known (not for a report the run just wrote).
|
|
63
|
+
*/
|
|
64
|
+
export declare function assessCoverageEvidence(report: {
|
|
65
|
+
files: FileCoverage[];
|
|
66
|
+
}, measuredFiles: FileCoverage[], projectRoot: string, target: string, options?: {
|
|
67
|
+
reportPath?: string;
|
|
68
|
+
checkCompleteness?: boolean;
|
|
69
|
+
}): CoverageEvidence;
|
|
70
|
+
/**
|
|
71
|
+
* Why the evidence is insufficient, one sentence per problem; empty when it is
|
|
72
|
+
* complete. Shared by MCP and CLI so the wording cannot drift.
|
|
73
|
+
*/
|
|
74
|
+
export declare function describeEvidence(evidence: CoverageEvidence | undefined, projectRoot: string): string[];
|
|
75
|
+
//# sourceMappingURL=coverage-evidence.d.ts.map
|