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
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agentic QE v3 - Accessibility Tester
|
|
3
|
-
* Extracted from accessibility-tester.ts
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
* Agentic QE v3 - Accessibility Tester Rules and Simulation
|
|
3
|
+
* Extracted from accessibility-tester.ts.
|
|
4
|
+
*
|
|
5
|
+
* #1145: the URL-pattern "heuristic" checks that used to live here guessed
|
|
6
|
+
* violations, contrast ratios, keyboard reports and WCAG verdicts from the URL
|
|
7
|
+
* text alone, without loading the page. They were removed: only a browser run
|
|
8
|
+
* measures a page. What remains is the rule catalogue and the opt-in
|
|
9
|
+
* simulation mode, whose synthetic output is always labelled unmeasured.
|
|
10
|
+
*/
|
|
11
|
+
import type { AccessibilityViolation, ViolationNode } from '../interfaces.js';
|
|
6
12
|
export interface AccessibilityRule {
|
|
7
13
|
id: string;
|
|
8
14
|
description: string;
|
|
@@ -24,28 +30,14 @@ export declare function initializeRules(): AccessibilityRule[];
|
|
|
24
30
|
*/
|
|
25
31
|
export declare function filterRulesByLevel(rules: AccessibilityRule[], level: 'A' | 'AA' | 'AAA'): AccessibilityRule[];
|
|
26
32
|
/**
|
|
27
|
-
* Run a rule
|
|
33
|
+
* Run a rule in simulation mode: synthetic, URL-hash-derived nodes for tests.
|
|
34
|
+
* The result is NOT a measurement (#1145); callers must label it unmeasured.
|
|
28
35
|
*/
|
|
29
|
-
export declare function
|
|
36
|
+
export declare function runSimulatedRule(rule: AccessibilityRule, context: RuleContext): {
|
|
30
37
|
nodes: ViolationNode[];
|
|
31
38
|
passed: boolean;
|
|
32
39
|
checkedNodes: number;
|
|
33
40
|
};
|
|
34
|
-
/**
|
|
35
|
-
* Validate a specific WCAG criterion deterministically
|
|
36
|
-
*/
|
|
37
|
-
export declare function validateCriterion(criterion: WCAGCriterion, urlHash: number): {
|
|
38
|
-
passed: boolean;
|
|
39
|
-
reason?: string;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Analyze contrast for common UI elements using heuristics
|
|
43
|
-
*/
|
|
44
|
-
export declare function analyzeContrastForElements(url: string): ContrastAnalysis[];
|
|
45
|
-
/**
|
|
46
|
-
* Generate keyboard navigation report using heuristics
|
|
47
|
-
*/
|
|
48
|
-
export declare function generateKeyboardReportWithHeuristics(url: string): KeyboardNavigationReport;
|
|
49
41
|
/**
|
|
50
42
|
* Hash a URL to a deterministic string
|
|
51
43
|
*/
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agentic QE v3 - Accessibility Tester
|
|
3
|
-
* Extracted from accessibility-tester.ts
|
|
2
|
+
* Agentic QE v3 - Accessibility Tester Rules and Simulation
|
|
3
|
+
* Extracted from accessibility-tester.ts.
|
|
4
|
+
*
|
|
5
|
+
* #1145: the URL-pattern "heuristic" checks that used to live here guessed
|
|
6
|
+
* violations, contrast ratios, keyboard reports and WCAG verdicts from the URL
|
|
7
|
+
* text alone, without loading the page. They were removed: only a browser run
|
|
8
|
+
* measures a page. What remains is the rule catalogue and the opt-in
|
|
9
|
+
* simulation mode, whose synthetic output is always labelled unmeasured.
|
|
4
10
|
*/
|
|
5
11
|
import { WCAG_CRITERIA } from './accessibility-tester-browser.js';
|
|
6
12
|
/**
|
|
@@ -34,149 +40,17 @@ export function filterRulesByLevel(rules, level) {
|
|
|
34
40
|
});
|
|
35
41
|
}
|
|
36
42
|
// ============================================================================
|
|
37
|
-
//
|
|
43
|
+
// Simulation Mode (Deterministic)
|
|
38
44
|
// ============================================================================
|
|
39
45
|
/**
|
|
40
|
-
* Run a rule
|
|
46
|
+
* Run a rule in simulation mode: synthetic, URL-hash-derived nodes for tests.
|
|
47
|
+
* The result is NOT a measurement (#1145); callers must label it unmeasured.
|
|
41
48
|
*/
|
|
42
|
-
export function
|
|
43
|
-
|
|
44
|
-
const nodes = checkRuleDeterministic(rule, context);
|
|
45
|
-
const checkedNodes = estimateCheckedNodes(rule, context);
|
|
46
|
-
return { nodes, passed: nodes.length === 0, checkedNodes };
|
|
47
|
-
}
|
|
48
|
-
const nodes = checkRuleWithHeuristics(rule, context, enableColorContrastCheck);
|
|
49
|
+
export function runSimulatedRule(rule, context) {
|
|
50
|
+
const nodes = checkRuleDeterministic(rule, context);
|
|
49
51
|
const checkedNodes = estimateCheckedNodes(rule, context);
|
|
50
52
|
return { nodes, passed: nodes.length === 0, checkedNodes };
|
|
51
53
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Heuristic-based WCAG rule checking for production mode.
|
|
54
|
-
*/
|
|
55
|
-
function checkRuleWithHeuristics(rule, context, enableColorContrastCheck) {
|
|
56
|
-
const nodes = [];
|
|
57
|
-
const url = context.url.toLowerCase();
|
|
58
|
-
switch (rule.id) {
|
|
59
|
-
case 'image-alt':
|
|
60
|
-
if (isLikelyImageHeavyPage(url))
|
|
61
|
-
nodes.push(...generateImageAltWarnings());
|
|
62
|
-
break;
|
|
63
|
-
case 'button-name':
|
|
64
|
-
if (isLikelyInteractivePage(url))
|
|
65
|
-
nodes.push(...generateButtonNameWarnings());
|
|
66
|
-
break;
|
|
67
|
-
case 'color-contrast':
|
|
68
|
-
if (enableColorContrastCheck)
|
|
69
|
-
nodes.push(...generateContrastWarnings());
|
|
70
|
-
break;
|
|
71
|
-
case 'html-lang':
|
|
72
|
-
if (isLikelyMissingLang(url)) {
|
|
73
|
-
nodes.push({
|
|
74
|
-
selector: 'html', html: '<html>', target: ['html'],
|
|
75
|
-
failureSummary: 'Page may be missing lang attribute',
|
|
76
|
-
fixSuggestion: 'Add lang attribute to <html> element (e.g., <html lang="en">)',
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
break;
|
|
80
|
-
case 'link-name':
|
|
81
|
-
if (hasNavigationPatterns(url))
|
|
82
|
-
nodes.push(...generateLinkNameWarnings());
|
|
83
|
-
break;
|
|
84
|
-
case 'focus-visible':
|
|
85
|
-
if (isLikelySPA(url))
|
|
86
|
-
nodes.push(...generateFocusVisibleWarnings());
|
|
87
|
-
break;
|
|
88
|
-
case 'bypass-blocks':
|
|
89
|
-
if (!hasSkipLinkPattern(url)) {
|
|
90
|
-
nodes.push({
|
|
91
|
-
selector: 'body', html: '<body>', target: ['body'],
|
|
92
|
-
failureSummary: 'Page may lack skip navigation mechanism',
|
|
93
|
-
fixSuggestion: 'Add a skip link at the beginning of the page to bypass repeated content',
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
break;
|
|
97
|
-
case 'label':
|
|
98
|
-
if (isFormPage(url))
|
|
99
|
-
nodes.push(...generateFormLabelWarnings());
|
|
100
|
-
break;
|
|
101
|
-
case 'keyboard-trap':
|
|
102
|
-
if (hasModalPatterns(url))
|
|
103
|
-
nodes.push(...generateKeyboardTrapWarnings());
|
|
104
|
-
break;
|
|
105
|
-
case 'focus-order':
|
|
106
|
-
if (hasComplexLayoutPatterns(url))
|
|
107
|
-
nodes.push(...generateFocusOrderWarnings());
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
return nodes;
|
|
111
|
-
}
|
|
112
|
-
// ============================================================================
|
|
113
|
-
// URL Pattern Detection
|
|
114
|
-
// ============================================================================
|
|
115
|
-
function isLikelyImageHeavyPage(url) {
|
|
116
|
-
return url.includes('gallery') || url.includes('photo') || url.includes('image') ||
|
|
117
|
-
url.includes('product') || url.includes('portfolio') || url.includes('media');
|
|
118
|
-
}
|
|
119
|
-
function isLikelyInteractivePage(url) {
|
|
120
|
-
return url.includes('app') || url.includes('dashboard') || url.includes('editor') ||
|
|
121
|
-
url.includes('tool') || url.includes('builder') || url.includes('widget');
|
|
122
|
-
}
|
|
123
|
-
function isLikelyMissingLang(url) {
|
|
124
|
-
return url.includes('cdn') || url.includes('static') || url.includes('.html') || url.includes('file://');
|
|
125
|
-
}
|
|
126
|
-
function hasNavigationPatterns(url) {
|
|
127
|
-
return url.includes('nav') || url.includes('menu') || url.includes('header') ||
|
|
128
|
-
url.includes('sidebar') || url.includes('footer');
|
|
129
|
-
}
|
|
130
|
-
function isLikelySPA(url) {
|
|
131
|
-
return url.includes('app') || url.includes('dashboard') || url.includes('#/') ||
|
|
132
|
-
url.includes('react') || url.includes('angular') || url.includes('vue');
|
|
133
|
-
}
|
|
134
|
-
function hasSkipLinkPattern(url) {
|
|
135
|
-
return url.includes('gov') || url.includes('edu') || url.includes('a11y') || url.includes('accessible');
|
|
136
|
-
}
|
|
137
|
-
function isFormPage(url) {
|
|
138
|
-
return url.includes('form') || url.includes('contact') || url.includes('register') ||
|
|
139
|
-
url.includes('signup') || url.includes('login') || url.includes('checkout') ||
|
|
140
|
-
url.includes('submit') || url.includes('search');
|
|
141
|
-
}
|
|
142
|
-
function hasModalPatterns(url) {
|
|
143
|
-
return url.includes('modal') || url.includes('dialog') || url.includes('popup') ||
|
|
144
|
-
url.includes('overlay') || url.includes('lightbox');
|
|
145
|
-
}
|
|
146
|
-
function hasComplexLayoutPatterns(url) {
|
|
147
|
-
return url.includes('dashboard') || url.includes('admin') || url.includes('grid') ||
|
|
148
|
-
url.includes('layout') || url.includes('multi');
|
|
149
|
-
}
|
|
150
|
-
// ============================================================================
|
|
151
|
-
// Warning Generators
|
|
152
|
-
// ============================================================================
|
|
153
|
-
function generateImageAltWarnings() {
|
|
154
|
-
return [{ selector: 'img', html: '<img src="...">', target: ['img'], failureSummary: 'Images should have descriptive alt text', fixSuggestion: 'Add alt attribute with meaningful description to all <img> elements' }];
|
|
155
|
-
}
|
|
156
|
-
function generateButtonNameWarnings() {
|
|
157
|
-
return [{ selector: 'button:not([aria-label])', html: '<button>', target: ['button'], failureSummary: 'Buttons should have accessible names', fixSuggestion: 'Ensure buttons have visible text or aria-label attribute' }];
|
|
158
|
-
}
|
|
159
|
-
function generateContrastWarnings() {
|
|
160
|
-
return [{ selector: '.text-content', html: '<div class="text-content">', target: ['.text-content'], failureSummary: 'Text elements should meet WCAG 2.2 AA contrast ratio (4.5:1)', fixSuggestion: 'Verify text color has sufficient contrast against background' }];
|
|
161
|
-
}
|
|
162
|
-
function generateLinkNameWarnings() {
|
|
163
|
-
return [{ selector: 'a:not([aria-label])', html: '<a href="#">', target: ['a'], failureSummary: 'Links should have descriptive text', fixSuggestion: 'Add meaningful link text or aria-label attribute' }];
|
|
164
|
-
}
|
|
165
|
-
function generateFocusVisibleWarnings() {
|
|
166
|
-
return [{ selector: ':focus', html: '<element>:focus', target: [':focus'], failureSummary: 'Interactive elements should have visible focus indicators', fixSuggestion: 'Do not remove outline on :focus; use :focus-visible for styling' }];
|
|
167
|
-
}
|
|
168
|
-
function generateFormLabelWarnings() {
|
|
169
|
-
return [{ selector: 'input:not([aria-label]):not([id])', html: '<input type="text">', target: ['input'], failureSummary: 'Form inputs should have associated labels', fixSuggestion: 'Add <label for="id"> or aria-label to form inputs' }];
|
|
170
|
-
}
|
|
171
|
-
function generateKeyboardTrapWarnings() {
|
|
172
|
-
return [{ selector: '[role="dialog"]', html: '<div role="dialog">', target: ['[role="dialog"]'], failureSummary: 'Modal dialogs should not trap keyboard focus', fixSuggestion: 'Ensure Escape key closes modal and Tab cycles within dialog' }];
|
|
173
|
-
}
|
|
174
|
-
function generateFocusOrderWarnings() {
|
|
175
|
-
return [{ selector: '[tabindex]', html: '<div tabindex="...">', target: ['[tabindex]'], failureSummary: 'Focus order should follow logical reading sequence', fixSuggestion: 'Avoid positive tabindex values; use tabindex="0" or "-1"' }];
|
|
176
|
-
}
|
|
177
|
-
// ============================================================================
|
|
178
|
-
// Simulation Mode (Deterministic)
|
|
179
|
-
// ============================================================================
|
|
180
54
|
function checkRuleDeterministic(rule, context) {
|
|
181
55
|
const nodes = [];
|
|
182
56
|
const urlHash = hashUrl(context.url);
|
|
@@ -228,164 +102,6 @@ function estimateCheckedNodes(rule, context) {
|
|
|
228
102
|
return 10 + (context.url.length % 10);
|
|
229
103
|
}
|
|
230
104
|
// ============================================================================
|
|
231
|
-
// WCAG Validation
|
|
232
|
-
// ============================================================================
|
|
233
|
-
/**
|
|
234
|
-
* Validate a specific WCAG criterion deterministically
|
|
235
|
-
*/
|
|
236
|
-
export function validateCriterion(criterion, urlHash) {
|
|
237
|
-
const criterionFailureRates = {
|
|
238
|
-
'1.1.1': 0.12, '1.3.1': 0.08, '1.4.1': 0.05, '1.4.3': 0.15,
|
|
239
|
-
'1.4.6': 0.25, '2.1.1': 0.10, '2.1.2': 0.03, '2.4.1': 0.08,
|
|
240
|
-
'2.4.3': 0.06, '2.4.4': 0.10, '2.4.7': 0.12, '3.1.1': 0.04,
|
|
241
|
-
'4.1.1': 0.02, '4.1.2': 0.09,
|
|
242
|
-
};
|
|
243
|
-
const failureRate = criterionFailureRates[criterion.id] ?? 0.1;
|
|
244
|
-
const criterionHashOffset = criterion.id.charCodeAt(0) * 100;
|
|
245
|
-
const determinant = ((urlHash + criterionHashOffset) % 100) / 100;
|
|
246
|
-
const passed = determinant >= failureRate;
|
|
247
|
-
return {
|
|
248
|
-
passed,
|
|
249
|
-
reason: passed ? undefined : `Criterion ${criterion.id} (${criterion.title}) not fully satisfied`,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
// ============================================================================
|
|
253
|
-
// Contrast Analysis (Heuristic)
|
|
254
|
-
// ============================================================================
|
|
255
|
-
/**
|
|
256
|
-
* Analyze contrast for common UI elements using heuristics
|
|
257
|
-
*/
|
|
258
|
-
export function analyzeContrastForElements(url) {
|
|
259
|
-
const elements = ['h1', 'p', 'a', 'button', '.card-text', '.nav-link'];
|
|
260
|
-
const analyses = [];
|
|
261
|
-
const urlHash = hashUrl(url);
|
|
262
|
-
const hashNum = parseInt(urlHash, 36);
|
|
263
|
-
for (let i = 0; i < elements.length; i++) {
|
|
264
|
-
const element = elements[i];
|
|
265
|
-
const baseRatio = 4.5 + ((hashNum + i * 1000) % 100) / 10;
|
|
266
|
-
const ratio = Math.round(baseRatio * 100) / 100;
|
|
267
|
-
const isLargeText = element === 'h1' || element === 'button';
|
|
268
|
-
const requiredRatio = isLargeText ? 3 : 4.5;
|
|
269
|
-
const passes = ratio >= requiredRatio;
|
|
270
|
-
const fgValue = 20 + ((hashNum + i * 50) % 30);
|
|
271
|
-
const bgValue = 200 + ((hashNum + i * 30) % 55);
|
|
272
|
-
const fgHex = fgValue.toString(16).padStart(2, '0');
|
|
273
|
-
const bgHex = bgValue.toString(16).padStart(2, '0');
|
|
274
|
-
analyses.push({
|
|
275
|
-
element,
|
|
276
|
-
foreground: `#${fgHex}${fgHex}${fgHex}`,
|
|
277
|
-
background: `#${bgHex}${bgHex}${bgHex}`,
|
|
278
|
-
ratio,
|
|
279
|
-
requiredRatio,
|
|
280
|
-
passes,
|
|
281
|
-
wcagLevel: 'AA',
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
return analyses;
|
|
285
|
-
}
|
|
286
|
-
// ============================================================================
|
|
287
|
-
// Keyboard Navigation (Heuristic)
|
|
288
|
-
// ============================================================================
|
|
289
|
-
/**
|
|
290
|
-
* Generate keyboard navigation report using heuristics
|
|
291
|
-
*/
|
|
292
|
-
export function generateKeyboardReportWithHeuristics(url) {
|
|
293
|
-
const urlHash = hashUrl(url);
|
|
294
|
-
const tabOrder = generateTabOrder(url, urlHash);
|
|
295
|
-
const issues = detectKeyboardIssues(tabOrder);
|
|
296
|
-
const traps = detectFocusTraps(url, urlHash);
|
|
297
|
-
return {
|
|
298
|
-
url,
|
|
299
|
-
focusableElements: tabOrder.length,
|
|
300
|
-
tabOrder,
|
|
301
|
-
issues,
|
|
302
|
-
traps,
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
function generateTabOrder(url, urlHash) {
|
|
306
|
-
const items = [];
|
|
307
|
-
const hashNum = parseInt(urlHash, 36);
|
|
308
|
-
const elements = [
|
|
309
|
-
{ selector: '#skip-link', type: 'link' },
|
|
310
|
-
{ selector: 'header nav a.logo', type: 'link' },
|
|
311
|
-
{ selector: 'header nav a.menu-item', type: 'link' },
|
|
312
|
-
{ selector: '#search-input', type: 'input' },
|
|
313
|
-
{ selector: '#search-button', type: 'button' },
|
|
314
|
-
{ selector: 'main a', type: 'link' },
|
|
315
|
-
{ selector: 'main button', type: 'button' },
|
|
316
|
-
{ selector: 'form input', type: 'input' },
|
|
317
|
-
{ selector: 'form select', type: 'input' },
|
|
318
|
-
{ selector: 'form button[type="submit"]', type: 'button' },
|
|
319
|
-
{ selector: 'footer a', type: 'link' },
|
|
320
|
-
];
|
|
321
|
-
elements.forEach((elem, index) => {
|
|
322
|
-
const focusVisibleDeterminant = (hashNum + index * 17) % 100;
|
|
323
|
-
const hasVisibleFocus = focusVisibleDeterminant >= 12;
|
|
324
|
-
items.push({
|
|
325
|
-
index,
|
|
326
|
-
selector: elem.selector,
|
|
327
|
-
elementType: elem.type,
|
|
328
|
-
hasVisibleFocus,
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
return items;
|
|
332
|
-
}
|
|
333
|
-
function detectKeyboardIssues(tabOrder) {
|
|
334
|
-
const issues = [];
|
|
335
|
-
for (const item of tabOrder) {
|
|
336
|
-
if (!item.hasVisibleFocus) {
|
|
337
|
-
issues.push({
|
|
338
|
-
type: 'no-focus-indicator',
|
|
339
|
-
selector: item.selector,
|
|
340
|
-
description: `Element ${item.selector} does not have a visible focus indicator`,
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
if (!tabOrder.some((item) => item.selector.includes('skip'))) {
|
|
345
|
-
issues.push({
|
|
346
|
-
type: 'skip-link-missing',
|
|
347
|
-
selector: 'body',
|
|
348
|
-
description: 'Page is missing a skip navigation link',
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
const hasLogicalOrder = tabOrder.every((item, index) => {
|
|
352
|
-
if (index === 0)
|
|
353
|
-
return true;
|
|
354
|
-
const isNav = item.selector.includes('nav') || item.selector.includes('header');
|
|
355
|
-
const prevIsMain = tabOrder[index - 1].selector.includes('main');
|
|
356
|
-
return !(isNav && prevIsMain);
|
|
357
|
-
});
|
|
358
|
-
if (!hasLogicalOrder) {
|
|
359
|
-
issues.push({
|
|
360
|
-
type: 'incorrect-tab-order',
|
|
361
|
-
selector: 'body',
|
|
362
|
-
description: 'Focus order does not follow logical reading sequence',
|
|
363
|
-
});
|
|
364
|
-
}
|
|
365
|
-
return issues;
|
|
366
|
-
}
|
|
367
|
-
function detectFocusTraps(url, urlHash) {
|
|
368
|
-
const traps = [];
|
|
369
|
-
const hashNum = parseInt(urlHash, 36);
|
|
370
|
-
const hasModal = url.includes('modal') || url.includes('dialog') || url.includes('popup');
|
|
371
|
-
const hasForm = url.includes('form') || url.includes('checkout') || url.includes('register');
|
|
372
|
-
if (hasModal && hashNum % 100 < 8) {
|
|
373
|
-
traps.push({
|
|
374
|
-
selector: '.modal, [role="dialog"]',
|
|
375
|
-
description: 'Modal dialog may trap focus without escape mechanism',
|
|
376
|
-
escapePath: 'Ensure Escape key closes modal and focus returns to trigger element',
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
if (hasForm && hashNum % 100 < 5) {
|
|
380
|
-
traps.push({
|
|
381
|
-
selector: 'form .autocomplete, form .datepicker',
|
|
382
|
-
description: 'Form widget may trap keyboard focus',
|
|
383
|
-
escapePath: 'Add keyboard navigation (Tab/Escape) to exit widget',
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
return traps;
|
|
387
|
-
}
|
|
388
|
-
// ============================================================================
|
|
389
105
|
// URL Hashing Utility
|
|
390
106
|
// ============================================================================
|
|
391
107
|
/**
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* Implements WCAG 2.2 compliance auditing with browser mode support
|
|
4
4
|
*
|
|
5
5
|
* This service supports multiple modes of operation:
|
|
6
|
-
* 1.
|
|
7
|
-
* 2. Browser Mode (
|
|
8
|
-
* 3.
|
|
6
|
+
* 1. Browser Mode (agent-browser): Real DOM inspection via unified browser client
|
|
7
|
+
* 2. Browser Mode (Vibium): Real DOM inspection via Vibium MCP integration
|
|
8
|
+
* 3. Not measured: no browser could load the page. The report says so
|
|
9
|
+
* (`measured: false`) and carries no findings (#1145).
|
|
9
10
|
*
|
|
10
11
|
* Browser mode provides more accurate results by:
|
|
11
12
|
* - Running actual axe-core accessibility checks in the browser
|
|
@@ -15,7 +16,8 @@
|
|
|
15
16
|
* Browser Client Integration:
|
|
16
17
|
* - Prefers agent-browser when available (supports snapshots and axe-core injection)
|
|
17
18
|
* - Falls back to Vibium if agent-browser unavailable
|
|
18
|
-
* -
|
|
19
|
+
* - Reports "not measured" when no browser tool could audit the page; it never
|
|
20
|
+
* guesses findings from the URL (#1145)
|
|
19
21
|
*
|
|
20
22
|
* @module domains/visual-accessibility/services/accessibility-tester
|
|
21
23
|
*/
|
|
@@ -33,6 +35,7 @@ export interface AccessibilityTesterConfig {
|
|
|
33
35
|
auditTimeout: number;
|
|
34
36
|
enableColorContrastCheck: boolean;
|
|
35
37
|
enableKeyboardCheck: boolean;
|
|
38
|
+
/** Synthetic, URL-hash-derived results for tests; always reported unmeasured. */
|
|
36
39
|
simulationMode: boolean;
|
|
37
40
|
useBrowserMode: boolean;
|
|
38
41
|
browserConfig: {
|
|
@@ -55,7 +58,12 @@ export declare class AccessibilityTesterService implements IAccessibilityAuditin
|
|
|
55
58
|
private getBrowserClient;
|
|
56
59
|
audit(url: string, options?: AuditOptions): Promise<Result<AccessibilityReport, Error>>;
|
|
57
60
|
auditElement(url: string, selector: string): Promise<Result<AccessibilityReport, Error>>;
|
|
58
|
-
private
|
|
61
|
+
private measuredReport;
|
|
62
|
+
private notMeasuredReason;
|
|
63
|
+
/** A report that says nothing was measured: no violations, no passes, no verdict. */
|
|
64
|
+
private notMeasuredReport;
|
|
65
|
+
/** Simulation mode: synthetic results, labelled unmeasured and never stored. */
|
|
66
|
+
private auditSimulated;
|
|
59
67
|
checkContrast(url: string): Promise<Result<ContrastAnalysis[], Error>>;
|
|
60
68
|
validateWCAGLevel(url: string, level: 'A' | 'AA' | 'AAA'): Promise<Result<WCAGValidationResult, Error>>;
|
|
61
69
|
checkKeyboardNavigation(url: string): Promise<Result<KeyboardNavigationReport, Error>>;
|