agentic-qe 3.14.0 → 3.14.2
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/helpers/brain-checkpoint.cjs +2 -1
- package/.claude/helpers/validate-v3-config.sh +6 -5
- package/.claude/hooks/aqe-hook.cjs +14 -14
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +30 -41
- package/.claude/skills/qe-browser/fixtures/serve-skills.js +37 -0
- package/.claude/skills/qe-browser/scripts/lib/vibium.js +1 -1
- package/.claude/skills/qe-browser/scripts/smoke-test.sh +56 -25
- package/.claude/skills/qe-browser/scripts/visual-diff.js +24 -15
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +114 -0
- package/assets/skills/qe-browser/evals/qe-browser.yaml +30 -41
- package/assets/skills/qe-browser/fixtures/serve-skills.js +37 -0
- package/assets/skills/qe-browser/scripts/lib/vibium.js +1 -1
- package/assets/skills/qe-browser/scripts/smoke-test.sh +56 -25
- package/assets/skills/qe-browser/scripts/visual-diff.js +24 -15
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-OJF6LAJV.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-JZO6VUW4.js → agent-booster-wasm-SD5N32MX.js} +2 -2
- package/dist/cli/chunks/{agent-handler-534KFGEJ.js → agent-handler-OZRSJM7F.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-B7KWLWY4.js → agent-memory-branch-NYTRANRN.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-FGT474XB.js +2 -0
- package/dist/cli/chunks/{arena-OW5MELJX.js → arena-EX3SC2DP.js} +4 -4
- package/dist/cli/chunks/{arena-7CCD3S3I.js → arena-FOTVSRK4.js} +2 -2
- package/dist/cli/chunks/{audit-BHVKN4E2.js → audit-Q5GHSUQY.js} +3 -3
- package/dist/cli/chunks/base-HH765JFV.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-P5FA6WFK.js → better-sqlite3-S7M5R2HS.js} +2 -2
- package/dist/cli/chunks/{brain-handler-WNW5LOV7.js → brain-handler-5FSA46R5.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-TVZ2ODKH.js → branch-enumerator-RWAXTGEU.js} +2 -2
- package/dist/cli/chunks/{browser-TCEB2W2F.js → browser-IGDESJGF.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NPM4FUPI.js +2 -0
- package/dist/cli/chunks/{chunk-Q73RRTLE.js → chunk-2EHFEMRU.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBOWR4XT.js → chunk-2H5YJ5ZK.js} +2 -2
- package/dist/cli/chunks/chunk-2LKAMMMI.js +2 -0
- package/dist/cli/chunks/{chunk-A2WZEMWT.js → chunk-2TG24LYQ.js} +1 -1
- package/dist/cli/chunks/{chunk-3QT6S3A3.js → chunk-3C2K4YMS.js} +3 -3
- package/dist/cli/chunks/{chunk-VESOYP6A.js → chunk-3DFFFXXO.js} +2 -2
- package/dist/cli/chunks/{chunk-K6CGQR5R.js → chunk-3WV4H33V.js} +1 -1
- package/dist/cli/chunks/{chunk-IL4AEB3J.js → chunk-42WUDDUU.js} +2 -2
- package/dist/cli/chunks/chunk-4AKGBUYD.js +4 -0
- package/dist/cli/chunks/{chunk-4FEJEVG7.js → chunk-4K27ESCA.js} +1 -1
- package/dist/cli/chunks/{chunk-TGOGCA74.js → chunk-4M6A3PVJ.js} +2 -2
- package/dist/cli/chunks/{chunk-RGVD6ZUX.js → chunk-4MH22236.js} +1 -1
- package/dist/cli/chunks/{chunk-6DPAMYLU.js → chunk-4N44UJGI.js} +2 -2
- package/dist/cli/chunks/{chunk-DJITEQYS.js → chunk-4PH7O5ZH.js} +2 -2
- package/dist/cli/chunks/{chunk-M3HUZD2I.js → chunk-4RT7I7PI.js} +1 -1
- package/dist/cli/chunks/chunk-4UCMTYFQ.js +65 -0
- package/dist/cli/chunks/{chunk-ZI3UO7QR.js → chunk-4ZUZDFAA.js} +2 -2
- package/dist/cli/chunks/{chunk-QSPRQPEL.js → chunk-57TNBR2P.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCVJCCQQ.js → chunk-5EHLGOWW.js} +2 -2
- package/dist/cli/chunks/{chunk-ZAAYOENS.js → chunk-5WJUNRTY.js} +2 -2
- package/dist/cli/chunks/{chunk-QZPFUFZG.js → chunk-67A6PEZM.js} +2 -2
- package/dist/cli/chunks/{chunk-7BOPFN3Y.js → chunk-6EHN7Q2Q.js} +2 -2
- package/dist/cli/chunks/{chunk-2HYVOX6N.js → chunk-6F4WHN7D.js} +1 -1
- package/dist/cli/chunks/{chunk-GVEJP5T7.js → chunk-6LMLN5R2.js} +2 -2
- package/dist/cli/chunks/{chunk-QKQZ4IJF.js → chunk-6SZKLWZT.js} +5 -5
- package/dist/cli/chunks/{chunk-PEW6FZ47.js → chunk-6VKJAMZY.js} +1 -1
- package/dist/cli/chunks/{chunk-VYENTZ45.js → chunk-7AFBNU6K.js} +2 -2
- package/dist/cli/chunks/{chunk-6IJMD2ZL.js → chunk-7FWP7CZY.js} +3 -3
- package/dist/cli/chunks/{chunk-IE5LC7MB.js → chunk-7SK6IMGZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3EM2MK3Z.js → chunk-A7N3YUDJ.js} +2 -2
- package/dist/cli/chunks/{chunk-J3XSHJGK.js → chunk-ADK7DF3G.js} +2 -2
- package/dist/cli/chunks/{chunk-EJ6IP7DE.js → chunk-ARMZYHYL.js} +2 -2
- package/dist/cli/chunks/{chunk-BZ4QVFP2.js → chunk-BWRHOIYC.js} +2 -2
- package/dist/cli/chunks/{chunk-A7SKM6JL.js → chunk-C7AXRI7E.js} +1 -1
- package/dist/cli/chunks/{chunk-4XTHRAUV.js → chunk-CG2MUD7U.js} +1 -1
- package/dist/cli/chunks/{chunk-HLNQDRHA.js → chunk-CH2TQCV5.js} +1 -1
- package/dist/cli/chunks/{chunk-JGROLJ33.js → chunk-CIESXO73.js} +1 -1
- package/dist/cli/chunks/{chunk-AR6SATU3.js → chunk-CJCT452S.js} +2 -2
- package/dist/cli/chunks/{chunk-UUJ5VQJM.js → chunk-CJHVOBJY.js} +1 -1
- package/dist/cli/chunks/{chunk-VOSISOFD.js → chunk-CTCQOYBS.js} +1 -1
- package/dist/cli/chunks/{chunk-XITTURP2.js → chunk-D4RCV4LY.js} +2 -2
- package/dist/cli/chunks/{chunk-5XGVSQS2.js → chunk-DRO5NJZA.js} +2 -2
- package/dist/cli/chunks/{chunk-QMMDN4WX.js → chunk-DVHWLAEO.js} +3 -3
- package/dist/cli/chunks/{chunk-5LEAGKX5.js → chunk-DW6ZMNMR.js} +2 -2
- package/dist/cli/chunks/{chunk-ZBKGX72B.js → chunk-E3Q7WNJD.js} +3 -3
- package/dist/cli/chunks/{chunk-5MZF4N4Q.js → chunk-EAJK25IS.js} +1 -1
- package/dist/cli/chunks/{chunk-3RYTAYR6.js → chunk-EH5OCHAJ.js} +1 -1
- package/dist/cli/chunks/{chunk-UI6WSPEK.js → chunk-F2KRT2II.js} +3 -3
- package/dist/cli/chunks/{chunk-NDPQ2WPU.js → chunk-FPHPP5TQ.js} +1 -1
- package/dist/cli/chunks/{chunk-WWWX76QB.js → chunk-FREF6Y4L.js} +2 -2
- package/dist/cli/chunks/{chunk-SROZXIMT.js → chunk-FVGTINVR.js} +54 -54
- package/dist/cli/chunks/{chunk-H3YDDKBW.js → chunk-G2CLZVYI.js} +3 -3
- package/dist/cli/chunks/{chunk-2O4DDPEA.js → chunk-G6AV2HGY.js} +3 -3
- package/dist/cli/chunks/{chunk-ENGKLFLY.js → chunk-GHQ5PUOV.js} +2 -2
- package/dist/cli/chunks/{chunk-NKWO2X3T.js → chunk-GHUPID5E.js} +1 -1
- package/dist/cli/chunks/{chunk-S5YVLPXU.js → chunk-GJAWEUIN.js} +2 -2
- package/dist/cli/chunks/{chunk-6IZQSLYZ.js → chunk-HBTC4L53.js} +2 -2
- package/dist/cli/chunks/{chunk-DDPJUAXQ.js → chunk-HSJ5FQCF.js} +2 -2
- package/dist/cli/chunks/{chunk-OONCRNFA.js → chunk-HZ6NEJMO.js} +2 -2
- package/dist/cli/chunks/{chunk-LCSVROU7.js → chunk-HZMLNM2T.js} +10 -10
- package/dist/cli/chunks/{chunk-JY4VZ6BN.js → chunk-ICKLBATY.js} +2 -2
- package/dist/cli/chunks/{chunk-JMKMDSXG.js → chunk-IUNMW454.js} +2 -2
- package/dist/cli/chunks/{chunk-XXFKN7LB.js → chunk-IVGVOGIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-3GUO4ERR.js → chunk-IWFL6EFI.js} +2 -2
- package/dist/cli/chunks/{chunk-FRL3X2QA.js → chunk-JDXLCNKV.js} +2 -2
- package/dist/cli/chunks/{chunk-YW4RNZWT.js → chunk-JIUF6NV6.js} +2 -2
- package/dist/cli/chunks/{chunk-JAK5UUWH.js → chunk-JQ2ZD3WO.js} +2 -2
- package/dist/cli/chunks/{chunk-YEAC3DC6.js → chunk-K574FLVB.js} +2 -2
- package/dist/cli/chunks/{chunk-LZHTCUCO.js → chunk-KEEBUVGV.js} +2 -2
- package/dist/cli/chunks/{chunk-LKR7T3OZ.js → chunk-KFXZDQ5J.js} +1 -1
- package/dist/cli/chunks/{chunk-7OUMJCJT.js → chunk-KPFG4OIM.js} +1 -1
- package/dist/cli/chunks/{chunk-HQ7243G3.js → chunk-KZOBLLXW.js} +2 -2
- package/dist/cli/chunks/{chunk-R6WJF4D5.js → chunk-L2F7FVIU.js} +2 -2
- package/dist/cli/chunks/{chunk-VRRG66XB.js → chunk-LML5VTFK.js} +1 -1
- package/dist/cli/chunks/{chunk-JTWJR2KY.js → chunk-LWUJQGCS.js} +2 -2
- package/dist/cli/chunks/{chunk-BQCTO7UB.js → chunk-MH73D5TN.js} +2 -2
- package/dist/cli/chunks/{chunk-U4GZWPKM.js → chunk-MWQTACNA.js} +2 -2
- package/dist/cli/chunks/{chunk-CIZ6LSNV.js → chunk-N3RN4QTC.js} +2 -2
- package/dist/cli/chunks/{chunk-ZQSXG7FA.js → chunk-N5ZRUOMR.js} +2 -2
- package/dist/cli/chunks/{chunk-AFGT26NR.js → chunk-NAZVPZJS.js} +2 -2
- package/dist/cli/chunks/{chunk-FOHYBR3O.js → chunk-NG2UVPTW.js} +1 -1
- package/dist/cli/chunks/{chunk-2D7UBX5S.js → chunk-NHHWLJQF.js} +1 -1
- package/dist/cli/chunks/{chunk-JRKEBESE.js → chunk-NNOMDM4N.js} +2 -2
- package/dist/cli/chunks/{chunk-YKWMKRYB.js → chunk-NRR23SJV.js} +1 -1
- package/dist/cli/chunks/{chunk-WKNWRDA5.js → chunk-NWFIJNEB.js} +1 -1
- package/dist/cli/chunks/{chunk-4MK2G6TK.js → chunk-OBCKP3G4.js} +2 -2
- package/dist/cli/chunks/{chunk-YKZV7O65.js → chunk-OC2CKU7I.js} +2 -2
- package/dist/cli/chunks/{chunk-7RVAHJQZ.js → chunk-OX6T26CD.js} +3 -3
- package/dist/cli/chunks/chunk-P64DMQ2C.js +2 -0
- package/dist/cli/chunks/{chunk-RKUYVVGJ.js → chunk-PFXX5Q32.js} +2 -2
- package/dist/cli/chunks/chunk-PHHXHG2W.js +2 -0
- package/dist/cli/chunks/{chunk-N2YAUDAV.js → chunk-PMUBG2RU.js} +2 -2
- package/dist/cli/chunks/{chunk-WTHAVFIC.js → chunk-PVHO6KLB.js} +1 -1
- package/dist/cli/chunks/{chunk-MO7EITJK.js → chunk-PWEIDHT7.js} +2 -2
- package/dist/cli/chunks/{chunk-52DFCV57.js → chunk-PZKZY6PB.js} +2 -2
- package/dist/cli/chunks/{chunk-I3VHXA2W.js → chunk-Q335R4MR.js} +2 -2
- package/dist/cli/chunks/{chunk-ECTPFCON.js → chunk-Q3JHS3UD.js} +2 -2
- package/dist/cli/chunks/{chunk-HJIAVR6P.js → chunk-QFUX7ELG.js} +2 -2
- package/dist/cli/chunks/{chunk-L4C42WYI.js → chunk-QW4LN5NK.js} +2 -2
- package/dist/cli/chunks/{chunk-HQHLHSJO.js → chunk-QXTW7XCS.js} +2 -2
- package/dist/cli/chunks/{chunk-SSV6KSFT.js → chunk-R5RNOLHI.js} +1 -1
- package/dist/cli/chunks/{chunk-AVLA5PBJ.js → chunk-RCI64RIJ.js} +2 -2
- package/dist/cli/chunks/{chunk-T3BZAFLP.js → chunk-RFNEHNJV.js} +1 -1
- package/dist/cli/chunks/{chunk-IL6QRXRP.js → chunk-RGH3WGWD.js} +10 -10
- package/dist/cli/chunks/{chunk-E4NU4BJA.js → chunk-RHJVDCLV.js} +2 -2
- package/dist/cli/chunks/{chunk-KTSCZ7AW.js → chunk-RVCWSAXI.js} +2 -2
- package/dist/cli/chunks/{chunk-TQJE7DNL.js → chunk-RYJHREYS.js} +2 -2
- package/dist/cli/chunks/{chunk-HNKPLVYS.js → chunk-S4MR6RTE.js} +1 -1
- package/dist/cli/chunks/{chunk-6AYO3IR2.js → chunk-S7N4BKI3.js} +2 -2
- package/dist/cli/chunks/{chunk-2NO4H35K.js → chunk-SEHCX4NH.js} +1 -1
- package/dist/cli/chunks/{chunk-GKNDP5VK.js → chunk-T46LOLW3.js} +2 -2
- package/dist/cli/chunks/{chunk-VXU53F7Z.js → chunk-T4C56HBW.js} +2 -2
- package/dist/cli/chunks/{chunk-43GPSYAL.js → chunk-TENYL5TI.js} +2 -2
- package/dist/cli/chunks/{chunk-6AOZU3UN.js → chunk-TLPL3EQY.js} +2 -2
- package/dist/cli/chunks/{chunk-4ZVGSVHV.js → chunk-TYVQNYXX.js} +4 -4
- package/dist/cli/chunks/{chunk-NOPVFBQM.js → chunk-U2AY57XZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IQLRA4FV.js → chunk-U54OOA24.js} +1 -1
- package/dist/cli/chunks/{chunk-IQ3JFHZN.js → chunk-UHTAI4ZB.js} +1 -1
- package/dist/cli/chunks/{chunk-KDIZQHG5.js → chunk-UIGEUEBT.js} +2 -2
- package/dist/cli/chunks/{chunk-5VDVYTO5.js → chunk-UYTWDS2R.js} +2 -2
- package/dist/cli/chunks/{chunk-ZNSMVQCG.js → chunk-VNAKBHJI.js} +2 -2
- package/dist/cli/chunks/{chunk-SUSMHSXT.js → chunk-VOYJJ3KA.js} +2 -2
- package/dist/cli/chunks/{chunk-QQCENKCX.js → chunk-VSYBMNIR.js} +1 -1
- package/dist/cli/chunks/{chunk-7RAB2BZY.js → chunk-W2FLULF4.js} +2 -2
- package/dist/cli/chunks/{chunk-NYARYONH.js → chunk-W4OQYLYO.js} +1 -1
- package/dist/cli/chunks/{chunk-DOWCOZDO.js → chunk-WBH4C4BG.js} +2 -2
- package/dist/cli/chunks/{chunk-OIYUSWHX.js → chunk-WBMRADQP.js} +1 -1
- package/dist/cli/chunks/{chunk-B3H4K7CY.js → chunk-WMW47QMR.js} +2 -2
- package/dist/cli/chunks/{chunk-VPVZHJSU.js → chunk-WVY22NHZ.js} +2 -2
- package/dist/cli/chunks/{chunk-6W42XWLL.js → chunk-WXMSRBQF.js} +2 -2
- package/dist/cli/chunks/{chunk-CIUOC5F3.js → chunk-XPLSLHRB.js} +1 -1
- package/dist/cli/chunks/{chunk-E722WNWC.js → chunk-YF5OP6CR.js} +2 -2
- package/dist/cli/chunks/{chunk-H76TV4UU.js → chunk-YN6W2XIT.js} +3 -3
- package/dist/cli/chunks/{chunk-FF43SRP6.js → chunk-ZCDXJ27H.js} +1 -1
- package/dist/cli/chunks/{chunk-TKYEP7OR.js → chunk-ZFGND4QK.js} +1 -1
- package/dist/cli/chunks/{chunk-O2MZZL54.js → chunk-ZWRQ5VAU.js} +2 -2
- package/dist/cli/chunks/{chunk-H6NFDOMK.js → chunk-ZYLSOBOR.js} +1 -1
- package/dist/cli/chunks/{ci-B432UH6N.js → ci-NTRH7PAW.js} +2 -2
- package/dist/cli/chunks/{ci-output-GTHH7WYG.js → ci-output-F57RSD35.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-VW75DLME.js → circuit-breaker-4WST3QSA.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-RE3IVT7U.js → claude-flow-setup-KB4TKMYI.js} +2 -2
- package/dist/cli/chunks/client-GPZEC54E.js +2 -0
- package/dist/cli/chunks/{cline-installer-NUBZZ55N.js → cline-installer-W2ZHQ6WM.js} +2 -2
- package/dist/cli/chunks/{code-K6JCWKNW.js → code-TF2AVR5D.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-I4ILB5JN.js → code-index-extractor-RMDRUVQJ.js} +2 -2
- package/dist/cli/chunks/codex-installer-VSTRHJHV.js +14 -0
- package/dist/cli/chunks/{completions-V3KJVJF4.js → completions-3Q37QVFR.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-HRG7OOY3.js → complexity-analyzer-3FNFLACD.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-CNTDONWG.js → continuedev-installer-VTEXM455.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-XPWWIWYA.js → copilot-installer-AGY7DQUS.js} +2 -2
- package/dist/cli/chunks/core-handlers-YMGHYIBR.js +2 -0
- package/dist/cli/chunks/{cost-tracker-MFNLQ56K.js → cost-tracker-LTZAQBX7.js} +2 -2
- package/dist/cli/chunks/{coverage-KOIK654V.js → coverage-TT64IOS4.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-ECBNTGYJ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-S5MKLRQQ.js → cursor-installer-OVOJIOHN.js} +2 -2
- package/dist/cli/chunks/{daemon-DUS6JYW6.js → daemon-DMFZMXKA.js} +8 -8
- package/dist/cli/chunks/{daemon-Z7VPGWHY.js → daemon-XCULEHWY.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-7CQ3ARNI.js → dag-attention-scheduler-WW2RX4B5.js} +2 -2
- package/dist/cli/chunks/{detect-WORBCAYF.js → detect-QNWIM232.js} +2 -2
- package/dist/cli/chunks/{dist-node-KRNI6OYW.js → dist-node-6GQIY3CG.js} +2 -2
- package/dist/cli/chunks/{domain-handler-KRUR2VQG.js → domain-handler-6RJPDELX.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-VEOVLV54.js → domain-transfer-WK524LBS.js} +2 -2
- package/dist/cli/chunks/dream-EHGKCFWH.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-QU3NQVA5.js → embed-and-insert-pattern-SO6GWJW7.js} +2 -2
- package/dist/cli/chunks/{eval-AYQ7BSUP.js → eval-GL544IPO.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-AWQBL6LT.js → experience-capture-middleware-BCCJ35OX.js} +3 -3
- package/dist/cli/chunks/{fast-paths-V5EL4BYJ.js → fast-paths-CATDDBEU.js} +2 -2
- package/dist/cli/chunks/{feature-flags-P34BPRWU.js → feature-flags-BUXNAORY.js} +2 -2
- package/dist/cli/chunks/{feature-flags-BXX7BP22.js → feature-flags-KNNWWP5G.js} +2 -2
- package/dist/cli/chunks/{file-discovery-MS6BKQ2U.js → file-discovery-S4HF3O7D.js} +2 -2
- package/dist/cli/chunks/{fleet-7WVVPA4W.js → fleet-DQVQQONW.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-7WQ3LEPG.js → gnn-wrapper-G7ABZUG7.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-P7QD3BZH.js → heartbeat-handler-UFMELIWT.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-UFEL2CBW.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-BLSD45CX.js +2 -0
- package/dist/cli/chunks/hnsw-index-A3RZODEN.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-Y3GAR3UP.js → hnsw-legacy-bridge-YIILSRXI.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-5QUXZQWQ.js → hnswlib-node-TSVRMXDH.js} +2 -2
- package/dist/cli/chunks/{hooks-2D64KPRY.js → hooks-OHQPNK74.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-5INXEZDP.js → hypergraph-engine-LY7PJDSL.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YJJJ3ESZ.js → hypergraph-handler-YGDYZO6H.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-OXHD3FOH.js +2 -0
- package/dist/cli/chunks/{init-handler-QSFYJN5Q.js → init-handler-MTK65LI3.js} +9 -8
- package/dist/cli/chunks/init-wizard-PKZL7QBU.js +2 -0
- package/dist/cli/chunks/kernel-XWPM72UJ.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-3N3QGTJU.js → kilocode-installer-3IICU4RS.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-GIWVTFZQ.js → kiro-installer-MXOVQYQA.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-FRKR5XWI.js +2 -0
- package/dist/cli/chunks/{learning-SGO2DQ5Q.js → learning-EV5LSOOM.js} +3 -3
- package/dist/cli/chunks/{llm-router-HBBULO65.js → llm-router-7LYDJUOT.js} +4 -4
- package/dist/cli/chunks/llm-router-service-R7A5HHDM.js +2 -0
- package/dist/cli/chunks/{load-B5OFYB4H.js → load-F4PVAMXQ.js} +2 -2
- package/dist/cli/chunks/load-test-5IKDWSYL.js +2 -0
- package/dist/cli/chunks/{mcp-FG3LNQR4.js → mcp-DUYJUEME.js} +2 -2
- package/dist/cli/chunks/{memory-SPS7ZWLC.js → memory-XTTYORAS.js} +5 -5
- package/dist/cli/chunks/memory-backend-7VW5QCMO.js +2 -0
- package/dist/cli/chunks/{memory-handlers-P7FTPWP3.js → memory-handlers-VZH3R2TQ.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-PUB7E6KH.js → multi-model-executor-R6XCTMCF.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-TGCSGVG2.js → opencode-installer-33ULBU2F.js} +2 -2
- package/dist/cli/chunks/{orchestrator-S5FTJFGB.js → orchestrator-34ZJEKTJ.js} +22 -21
- package/dist/cli/chunks/pattern-null-store-BU6LCB2W.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-LCXXGRAB.js → pattern-usage-recorder-GZ2M3F2E.js} +2 -2
- package/dist/cli/chunks/{pipeline-ENOSRHKW.js → pipeline-SR5OTY45.js} +2 -2
- package/dist/cli/chunks/platform-VKJFJIAW.js +2 -0
- package/dist/cli/chunks/{plugin-JZ5ODJSU.js → plugin-5C5UBQUQ.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-DPJUPNCG.js → prime-radiant-advanced-wasm-KO2PQI3D.js} +2 -2
- package/dist/cli/chunks/protocol-executor-BSP5LWJN.js +2 -0
- package/dist/cli/chunks/{protocol-handler-IP4NLVY3.js → protocol-handler-ZF74NIKA.js} +2 -2
- package/dist/cli/chunks/{prove-P6FM4RU7.js → prove-MO5TQQU4.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-J2RC7P25.js +2 -0
- package/dist/cli/chunks/{quality-UHP4XO26.js → quality-EYIN6AER.js} +2 -2
- package/dist/cli/chunks/quality-gate-V6OQM57O.js +7 -0
- package/dist/cli/chunks/queen-coordinator-XI5AJV2V.js +2 -0
- package/dist/cli/chunks/{real-embeddings-6SO5MFRQ.js → real-embeddings-AR7TZX7U.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-WTWUOFCH.js → roocode-installer-46E626VZ.js} +2 -2
- package/dist/cli/chunks/router-VXQYYA3D.js +2 -0
- package/dist/cli/chunks/routing-feedback-HZQTASFF.js +2 -0
- package/dist/cli/chunks/{routing-handler-IK7HYERQ.js → routing-handler-ZNRVW6QW.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-THLB4NIM.js → ruvector-commands-4L2CQMWS.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-BDTLLJER.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-IB343MDN.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-BUKCSHBD.js → rvf-migration-coordinator-H4RVGBIA.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-Y7SN7LHU.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-ECTADZIN.js → rvf-store-integrity-OJGWWPLL.js} +2 -2
- package/dist/cli/chunks/safe-db-2VTKKBJU.js +2 -0
- package/dist/cli/chunks/schedule-QJ4CFGJY.js +2 -0
- package/dist/cli/chunks/scheduler-2NHDQPC3.js +2 -0
- package/dist/cli/chunks/{security-HN4UXFXX.js → security-JF3BVNRO.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-XJCPX5SN.js → shared-rvf-adapter-M6NNIZ5W.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-23X5PNY5.js → shared-rvf-dual-writer-LHMFCYVE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-NVVAPZN3.js +2 -0
- package/dist/cli/chunks/{status-handler-ZXANTHKT.js → status-handler-GMIOXQIE.js} +2 -2
- package/dist/cli/chunks/{structural-health-LR6WI3AH.js → structural-health-YZXHVHM6.js} +2 -2
- package/dist/cli/chunks/{sync-I5IUJF33.js → sync-GMPCPV5L.js} +2 -2
- package/dist/cli/chunks/{sync-4OEI3BC2.js → sync-N56UQGCS.js} +2 -2
- package/dist/cli/chunks/{task-handler-R3ATJKU5.js → task-handler-VTNRGAXP.js} +2 -2
- package/dist/cli/chunks/{task-handlers-4X357AEW.js → task-handlers-FYSDH55N.js} +3 -3
- package/dist/cli/chunks/{test-PR2B5H2F.js → test-GQNCKRSP.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-ZNOSQVLD.js → test-scheduling-GPRXSIRP.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-LYXOI72S.js → token-bootstrap-76SRNXGG.js} +2 -2
- package/dist/cli/chunks/{token-usage-R6EQZBX2.js → token-usage-O7CZDP5Q.js} +2 -2
- package/dist/cli/chunks/{transformers-COQWK27J.js → transformers-LTU4LSSC.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-LLIW2X3M.js → tree-sitter-wasm-parser-NQSQCMBM.js} +2 -2
- package/dist/cli/chunks/{types-MEYTZITK.js → types-OP6IWE6N.js} +2 -2
- package/dist/cli/chunks/unified-memory-DSTIEDSH.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-KBV3P4OS.js +2 -0
- package/dist/cli/chunks/unified-persistence-XKCOUBKY.js +2 -0
- package/dist/cli/chunks/{upgrade-DVIJ456A.js → upgrade-OQWRBZ3R.js} +2 -2
- package/dist/cli/chunks/{validate-UYTSMJ5X.js → validate-TH5SRP3E.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-P32WCJR6.js → validate-swarm-UITL2JUS.js} +2 -2
- package/dist/cli/chunks/{vibium-JGVOLM6X.js → vibium-O6PRAG4J.js} +2 -2
- package/dist/cli/chunks/visual-security-TTWSPZTZ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-5ZGNCTPN.js → web-tree-sitter-XBFBY4OF.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-IILSSQAE.js → windsurf-installer-DVT5NRNY.js} +2 -2
- package/dist/cli/chunks/witness-chain-2KY73HPN.js +2 -0
- package/dist/cli/chunks/{witness-chain-JZMXCG3B.js → witness-chain-VRSH2F36.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-UUTLNUIH.js → witness-key-manager-GFHRDKQ4.js} +2 -2
- package/dist/cli/chunks/{workflow-NS7HXVHZ.js → workflow-HAZ6YKOG.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UK56AVOT.js +2 -0
- package/dist/cli/chunks/{wrappers-XKEDSV5W.js → wrappers-5LLLT7GM.js} +2 -2
- package/dist/cli/commands/daemon.js +3 -0
- package/dist/cli/commands/platform.d.ts +1 -0
- package/dist/cli/commands/platform.js +28 -6
- package/dist/cli/commands/quality-gate.js +25 -3
- package/dist/cli/foreground-command.d.ts +3 -0
- package/dist/cli/foreground-command.js +22 -0
- package/dist/cli/handlers/init-handler.d.ts +5 -0
- package/dist/cli/handlers/init-handler.js +6 -0
- package/dist/cli/index.js +8 -1
- package/dist/contracts/verdicts.d.ts +625 -0
- package/dist/contracts/verdicts.js +202 -14
- package/dist/coordination/handlers/coverage-handlers.js +8 -1
- package/dist/domains/chaos-resilience/diagnosis/corpus.d.ts +5 -0
- package/dist/domains/chaos-resilience/diagnosis/corpus.js +141 -0
- package/dist/domains/chaos-resilience/diagnosis/detectors.d.ts +11 -0
- package/dist/domains/chaos-resilience/diagnosis/detectors.js +109 -0
- package/dist/domains/chaos-resilience/diagnosis/index.d.ts +5 -0
- package/dist/domains/chaos-resilience/diagnosis/index.js +5 -0
- package/dist/domains/chaos-resilience/diagnosis/scorer.d.ts +8 -0
- package/dist/domains/chaos-resilience/diagnosis/scorer.js +128 -0
- package/dist/domains/chaos-resilience/diagnosis/types.d.ts +171 -0
- package/dist/domains/chaos-resilience/diagnosis/types.js +3 -0
- package/dist/domains/chaos-resilience/index.d.ts +1 -0
- package/dist/domains/chaos-resilience/index.js +1 -0
- package/dist/domains/index.d.ts +1 -0
- package/dist/domains/index.js +1 -0
- package/dist/early-exit/early-exit-controller.d.ts +4 -2
- package/dist/early-exit/early-exit-controller.js +95 -7
- package/dist/early-exit/index.d.ts +1 -1
- package/dist/early-exit/speculative-executor.js +3 -0
- package/dist/early-exit/types.d.ts +51 -0
- package/dist/early-exit/types.js +3 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +2 -1
- package/dist/init/browser-engine-installer.d.ts +11 -0
- package/dist/init/browser-engine-installer.js +35 -5
- package/dist/init/codex-installer.d.ts +11 -1
- package/dist/init/codex-installer.js +90 -24
- package/dist/init/init-wizard-hooks.js +11 -11
- package/dist/init/orchestrator.js +2 -0
- package/dist/init/phases/07-hooks.d.ts +3 -3
- package/dist/init/phases/07-hooks.js +19 -18
- package/dist/init/phases/09-assets.d.ts +4 -0
- package/dist/init/phases/09-assets.js +13 -10
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/init/types.d.ts +4 -0
- package/dist/learning/index.d.ts +3 -0
- package/dist/learning/index.js +2 -0
- package/dist/learning/pattern-mutation-error.d.ts +9 -0
- package/dist/learning/pattern-mutation-error.js +14 -0
- package/dist/learning/pattern-store.js +24 -2
- package/dist/learning/qe-reasoning-bank.js +24 -5
- package/dist/learning/rvf-pattern-store.js +23 -5
- package/dist/learning/structural-retrieval/corpus.d.ts +5 -0
- package/dist/learning/structural-retrieval/corpus.js +97 -0
- package/dist/learning/structural-retrieval/evaluate.d.ts +7 -0
- package/dist/learning/structural-retrieval/evaluate.js +124 -0
- package/dist/learning/structural-retrieval/index.d.ts +6 -0
- package/dist/learning/structural-retrieval/index.js +4 -0
- package/dist/learning/structural-retrieval/receipt.d.ts +14 -0
- package/dist/learning/structural-retrieval/receipt.js +36 -0
- package/dist/learning/structural-retrieval/types.d.ts +83 -0
- package/dist/learning/structural-retrieval/types.js +2 -0
- package/dist/mcp/bundle.js +423 -423
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/protocol-server.js +11 -2
- package/dist/mcp/qe-tool-bridge.js +1 -0
- package/dist/mcp/services/session-resume.d.ts +15 -19
- package/dist/mcp/services/session-resume.js +204 -194
- package/dist/mcp/tool-annotations.d.ts +25 -0
- package/dist/mcp/tool-annotations.js +75 -0
- package/dist/mcp/tool-registry.js +17 -12
- package/dist/mcp/tools/base.d.ts +7 -1
- package/dist/mcp/tools/base.js +8 -0
- package/dist/mcp/tools/quality-assessment/gate.d.ts +8 -5
- package/dist/mcp/tools/quality-assessment/gate.js +9 -4
- package/dist/mcp/tools/registry.d.ts +3 -0
- package/dist/mcp/tools/registry.js +1 -0
- package/dist/mcp/types.d.ts +15 -0
- package/dist/skills/qe-court/cli.js +0 -0
- package/dist/validation/quality-gate-runner.d.ts +27 -4
- package/dist/validation/quality-gate-runner.js +33 -4
- package/dist/validation/verification-reach.d.ts +90 -0
- package/dist/validation/verification-reach.js +187 -0
- package/dist/verification/adversarial-verify/index.d.ts +1 -1
- package/dist/verification/adversarial-verify/measurement-receipt.d.ts +13 -0
- package/dist/verification/adversarial-verify/measurement-receipt.js +136 -0
- package/dist/verification/adversarial-verify/synthesize.js +7 -10
- package/dist/verification/adversarial-verify/types.d.ts +35 -0
- package/dist/verification/adversarial-verify/verify.js +6 -1
- package/package.json +9 -5
- package/schemas/coverage-gap.schema.json +41 -0
- package/schemas/finding-verdict.schema.json +470 -0
- package/schemas/risk-decision.schema.json +41 -0
- package/dist/cli/chunks/adapter-3VBXL7DO.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-NXRNKJNA.js +0 -2
- package/dist/cli/chunks/base-F6GMOKU2.js +0 -2
- package/dist/cli/chunks/browser-workflow-QRDC46LR.js +0 -2
- package/dist/cli/chunks/chunk-3JIJBR4V.js +0 -2
- package/dist/cli/chunks/chunk-R2B6EE45.js +0 -2
- package/dist/cli/chunks/chunk-TRDEULS7.js +0 -4
- package/dist/cli/chunks/chunk-WJXHE52V.js +0 -65
- package/dist/cli/chunks/client-HNBZUEVV.js +0 -2
- package/dist/cli/chunks/codex-installer-AKQ5BCHU.js +0 -15
- package/dist/cli/chunks/core-handlers-TB7NLYXL.js +0 -2
- package/dist/cli/chunks/cross-domain-router-MDSI553U.js +0 -2
- package/dist/cli/chunks/dream-X7ISHFEE.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-2C5XGFQT.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-KCVMXLUL.js +0 -2
- package/dist/cli/chunks/hnsw-index-OGWZS6MP.js +0 -2
- package/dist/cli/chunks/impact-analyzer-IBJ43GQL.js +0 -2
- package/dist/cli/chunks/init-wizard-6XMFD5LP.js +0 -2
- package/dist/cli/chunks/kernel-UDUMUPB3.js +0 -2
- package/dist/cli/chunks/knowledge-graph-JRYTUG3W.js +0 -2
- package/dist/cli/chunks/llm-router-service-KF5ZALUQ.js +0 -2
- package/dist/cli/chunks/load-test-LHMBCNCH.js +0 -2
- package/dist/cli/chunks/memory-backend-WZHKHBZK.js +0 -2
- package/dist/cli/chunks/pattern-null-store-UZSHCRL2.js +0 -2
- package/dist/cli/chunks/platform-WCRBO3Z7.js +0 -2
- package/dist/cli/chunks/protocol-executor-42NLVDTC.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-W74RSMMU.js +0 -2
- package/dist/cli/chunks/quality-gate-63DDBSGM.js +0 -7
- package/dist/cli/chunks/queen-coordinator-XELKSRMS.js +0 -2
- package/dist/cli/chunks/router-GTW2EQZV.js +0 -2
- package/dist/cli/chunks/routing-feedback-NVOBWEMK.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-5OPVMXNL.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-5S4YFTX4.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-LYSJHEVX.js +0 -2
- package/dist/cli/chunks/safe-db-AEB3JMLD.js +0 -2
- package/dist/cli/chunks/schedule-4QNPCQNT.js +0 -2
- package/dist/cli/chunks/scheduler-S3DFHX6A.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-L2KISU2H.js +0 -2
- package/dist/cli/chunks/unified-memory-5KQMA7FV.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-PQRPTYOD.js +0 -2
- package/dist/cli/chunks/unified-persistence-YDONVPJB.js +0 -2
- package/dist/cli/chunks/visual-security-RJ7RTNGJ.js +0 -2
- package/dist/cli/chunks/witness-chain-YXXXNGAM.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-5KUAVSTH.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,120 @@ All notable changes to the Agentic QE project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.14.2] - 2026-09-13
|
|
9
|
+
|
|
10
|
+
This patch keeps the quality daemon alive in foreground mode, publishes the
|
|
11
|
+
first conservative MCP tool-safety annotation increment, and refreshes
|
|
12
|
+
dependency trees with patched Hono and Sharp releases.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Added typed MCP safety annotations across the registry, bridge, protocol
|
|
17
|
+
registry, and live `tools/list` responses. The deterministic 88-tool
|
|
18
|
+
inventory starts every built-in with a conservative disposition; unknown and
|
|
19
|
+
plugin-supplied tools cannot self-assert optimistic hints. Evidence-backed
|
|
20
|
+
read-only or idempotent classifications remain deferred ([#681], [#684]).
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Kept `aqe daemon start` running after successful startup instead of exiting
|
|
25
|
+
immediately, while preserving cleanup for non-foreground commands and
|
|
26
|
+
graceful `SIGTERM` shutdown ([#678], [#683]).
|
|
27
|
+
- Raised managed Hono dependency floors to 4.13.5 and resolved Hono 4.13.7,
|
|
28
|
+
closing the dot-notation body-parsing denial-of-service exposure. Raised
|
|
29
|
+
managed Sharp floors and resolved Sharp 0.35.4 to include the patched libheif
|
|
30
|
+
dependency set ([#685]).
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Refreshed dependency snapshots across the root project and development-time
|
|
35
|
+
Ruflo, RuVocal, and Goal UI trees, including `fast-uri`, `qs`, Faker,
|
|
36
|
+
`postcss-selector-parser`, and `@humanfs/node` ([#675]).
|
|
37
|
+
|
|
38
|
+
[#675]: https://github.com/proffesor-for-testing/agentic-qe/pull/675
|
|
39
|
+
[#678]: https://github.com/proffesor-for-testing/agentic-qe/issues/678
|
|
40
|
+
[#681]: https://github.com/proffesor-for-testing/agentic-qe/issues/681
|
|
41
|
+
[#683]: https://github.com/proffesor-for-testing/agentic-qe/pull/683
|
|
42
|
+
[#684]: https://github.com/proffesor-for-testing/agentic-qe/pull/684
|
|
43
|
+
[#685]: https://github.com/proffesor-for-testing/agentic-qe/pull/685
|
|
44
|
+
|
|
45
|
+
## [3.14.1] - 2026-09-07
|
|
46
|
+
|
|
47
|
+
This release moves AQE to maintained Node.js runtimes and strengthens the
|
|
48
|
+
evidence boundaries around runtime diagnosis, verification, session recovery,
|
|
49
|
+
and learned-pattern storage.
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
|
|
53
|
+
- Added a reproducible runtime-fault diagnosis benchmark covering clean/fault
|
|
54
|
+
pairs, classification, localization, abstention, and uncertainty reporting
|
|
55
|
+
([#649], [#662]).
|
|
56
|
+
- Added revision-bound verification-reach manifests so quality gates expose
|
|
57
|
+
direct, partial, uncovered, stale, and legacy-unknown evidence instead of
|
|
58
|
+
passing without observable failure-mode coverage ([#651], [#664]).
|
|
59
|
+
- Added a 100-query structural-transfer retrieval corpus with deterministic
|
|
60
|
+
ranking metrics and immutable receipts ([#653], [#665]).
|
|
61
|
+
- Added sanitized judge-measurement receipts with schema-enforced trust,
|
|
62
|
+
identity, retry, decoding, and timestamp boundaries ([#658], [#670]).
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Hardened legacy session recovery against root escape, symlink and inode
|
|
67
|
+
substitution, malformed lineage, invalid UTF-8, oversized records, torn
|
|
68
|
+
tails, and unbounded caller overrides; legacy resume remains explicit and
|
|
69
|
+
unverified ([#659], [#671]).
|
|
70
|
+
- Made SQLite pattern-write failures and incomplete HNSW/RVF indexing return
|
|
71
|
+
typed `FAILED` or `COMMITTED_PENDING_INDEX` evidence while preserving
|
|
72
|
+
committed witness and dual-write side effects ([#660], [#672]).
|
|
73
|
+
- Removed package-manager calls from generated Claude lifecycle hooks, added
|
|
74
|
+
bounded Codex guidance modes, and separated Vibium detection from readiness
|
|
75
|
+
installation in response to reports from @pacphi ([#654], [#655], [#656],
|
|
76
|
+
[#661]).
|
|
77
|
+
- Replaced rate-limited qe-browser public fixtures with deterministic loopback
|
|
78
|
+
fixtures and accepted current Vibium screenshot output paths ([#561], [#667]).
|
|
79
|
+
- Refreshed embedded graph, Ruvocal, and Goal UI dependency locks with clean
|
|
80
|
+
Node 22+ installs and current vulnerability fixes ([#669]).
|
|
81
|
+
- Kept Rust coverage analysis on the Rust instrumentation path so an available
|
|
82
|
+
JavaScript test runner cannot replace the documented static-estimation
|
|
83
|
+
fallback with an empty coverage report ([#569]).
|
|
84
|
+
- Published the verdict JSON schemas and exposed pattern mutation outcomes at
|
|
85
|
+
the package root so downstream consumers can validate and classify writes.
|
|
86
|
+
- Sealed one npm tarball after asset synchronization and reused those exact
|
|
87
|
+
bytes for initialization, consumer-audit, and publication gates.
|
|
88
|
+
|
|
89
|
+
### Changed
|
|
90
|
+
|
|
91
|
+
- Raised the published runtime floor to Node.js 22.13.0, recommends Node.js 24
|
|
92
|
+
for development and containers, and moved CI workflows off Node 18/20
|
|
93
|
+
runtimes ([#663]).
|
|
94
|
+
- Early-exit presets now collect shadow-calibration evidence by default while
|
|
95
|
+
still executing every layer; enforced skipping remains explicit ([#657],
|
|
96
|
+
[#666]).
|
|
97
|
+
|
|
98
|
+
[#561]: https://github.com/proffesor-for-testing/agentic-qe/issues/561
|
|
99
|
+
[#569]: https://github.com/proffesor-for-testing/agentic-qe/issues/569
|
|
100
|
+
[#649]: https://github.com/proffesor-for-testing/agentic-qe/issues/649
|
|
101
|
+
[#651]: https://github.com/proffesor-for-testing/agentic-qe/issues/651
|
|
102
|
+
[#653]: https://github.com/proffesor-for-testing/agentic-qe/issues/653
|
|
103
|
+
[#654]: https://github.com/proffesor-for-testing/agentic-qe/issues/654
|
|
104
|
+
[#655]: https://github.com/proffesor-for-testing/agentic-qe/issues/655
|
|
105
|
+
[#656]: https://github.com/proffesor-for-testing/agentic-qe/issues/656
|
|
106
|
+
[#657]: https://github.com/proffesor-for-testing/agentic-qe/issues/657
|
|
107
|
+
[#658]: https://github.com/proffesor-for-testing/agentic-qe/issues/658
|
|
108
|
+
[#659]: https://github.com/proffesor-for-testing/agentic-qe/issues/659
|
|
109
|
+
[#660]: https://github.com/proffesor-for-testing/agentic-qe/issues/660
|
|
110
|
+
[#661]: https://github.com/proffesor-for-testing/agentic-qe/pull/661
|
|
111
|
+
[#662]: https://github.com/proffesor-for-testing/agentic-qe/pull/662
|
|
112
|
+
[#663]: https://github.com/proffesor-for-testing/agentic-qe/pull/663
|
|
113
|
+
[#664]: https://github.com/proffesor-for-testing/agentic-qe/pull/664
|
|
114
|
+
[#665]: https://github.com/proffesor-for-testing/agentic-qe/pull/665
|
|
115
|
+
[#666]: https://github.com/proffesor-for-testing/agentic-qe/pull/666
|
|
116
|
+
[#667]: https://github.com/proffesor-for-testing/agentic-qe/pull/667
|
|
117
|
+
[#669]: https://github.com/proffesor-for-testing/agentic-qe/pull/669
|
|
118
|
+
[#670]: https://github.com/proffesor-for-testing/agentic-qe/pull/670
|
|
119
|
+
[#671]: https://github.com/proffesor-for-testing/agentic-qe/pull/671
|
|
120
|
+
[#672]: https://github.com/proffesor-for-testing/agentic-qe/pull/672
|
|
121
|
+
|
|
8
122
|
## [3.14.0] - 2026-08-30
|
|
9
123
|
|
|
10
124
|
This release makes learned evidence, semantic vectors, recovery mirrors, and
|
|
@@ -52,26 +52,18 @@ setup:
|
|
|
52
52
|
optional_tools:
|
|
53
53
|
- pixelmatch
|
|
54
54
|
- pngjs
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
# (the check-injection severity path) live in scripts/smoke-test.sh, which
|
|
59
|
-
# starts fixtures/serve-skills.js out of band.
|
|
55
|
+
# The CI workflow starts fixtures/serve-skills.js on loopback before this
|
|
56
|
+
# suite runs. Keeping browser targets local removes rate limits and makes
|
|
57
|
+
# every page stable across repeated visual comparisons.
|
|
60
58
|
|
|
61
59
|
fixtures:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
url: "
|
|
68
|
-
description: "
|
|
69
|
-
httpbin_html:
|
|
70
|
-
url: "https://httpbin.org/html"
|
|
71
|
-
description: "Static HTML page with known headings"
|
|
72
|
-
httpbin_status_404:
|
|
73
|
-
url: "https://httpbin.org/status/404"
|
|
74
|
-
description: "Known 404 for testing no_failed_requests"
|
|
60
|
+
local:
|
|
61
|
+
form:
|
|
62
|
+
url: "http://127.0.0.1:8088/fixtures/form.html"
|
|
63
|
+
description: "Deterministic form with an email input and submit button"
|
|
64
|
+
content:
|
|
65
|
+
url: "http://127.0.0.1:8088/fixtures/content.html"
|
|
66
|
+
description: "Deterministic static page with a known heading"
|
|
75
67
|
|
|
76
68
|
test_cases:
|
|
77
69
|
# -------- assert.js --------
|
|
@@ -81,10 +73,10 @@ test_cases:
|
|
|
81
73
|
priority: critical
|
|
82
74
|
input:
|
|
83
75
|
setup:
|
|
84
|
-
- "vibium --headless go
|
|
76
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/form.html"
|
|
85
77
|
command: |
|
|
86
78
|
node .claude/skills/qe-browser/scripts/assert.js --checks \
|
|
87
|
-
'[{"kind": "url_contains", "text": "
|
|
79
|
+
'[{"kind": "url_contains", "text": "/fixtures/form.html"}]'
|
|
88
80
|
expected:
|
|
89
81
|
exit_code: 0
|
|
90
82
|
json_fields:
|
|
@@ -98,7 +90,7 @@ test_cases:
|
|
|
98
90
|
priority: critical
|
|
99
91
|
input:
|
|
100
92
|
setup:
|
|
101
|
-
- "vibium --headless go
|
|
93
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
|
|
102
94
|
command: |
|
|
103
95
|
node .claude/skills/qe-browser/scripts/assert.js --checks \
|
|
104
96
|
'[{"kind": "selector_visible", "selector": "h1"}]'
|
|
@@ -113,7 +105,7 @@ test_cases:
|
|
|
113
105
|
priority: critical
|
|
114
106
|
input:
|
|
115
107
|
setup:
|
|
116
|
-
- "vibium --headless go
|
|
108
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
|
|
117
109
|
command: |
|
|
118
110
|
node .claude/skills/qe-browser/scripts/assert.js --checks \
|
|
119
111
|
'[{"kind": "url_contains", "text": "this-does-not-exist"}]'
|
|
@@ -132,10 +124,10 @@ test_cases:
|
|
|
132
124
|
command: |
|
|
133
125
|
node .claude/skills/qe-browser/scripts/batch.js --steps \
|
|
134
126
|
'[
|
|
135
|
-
{"action": "go", "url": "
|
|
127
|
+
{"action": "go", "url": "http://127.0.0.1:8088/fixtures/content.html"},
|
|
136
128
|
{"action": "wait_load"},
|
|
137
129
|
{"action": "assert", "checks": [
|
|
138
|
-
{"kind": "url_contains", "text": "/html"},
|
|
130
|
+
{"kind": "url_contains", "text": "/fixtures/content.html"},
|
|
139
131
|
{"kind": "selector_visible", "selector": "h1"}
|
|
140
132
|
]}
|
|
141
133
|
]' --summary-only
|
|
@@ -154,9 +146,11 @@ test_cases:
|
|
|
154
146
|
command: |
|
|
155
147
|
node .claude/skills/qe-browser/scripts/batch.js --steps \
|
|
156
148
|
'[
|
|
157
|
-
{"action": "go", "url": "
|
|
158
|
-
{"action": "
|
|
159
|
-
|
|
149
|
+
{"action": "go", "url": "http://127.0.0.1:8088/fixtures/content.html"},
|
|
150
|
+
{"action": "assert", "checks": [
|
|
151
|
+
{"kind": "url_contains", "text": "/does-not-exist"}
|
|
152
|
+
]},
|
|
153
|
+
{"action": "go", "url": "http://127.0.0.1:8088/fixtures/form.html"}
|
|
160
154
|
]'
|
|
161
155
|
expected:
|
|
162
156
|
exit_code: 1
|
|
@@ -177,7 +171,7 @@ test_cases:
|
|
|
177
171
|
# different dimensions (768×654 vs 765×672 observed), making the
|
|
178
172
|
# pixel-diff in tc007 spuriously fail. Mirrors scripts/smoke-test.sh.
|
|
179
173
|
- "vibium --headless viewport 1280 720"
|
|
180
|
-
- "vibium --headless go
|
|
174
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
|
|
181
175
|
- "rm -rf .aqe/visual-baselines/eval_httpbin_html*"
|
|
182
176
|
command: |
|
|
183
177
|
node .claude/skills/qe-browser/scripts/visual-diff.js \
|
|
@@ -195,7 +189,7 @@ test_cases:
|
|
|
195
189
|
input:
|
|
196
190
|
setup:
|
|
197
191
|
- "vibium --headless viewport 1280 720"
|
|
198
|
-
- "vibium --headless go
|
|
192
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
|
|
199
193
|
command: |
|
|
200
194
|
node .claude/skills/qe-browser/scripts/visual-diff.js \
|
|
201
195
|
--name eval_httpbin_html --threshold 0.02
|
|
@@ -212,7 +206,7 @@ test_cases:
|
|
|
212
206
|
priority: critical
|
|
213
207
|
input:
|
|
214
208
|
setup:
|
|
215
|
-
- "vibium --headless go
|
|
209
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
|
|
216
210
|
command: |
|
|
217
211
|
node .claude/skills/qe-browser/scripts/check-injection.js --include-hidden
|
|
218
212
|
expected:
|
|
@@ -221,15 +215,11 @@ test_cases:
|
|
|
221
215
|
".status": "success"
|
|
222
216
|
".output.checkInjection.severity": "none"
|
|
223
217
|
|
|
224
|
-
#
|
|
225
|
-
#
|
|
226
|
-
# fixtures/serve-skills.js. That's out of scope for this yaml — we keep
|
|
227
|
-
# CommandEvalRunner dependency-free so it can run anywhere httpbin.org
|
|
228
|
-
# is reachable. Coverage of the high-severity path is currently
|
|
218
|
+
# The "poisoned-page detected with severity>=high" contract is currently
|
|
219
|
+
# asserted outside this command suite. Coverage of the high-severity path is
|
|
229
220
|
# only asserted by unit tests on check-injection.js (see
|
|
230
221
|
# tests/unit/scripts/qe-browser-check-injection.test.ts). Follow-up:
|
|
231
|
-
#
|
|
232
|
-
# tc009 to scripts/smoke-test.sh that starts/stops it out of band.
|
|
222
|
+
# add tc009 against fixtures/injection-poisoned.html.
|
|
233
223
|
|
|
234
224
|
# -------- intent-score.js --------
|
|
235
225
|
- id: tc010_intent_submit_form_on_httpbin
|
|
@@ -238,7 +228,7 @@ test_cases:
|
|
|
238
228
|
priority: critical
|
|
239
229
|
input:
|
|
240
230
|
setup:
|
|
241
|
-
- "vibium --headless go
|
|
231
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/form.html"
|
|
242
232
|
command: |
|
|
243
233
|
node .claude/skills/qe-browser/scripts/intent-score.js \
|
|
244
234
|
--intent submit_form
|
|
@@ -255,7 +245,7 @@ test_cases:
|
|
|
255
245
|
priority: medium
|
|
256
246
|
input:
|
|
257
247
|
setup:
|
|
258
|
-
- "vibium --headless go
|
|
248
|
+
- "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
|
|
259
249
|
command: |
|
|
260
250
|
node .claude/skills/qe-browser/scripts/intent-score.js --intent fill_email
|
|
261
251
|
expected:
|
|
@@ -270,5 +260,4 @@ validation:
|
|
|
270
260
|
notes: |
|
|
271
261
|
Evaluation assumes:
|
|
272
262
|
- `vibium` v26.3.x+ is on PATH (from `aqe init` or `npm install -g vibium`)
|
|
273
|
-
-
|
|
274
|
-
- Local fixtures server running on :8088 (started in setup.local_docs_server)
|
|
263
|
+
- Local fixtures server running on 127.0.0.1:8088
|
|
@@ -74,6 +74,31 @@ const POISONED_HTML = `<!doctype html>
|
|
|
74
74
|
</body>
|
|
75
75
|
</html>`;
|
|
76
76
|
|
|
77
|
+
const CONTENT_HTML = `<!doctype html>
|
|
78
|
+
<html lang="en">
|
|
79
|
+
<head><meta charset="utf-8"><title>QE Browser Content Fixture</title></head>
|
|
80
|
+
<body>
|
|
81
|
+
<main>
|
|
82
|
+
<h1>QE Browser Content Fixture</h1>
|
|
83
|
+
<p>This deterministic page exercises browser assertions and visual comparisons.</p>
|
|
84
|
+
</main>
|
|
85
|
+
</body>
|
|
86
|
+
</html>`;
|
|
87
|
+
|
|
88
|
+
const FORM_HTML = `<!doctype html>
|
|
89
|
+
<html lang="en">
|
|
90
|
+
<head><meta charset="utf-8"><title>QE Browser Form Fixture</title></head>
|
|
91
|
+
<body>
|
|
92
|
+
<main>
|
|
93
|
+
<h1>Contact form</h1>
|
|
94
|
+
<form method="post" action="/fixtures/form.html">
|
|
95
|
+
<label>Email <input id="email" name="email" type="email" autocomplete="email"></label>
|
|
96
|
+
<button type="submit">Submit</button>
|
|
97
|
+
</form>
|
|
98
|
+
</main>
|
|
99
|
+
</body>
|
|
100
|
+
</html>`;
|
|
101
|
+
|
|
77
102
|
function notFound(res, message) {
|
|
78
103
|
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
|
|
79
104
|
res.end(`404 Not Found: ${message}\n`);
|
|
@@ -95,6 +120,18 @@ function serve(req, res) {
|
|
|
95
120
|
return;
|
|
96
121
|
}
|
|
97
122
|
|
|
123
|
+
if (pathname === '/fixtures/content.html') {
|
|
124
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
125
|
+
res.end(CONTENT_HTML);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (pathname === '/fixtures/form.html') {
|
|
130
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
131
|
+
res.end(FORM_HTML);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
98
135
|
// Rewrite /foo/SKILL.md.html → /foo/SKILL.md (or similar) and serve wrapped.
|
|
99
136
|
if (pathname.endsWith('.html')) {
|
|
100
137
|
const mdPath = pathname.replace(/\.html$/, '');
|
|
@@ -292,7 +292,7 @@ function readInlineOrFile(value) {
|
|
|
292
292
|
// "we couldn't run the test because the browser engine isn't installed."
|
|
293
293
|
function emit(env) {
|
|
294
294
|
process.stdout.write(`${JSON.stringify(env, null, 2)}\n`);
|
|
295
|
-
if (env.status === 'success') return 0;
|
|
295
|
+
if (env.status === 'success' || env.status === 'partial') return 0;
|
|
296
296
|
if (env.status === 'skipped') return 2;
|
|
297
297
|
return 1;
|
|
298
298
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# qe-browser smoke test (bash mirror of evals/qe-browser.yaml)
|
|
3
3
|
#
|
|
4
|
-
# Runs each helper script against
|
|
4
|
+
# Runs each helper script against deterministic local fixtures and
|
|
5
5
|
# verifies the output structure. Gates PR-reopen per ADR-091 Phase 3.
|
|
6
6
|
#
|
|
7
7
|
# RELATIONSHIP TO evals/qe-browser.yaml
|
|
@@ -24,16 +24,25 @@
|
|
|
24
24
|
# 2 — vibium binary not on PATH (precondition unmet)
|
|
25
25
|
#
|
|
26
26
|
# Per feedback_no_unverified_failure_modes.md, this is the script we
|
|
27
|
-
# actually run, not just write.
|
|
28
|
-
#
|
|
29
|
-
# stubs, no inline HTML.
|
|
27
|
+
# actually run, not just write. The fixture pages are maintained with the
|
|
28
|
+
# skill and served only on loopback, removing public-service rate limits.
|
|
30
29
|
|
|
31
30
|
set -uo pipefail
|
|
32
31
|
|
|
33
32
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
34
33
|
SKILL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
35
34
|
WORK_DIR="$(mktemp -d)"
|
|
36
|
-
|
|
35
|
+
FIXTURE_PORT="${QE_BROWSER_FIXTURE_PORT:-8088}"
|
|
36
|
+
FIXTURE_URL="${QE_BROWSER_FIXTURE_URL:-http://127.0.0.1:${FIXTURE_PORT}}"
|
|
37
|
+
FIXTURE_PID=""
|
|
38
|
+
|
|
39
|
+
cleanup() {
|
|
40
|
+
if [ -n "$FIXTURE_PID" ]; then
|
|
41
|
+
kill "$FIXTURE_PID" >/dev/null 2>&1 || true
|
|
42
|
+
fi
|
|
43
|
+
rm -rf "$WORK_DIR"
|
|
44
|
+
}
|
|
45
|
+
trap cleanup EXIT
|
|
37
46
|
|
|
38
47
|
GREEN='\033[0;32m'
|
|
39
48
|
RED='\033[0;31m'
|
|
@@ -57,6 +66,28 @@ if ! command -v vibium >/dev/null 2>&1; then
|
|
|
57
66
|
exit 2
|
|
58
67
|
fi
|
|
59
68
|
|
|
69
|
+
if ! curl --silent --fail "$FIXTURE_URL/fixtures/content.html" >/dev/null 2>&1; then
|
|
70
|
+
QE_BROWSER_FIXTURE_PORT="$FIXTURE_PORT" \
|
|
71
|
+
node "$SKILL_DIR/fixtures/serve-skills.js" >"$WORK_DIR/fixture-server.log" 2>&1 &
|
|
72
|
+
FIXTURE_PID=$!
|
|
73
|
+
fixture_ready=0
|
|
74
|
+
for _attempt in 1 2 3 4 5; do
|
|
75
|
+
if curl --silent --fail "$FIXTURE_URL/fixtures/content.html" >/dev/null 2>&1; then
|
|
76
|
+
fixture_ready=1
|
|
77
|
+
break
|
|
78
|
+
fi
|
|
79
|
+
sleep 1
|
|
80
|
+
done
|
|
81
|
+
if [ "$fixture_ready" != "1" ]; then
|
|
82
|
+
cat "$WORK_DIR/fixture-server.log" >&2
|
|
83
|
+
echo -e "${RED}qe-browser fixture server did not become ready${NC}" >&2
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
CONTENT_URL="$FIXTURE_URL/fixtures/content.html"
|
|
89
|
+
FORM_URL="$FIXTURE_URL/fixtures/form.html"
|
|
90
|
+
|
|
60
91
|
VIBIUM_VERSION=$(vibium --version 2>&1 | head -1)
|
|
61
92
|
echo "Smoke testing against $VIBIUM_VERSION"
|
|
62
93
|
echo "Skill dir: $SKILL_DIR"
|
|
@@ -64,29 +95,29 @@ echo "Work dir: $WORK_DIR"
|
|
|
64
95
|
echo ""
|
|
65
96
|
|
|
66
97
|
# ---------------------------------------------------------------------------
|
|
67
|
-
# tc001 — assert.js url_contains against
|
|
98
|
+
# tc001 — assert.js url_contains against the local form fixture
|
|
68
99
|
# ---------------------------------------------------------------------------
|
|
69
|
-
vibium --headless go
|
|
100
|
+
vibium --headless go "$FORM_URL" >/dev/null 2>&1 || true
|
|
70
101
|
RESULT=$(node "$SKILL_DIR/scripts/assert.js" --checks \
|
|
71
|
-
'[{"kind": "url_contains", "text": "
|
|
102
|
+
'[{"kind": "url_contains", "text": "/fixtures/form.html"}]' 2>&1)
|
|
72
103
|
EXIT=$?
|
|
73
104
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"status": "success"'; then
|
|
74
|
-
ok "tc001 url_contains on
|
|
105
|
+
ok "tc001 url_contains on local form"
|
|
75
106
|
else
|
|
76
|
-
bad "tc001 url_contains on
|
|
107
|
+
bad "tc001 url_contains on local form" "exit=$EXIT, result=$RESULT"
|
|
77
108
|
fi
|
|
78
109
|
|
|
79
110
|
# ---------------------------------------------------------------------------
|
|
80
|
-
# tc002 — assert.js selector_visible against
|
|
111
|
+
# tc002 — assert.js selector_visible against the local content fixture
|
|
81
112
|
# ---------------------------------------------------------------------------
|
|
82
|
-
vibium --headless go
|
|
113
|
+
vibium --headless go "$CONTENT_URL" >/dev/null 2>&1 || true
|
|
83
114
|
RESULT=$(node "$SKILL_DIR/scripts/assert.js" --checks \
|
|
84
115
|
'[{"kind": "selector_visible", "selector": "h1"}]' 2>&1)
|
|
85
116
|
EXIT=$?
|
|
86
117
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"passed": true'; then
|
|
87
|
-
ok "tc002 selector_visible h1 on
|
|
118
|
+
ok "tc002 selector_visible h1 on local content"
|
|
88
119
|
else
|
|
89
|
-
bad "tc002 selector_visible h1 on
|
|
120
|
+
bad "tc002 selector_visible h1 on local content" "exit=$EXIT"
|
|
90
121
|
fi
|
|
91
122
|
|
|
92
123
|
# ---------------------------------------------------------------------------
|
|
@@ -105,7 +136,7 @@ fi
|
|
|
105
136
|
# tc004 — batch.js navigate + wait + assert in one call
|
|
106
137
|
# ---------------------------------------------------------------------------
|
|
107
138
|
RESULT=$(node "$SKILL_DIR/scripts/batch.js" --steps \
|
|
108
|
-
|
|
139
|
+
"[{\"action\":\"go\",\"url\":\"$CONTENT_URL\"},{\"action\":\"wait_load\"},{\"action\":\"assert\",\"checks\":[{\"kind\":\"url_contains\",\"text\":\"/fixtures/content.html\"}]}]" \
|
|
109
140
|
--summary-only 2>&1)
|
|
110
141
|
EXIT=$?
|
|
111
142
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"passedSteps": 3'; then
|
|
@@ -118,7 +149,7 @@ fi
|
|
|
118
149
|
# tc005 — batch.js stops on failure
|
|
119
150
|
# ---------------------------------------------------------------------------
|
|
120
151
|
RESULT=$(node "$SKILL_DIR/scripts/batch.js" --steps \
|
|
121
|
-
|
|
152
|
+
"[{\"action\":\"go\",\"url\":\"$CONTENT_URL\"},{\"action\":\"assert\",\"checks\":[{\"kind\":\"url_contains\",\"text\":\"/does-not-exist\"}]},{\"action\":\"go\",\"url\":\"$FORM_URL\"}]" 2>&1)
|
|
122
153
|
EXIT=$?
|
|
123
154
|
if [ "$EXIT" = "1" ] && echo "$RESULT" | grep -q '"failedStep"'; then
|
|
124
155
|
ok "tc005 batch stops on first failure"
|
|
@@ -131,19 +162,19 @@ fi
|
|
|
131
162
|
#
|
|
132
163
|
# Set explicit viewport BEFORE screenshot so the two visual-diff runs have
|
|
133
164
|
# the same dimensions. Without this the chromium headless window picks
|
|
134
|
-
# whatever size it likes per run, and
|
|
165
|
+
# whatever size it likes per run, and pages may render at different
|
|
135
166
|
# sizes between runs (768×654 vs 765×672 observed), making pixel-diff
|
|
136
167
|
# spuriously fail. This is documented in references/assertion-kinds.md.
|
|
137
168
|
# ---------------------------------------------------------------------------
|
|
138
169
|
rm -rf "$PWD/.aqe/visual-baselines/smoke_test_baseline"*
|
|
139
170
|
vibium --headless viewport 1280 720 >/dev/null 2>&1 || true
|
|
140
|
-
vibium --headless go
|
|
171
|
+
vibium --headless go "$CONTENT_URL" >/dev/null 2>&1 || true
|
|
141
172
|
RESULT=$(node "$SKILL_DIR/scripts/visual-diff.js" --name smoke_test_baseline 2>&1)
|
|
142
173
|
EXIT=$?
|
|
143
174
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"baseline_created"'; then
|
|
144
175
|
ok "tc006 visual-diff baseline created"
|
|
145
176
|
else
|
|
146
|
-
bad "tc006 visual-diff baseline created" "exit=$EXIT"
|
|
177
|
+
bad "tc006 visual-diff baseline created" "exit=$EXIT, result=$RESULT"
|
|
147
178
|
fi
|
|
148
179
|
|
|
149
180
|
# ---------------------------------------------------------------------------
|
|
@@ -157,13 +188,13 @@ EXIT=$?
|
|
|
157
188
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -qE '"(match|baseline_created)"'; then
|
|
158
189
|
ok "tc007 visual-diff second run matches"
|
|
159
190
|
else
|
|
160
|
-
bad "tc007 visual-diff second run matches" "exit=$EXIT"
|
|
191
|
+
bad "tc007 visual-diff second run matches" "exit=$EXIT, result=$RESULT"
|
|
161
192
|
fi
|
|
162
193
|
|
|
163
194
|
# ---------------------------------------------------------------------------
|
|
164
195
|
# tc008 — check-injection.js clean page
|
|
165
196
|
# ---------------------------------------------------------------------------
|
|
166
|
-
vibium --headless go
|
|
197
|
+
vibium --headless go "$CONTENT_URL" >/dev/null 2>&1 || true
|
|
167
198
|
RESULT=$(node "$SKILL_DIR/scripts/check-injection.js" --include-hidden 2>&1)
|
|
168
199
|
EXIT=$?
|
|
169
200
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"severity": "none"'; then
|
|
@@ -173,15 +204,15 @@ else
|
|
|
173
204
|
fi
|
|
174
205
|
|
|
175
206
|
# ---------------------------------------------------------------------------
|
|
176
|
-
# tc010 — intent-score.js submit_form on
|
|
207
|
+
# tc010 — intent-score.js submit_form on the local form fixture
|
|
177
208
|
# ---------------------------------------------------------------------------
|
|
178
|
-
vibium --headless go
|
|
209
|
+
vibium --headless go "$FORM_URL" >/dev/null 2>&1 || true
|
|
179
210
|
RESULT=$(node "$SKILL_DIR/scripts/intent-score.js" --intent submit_form 2>&1)
|
|
180
211
|
EXIT=$?
|
|
181
212
|
if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"intent": "submit_form"'; then
|
|
182
|
-
ok "tc010 intent-score submit_form on
|
|
213
|
+
ok "tc010 intent-score submit_form on local form"
|
|
183
214
|
else
|
|
184
|
-
bad "tc010 intent-score submit_form on
|
|
215
|
+
bad "tc010 intent-score submit_form on local form" "exit=$EXIT"
|
|
185
216
|
fi
|
|
186
217
|
|
|
187
218
|
# ---------------------------------------------------------------------------
|
|
@@ -45,11 +45,10 @@ function ensureDir(dir) {
|
|
|
45
45
|
fs.mkdirSync(dir, { recursive: true });
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
// Vibium screenshot
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
// Vibium's actual output dir and copying to the requested location.
|
|
48
|
+
// Vibium screenshot output changed across the supported 26.x releases.
|
|
49
|
+
// Older releases ignore the directory passed to `-o` and save under
|
|
50
|
+
// `~/Pictures/Vibium`; newer releases may honor the requested path. Accept
|
|
51
|
+
// both behaviors so AQE init's compatible-version range stays usable.
|
|
53
52
|
// 2. `--selector` flag does NOT exist on `vibium screenshot`. Selector-
|
|
54
53
|
// scoped baselines are not supported in v26.3.x. We surface a clear
|
|
55
54
|
// error if a caller passes one. Future Vibium versions may add it.
|
|
@@ -69,21 +68,31 @@ function captureScreenshot(selector, outputPath) {
|
|
|
69
68
|
);
|
|
70
69
|
}
|
|
71
70
|
const basename = path.basename(outputPath);
|
|
72
|
-
const
|
|
71
|
+
const candidates = [
|
|
72
|
+
outputPath,
|
|
73
|
+
path.resolve(process.cwd(), basename),
|
|
74
|
+
path.join(vibiumPicturesDir(), basename),
|
|
75
|
+
];
|
|
76
|
+
for (const candidate of candidates) {
|
|
77
|
+
fs.rmSync(candidate, { force: true });
|
|
78
|
+
}
|
|
79
|
+
const args = ['screenshot', '-o', outputPath, '--full-page'];
|
|
73
80
|
const res = vibium(args);
|
|
74
81
|
if (res.status !== 0) {
|
|
75
82
|
throw new Error(`vibium screenshot failed: ${res.stderr.trim() || res.stdout.trim()}`);
|
|
76
83
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
const screenshotPath = candidates.find((candidate) => fs.existsSync(candidate));
|
|
85
|
+
if (!screenshotPath) {
|
|
86
|
+
throw new Error(
|
|
87
|
+
`screenshot output not created at any supported path (${candidates.join(', ')}; ` +
|
|
88
|
+
`vibium said: ${res.stdout.trim()})`
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
if (screenshotPath !== outputPath) {
|
|
92
|
+
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
93
|
+
fs.copyFileSync(screenshotPath, outputPath);
|
|
94
|
+
fs.unlinkSync(screenshotPath);
|
|
83
95
|
}
|
|
84
|
-
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
85
|
-
fs.copyFileSync(vibiumPath, outputPath);
|
|
86
|
-
fs.unlinkSync(vibiumPath);
|
|
87
96
|
return outputPath;
|
|
88
97
|
}
|
|
89
98
|
|