agentic-qe 3.9.14 → 3.9.15
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/skills/accessibility-testing/SKILL.md +18 -0
- package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
- package/.claude/skills/pentest-validation/SKILL.md +1 -1
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +46 -63
- package/.claude/skills/qe-browser/scripts/smoke-test.sh +16 -4
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +27 -0
- package/assets/skills/accessibility-testing/SKILL.md +18 -0
- package/assets/skills/qe-browser/evals/qe-browser.yaml +46 -63
- package/assets/skills/qe-browser/scripts/smoke-test.sh +16 -4
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-P2EPBJLF.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-O6EXMPMF.js → agent-booster-wasm-NA2VN5U2.js} +2 -2
- package/dist/cli/chunks/{agent-handler-4LPJVTJU.js → agent-handler-NRIF5IOC.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-PRR323JZ.js → agent-memory-branch-NW3UB2UW.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-6UITO3NJ.js +2 -0
- package/dist/cli/chunks/{audit-YCKXQOXD.js → audit-5CSEDVJR.js} +2 -2
- package/dist/cli/chunks/base-JHBJXVGP.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-44RIH62G.js → better-sqlite3-FZ32SHZ6.js} +2 -2
- package/dist/cli/chunks/{brain-handler-IAYJBAFL.js → brain-handler-ISVST4MR.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-RVVS2UYR.js → branch-enumerator-IUHWHIMV.js} +2 -2
- package/dist/cli/chunks/{browser-L6IKC4PR.js → browser-D4F3327X.js} +2 -2
- package/dist/cli/chunks/browser-workflow-U4OON5DZ.js +2 -0
- package/dist/cli/chunks/{chunk-WE7KIXR6.js → chunk-2BBKAX7X.js} +2 -2
- package/dist/cli/chunks/{chunk-DNFDSDKE.js → chunk-2CN2NPJQ.js} +2 -2
- package/dist/cli/chunks/{chunk-QLWP7ZIT.js → chunk-2L5ZFBHP.js} +2 -2
- package/dist/cli/chunks/{chunk-DMZ2XOEW.js → chunk-2XW36KDQ.js} +2 -2
- package/dist/cli/chunks/{chunk-HEQ23HBE.js → chunk-37ZSWRRP.js} +2 -2
- package/dist/cli/chunks/{chunk-SY74WSBN.js → chunk-3BA2FGSA.js} +2 -2
- package/dist/cli/chunks/{chunk-MXIFVOYA.js → chunk-3FUKJT4S.js} +2 -2
- package/dist/cli/chunks/{chunk-YPMBD44A.js → chunk-3NIHJIWP.js} +2 -2
- package/dist/cli/chunks/{chunk-3GIZRGX6.js → chunk-3RSPEFU3.js} +2 -2
- package/dist/cli/chunks/{chunk-M2RO34V7.js → chunk-3Y4YZDHJ.js} +4 -4
- package/dist/cli/chunks/{chunk-LKGLKX2A.js → chunk-4M7RBSW6.js} +2 -2
- package/dist/cli/chunks/{chunk-5U6M4XCP.js → chunk-4T36OQUK.js} +3 -3
- package/dist/cli/chunks/{chunk-ME4LVBTT.js → chunk-56YHSI6R.js} +2 -2
- package/dist/cli/chunks/{chunk-S2KGZJHS.js → chunk-62MVVEGH.js} +1 -1
- package/dist/cli/chunks/{chunk-MFGYMNNY.js → chunk-65QA7MYW.js} +2 -2
- package/dist/cli/chunks/{chunk-4EQWK6P6.js → chunk-6AMD4PZB.js} +2 -2
- package/dist/cli/chunks/{chunk-J5YOXLBD.js → chunk-6BHAGCZD.js} +1 -1
- package/dist/cli/chunks/{chunk-6J6GXRHX.js → chunk-6F3H2C5H.js} +3 -3
- package/dist/cli/chunks/{chunk-J3XLOHWB.js → chunk-6OEGZSRK.js} +2 -2
- package/dist/cli/chunks/{chunk-5MWNXDQW.js → chunk-6TOUMCSE.js} +2 -2
- package/dist/cli/chunks/{chunk-KFAN5FZM.js → chunk-6Z7LYE2B.js} +2 -2
- package/dist/cli/chunks/{chunk-KJB6JJXT.js → chunk-7J5KWUC2.js} +1 -1
- package/dist/cli/chunks/{chunk-IH4OOAEP.js → chunk-7ZPNQ3T6.js} +1 -1
- package/dist/cli/chunks/{chunk-KHUFPJE4.js → chunk-AE65B2ZE.js} +2 -2
- package/dist/cli/chunks/{chunk-BNPJMPM3.js → chunk-AVKUFN3C.js} +2 -2
- package/dist/cli/chunks/{chunk-3ZKTPPIC.js → chunk-B4BOOOYM.js} +1 -1
- package/dist/cli/chunks/{chunk-A2TK52B2.js → chunk-BGUCXJEJ.js} +2 -2
- package/dist/cli/chunks/{chunk-TOSFK4VG.js → chunk-C5BRTU4V.js} +1 -1
- package/dist/cli/chunks/{chunk-BFCMOMOF.js → chunk-CF3W34BA.js} +1 -1
- package/dist/cli/chunks/{chunk-RQFC7Q33.js → chunk-CSB2M7IX.js} +2 -2
- package/dist/cli/chunks/{chunk-DGUAAG3T.js → chunk-CUQBOVRP.js} +1 -1
- package/dist/cli/chunks/{chunk-KVN4FTPT.js → chunk-CWWUBZNX.js} +2 -2
- package/dist/cli/chunks/{chunk-VEAVDXXT.js → chunk-D32YCVCA.js} +2 -2
- package/dist/cli/chunks/{chunk-ORHCO2I7.js → chunk-D3FV5NNA.js} +2 -2
- package/dist/cli/chunks/{chunk-JNLKLC7G.js → chunk-D3ZUSXFY.js} +2 -2
- package/dist/cli/chunks/{chunk-IOHDE27P.js → chunk-DATFN5DG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCRLZINE.js → chunk-DPEG44BS.js} +2 -2
- package/dist/cli/chunks/{chunk-GIUAY4KY.js → chunk-DYQ7HTEU.js} +3 -3
- package/dist/cli/chunks/{chunk-WUYJYRBY.js → chunk-E3EDVRB5.js} +1 -1
- package/dist/cli/chunks/{chunk-JOGKQTCU.js → chunk-ELLNKP3I.js} +3 -3
- package/dist/cli/chunks/{chunk-Q4DAYLH4.js → chunk-EORSYD66.js} +2 -2
- package/dist/cli/chunks/{chunk-GALNZTYE.js → chunk-ESQSX37W.js} +2 -2
- package/dist/cli/chunks/{chunk-ERMIIRYN.js → chunk-EY2DGYQX.js} +1 -1
- package/dist/cli/chunks/chunk-FEVTMHO6.js +2 -0
- package/dist/cli/chunks/{chunk-3PZ2QLLR.js → chunk-FSOY2XB4.js} +3 -3
- package/dist/cli/chunks/{chunk-PZF5ISGS.js → chunk-FW6QBTPE.js} +1 -1
- package/dist/cli/chunks/{chunk-ZU5VHW6P.js → chunk-G3FUOFXA.js} +2 -2
- package/dist/cli/chunks/{chunk-JWR3NNFA.js → chunk-GHEO5YVA.js} +1 -1
- package/dist/cli/chunks/{chunk-7732TLNA.js → chunk-GLJ6CJNY.js} +2 -2
- package/dist/cli/chunks/{chunk-L4IWZXSC.js → chunk-GWUO3RY5.js} +1 -1
- package/dist/cli/chunks/{chunk-BOMJHE4I.js → chunk-H6DAP4KS.js} +2 -2
- package/dist/cli/chunks/{chunk-6EZY2QVM.js → chunk-HJNFBJT5.js} +8 -8
- package/dist/cli/chunks/{chunk-I3P5RZX7.js → chunk-HNAQNAGI.js} +3 -3
- package/dist/cli/chunks/{chunk-Z3PSKGBO.js → chunk-HPY7HGVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OGLS6HB4.js → chunk-HWK27KJK.js} +1 -1
- package/dist/cli/chunks/{chunk-2L3BCZ2F.js → chunk-ICXWXO5P.js} +1 -1
- package/dist/cli/chunks/{chunk-6BK2S2WE.js → chunk-IHDW4HW7.js} +2 -2
- package/dist/cli/chunks/{chunk-NWZYULZE.js → chunk-II5KTTIS.js} +4 -4
- package/dist/cli/chunks/{chunk-VUS4VRPQ.js → chunk-IMLH32AG.js} +2 -2
- package/dist/cli/chunks/{chunk-S6SM7LJK.js → chunk-IPTGPCEL.js} +2 -2
- package/dist/cli/chunks/{chunk-JLBUS4PR.js → chunk-IPVKVPAF.js} +2 -2
- package/dist/cli/chunks/{chunk-FNKKENLS.js → chunk-ISNXE6TP.js} +2 -2
- package/dist/cli/chunks/{chunk-LWHM5BWD.js → chunk-JAIIPEE6.js} +2 -2
- package/dist/cli/chunks/{chunk-UIYK4Y7K.js → chunk-JJDHD7SC.js} +2 -2
- package/dist/cli/chunks/{chunk-VDGWDDBC.js → chunk-JQRR37YY.js} +2 -2
- package/dist/cli/chunks/{chunk-DD4T7ZUM.js → chunk-KJTXY3DW.js} +1 -1
- package/dist/cli/chunks/{chunk-UUVTLYUK.js → chunk-KKBSX43Q.js} +2 -2
- package/dist/cli/chunks/{chunk-ZFZX2NA3.js → chunk-LLVS3UYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3NUMJB3U.js → chunk-LNUWNRRJ.js} +9 -9
- package/dist/cli/chunks/{chunk-G7L5Y47C.js → chunk-MBDX4OHD.js} +1 -1
- package/dist/cli/chunks/{chunk-P5YSBYZV.js → chunk-MHL6CPGY.js} +1 -1
- package/dist/cli/chunks/{chunk-VQB5SLXZ.js → chunk-MO4Q5ZGE.js} +2 -2
- package/dist/cli/chunks/{chunk-XNXOW7BQ.js → chunk-MS6T4VCU.js} +2 -2
- package/dist/cli/chunks/chunk-N2RPLPVG.js +18 -0
- package/dist/cli/chunks/{chunk-AEQMQVDJ.js → chunk-NL2PQLRD.js} +2 -2
- package/dist/cli/chunks/{chunk-PFSSI3YR.js → chunk-NWMYV7KG.js} +2 -2
- package/dist/cli/chunks/{chunk-G2KQUEGY.js → chunk-O6CHLZYT.js} +2 -2
- package/dist/cli/chunks/{chunk-VU4QET3C.js → chunk-O6J7MKRV.js} +2 -2
- package/dist/cli/chunks/{chunk-IL3ESNHA.js → chunk-OBZMQFWG.js} +3 -3
- package/dist/cli/chunks/{chunk-CGC63MGF.js → chunk-OHESV6I3.js} +4 -4
- package/dist/cli/chunks/{chunk-OZBTC26R.js → chunk-OMTYOIOS.js} +2 -2
- package/dist/cli/chunks/{chunk-5DWTU2PN.js → chunk-ORKGVVXK.js} +1 -1
- package/dist/cli/chunks/{chunk-UG2J5MTY.js → chunk-OUP2X3LT.js} +1 -1
- package/dist/cli/chunks/{chunk-GOTVYSX5.js → chunk-PSOIVDD2.js} +3 -3
- package/dist/cli/chunks/{chunk-FWI7PK4X.js → chunk-Q3E6Z2RQ.js} +1 -1
- package/dist/cli/chunks/{chunk-FFACJODG.js → chunk-Q3GDSFGA.js} +2 -2
- package/dist/cli/chunks/{chunk-TJOZPPZR.js → chunk-QNLZKD7E.js} +2 -2
- package/dist/cli/chunks/{chunk-WVN4YJSF.js → chunk-R4G64UH3.js} +1 -1
- package/dist/cli/chunks/{chunk-WELNFHDN.js → chunk-REUGPZIA.js} +1 -1
- package/dist/cli/chunks/{chunk-D6APBW66.js → chunk-RODJK6G6.js} +1 -1
- package/dist/cli/chunks/{chunk-AOYN6XYJ.js → chunk-RPOW5LWO.js} +1 -1
- package/dist/cli/chunks/{chunk-YZBY4ZRF.js → chunk-RSOOENGE.js} +2 -2
- package/dist/cli/chunks/{chunk-4JYLXYAH.js → chunk-RTVD7SZQ.js} +1 -1
- package/dist/cli/chunks/{chunk-QUK34CSU.js → chunk-RWVFOXYM.js} +1 -1
- package/dist/cli/chunks/{chunk-SUXUCW5I.js → chunk-SSQ42GI7.js} +2 -2
- package/dist/cli/chunks/{chunk-7IJBZGZY.js → chunk-SXUX6PTE.js} +1 -1
- package/dist/cli/chunks/{chunk-HJJTLOWZ.js → chunk-TJDAXI6E.js} +2 -2
- package/dist/cli/chunks/{chunk-AHVUILGE.js → chunk-TZWCVGG2.js} +1 -1
- package/dist/cli/chunks/{chunk-WSZVSDD5.js → chunk-U4WDJPRL.js} +2 -2
- package/dist/cli/chunks/{chunk-GM5LIYLQ.js → chunk-UZOFXYNC.js} +2 -2
- package/dist/cli/chunks/{chunk-NWGIQCCO.js → chunk-V65DK6ZZ.js} +1 -1
- package/dist/cli/chunks/{chunk-Y3X5OS5F.js → chunk-V6QARSVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-LJ3WQIBN.js → chunk-V775NJOM.js} +1 -1
- package/dist/cli/chunks/{chunk-FYBTGEOV.js → chunk-VBEVZUQW.js} +1 -1
- package/dist/cli/chunks/{chunk-6GKXC6DE.js → chunk-VDDQSW4L.js} +2 -2
- package/dist/cli/chunks/{chunk-VVKENR4I.js → chunk-W4PUKTBF.js} +1 -1
- package/dist/cli/chunks/{chunk-XH774Q6Z.js → chunk-WAQ3U4FC.js} +1 -1
- package/dist/cli/chunks/{chunk-I5U64MHU.js → chunk-WCOJGDGO.js} +2 -2
- package/dist/cli/chunks/{chunk-JN7MSUGK.js → chunk-WI6UA5HV.js} +2 -2
- package/dist/cli/chunks/{chunk-GUEK5DOK.js → chunk-XALB3KRR.js} +2 -2
- package/dist/cli/chunks/{chunk-5HUAD4UU.js → chunk-XXRDI53H.js} +2 -2
- package/dist/cli/chunks/{chunk-DJLRRCR6.js → chunk-YCYFUYCE.js} +2 -2
- package/dist/cli/chunks/{chunk-4RDTR2OF.js → chunk-ZHTCZGML.js} +2 -2
- package/dist/cli/chunks/{chunk-36YZ2UF7.js → chunk-ZOAPOVYW.js} +2 -2
- package/dist/cli/chunks/{chunk-UAAJ3BSW.js → chunk-ZSC7NHK3.js} +2 -2
- package/dist/cli/chunks/{ci-QQ4F5TYO.js → ci-BGUUHDUS.js} +2 -2
- package/dist/cli/chunks/{ci-output-QC4WRENA.js → ci-output-CDFRGBNU.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-HFQUNYTK.js → circuit-breaker-S3NFX6RQ.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-XNSCWIUN.js → claude-flow-setup-AJIPJFMC.js} +2 -2
- package/dist/cli/chunks/client-UHHMKUPF.js +2 -0
- package/dist/cli/chunks/{cline-installer-S3CECBYL.js → cline-installer-6O4KZ5UH.js} +2 -2
- package/dist/cli/chunks/{code-QHUELDUH.js → code-IZALXUL5.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-QLA5EQTE.js → code-index-extractor-N7VDH4XF.js} +2 -2
- package/dist/cli/chunks/{codex-installer-CQ7JNNOA.js → codex-installer-35GTWCFJ.js} +2 -2
- package/dist/cli/chunks/{completions-S33U3KIT.js → completions-XPJFHGG2.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-J7IEW3EM.js → complexity-analyzer-DNLCJGUJ.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-DVU24D37.js → continuedev-installer-PXAIKNYO.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-DYISOPBC.js → copilot-installer-2TQ5IZNY.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-URJADKKS.js → cost-tracker-A5XH4W6S.js} +2 -2
- package/dist/cli/chunks/{coverage-NGMKJNW6.js → coverage-EPIMXTLW.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-GEBXTPZW.js +2 -0
- package/dist/cli/chunks/{cursor-installer-DFBJRDSY.js → cursor-installer-WMMRPW44.js} +2 -2
- package/dist/cli/chunks/{daemon-JSKKVVCV.js → daemon-55DSODOH.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-YITFS6MR.js → dag-attention-scheduler-5DSWXMMK.js} +2 -2
- package/dist/cli/chunks/{detect-5APZP2D3.js → detect-NOS46AWN.js} +2 -2
- package/dist/cli/chunks/{domain-handler-WHH6XPSZ.js → domain-handler-BFRNU6S3.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-SERX53SS.js → domain-transfer-BPSA4HFR.js} +2 -2
- package/dist/cli/chunks/dream-XBRGYPBC.js +2 -0
- package/dist/cli/chunks/esm-node-EV4HOHTZ.js +2 -0
- package/dist/cli/chunks/eval-YDLM23FB.js +15 -0
- package/dist/cli/chunks/{fast-paths-4MSOOJVK.js → fast-paths-GISZ7HBO.js} +2 -2
- package/dist/cli/chunks/{feature-flags-WJT57IEJ.js → feature-flags-3FLJF6CQ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-564YFR65.js → feature-flags-5WGZLUPQ.js} +2 -2
- package/dist/cli/chunks/{file-discovery-5QVG65WF.js → file-discovery-PPHUMFSI.js} +2 -2
- package/dist/cli/chunks/{fleet-CF5JRK5B.js → fleet-LHFZ53FS.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-NYQ77563.js → gnn-wrapper-Z45DRWGI.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-42QJPKHE.js → heartbeat-handler-VMLJ5PDH.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-7XEAV74Y.js → heartbeat-scheduler-GUWYDHEY.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-BG73YVXI.js +2 -0
- package/dist/cli/chunks/hnsw-index-K73ZTLJN.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-ZRR6PGWN.js → hnsw-legacy-bridge-S7UZWDUP.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-DY7NOW76.js → hnswlib-node-MIAAS7OI.js} +2 -2
- package/dist/cli/chunks/{hooks-IRRHEJLR.js → hooks-ZN4FV5XS.js} +6 -6
- package/dist/cli/chunks/{hybrid-router-S4JXJLUY.js → hybrid-router-Y6LBFPL7.js} +2 -2
- package/dist/cli/chunks/{hypergraph-engine-WFHZJMP2.js → hypergraph-engine-KK73LZYZ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-LHUKR7PT.js → hypergraph-handler-OBGDPIWG.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-GWIUYYCQ.js +2 -0
- package/dist/cli/chunks/{init-handler-ZBIW7PSB.js → init-handler-JJJ7VHM4.js} +6 -6
- package/dist/cli/chunks/init-wizard-RIJJAKE3.js +2 -0
- package/dist/cli/chunks/kernel-SIPBCRGL.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-JYHA4NW7.js → kilocode-installer-EF6DPX2D.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-OBXTRK77.js → kiro-installer-SG74CEVO.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-NOYZXHIG.js +2 -0
- package/dist/cli/chunks/{learning-OAEJHEJD.js → learning-LVWYMHF6.js} +3 -3
- package/dist/cli/chunks/{llm-router-NNEOZAVB.js → llm-router-QFK7MNPY.js} +4 -4
- package/dist/cli/chunks/{load-WIKLBESW.js → load-6XPV4WA2.js} +2 -2
- package/dist/cli/chunks/load-test-DIMUH75F.js +2 -0
- package/dist/cli/chunks/{mcp-KR43GFGP.js → mcp-GZXOPYMH.js} +2 -2
- package/dist/cli/chunks/{memory-KQIYKAYU.js → memory-QTE2Z5HU.js} +5 -5
- package/dist/cli/chunks/memory-backend-IWOGO4BV.js +2 -0
- package/dist/cli/chunks/{memory-handlers-LAI4AO4O.js → memory-handlers-PC4P4YEF.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-NPS3VOAR.js → multi-model-executor-FZOPSUOT.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-FE475WME.js → opencode-installer-CITDTCUQ.js} +2 -2
- package/dist/cli/chunks/{orchestrator-MW4MZ3RW.js → orchestrator-ZTG7MFHQ.js} +20 -20
- package/dist/cli/chunks/{pipeline-R2TGZSUA.js → pipeline-QXO4EJP4.js} +2 -2
- package/dist/cli/chunks/{platform-N2GZBCBP.js → platform-JJEDYCAK.js} +2 -2
- package/dist/cli/chunks/{plugin-V2AQF23V.js → plugin-ZEKRM6F7.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-ZQSYRLRS.js → prime-radiant-advanced-wasm-GRS4T6LR.js} +2 -2
- package/dist/cli/chunks/protocol-executor-NT4TILJW.js +2 -0
- package/dist/cli/chunks/{protocol-handler-V3U724F2.js → protocol-handler-KWI2T6OR.js} +2 -2
- package/dist/cli/chunks/{prove-NCH56HZB.js → prove-7FJN2HEH.js} +2 -2
- package/dist/cli/chunks/{provider-manager-7NUHS3T5.js → provider-manager-QYYZZLLO.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-VDROHXFS.js +2 -0
- package/dist/cli/chunks/{quality-J3IVPPPW.js → quality-4NHO2NY5.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-7LO73IV3.js +2 -0
- package/dist/cli/chunks/{real-embeddings-VURZXAEY.js → real-embeddings-SIELAOWX.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-STWFJGMR.js → roocode-installer-ANYXH3NR.js} +2 -2
- package/dist/cli/chunks/router-SFVOLN2W.js +2 -0
- package/dist/cli/chunks/routing-feedback-MRFV7WUZ.js +2 -0
- package/dist/cli/chunks/{routing-handler-6GZT7EXM.js → routing-handler-6QQHK4KV.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-LCPAH6WH.js → ruvector-commands-YEUA3MZB.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-76LWFT5X.js → rvf-dual-writer-UJFRHPVE.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-G7KFWJKY.js → rvf-migration-adapter-CSDFG7UA.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-3DXOUPWF.js → rvf-migration-coordinator-QO7OENQF.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-6L7FZZC7.js +2 -0
- package/dist/cli/chunks/safe-db-PYWBVGOV.js +2 -0
- package/dist/cli/chunks/schedule-BUQU75HY.js +2 -0
- package/dist/cli/chunks/scheduler-XOSKWZO2.js +2 -0
- package/dist/cli/chunks/{security-XDBPYA5T.js → security-QCIUC5FX.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-OZ7S4ZQL.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-UGXTS2XI.js → shared-rvf-dual-writer-LVJJS3PD.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-7UXQZ5Y6.js +2 -0
- package/dist/cli/chunks/{status-handler-ZLXES3QL.js → status-handler-O77A4JWM.js} +2 -2
- package/dist/cli/chunks/{structural-health-4PFCOQ7T.js → structural-health-WIIBIIQI.js} +2 -2
- package/dist/cli/chunks/{sync-3DROIEZN.js → sync-UN6D6OF2.js} +2 -2
- package/dist/cli/chunks/{task-handler-4UGZ5VIE.js → task-handler-RBOSMJCK.js} +2 -2
- package/dist/cli/chunks/{task-handlers-I5VVBTWI.js → task-handlers-VWMXQKAT.js} +2 -2
- package/dist/cli/chunks/{test-Z2MM7O5A.js → test-XK5M3PGT.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-AP76GKN5.js → test-scheduling-CTQ3JJ7G.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-P54N6PZV.js → token-bootstrap-D5CQ3I5M.js} +2 -2
- package/dist/cli/chunks/{token-usage-AXAZTPA6.js → token-usage-L4QSLWQ5.js} +2 -2
- package/dist/cli/chunks/{transformers-VOZ2Z7FS.js → transformers-SRPJDBKA.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-IYKLBTXB.js → tree-sitter-wasm-parser-DOU5ITWB.js} +2 -2
- package/dist/cli/chunks/{types-TKDH5EBW.js → types-LECYZUBN.js} +2 -2
- package/dist/cli/chunks/unified-memory-L6735TFM.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-7TZNEDGY.js +2 -0
- package/dist/cli/chunks/unified-persistence-FNYZ3C2B.js +2 -0
- package/dist/cli/chunks/{validate-ZGF5FVZE.js → validate-SIKNIS6B.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-OPWWUWYA.js → validate-swarm-EHAMMILJ.js} +2 -2
- package/dist/cli/chunks/{vibium-HEQUGRKJ.js → vibium-LJ4NYXMZ.js} +2 -2
- package/dist/cli/chunks/visual-security-SMPZPDY4.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-JZ7JCJJR.js → web-tree-sitter-DZQ3T4JD.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-2SGRCS6C.js → windsurf-installer-U6Z73O6J.js} +2 -2
- package/dist/cli/chunks/witness-chain-FNCOTWFA.js +2 -0
- package/dist/cli/chunks/{witness-chain-LJUYOCB5.js → witness-chain-JE3QU4YP.js} +2 -2
- package/dist/cli/chunks/{workflow-QORI3KO7.js → workflow-62QXGZQO.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-RCR4N7OA.js +2 -0
- package/dist/cli/chunks/{wrappers-3NR7LNB5.js → wrappers-CAX5EZSH.js} +2 -2
- package/dist/cli/commands/eval.js +86 -0
- package/dist/init/browser-engine-installer.d.ts +60 -1
- package/dist/init/browser-engine-installer.js +73 -3
- package/dist/init/phases/09-assets.js +9 -2
- package/dist/mcp/bundle.js +1 -1
- package/dist/validation/command-eval-runner.d.ts +154 -0
- package/dist/validation/command-eval-runner.js +293 -0
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.js +4 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-W2EM7ZQ7.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-JQMPNHQU.js +0 -2
- package/dist/cli/chunks/base-EOPYE6JR.js +0 -2
- package/dist/cli/chunks/browser-workflow-CSARLAJD.js +0 -2
- package/dist/cli/chunks/chunk-53KLVMAT.js +0 -18
- package/dist/cli/chunks/chunk-STYNOKOM.js +0 -2
- package/dist/cli/chunks/client-3GECKJWB.js +0 -2
- package/dist/cli/chunks/cross-domain-router-UYONX76U.js +0 -2
- package/dist/cli/chunks/dream-Z5QDQJSM.js +0 -2
- package/dist/cli/chunks/esm-node-FOI5Y3O2.js +0 -2
- package/dist/cli/chunks/eval-FM3BLVFO.js +0 -15
- package/dist/cli/chunks/hnsw-adapter-NOAQ76QF.js +0 -2
- package/dist/cli/chunks/hnsw-index-KDIZQRSB.js +0 -2
- package/dist/cli/chunks/impact-analyzer-VDXJBWFG.js +0 -2
- package/dist/cli/chunks/init-wizard-Q6DEACKX.js +0 -2
- package/dist/cli/chunks/kernel-YNQOGTM5.js +0 -2
- package/dist/cli/chunks/knowledge-graph-GOZG3YOM.js +0 -2
- package/dist/cli/chunks/load-test-UJLTMPXW.js +0 -2
- package/dist/cli/chunks/memory-backend-WJH6XER3.js +0 -2
- package/dist/cli/chunks/protocol-executor-LYYYHXAX.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-JK4UKLYY.js +0 -2
- package/dist/cli/chunks/queen-coordinator-6OKLSCHV.js +0 -2
- package/dist/cli/chunks/router-DDZHCGUD.js +0 -2
- package/dist/cli/chunks/routing-feedback-BA66F37P.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-TXTRJNPW.js +0 -2
- package/dist/cli/chunks/safe-db-IFBVWIGF.js +0 -2
- package/dist/cli/chunks/schedule-WMZLOPCW.js +0 -2
- package/dist/cli/chunks/scheduler-WBORWJD5.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-SQQ27EEI.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-XH47B3BG.js +0 -2
- package/dist/cli/chunks/unified-memory-NHJHPLIC.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-IMMCI2XK.js +0 -2
- package/dist/cli/chunks/unified-persistence-JS6CEV35.js +0 -2
- package/dist/cli/chunks/visual-security-XLO5JBVP.js +0 -2
- package/dist/cli/chunks/witness-chain-PPWPHYTY.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-H4DKRHVP.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import{a,b,c,d,e,f,g}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.15");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g}from"./chunk-ZHTCZGML.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{c as PersistentWitnessChain,a as SPRTAccumulator,b as WitnessChain,f as createPersistentWitnessChain,e as createWitnessChain,d as createWitnessChainSQLitePersistence,g as isWitnessChainFeatureEnabled};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.15");process.exit(0)}
|
|
2
|
+
import"./chunk-WCOJGDGO.js";import{b as $}from"./chunk-HWK27KJK.js";import{d as R}from"./chunk-D32YCVCA.js";import{b as k,c as C,d as b}from"./chunk-OMTYOIOS.js";import{c as W}from"./chunk-2XW36KDQ.js";import"./chunk-FW6QBTPE.js";import"./chunk-JJDHD7SC.js";import"./chunk-CUQBOVRP.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
|
|
3
3
|
Running workflow from: ${t}
|
|
4
4
|
`));let s=k(c);if(!s.success||!s.workflow){console.log(o.red("Failed to parse pipeline:"));for(let w of s.errors)console.log(o.red(` ${w}`));await a(1)}let r={...W(l.params,"params")};if(s.pipeline){for(let w of s.pipeline.stages)if(w.params)for(let[S,h]of Object.entries(w.params))r[S]=h}if(!d.workflowOrchestrator.getWorkflow(s.workflow.id)){let w=d.workflowOrchestrator.registerWorkflow(s.workflow);w.success||(console.log(o.red(`Failed to register workflow: ${w.error.message}`)),await a(1))}let n=await d.workflowOrchestrator.executeWorkflow(s.workflow.id,r);if(!n.success){console.log(o.red(`Failed to start workflow: ${n.error.message}`)),await a(1);return}let p=n.value;if(console.log(o.cyan(` Execution ID: ${p}`)),console.log(o.gray(` Workflow: ${s.workflow.name}`)),console.log(o.gray(` Stages: ${s.workflow.steps.length}`)),console.log(""),l.watch){console.log(o.blue(`Workflow Progress:
|
|
5
5
|
`));let w,S=Date.now();for(;;){let g=d.workflowOrchestrator.getWorkflowStatus(p);if(!g)break;if(!w||w.progress!==g.progress||w.status!==g.status||JSON.stringify(w.currentSteps)!==JSON.stringify(g.currentSteps)){process.stdout.write("\r\x1B[K");let v="\u2588".repeat(Math.floor(g.progress/5))+"\u2591".repeat(20-Math.floor(g.progress/5)),D=g.status==="completed"?o.green:g.status==="failed"?o.red:g.status==="running"?o.yellow:o.gray;console.log(` [${v}] ${g.progress}% - ${D(g.status)}`),g.currentSteps.length>0&&l.verbose&&console.log(o.gray(` Running: ${g.currentSteps.join(", ")}`)),w=g}if(g.status==="completed"||g.status==="failed"||g.status==="cancelled")break;await new Promise(v=>setTimeout(v,500))}let h=d.workflowOrchestrator.getWorkflowStatus(p);if(h){console.log("");let g=h.duration||Date.now()-S;h.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(g)}`)),console.log(o.gray(` Completed: ${h.completedSteps.length} stages`)),h.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${h.skippedSteps.length} stages`))):h.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${h.error}`)),console.log(o.gray(` Failed stages: ${h.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${h.status}`))}}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${p}' to check progress`));console.log(""),await a(0)}catch(s){console.error(o.red(`
|
|
@@ -35,10 +35,10 @@ Workflow cancelled: ${t}
|
|
|
35
35
|
`)):console.log(o.red(`
|
|
36
36
|
Failed to cancel workflow: ${l.error.message}
|
|
37
37
|
`)),await a(l.success?0:1)}catch(l){console.error(o.red(`
|
|
38
|
-
Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-
|
|
38
|
+
Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-U4OON5DZ.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
|
|
39
39
|
Browser Workflow Templates:
|
|
40
40
|
`));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await a(0)}catch(t){console.error(o.red(`
|
|
41
|
-
Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-
|
|
41
|
+
Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-U4OON5DZ.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-CDFRGBNU.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
|
|
42
42
|
File not found: ${p}
|
|
43
43
|
`)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
|
|
44
44
|
Provide a template name or --yaml. Use "workflow browser-list" to see templates.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.15");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-AE65B2ZE.js";import"./chunk-ZOAPOVYW.js";import"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import"./chunk-2XW36KDQ.js";import"./chunk-FW6QBTPE.js";import"./chunk-JJDHD7SC.js";import"./chunk-MBDX4OHD.js";import"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.15");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-6TOUMCSE.js";import"./chunk-LLVS3UYZ.js";import"./chunk-KKBSX43Q.js";import"./chunk-FEVTMHO6.js";import"./chunk-XALB3KRR.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-O6J7MKRV.js";import"./chunk-2XW36KDQ.js";import"./chunk-JJDHD7SC.js";import"./chunk-JAIIPEE6.js";import"./chunk-6OEGZSRK.js";import"./chunk-WI6UA5HV.js";import"./chunk-D3ZUSXFY.js";import"./chunk-2BBKAX7X.js";import"./chunk-MS6T4VCU.js";import"./chunk-IPVKVPAF.js";import"./chunk-YCYFUYCE.js";import"./chunk-XXRDI53H.js";import"./chunk-CUQBOVRP.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
|
|
@@ -14,7 +14,9 @@ import { Command } from 'commander';
|
|
|
14
14
|
import chalk from 'chalk';
|
|
15
15
|
import * as fs from 'fs';
|
|
16
16
|
import * as path from 'path';
|
|
17
|
+
import * as yaml from 'yaml';
|
|
17
18
|
import { createParallelEvalRunner, DEFAULT_PARALLEL_EVAL_CONFIG, } from '../../validation/parallel-eval-runner.js';
|
|
19
|
+
import { createCommandEvalRunner, isCommandEvalSuite, } from '../../validation/command-eval-runner.js';
|
|
18
20
|
import { createSkillValidationLearner, } from '../../learning/skill-validation-learner.js';
|
|
19
21
|
import { createRealQEReasoningBank, } from '../../learning/real-qe-reasoning-bank.js';
|
|
20
22
|
// ============================================================================
|
|
@@ -185,6 +187,70 @@ function formatMarkdownReport(results) {
|
|
|
185
187
|
return lines.join('\n');
|
|
186
188
|
}
|
|
187
189
|
// ============================================================================
|
|
190
|
+
// Suite-shape dispatch
|
|
191
|
+
// ============================================================================
|
|
192
|
+
const DEFAULT_SKILLS_DIR = '.claude/skills';
|
|
193
|
+
/**
|
|
194
|
+
* Peek at the eval yaml to decide whether the suite is command-mode
|
|
195
|
+
* (scripts producing JSON, per ADR-091) or LLM-mode (prompts evaluated by
|
|
196
|
+
* an LLM, the pre-existing shape). Returns null if the file is missing or
|
|
197
|
+
* unparseable; that error path is then surfaced by the respective runner.
|
|
198
|
+
*/
|
|
199
|
+
function detectSuiteMode(skill) {
|
|
200
|
+
const evalPath = path.join(process.cwd(), DEFAULT_SKILLS_DIR, skill, 'evals', `${skill}.yaml`);
|
|
201
|
+
if (!fs.existsSync(evalPath))
|
|
202
|
+
return null;
|
|
203
|
+
try {
|
|
204
|
+
const raw = yaml.parse(fs.readFileSync(evalPath, 'utf-8'));
|
|
205
|
+
return isCommandEvalSuite(raw) ? 'command' : 'llm';
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Adapt a {@link CommandEvalResult} into the {@link ParallelEvalResult} shape
|
|
213
|
+
* so the existing CLI formatting / reporting path works unchanged. Fields
|
|
214
|
+
* that don't apply to shell-command evals (model, reasoning quality,
|
|
215
|
+
* parallel speedup, worker count) are filled with sensible neutral values.
|
|
216
|
+
*/
|
|
217
|
+
function commandResultToParallel(cr, model) {
|
|
218
|
+
return {
|
|
219
|
+
skill: cr.skill,
|
|
220
|
+
model,
|
|
221
|
+
totalTests: cr.totalTests,
|
|
222
|
+
passedTests: cr.passedTests,
|
|
223
|
+
failedTests: cr.failedTests,
|
|
224
|
+
skippedTests: 0,
|
|
225
|
+
passRate: cr.passRate,
|
|
226
|
+
testResults: cr.testResults.map((t) => toParallelTestResult(t)),
|
|
227
|
+
totalDurationMs: cr.totalDurationMs,
|
|
228
|
+
parallelSpeedup: 1,
|
|
229
|
+
avgReasoningQuality: 0,
|
|
230
|
+
passed: cr.passed,
|
|
231
|
+
workersUsed: 1,
|
|
232
|
+
timestamp: cr.timestamp,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
function toParallelTestResult(t) {
|
|
236
|
+
const errorParts = [];
|
|
237
|
+
if (t.setupFailure)
|
|
238
|
+
errorParts.push(t.setupFailure);
|
|
239
|
+
if (t.failures.length)
|
|
240
|
+
errorParts.push(...t.failures);
|
|
241
|
+
return {
|
|
242
|
+
testId: t.testId,
|
|
243
|
+
passed: t.passed,
|
|
244
|
+
expectedPatterns: [],
|
|
245
|
+
actualPatterns: [],
|
|
246
|
+
reasoningQuality: 0,
|
|
247
|
+
executionTimeMs: t.durationMs,
|
|
248
|
+
category: t.category ?? 'uncategorized',
|
|
249
|
+
priority: (t.priority ?? 'medium'),
|
|
250
|
+
error: errorParts.length ? errorParts.join('; ') : undefined,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
// ============================================================================
|
|
188
254
|
// Command Handlers
|
|
189
255
|
// ============================================================================
|
|
190
256
|
async function initializeRunner() {
|
|
@@ -209,6 +275,26 @@ async function initializeRunner() {
|
|
|
209
275
|
async function handleRunCommand(options) {
|
|
210
276
|
console.log(chalk.bold('\nAQE Parallel Eval Runner'));
|
|
211
277
|
console.log(chalk.dim('ADR-056 Phase 5: Worker Pool Pattern\n'));
|
|
278
|
+
const suiteMode = detectSuiteMode(options.skill);
|
|
279
|
+
if (suiteMode === 'command') {
|
|
280
|
+
// Command-mode skills (e.g. qe-browser) don't need an LLM executor or a
|
|
281
|
+
// ReasoningBank. Keep them on a fast, dependency-light path.
|
|
282
|
+
console.log(chalk.cyan(`Running eval suite: ${options.skill}`));
|
|
283
|
+
console.log(chalk.dim('Mode: command-eval (shell-based, ADR-091)'));
|
|
284
|
+
console.log('');
|
|
285
|
+
const commandRunner = createCommandEvalRunner({
|
|
286
|
+
timeoutMs: options.timeout,
|
|
287
|
+
});
|
|
288
|
+
const commandResult = await commandRunner.run(options.skill);
|
|
289
|
+
const result = commandResultToParallel(commandResult, options.model);
|
|
290
|
+
console.log(formatResult(result));
|
|
291
|
+
if (options.output) {
|
|
292
|
+
const outputPath = path.resolve(options.output);
|
|
293
|
+
fs.writeFileSync(outputPath, JSON.stringify(result, null, 2));
|
|
294
|
+
console.log(chalk.green(`Results saved to: ${outputPath}`));
|
|
295
|
+
}
|
|
296
|
+
process.exit(result.passed ? 0 : 1);
|
|
297
|
+
}
|
|
212
298
|
const { runner, reasoningBank } = await initializeRunner();
|
|
213
299
|
try {
|
|
214
300
|
// Configure runner
|
|
@@ -13,6 +13,21 @@
|
|
|
13
13
|
* - No new runtime deps: shells out to `npm install -g vibium` via child_process.
|
|
14
14
|
*/
|
|
15
15
|
import { type SpawnSyncReturns } from 'node:child_process';
|
|
16
|
+
/**
|
|
17
|
+
* Default Vibium npm spec. Major-line pin via caret (`^26.3.18`) — npm
|
|
18
|
+
* semver will accept any 26.x.y >= 26.3.18 but reject 27.0.0+. The intent
|
|
19
|
+
* is to auto-receive security patches and additive minor features while
|
|
20
|
+
* blocking breaking-change major bumps, which is where Vibium's CLI
|
|
21
|
+
* contract (`go`, `--headless`, `viewport`, exit codes) can change.
|
|
22
|
+
*
|
|
23
|
+
* This is NOT a minor-line pin. If a future Vibium 26.y release changes
|
|
24
|
+
* the primitives' expectations, the CI smoke gate (scripts/smoke-test.sh)
|
|
25
|
+
* is the belt-and-suspenders check.
|
|
26
|
+
*
|
|
27
|
+
* Bump procedure: update this constant (e.g. to ^27.0.0 at a major), run
|
|
28
|
+
* scripts/smoke-test.sh against the new version, then land the bump.
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEFAULT_VIBIUM_SPEC = "vibium@^26.3.18";
|
|
16
31
|
/**
|
|
17
32
|
* Spawner injected into {@link installBrowserEngine} so tests can mock the
|
|
18
33
|
* shell-out without monkey-patching the child_process module (ESM namespaces
|
|
@@ -26,7 +41,7 @@ export type Spawner = (bin: string, args: string[], options: {
|
|
|
26
41
|
export interface BrowserEngineInstallerOptions {
|
|
27
42
|
/** Skip installation entirely (for --minimal or --no-browser-engine). */
|
|
28
43
|
skip?: boolean;
|
|
29
|
-
/** Package name/version spec. Defaults to
|
|
44
|
+
/** Package name/version spec. Defaults to {@link DEFAULT_VIBIUM_SPEC}. */
|
|
30
45
|
packageSpec?: string;
|
|
31
46
|
/** Override the npm binary (default: "npm"). */
|
|
32
47
|
npmBin?: string;
|
|
@@ -34,6 +49,8 @@ export interface BrowserEngineInstallerOptions {
|
|
|
34
49
|
timeoutMs?: number;
|
|
35
50
|
/** Test seam — inject a spawner to avoid hitting real processes. */
|
|
36
51
|
spawner?: Spawner;
|
|
52
|
+
/** Test seam — inject a platform probe for cross-OS diagnostic tests. */
|
|
53
|
+
platformProbe?: PlatformProbe;
|
|
37
54
|
}
|
|
38
55
|
export type BrowserEngineInstallStatus = 'already-installed' | 'installed' | 'skipped' | 'install-failed' | 'npm-unavailable';
|
|
39
56
|
export interface BrowserEngineInstallResult {
|
|
@@ -41,7 +58,49 @@ export interface BrowserEngineInstallResult {
|
|
|
41
58
|
version?: string;
|
|
42
59
|
message?: string;
|
|
43
60
|
packageSpec: string;
|
|
61
|
+
/**
|
|
62
|
+
* Platform diagnostic emitted after a successful install. Present when
|
|
63
|
+
* the current host is one where Vibium's first-run Chrome auto-download
|
|
64
|
+
* is known to fail (e.g. Linux aarch64 at v26.3.x) and we were able to
|
|
65
|
+
* point at a system browser, or couldn't and are saying so explicitly.
|
|
66
|
+
*/
|
|
67
|
+
platformHint?: PlatformHint;
|
|
68
|
+
}
|
|
69
|
+
export interface PlatformHint {
|
|
70
|
+
/**
|
|
71
|
+
* Short machine-readable tag for the condition being reported. Consumers
|
|
72
|
+
* can assert on this in tests or suppress the hint in known-good envs.
|
|
73
|
+
*/
|
|
74
|
+
code: 'linux-arm64-system-chromium-found' | 'linux-arm64-no-system-chromium';
|
|
75
|
+
/** Single-line human message suitable for `console.warn`. */
|
|
76
|
+
message: string;
|
|
77
|
+
/**
|
|
78
|
+
* Optional filesystem path to a system browser binary the user can point
|
|
79
|
+
* Vibium at via `VIBIUM_BROWSER_PATH`.
|
|
80
|
+
*/
|
|
81
|
+
browserPath?: string;
|
|
44
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Injectable seam for `os.platform()` / `os.arch()`. Tests override this
|
|
85
|
+
* to simulate running on a different host.
|
|
86
|
+
*/
|
|
87
|
+
export interface PlatformProbe {
|
|
88
|
+
platform: () => NodeJS.Platform;
|
|
89
|
+
arch: () => string;
|
|
90
|
+
existsSync: (path: string) => boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build a platform hint for hosts where Vibium's first-run Chrome auto-
|
|
94
|
+
* download is known to fail. Today that's just Linux aarch64 at the
|
|
95
|
+
* pinned Vibium version (v26.3.x). Returns `undefined` when no hint
|
|
96
|
+
* applies, so callers can cheaply check for presence.
|
|
97
|
+
*
|
|
98
|
+
* Intentionally conservative: we don't mutate the user's env or create
|
|
99
|
+
* symlinks — we surface a diagnostic with an exact `VIBIUM_BROWSER_PATH`
|
|
100
|
+
* export the user can add. Silent modifications to system state are out
|
|
101
|
+
* of scope for an installer that runs during `aqe init`.
|
|
102
|
+
*/
|
|
103
|
+
export declare function diagnosePlatform(probe?: PlatformProbe): PlatformHint | undefined;
|
|
45
104
|
/**
|
|
46
105
|
* Detect whether `vibium` is already on PATH. Returns the version string
|
|
47
106
|
* on success, `null` otherwise. Uses a short timeout because we don't want
|
|
@@ -13,7 +13,74 @@
|
|
|
13
13
|
* - No new runtime deps: shells out to `npm install -g vibium` via child_process.
|
|
14
14
|
*/
|
|
15
15
|
import { spawnSync as realSpawnSync } from 'node:child_process';
|
|
16
|
+
import * as os from 'node:os';
|
|
17
|
+
import * as fs from 'node:fs';
|
|
16
18
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
19
|
+
/**
|
|
20
|
+
* Default Vibium npm spec. Major-line pin via caret (`^26.3.18`) — npm
|
|
21
|
+
* semver will accept any 26.x.y >= 26.3.18 but reject 27.0.0+. The intent
|
|
22
|
+
* is to auto-receive security patches and additive minor features while
|
|
23
|
+
* blocking breaking-change major bumps, which is where Vibium's CLI
|
|
24
|
+
* contract (`go`, `--headless`, `viewport`, exit codes) can change.
|
|
25
|
+
*
|
|
26
|
+
* This is NOT a minor-line pin. If a future Vibium 26.y release changes
|
|
27
|
+
* the primitives' expectations, the CI smoke gate (scripts/smoke-test.sh)
|
|
28
|
+
* is the belt-and-suspenders check.
|
|
29
|
+
*
|
|
30
|
+
* Bump procedure: update this constant (e.g. to ^27.0.0 at a major), run
|
|
31
|
+
* scripts/smoke-test.sh against the new version, then land the bump.
|
|
32
|
+
*/
|
|
33
|
+
export const DEFAULT_VIBIUM_SPEC = 'vibium@^26.3.18';
|
|
34
|
+
const defaultPlatformProbe = {
|
|
35
|
+
platform: () => os.platform(),
|
|
36
|
+
arch: () => os.arch(),
|
|
37
|
+
existsSync: (p) => fs.existsSync(p),
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Candidate paths for a system chromium binary on Linux distributions that
|
|
41
|
+
* package Chromium (Debian, Ubuntu, Fedora, Arch). Order matters: we return
|
|
42
|
+
* the first match, so list the most common locations first.
|
|
43
|
+
*/
|
|
44
|
+
const LINUX_SYSTEM_CHROMIUM_PATHS = [
|
|
45
|
+
'/usr/bin/chromium',
|
|
46
|
+
'/usr/bin/chromium-browser',
|
|
47
|
+
'/usr/bin/google-chrome',
|
|
48
|
+
'/usr/bin/google-chrome-stable',
|
|
49
|
+
'/snap/bin/chromium',
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Build a platform hint for hosts where Vibium's first-run Chrome auto-
|
|
53
|
+
* download is known to fail. Today that's just Linux aarch64 at the
|
|
54
|
+
* pinned Vibium version (v26.3.x). Returns `undefined` when no hint
|
|
55
|
+
* applies, so callers can cheaply check for presence.
|
|
56
|
+
*
|
|
57
|
+
* Intentionally conservative: we don't mutate the user's env or create
|
|
58
|
+
* symlinks — we surface a diagnostic with an exact `VIBIUM_BROWSER_PATH`
|
|
59
|
+
* export the user can add. Silent modifications to system state are out
|
|
60
|
+
* of scope for an installer that runs during `aqe init`.
|
|
61
|
+
*/
|
|
62
|
+
export function diagnosePlatform(probe = defaultPlatformProbe) {
|
|
63
|
+
if (probe.platform() !== 'linux')
|
|
64
|
+
return undefined;
|
|
65
|
+
if (probe.arch() !== 'arm64')
|
|
66
|
+
return undefined;
|
|
67
|
+
const browserPath = LINUX_SYSTEM_CHROMIUM_PATHS.find((p) => probe.existsSync(p));
|
|
68
|
+
if (browserPath) {
|
|
69
|
+
return {
|
|
70
|
+
code: 'linux-arm64-system-chromium-found',
|
|
71
|
+
browserPath,
|
|
72
|
+
message: `Linux aarch64 detected. Vibium v26.3.x does not auto-download Chrome for Testing on ARM64. ` +
|
|
73
|
+
`Found system browser at ${browserPath}. Export VIBIUM_BROWSER_PATH=${browserPath} before running vibium.`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
code: 'linux-arm64-no-system-chromium',
|
|
78
|
+
message: `Linux aarch64 detected. Vibium v26.3.x does not auto-download Chrome for Testing on ARM64, and no system ` +
|
|
79
|
+
`chromium was found on PATH (checked: ${LINUX_SYSTEM_CHROMIUM_PATHS.join(', ')}). ` +
|
|
80
|
+
`Install via \`apt-get install chromium\` (or your distro's equivalent), then export ` +
|
|
81
|
+
`VIBIUM_BROWSER_PATH=/usr/bin/chromium before running vibium.`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
17
84
|
function tryRun(spawner, bin, args, timeoutMs) {
|
|
18
85
|
return spawner(bin, args, {
|
|
19
86
|
encoding: 'utf8',
|
|
@@ -51,17 +118,20 @@ export function detectVibium(spawner = defaultSpawner, timeoutMs = 5_000) {
|
|
|
51
118
|
* assets phase can log/summarize — never throws for expected failures.
|
|
52
119
|
*/
|
|
53
120
|
export function installBrowserEngine(options = {}) {
|
|
54
|
-
const packageSpec = options.packageSpec ||
|
|
121
|
+
const packageSpec = options.packageSpec || DEFAULT_VIBIUM_SPEC;
|
|
55
122
|
if (options.skip) {
|
|
56
123
|
return { status: 'skipped', packageSpec, message: 'install skipped by options' };
|
|
57
124
|
}
|
|
58
125
|
const spawner = options.spawner || defaultSpawner;
|
|
126
|
+
const platformProbe = options.platformProbe || defaultPlatformProbe;
|
|
127
|
+
const platformHint = diagnosePlatform(platformProbe);
|
|
59
128
|
const alreadyInstalled = detectVibium(spawner);
|
|
60
129
|
if (alreadyInstalled) {
|
|
61
130
|
return {
|
|
62
131
|
status: 'already-installed',
|
|
63
132
|
version: alreadyInstalled,
|
|
64
133
|
packageSpec,
|
|
134
|
+
platformHint,
|
|
65
135
|
};
|
|
66
136
|
}
|
|
67
137
|
const npmBin = options.npmBin || 'npm';
|
|
@@ -71,7 +141,7 @@ export function installBrowserEngine(options = {}) {
|
|
|
71
141
|
return {
|
|
72
142
|
status: 'npm-unavailable',
|
|
73
143
|
packageSpec,
|
|
74
|
-
message:
|
|
144
|
+
message: `npm is not available on PATH. Install Node.js + npm, then run \`npm install -g ${packageSpec}\`.`,
|
|
75
145
|
};
|
|
76
146
|
}
|
|
77
147
|
const timeoutMs = options.timeoutMs || 180_000;
|
|
@@ -87,6 +157,6 @@ export function installBrowserEngine(options = {}) {
|
|
|
87
157
|
};
|
|
88
158
|
}
|
|
89
159
|
const version = detectVibium(spawner) || 'unknown';
|
|
90
|
-
return { status: 'installed', version, packageSpec };
|
|
160
|
+
return { status: 'installed', version, packageSpec, platformHint };
|
|
91
161
|
}
|
|
92
162
|
//# sourceMappingURL=browser-engine-installer.js.map
|
|
@@ -8,7 +8,7 @@ import { BasePhase, } from './phase-interface.js';
|
|
|
8
8
|
import { createSkillsInstaller } from '../skills-installer.js';
|
|
9
9
|
import { createAgentsInstaller } from '../agents-installer.js';
|
|
10
10
|
import { createN8nInstaller } from '../n8n-installer.js';
|
|
11
|
-
import { installBrowserEngine } from '../browser-engine-installer.js';
|
|
11
|
+
import { installBrowserEngine, DEFAULT_VIBIUM_SPEC, } from '../browser-engine-installer.js';
|
|
12
12
|
import { initializeOverlays } from '../../routing/qe-agent-registry.js';
|
|
13
13
|
/**
|
|
14
14
|
* Assets phase - installs skills and agents
|
|
@@ -123,6 +123,13 @@ export class AssetsPhase extends BasePhase {
|
|
|
123
123
|
// 'already-installed' handled by the pre-flight branch above
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
+
// ADR-091 GAP-05: surface platform diagnostics when the host is one
|
|
127
|
+
// where Vibium's first-run Chrome auto-download is known to fail.
|
|
128
|
+
// Today that's just Linux aarch64 at v26.3.x; printed for both
|
|
129
|
+
// `installed` and `already-installed` results. Non-fatal.
|
|
130
|
+
if (browserEngine?.platformHint) {
|
|
131
|
+
context.services.warn(` Browser engine platform hint: ${browserEngine.platformHint.message}`);
|
|
132
|
+
}
|
|
126
133
|
}
|
|
127
134
|
catch (error) {
|
|
128
135
|
// M9 (devil's-advocate finding): the previous catch re-emitted the
|
|
@@ -136,7 +143,7 @@ export class AssetsPhase extends BasePhase {
|
|
|
136
143
|
}
|
|
137
144
|
}
|
|
138
145
|
else {
|
|
139
|
-
browserEngine = { status: 'skipped', packageSpec:
|
|
146
|
+
browserEngine = { status: 'skipped', packageSpec: DEFAULT_VIBIUM_SPEC, message: 'minimal mode' };
|
|
140
147
|
}
|
|
141
148
|
// Install n8n platform (optional)
|
|
142
149
|
if (options.withN8n) {
|