agentic-qe 3.10.2 → 3.10.3
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/release/SKILL.md +10 -10
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +55 -0
- package/assets/grammars/tree-sitter-c_sharp.wasm +0 -0
- package/assets/grammars/tree-sitter-java.wasm +0 -0
- package/assets/grammars/tree-sitter-javascript.wasm +0 -0
- package/assets/grammars/tree-sitter-python.wasm +0 -0
- package/assets/grammars/tree-sitter-rust.wasm +0 -0
- package/assets/grammars/tree-sitter-swift.wasm +0 -0
- package/assets/grammars/tree-sitter-tsx.wasm +0 -0
- package/assets/grammars/tree-sitter-typescript.wasm +0 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/agents/claim-verifier/claim-verifier-service.js +4 -2
- package/dist/agents/claim-verifier/verifiers/test-verifier.js +31 -23
- package/dist/agents/devils-advocate/agent.js +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-BHPUKMJ5.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-DHSIPFTH.js → agent-booster-wasm-NGC6LSQP.js} +2 -2
- package/dist/cli/chunks/{agent-handler-FPQVHGGT.js → agent-handler-P2IJE4GK.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-OLOF5ZHV.js → agent-memory-branch-JXRJ5GKQ.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-JQ5WD2HM.js +2 -0
- package/dist/cli/chunks/{audit-ALRYPHGP.js → audit-BMQ3VESB.js} +2 -2
- package/dist/cli/chunks/base-E32WLGY2.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-ZGSUMHDC.js → better-sqlite3-HP4JZS6K.js} +2 -2
- package/dist/cli/chunks/{brain-handler-ROZUHCOT.js → brain-handler-SACNDFSW.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-VK7G4NKJ.js → branch-enumerator-LFOTVUDA.js} +2 -2
- package/dist/cli/chunks/{browser-Q2S75M2F.js → browser-FK7PRF3W.js} +2 -2
- package/dist/cli/chunks/browser-workflow-LNNXXAJG.js +2 -0
- package/dist/cli/chunks/{chunk-UWXH2UQK.js → chunk-2EQVYYBF.js} +2 -2
- package/dist/cli/chunks/{chunk-JF53LRBL.js → chunk-2L73WXA4.js} +2 -2
- package/dist/cli/chunks/{chunk-5HB54RUS.js → chunk-2ULVCLOW.js} +2 -2
- package/dist/cli/chunks/{chunk-UUFOHMUG.js → chunk-3HBWDG62.js} +2 -2
- package/dist/cli/chunks/{chunk-22D6VBPD.js → chunk-3JAOFKEU.js} +2 -2
- package/dist/cli/chunks/{chunk-XPCNUX2U.js → chunk-3LRK7PYN.js} +2 -2
- package/dist/cli/chunks/{chunk-WNR2KAUH.js → chunk-3RZL4QTT.js} +2 -2
- package/dist/cli/chunks/chunk-3VF3HCG4.js +2 -0
- package/dist/cli/chunks/{chunk-3Z4FHA2E.js → chunk-3X2ZQ55B.js} +4 -4
- package/dist/cli/chunks/{chunk-YACT5WFC.js → chunk-4CYLSXA6.js} +2 -2
- package/dist/cli/chunks/{chunk-7QRMARM7.js → chunk-4OUAHZX2.js} +2 -2
- package/dist/cli/chunks/{chunk-G5U6Q42D.js → chunk-4QFAUSWQ.js} +2 -2
- package/dist/cli/chunks/{chunk-SJH3HYNC.js → chunk-5ER3COX3.js} +2 -2
- package/dist/cli/chunks/{chunk-LZCBSFAU.js → chunk-5EWWA4QP.js} +4 -4
- package/dist/cli/chunks/{chunk-VSUTI4G6.js → chunk-5G5AAEFF.js} +2 -2
- package/dist/cli/chunks/{chunk-7V5UHLNY.js → chunk-5IBJURYB.js} +3 -3
- package/dist/cli/chunks/chunk-5LON3MLI.js +2 -0
- package/dist/cli/chunks/{chunk-3RHHKYUR.js → chunk-5SGEOO2F.js} +2 -2
- package/dist/cli/chunks/{chunk-6NZHEM4V.js → chunk-6B4S7PKP.js} +3 -3
- package/dist/cli/chunks/{chunk-MEY43PIQ.js → chunk-6FL3GN4T.js} +2 -2
- package/dist/cli/chunks/{chunk-Y63MBMOV.js → chunk-6GCOIIHY.js} +2 -2
- package/dist/cli/chunks/{chunk-EQBEGDTG.js → chunk-6Q2PPOOF.js} +1 -1
- package/dist/cli/chunks/{chunk-PXTDEO65.js → chunk-6ZK24V2Y.js} +2 -2
- package/dist/cli/chunks/{chunk-7Z46RDDV.js → chunk-72LE6PHL.js} +3 -3
- package/dist/cli/chunks/{chunk-SVYTN2GT.js → chunk-7RMZAVGO.js} +2 -2
- package/dist/cli/chunks/{chunk-S3OZ7XSY.js → chunk-7SEHQTYD.js} +1 -1
- package/dist/cli/chunks/{chunk-UYYBPWU3.js → chunk-7YYTTWGY.js} +1 -1
- package/dist/cli/chunks/{chunk-DRWGK3YO.js → chunk-7ZSPCGTI.js} +2 -2
- package/dist/cli/chunks/{chunk-UVU7XLJY.js → chunk-ADV4DH3W.js} +5 -5
- package/dist/cli/chunks/{chunk-FO43SQXP.js → chunk-AEJVOJPT.js} +2 -2
- package/dist/cli/chunks/{chunk-ETN5563K.js → chunk-B5MMDMH6.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXTO4C7R.js → chunk-BO2OV2RH.js} +2 -2
- package/dist/cli/chunks/{chunk-TJKDATEU.js → chunk-BT3QLWII.js} +2 -2
- package/dist/cli/chunks/{chunk-AV7KYE5P.js → chunk-BWP3UVPE.js} +5 -5
- package/dist/cli/chunks/{chunk-PEK6NGVJ.js → chunk-C6BBRM2J.js} +1 -1
- package/dist/cli/chunks/{chunk-ORF2UKQH.js → chunk-CAMEFWRK.js} +1 -1
- package/dist/cli/chunks/{chunk-EVCOCGVJ.js → chunk-CNEWYJKT.js} +4 -4
- package/dist/cli/chunks/{chunk-MYWQTCS4.js → chunk-CTDO2UB2.js} +1 -1
- package/dist/cli/chunks/{chunk-2OH3ALYB.js → chunk-D2FBUOAR.js} +1 -1
- package/dist/cli/chunks/{chunk-ZDHMZPSL.js → chunk-DF3MJ2YL.js} +1 -1
- package/dist/cli/chunks/{chunk-7SJX4CFK.js → chunk-DY5KEOHX.js} +1 -1
- package/dist/cli/chunks/{chunk-DZZEHPSJ.js → chunk-E2BJT6A7.js} +3 -3
- package/dist/cli/chunks/{chunk-2244IFZA.js → chunk-EETVN2OJ.js} +1 -1
- package/dist/cli/chunks/{chunk-FY3CUPNN.js → chunk-ERYMAYJW.js} +2 -2
- package/dist/cli/chunks/{chunk-ZK2BH23O.js → chunk-FJGSEPFL.js} +2 -2
- package/dist/cli/chunks/{chunk-HJORBNXW.js → chunk-FLTPHVZ3.js} +1 -1
- package/dist/cli/chunks/{chunk-RLXTBL3H.js → chunk-FND6V2RV.js} +22 -22
- package/dist/cli/chunks/{chunk-PIZYRPMT.js → chunk-FU77CDEM.js} +2 -2
- package/dist/cli/chunks/{chunk-HA63NBFK.js → chunk-GELF4ILR.js} +37 -37
- package/dist/cli/chunks/{chunk-U3EUH6LX.js → chunk-GHNNJHH3.js} +2 -2
- package/dist/cli/chunks/{chunk-NZO4WUSO.js → chunk-GJUGSH7T.js} +3 -3
- package/dist/cli/chunks/{chunk-QJ2EHLJ2.js → chunk-GL3HZN3O.js} +1 -1
- package/dist/cli/chunks/{chunk-MMIQ5DMA.js → chunk-H56AROF2.js} +2 -2
- package/dist/cli/chunks/{chunk-AWFIEGR3.js → chunk-HAO3SPOE.js} +2 -2
- package/dist/cli/chunks/{chunk-MNUTRAUV.js → chunk-HM523MTQ.js} +1 -1
- package/dist/cli/chunks/{chunk-IICTTDAA.js → chunk-HMFEPKAR.js} +2 -2
- package/dist/cli/chunks/{chunk-4GTDW2XL.js → chunk-HQJMCTWN.js} +2 -2
- package/dist/cli/chunks/{chunk-5PL7WTCU.js → chunk-HRLXU4LH.js} +2 -2
- package/dist/cli/chunks/{chunk-5WJ3FWL4.js → chunk-HWM2XJ3P.js} +24 -24
- package/dist/cli/chunks/{chunk-BQCSCAUC.js → chunk-I42R57ON.js} +2 -2
- package/dist/cli/chunks/chunk-IL2KOW5W.js +2 -0
- package/dist/cli/chunks/{chunk-QSE67XJO.js → chunk-IRR7YA3Q.js} +2 -2
- package/dist/cli/chunks/{chunk-FPAW77XV.js → chunk-JD2PG4KS.js} +1 -1
- package/dist/cli/chunks/{chunk-LQTWPSYL.js → chunk-JE3C7JYN.js} +1 -1
- package/dist/cli/chunks/{chunk-6KSCXPPL.js → chunk-JLL27IGU.js} +2 -2
- package/dist/cli/chunks/{chunk-7DKYCVJI.js → chunk-JOLDCS6X.js} +2 -2
- package/dist/cli/chunks/{chunk-YNNOY3XN.js → chunk-JP63XACW.js} +2 -2
- package/dist/cli/chunks/{chunk-ZQUXNG5X.js → chunk-JSFYPLMQ.js} +2 -2
- package/dist/cli/chunks/{chunk-MNV3E5KY.js → chunk-JTF6D2RJ.js} +4 -4
- package/dist/cli/chunks/{chunk-OXCEUR5F.js → chunk-JTZ3Q2QS.js} +2 -2
- package/dist/cli/chunks/{chunk-OPFN5LFT.js → chunk-JXIPRMAY.js} +4 -4
- package/dist/cli/chunks/{chunk-XDU624HU.js → chunk-KG5SM36Y.js} +1 -1
- package/dist/cli/chunks/{chunk-SW4OKUTC.js → chunk-KTRB3L53.js} +2 -2
- package/dist/cli/chunks/{chunk-MCZHKXB4.js → chunk-L74CHKFR.js} +2 -2
- package/dist/cli/chunks/{chunk-2EDWGHDA.js → chunk-LZ6TNTGO.js} +2 -2
- package/dist/cli/chunks/{chunk-5PRFFHFV.js → chunk-M5CDW2ZH.js} +2 -2
- package/dist/cli/chunks/{chunk-PYIHZXCI.js → chunk-MBSJ5G4I.js} +4 -4
- package/dist/cli/chunks/{chunk-OIRZJCZY.js → chunk-MC7K44M4.js} +2 -2
- package/dist/cli/chunks/{chunk-2JDLQWSV.js → chunk-MQOFFRTA.js} +2 -2
- package/dist/cli/chunks/{chunk-4BXGVM2C.js → chunk-N7IBYDW5.js} +1 -1
- package/dist/cli/chunks/{chunk-MCOFJHSJ.js → chunk-NEYYLAYS.js} +5 -5
- package/dist/cli/chunks/{chunk-A5RMQG4N.js → chunk-NNVXHC74.js} +3 -3
- package/dist/cli/chunks/{chunk-QBRHKTFT.js → chunk-NNZMEYLT.js} +1 -1
- package/dist/cli/chunks/{chunk-WDMPJ2M2.js → chunk-NRCL3WCP.js} +2 -2
- package/dist/cli/chunks/{chunk-ZGNZJJFF.js → chunk-NXPFGPHV.js} +1 -1
- package/dist/cli/chunks/{chunk-AH7FXNFE.js → chunk-NZHOKLII.js} +3 -3
- package/dist/cli/chunks/{chunk-EA7ZSN3V.js → chunk-OG7CWWFR.js} +1 -1
- package/dist/cli/chunks/{chunk-YWZHMXTO.js → chunk-OPDTDKN3.js} +2 -2
- package/dist/cli/chunks/{chunk-24LUQICS.js → chunk-OX4R55T3.js} +2 -2
- package/dist/cli/chunks/{chunk-QEPFXY6G.js → chunk-PFCAMX6H.js} +1 -1
- package/dist/cli/chunks/{chunk-DMQPO43S.js → chunk-PL5SLO2W.js} +1 -1
- package/dist/cli/chunks/{chunk-XGBAHAGC.js → chunk-PZHZPX3O.js} +4 -4
- package/dist/cli/chunks/{chunk-HJME6G5M.js → chunk-Q7EBD24B.js} +1 -1
- package/dist/cli/chunks/{chunk-4F3ZTXHP.js → chunk-QEODION5.js} +2 -2
- package/dist/cli/chunks/{chunk-AIUSZC6K.js → chunk-QM65UGPV.js} +2 -2
- package/dist/cli/chunks/{chunk-HHCYSAH3.js → chunk-QWG76RHA.js} +2 -2
- package/dist/cli/chunks/{chunk-5QHSLWLP.js → chunk-R5ONQAQL.js} +2 -2
- package/dist/cli/chunks/{chunk-S3ZO7JXS.js → chunk-RNF47IJ5.js} +4 -4
- package/dist/cli/chunks/{chunk-AOI67HA3.js → chunk-RTDHWOAG.js} +1 -1
- package/dist/cli/chunks/{chunk-C2M74HCN.js → chunk-RZCAA2PZ.js} +1 -1
- package/dist/cli/chunks/{chunk-7IVQ6OVR.js → chunk-SL6YZAT4.js} +2 -2
- package/dist/cli/chunks/{chunk-KB5L5TTF.js → chunk-SNTMAVPH.js} +5 -5
- package/dist/cli/chunks/{chunk-XTCUN36Z.js → chunk-SWOG3PBD.js} +2 -2
- package/dist/cli/chunks/{chunk-7IZ2OPC2.js → chunk-T63EK6GH.js} +2 -2
- package/dist/cli/chunks/chunk-U6UK3UMX.js +59 -0
- package/dist/cli/chunks/{chunk-7SWD3D6Y.js → chunk-U7NMPZE2.js} +2 -2
- package/dist/cli/chunks/{chunk-THRTUW4Z.js → chunk-UDV4YB42.js} +1 -1
- package/dist/cli/chunks/{chunk-CV2SBMBW.js → chunk-UHDBM7QS.js} +2 -2
- package/dist/cli/chunks/{chunk-CIRPP7RQ.js → chunk-UIJFU4KD.js} +2 -2
- package/dist/cli/chunks/{chunk-L7VIX22Y.js → chunk-USFZ4IJD.js} +2 -2
- package/dist/cli/chunks/{chunk-CMACGG4Z.js → chunk-UZL366ZI.js} +1 -1
- package/dist/cli/chunks/{chunk-QQNCSEZG.js → chunk-VDTFRMES.js} +2 -2
- package/dist/cli/chunks/{chunk-6ZFHIKQG.js → chunk-VIWIO27R.js} +3 -3
- package/dist/cli/chunks/{chunk-YI6GNRQM.js → chunk-VRXY4T22.js} +2 -2
- package/dist/cli/chunks/{chunk-WSVUSIAZ.js → chunk-WPVCSFDA.js} +2 -2
- package/dist/cli/chunks/{chunk-X2VAOIUY.js → chunk-WWD5IWTV.js} +1 -1
- package/dist/cli/chunks/{chunk-WZJUMJ2S.js → chunk-X2B7SANM.js} +1 -1
- package/dist/cli/chunks/{chunk-R2O6OKT2.js → chunk-X3RJ6SFC.js} +1 -1
- package/dist/cli/chunks/{chunk-OWQ6HEYI.js → chunk-XTP2GHI7.js} +2 -2
- package/dist/cli/chunks/{chunk-XRJECWZE.js → chunk-YDDZJCKY.js} +1 -1
- package/dist/cli/chunks/{chunk-HO37VP4O.js → chunk-YDKYLNKZ.js} +1 -1
- package/dist/cli/chunks/{chunk-ON4D4TJ4.js → chunk-YIYV2JB6.js} +2 -2
- package/dist/cli/chunks/{chunk-RNREAOY4.js → chunk-YX2HY4MX.js} +2 -2
- package/dist/cli/chunks/{chunk-XDSA7YUQ.js → chunk-YXH2CVAF.js} +1 -1
- package/dist/cli/chunks/{chunk-XMJTTF5N.js → chunk-YYAPO3CU.js} +3 -3
- package/dist/cli/chunks/{chunk-STEGWLH5.js → chunk-Z2K5IZM6.js} +2 -2
- package/dist/cli/chunks/{chunk-OIEQF7PG.js → chunk-ZG4P3DTL.js} +2 -2
- package/dist/cli/chunks/{chunk-CTDLI2ON.js → chunk-ZXQNE4QV.js} +1 -1
- package/dist/cli/chunks/{ci-PYCRCL7G.js → ci-AWZ3S5OT.js} +6 -6
- package/dist/cli/chunks/{ci-output-EKQQFE2D.js → ci-output-JLCYTIMT.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-RH3Q2MJO.js → circuit-breaker-BJDKBDIL.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-DUDXB4VV.js → claude-flow-setup-KKOP5ZMO.js} +2 -2
- package/dist/cli/chunks/client-2UKBYFX4.js +2 -0
- package/dist/cli/chunks/{cline-installer-3Q4WIWUG.js → cline-installer-7M525SEA.js} +2 -2
- package/dist/cli/chunks/{code-E4Q6DGOO.js → code-27SUVJDO.js} +20 -19
- package/dist/cli/chunks/{code-index-extractor-2PCISUOW.js → code-index-extractor-TTQQZLAK.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YNNNOLJ6.js → codex-installer-GHNGNPKP.js} +2 -2
- package/dist/cli/chunks/{completions-2F7TUFBD.js → completions-JPJD24DG.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-2B6MHO7W.js → complexity-analyzer-Q74EJV33.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-ENOKRU5M.js → continuedev-installer-ULTRDIML.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-6YD2KM5F.js → copilot-installer-EK52X4CG.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-FCH4QOEA.js → cost-tracker-2GKBRYXL.js} +2 -2
- package/dist/cli/chunks/{coverage-JTOXZE3T.js → coverage-YCLC3W2A.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-FPM3L27L.js +2 -0
- package/dist/cli/chunks/{cursor-installer-QZFBUGLQ.js → cursor-installer-B3ALFW5E.js} +2 -2
- package/dist/cli/chunks/{daemon-M422U3ZA.js → daemon-YWINEHG4.js} +4 -4
- package/dist/cli/chunks/{daemon-K4QFB5FQ.js → daemon-ZKEBVLJA.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-BXAAW33V.js → dag-attention-scheduler-OQPJ6ULA.js} +2 -2
- package/dist/cli/chunks/{detect-UGSWIOAD.js → detect-YMYIQH3Q.js} +2 -2
- package/dist/cli/chunks/{dist-node-FN3HX3OK.js → dist-node-R4FAYQRY.js} +2 -2
- package/dist/cli/chunks/{domain-handler-7PP7VYA7.js → domain-handler-IGWXLF2S.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-XZM44W7I.js → domain-transfer-A7YNO76C.js} +2 -2
- package/dist/cli/chunks/dream-XM33US3V.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-JZVERJ5L.js → embed-and-insert-pattern-KODZAS7Y.js} +2 -2
- package/dist/cli/chunks/{eval-466NFF2D.js → eval-ALQW7Q2S.js} +3 -3
- package/dist/cli/chunks/{experience-capture-middleware-I7IQCC7V.js → experience-capture-middleware-3WK4RXWK.js} +3 -3
- package/dist/cli/chunks/{fast-paths-34OICNZA.js → fast-paths-PQWDFIJZ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-X5WBBWSO.js → feature-flags-6X33B3WX.js} +2 -2
- package/dist/cli/chunks/{feature-flags-6UBIVTAD.js → feature-flags-JRUAZCND.js} +2 -2
- package/dist/cli/chunks/{file-discovery-NLMDBWXX.js → file-discovery-SA3YU3IH.js} +2 -2
- package/dist/cli/chunks/{fleet-W7CYCHDI.js → fleet-7TXCAOKQ.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-K4VTAG5X.js → gnn-wrapper-ZKNYACEC.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZGKF2Z6T.js → heartbeat-handler-KRZRZ23F.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-GM3M2MTG.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-K62GEHIL.js +2 -0
- package/dist/cli/chunks/hnsw-index-VCAK3TWN.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-ELDRLKK5.js → hnsw-legacy-bridge-LVHQ5SG7.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-5BT5FO64.js → hnswlib-node-64EGGWIC.js} +2 -2
- package/dist/cli/chunks/{hooks-T4CBINAV.js → hooks-6Y3UHYI2.js} +12 -12
- package/dist/cli/chunks/hybrid-router-432QNCNG.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-UWFW3XP5.js → hypergraph-engine-2EZBZMFK.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-PK2BI46K.js → hypergraph-handler-GLPWYII2.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-VTSISNN4.js +2 -0
- package/dist/cli/chunks/{init-handler-HNG6KJOU.js → init-handler-ZSDO5VMA.js} +6 -6
- package/dist/cli/chunks/init-wizard-COB5AH7Q.js +2 -0
- package/dist/cli/chunks/kernel-ROK7X5FM.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-25V7FEJ4.js → kilocode-installer-ATYSDWIV.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-7RMTTCQB.js → kiro-installer-K66YT6PC.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-YUWIDIWW.js +2 -0
- package/dist/cli/chunks/{learning-XQC2MG2R.js → learning-BVYCC4RI.js} +3 -3
- package/dist/cli/chunks/{llm-router-6KTTONH4.js → llm-router-VBCXE6DN.js} +12 -12
- package/dist/cli/chunks/llm-router-service-7VLXJ7VE.js +2 -0
- package/dist/cli/chunks/{load-BV64P3AL.js → load-AREDQE2U.js} +2 -2
- package/dist/cli/chunks/load-test-32524DL3.js +2 -0
- package/dist/cli/chunks/{mcp-U5ZN77TA.js → mcp-NG6H6UC5.js} +2 -2
- package/dist/cli/chunks/{memory-WB5BNBK7.js → memory-Y65EHG6N.js} +5 -5
- package/dist/cli/chunks/memory-backend-BI2V5AAB.js +2 -0
- package/dist/cli/chunks/memory-handlers-NSOFWVFN.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-3X3W3UTY.js → multi-model-executor-VRPRFUZT.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-TTTMG7ZZ.js → opencode-installer-CKQXPM5R.js} +3 -3
- package/dist/cli/chunks/{orchestrator-BLCGSHMZ.js → orchestrator-I7JBKD6G.js} +8 -8
- package/dist/cli/chunks/{pipeline-DZPGMRG7.js → pipeline-MV2RWCBI.js} +2 -2
- package/dist/cli/chunks/{platform-EVMZAUNV.js → platform-VU5P3SOG.js} +2 -2
- package/dist/cli/chunks/{plugin-OR55K4HT.js → plugin-6TERLKCB.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-4ODV27HD.js → prime-radiant-advanced-wasm-WIUIN2DL.js} +2 -2
- package/dist/cli/chunks/protocol-executor-2UPB7SPI.js +2 -0
- package/dist/cli/chunks/{protocol-handler-ZOTI5PID.js → protocol-handler-HKWBGARO.js} +2 -2
- package/dist/cli/chunks/{prove-DIMBYJ7V.js → prove-7CQPHBRJ.js} +2 -2
- package/dist/cli/chunks/provider-manager-PDT37MIJ.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-AQQ2BI4V.js +2 -0
- package/dist/cli/chunks/{quality-7MX4VL6M.js → quality-VLUVXKVG.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-6DVDVEU4.js +2 -0
- package/dist/cli/chunks/{real-embeddings-YPUHWRN2.js → real-embeddings-JPZ64KK2.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-WG5AU4QM.js → roocode-installer-NONVB3UE.js} +2 -2
- package/dist/cli/chunks/router-O2G4KQ6L.js +2 -0
- package/dist/cli/chunks/routing-feedback-TAGTD3KQ.js +2 -0
- package/dist/cli/chunks/{routing-handler-LZB4MN2K.js → routing-handler-YYXDT4J2.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-YE4ADBMC.js → ruvector-commands-5PFMNDLR.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-QS5ATW4C.js → rvf-dual-writer-TF6H7AXH.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-YIGKSBD3.js → rvf-migration-adapter-VNGIUZCO.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-2NDCWP7F.js → rvf-migration-coordinator-VA52YAIY.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-46GRWQJR.js +2 -0
- package/dist/cli/chunks/safe-db-LNIPXXHH.js +2 -0
- package/dist/cli/chunks/schedule-AUH3ZALY.js +2 -0
- package/dist/cli/chunks/scheduler-KK3OYPWW.js +2 -0
- package/dist/cli/chunks/{security-HT4SUT24.js → security-62HEETBF.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-4IZOJL33.js → shared-rvf-adapter-XWTQPGCT.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-ZKFO7CBY.js → shared-rvf-dual-writer-JTZK7LRD.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-CYESP7NG.js +2 -0
- package/dist/cli/chunks/{status-handler-AMEMKBI4.js → status-handler-LSUPUKRF.js} +2 -2
- package/dist/cli/chunks/{structural-health-RBADRLC3.js → structural-health-Z75A666N.js} +2 -2
- package/dist/cli/chunks/{sync-PCB23M4K.js → sync-M3O4T3A3.js} +2 -2
- package/dist/cli/chunks/{sync-ARDDLQBS.js → sync-VI37UHHH.js} +2 -2
- package/dist/cli/chunks/{task-handler-J26FSCH5.js → task-handler-AQBSZAQC.js} +2 -2
- package/dist/cli/chunks/{task-handlers-AQRLR6BL.js → task-handlers-BOZP247V.js} +3 -3
- package/dist/cli/chunks/{test-YXWSIOSB.js → test-FTEGPNN2.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-XY532GI4.js → test-scheduling-IGR4U2VQ.js} +4 -4
- package/dist/cli/chunks/{token-bootstrap-KL2QIQ36.js → token-bootstrap-2DFRVMBM.js} +2 -2
- package/dist/cli/chunks/{token-usage-2MJVE4DT.js → token-usage-VCHV47EO.js} +3 -3
- package/dist/cli/chunks/{transformers-QSNTOD2Z.js → transformers-M27QSNFH.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-IIGEJYFU.js +2 -0
- package/dist/cli/chunks/{types-RNKRSYMO.js → types-RQFPUUKA.js} +2 -2
- package/dist/cli/chunks/unified-memory-RISHEANP.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-2IKXGMNZ.js +2 -0
- package/dist/cli/chunks/unified-persistence-ZTTUJNTU.js +2 -0
- package/dist/cli/chunks/{upgrade-EKJHIFWP.js → upgrade-VJMYX3AL.js} +2 -2
- package/dist/cli/chunks/{validate-KS4T7LWC.js → validate-ML7HUAU5.js} +4 -4
- package/dist/cli/chunks/{validate-swarm-SKKWRP2H.js → validate-swarm-RCR6EYRC.js} +7 -7
- package/dist/cli/chunks/{vibium-FLUQO4IF.js → vibium-ZOOS3W5L.js} +2 -2
- package/dist/cli/chunks/visual-security-D66DTAO5.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-UMC63DWD.js → web-tree-sitter-2YPGYLWK.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-V3FQGJIQ.js → windsurf-installer-GOJWUWC5.js} +2 -2
- package/dist/cli/chunks/{witness-chain-GE74TLSO.js → witness-chain-3MGSS3Q4.js} +2 -2
- package/dist/cli/chunks/witness-chain-RHWHHDLV.js +2 -0
- package/dist/cli/chunks/{workflow-4YZ2RPWA.js → workflow-B5Q77BI4.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-OQMFW2TC.js +2 -0
- package/dist/cli/chunks/{wrappers-37NLMKPE.js → wrappers-MM5VLEPG.js} +2 -2
- package/dist/cli/commands/code.js +6 -0
- package/dist/cli/commands/learning.js +5 -5
- package/dist/cli/commands/llm-router.js +1 -1
- package/dist/cli/commands/workflow.js +1 -0
- package/dist/coordination/consensus/providers/native-learning-provider.d.ts +1 -1
- package/dist/coordination/consensus/providers/ollama-provider.d.ts +1 -1
- package/dist/coordination/consensus/providers/openrouter-provider.d.ts +1 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +6 -0
- package/dist/coordination/mincut/neural-goap.js +24 -20
- package/dist/coordination/protocols/code-intelligence-index.js +31 -25
- package/dist/coordination/queen-coordinator.js +4 -0
- package/dist/coordination/queen-work-stealing.js +1 -2
- package/dist/domains/chaos-resilience/coordinator.js +19 -15
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +5 -2
- package/dist/domains/chaos-resilience/services/load-tester.js +15 -11
- package/dist/domains/code-intelligence/interfaces.d.ts +5 -0
- package/dist/domains/code-intelligence/services/c4-model/index.js +12 -6
- package/dist/domains/code-intelligence/services/impact-analyzer.js +6 -2
- package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +42 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.js +278 -93
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +8 -2
- package/dist/domains/contract-testing/coordinator.js +1 -1
- package/dist/domains/coverage-analysis/coordinator.js +4 -2
- package/dist/domains/learning-optimization/coordinator.js +1 -0
- package/dist/domains/quality-assessment/coherence/gate-controller.js +32 -26
- package/dist/domains/requirements-validation/coordinator.js +1 -0
- package/dist/domains/test-execution/services/e2e/wait-condition-handler.js +1 -1
- package/dist/domains/test-execution/services/retry-handler.js +18 -12
- package/dist/domains/test-generation/coordinator.js +1 -1
- package/dist/domains/test-generation/services/pattern-matcher.js +7 -5
- package/dist/domains/test-generation/services/test-generator.js +3 -2
- package/dist/domains/visual-accessibility/coordinator.js +24 -20
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/init/phases/12-verification.js +3 -3
- package/dist/integrations/agentic-flow/model-router/router.js +1 -1
- package/dist/integrations/embeddings/base/EmbeddingGenerator.js +11 -7
- package/dist/integrations/ruvector/hypergraph-engine.js +2 -2
- package/dist/integrations/ruvector/spectral-math.js +2 -2
- package/dist/integrations/ruvector/spectral-sparsifier.js +1 -1
- package/dist/kernel/kernel.js +1 -1
- package/dist/kernel/unified-memory-hnsw.js +1 -0
- package/dist/learning/experience-capture.js +1 -1
- package/dist/learning/qe-reasoning-bank.js +9 -1
- package/dist/learning/qe-unified-memory.js +8 -6
- package/dist/mcp/bundle.js +354 -354
- package/dist/mcp/handlers/core-handlers.js +2 -2
- package/dist/mcp/handlers/cross-phase-handlers.js +5 -3
- package/dist/mcp/handlers/handler-factory.d.ts +5 -0
- package/dist/mcp/handlers/handler-factory.js +44 -4
- package/dist/mcp/http-server.js +1 -0
- package/dist/mcp/protocol-server.js +2 -2
- package/dist/mcp/tools/code-intelligence/analyze.js +1 -1
- package/dist/mcp/tools/learning-optimization/optimize.js +1 -1
- package/dist/mcp/tools/qx-analysis/heuristics-engine.js +195 -173
- package/dist/mcp/tools/visual-accessibility/index.js +1 -1
- package/dist/mcp/transport/websocket/websocket-transport.js +1 -0
- package/dist/optimization/auto-tuner.js +1 -1
- package/dist/planning/goap-planner.js +1 -0
- package/dist/routing/agent-dependency-graph.js +4 -1
- package/dist/shared/llm/router/config-store.js +1 -1
- package/dist/shared/metrics/system-metrics.js +6 -4
- package/dist/shared/parsers/tree-sitter-wasm-parser.d.ts +12 -0
- package/dist/shared/parsers/tree-sitter-wasm-parser.js +35 -0
- package/dist/shared/parsers/treesitter-ts-extractor.d.ts +39 -0
- package/dist/shared/parsers/treesitter-ts-extractor.js +196 -0
- package/dist/shared/utils/safe-expression-evaluator.js +8 -5
- package/dist/sync/cloud/postgres-writer.js +2 -0
- package/dist/sync/readers/json-reader.js +1 -1
- package/dist/test-scheduling/git-aware/test-selector.js +1 -1
- package/dist/workers/quality-daemon/index.js +26 -24
- package/package.json +5 -4
- package/dist/cli/chunks/adapter-CR6J5C76.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-2MNTHMB6.js +0 -2
- package/dist/cli/chunks/base-AOQNGMTL.js +0 -2
- package/dist/cli/chunks/browser-workflow-UJ4A2ZXO.js +0 -2
- package/dist/cli/chunks/chunk-FO73PZVU.js +0 -2
- package/dist/cli/chunks/chunk-I677W5BT.js +0 -59
- package/dist/cli/chunks/chunk-IAZEDWRX.js +0 -2
- package/dist/cli/chunks/client-RDPWGOSA.js +0 -2
- package/dist/cli/chunks/cross-domain-router-4K5ZVZEZ.js +0 -2
- package/dist/cli/chunks/dream-RPNWM7VS.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-JBCXMMZO.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-3SC2HZIG.js +0 -2
- package/dist/cli/chunks/hnsw-index-FQORAR6K.js +0 -2
- package/dist/cli/chunks/hybrid-router-6CBFDXPR.js +0 -2
- package/dist/cli/chunks/impact-analyzer-SOEFVZWG.js +0 -2
- package/dist/cli/chunks/init-wizard-3E4IU5M4.js +0 -2
- package/dist/cli/chunks/kernel-GFZP4G5J.js +0 -2
- package/dist/cli/chunks/knowledge-graph-BKRKBU26.js +0 -2
- package/dist/cli/chunks/llm-router-service-KE4IGZPP.js +0 -2
- package/dist/cli/chunks/load-test-VSYJV2AO.js +0 -2
- package/dist/cli/chunks/memory-backend-B72RGHRF.js +0 -2
- package/dist/cli/chunks/memory-handlers-NWCH7AUO.js +0 -2
- package/dist/cli/chunks/protocol-executor-V3F37FPO.js +0 -2
- package/dist/cli/chunks/provider-manager-2PN72TT6.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-P665QNIR.js +0 -2
- package/dist/cli/chunks/queen-coordinator-XD4F7BGB.js +0 -2
- package/dist/cli/chunks/router-4SSNWDJC.js +0 -2
- package/dist/cli/chunks/routing-feedback-O2JSIBW6.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-WIUHYXRB.js +0 -2
- package/dist/cli/chunks/safe-db-WL5Y7ZNS.js +0 -2
- package/dist/cli/chunks/schedule-U7QDGU5A.js +0 -2
- package/dist/cli/chunks/scheduler-LXKGQYXA.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-4KFO3SEB.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-QJOKHOIW.js +0 -2
- package/dist/cli/chunks/unified-memory-7AS4LIEF.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-GREESNJX.js +0 -2
- package/dist/cli/chunks/unified-persistence-BPJOMZOA.js +0 -2
- package/dist/cli/chunks/visual-security-BW662FHQ.js +0 -2
- package/dist/cli/chunks/witness-chain-OXVDLNVT.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-KKNR46XV.js +0 -2
|
@@ -463,8 +463,8 @@ export async function handleAQEHealth() {
|
|
|
463
463
|
? Date.now() - state.initTime.getTime()
|
|
464
464
|
: 0;
|
|
465
465
|
// Collect memory stats
|
|
466
|
-
|
|
467
|
-
|
|
466
|
+
const memoryStats = { connected: false, totalEntries: 0, namespaces: 0 };
|
|
467
|
+
const hnswStats = { enabled: false, vectorCount: 0 };
|
|
468
468
|
let patternCount = 0;
|
|
469
469
|
if (isInit && state.kernel) {
|
|
470
470
|
const mem = state.kernel.memory;
|
|
@@ -82,9 +82,11 @@ export async function handleCrossPhaseQuery(params) {
|
|
|
82
82
|
signals = await memory.queryRiskSignals();
|
|
83
83
|
break;
|
|
84
84
|
case 'tactical':
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
{
|
|
86
|
+
const featureFilter = params.filter?.featureContext;
|
|
87
|
+
signals = await memory.querySFDIPOTSignals(featureFilter);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
88
90
|
case 'operational':
|
|
89
91
|
signals = await memory.queryTestHealthSignals();
|
|
90
92
|
break;
|
|
@@ -135,6 +135,11 @@ export declare function detectAntiPatterns(sourceCode: string, language: string)
|
|
|
135
135
|
severity: string;
|
|
136
136
|
suggestion: string;
|
|
137
137
|
}>;
|
|
138
|
+
/**
|
|
139
|
+
* Race a promise against a timeout, resolving to `fallback` if it doesn't settle
|
|
140
|
+
* in time. The underlying promise is left to settle in the background.
|
|
141
|
+
*/
|
|
142
|
+
export declare function withTimeout<T>(promise: Promise<T>, ms: number, fallback: T): Promise<T>;
|
|
138
143
|
/**
|
|
139
144
|
* Get or create the task executor
|
|
140
145
|
*/
|
|
@@ -336,6 +336,40 @@ let taskExecutor = null;
|
|
|
336
336
|
let _feedbackLoopPromise = null;
|
|
337
337
|
// Cached learning engine for pattern search (declared here for use in resetTaskExecutor)
|
|
338
338
|
let cachedLearningEngine = null;
|
|
339
|
+
/**
|
|
340
|
+
* Advisory-routing budget. Pattern search + model routing are optional hints, so
|
|
341
|
+
* they must never block a tool call. If they exceed this budget (e.g. a slow or
|
|
342
|
+
* stuck learning-engine init), we abandon the hint and proceed with default
|
|
343
|
+
* routing. Defense-in-depth after the QEReasoningBank init recursion that hung
|
|
344
|
+
* every MCP domain tool — a future async stall here can no longer block tools.
|
|
345
|
+
*/
|
|
346
|
+
const ROUTE_ADVISORY_TIMEOUT_MS = Number(process.env.AQE_ROUTE_TIMEOUT_MS) || 5000;
|
|
347
|
+
/**
|
|
348
|
+
* Race a promise against a timeout, resolving to `fallback` if it doesn't settle
|
|
349
|
+
* in time. The underlying promise is left to settle in the background.
|
|
350
|
+
*/
|
|
351
|
+
export function withTimeout(promise, ms, fallback) {
|
|
352
|
+
return new Promise((resolve) => {
|
|
353
|
+
let settled = false;
|
|
354
|
+
const timer = setTimeout(() => {
|
|
355
|
+
if (!settled) {
|
|
356
|
+
settled = true;
|
|
357
|
+
resolve(fallback);
|
|
358
|
+
}
|
|
359
|
+
}, ms);
|
|
360
|
+
if (typeof timer.unref === 'function')
|
|
361
|
+
timer.unref();
|
|
362
|
+
promise.then((v) => { if (!settled) {
|
|
363
|
+
settled = true;
|
|
364
|
+
clearTimeout(timer);
|
|
365
|
+
resolve(v);
|
|
366
|
+
} }, () => { if (!settled) {
|
|
367
|
+
settled = true;
|
|
368
|
+
clearTimeout(timer);
|
|
369
|
+
resolve(fallback);
|
|
370
|
+
} });
|
|
371
|
+
});
|
|
372
|
+
}
|
|
339
373
|
/**
|
|
340
374
|
* Get or create the task executor
|
|
341
375
|
*/
|
|
@@ -389,11 +423,14 @@ async function getLearningEngine() {
|
|
|
389
423
|
}
|
|
390
424
|
const { createAQELearningEngine } = await import('../../learning/aqe-learning-engine.js');
|
|
391
425
|
const memory = kernel.memory;
|
|
392
|
-
|
|
426
|
+
const engine = createAQELearningEngine(memory, {
|
|
393
427
|
projectRoot: process.cwd(),
|
|
394
428
|
enableClaudeFlow: false, // Don't need Claude Flow for pattern search
|
|
395
429
|
});
|
|
396
|
-
|
|
430
|
+
// Cache only AFTER a successful init so a failed/slow init doesn't leave a
|
|
431
|
+
// half-initialized engine to be served on the next call.
|
|
432
|
+
await engine.initialize();
|
|
433
|
+
cachedLearningEngine = engine;
|
|
397
434
|
return cachedLearningEngine;
|
|
398
435
|
}
|
|
399
436
|
catch (error) {
|
|
@@ -557,10 +594,13 @@ export function createDomainHandler(config) {
|
|
|
557
594
|
const { queen } = getFleetState();
|
|
558
595
|
let routingResult = null;
|
|
559
596
|
try {
|
|
560
|
-
// Step 2: Route task to optimal model tier (ADR-051)
|
|
597
|
+
// Step 2: Route task to optimal model tier (ADR-051).
|
|
598
|
+
// Bounded by ROUTE_ADVISORY_TIMEOUT_MS — routing is an advisory hint and
|
|
599
|
+
// must never block the tool; on timeout we proceed with null routing
|
|
600
|
+
// (mapToPayload handles a null routingResult).
|
|
561
601
|
const taskDescription = buildTaskDescription(params);
|
|
562
602
|
const codeContext = includeCodeContext?.(params);
|
|
563
|
-
routingResult = await routeDomainTask(taskDescription, domain, codeContext);
|
|
603
|
+
routingResult = await withTimeout(routeDomainTask(taskDescription, domain, codeContext), ROUTE_ADVISORY_TIMEOUT_MS, null);
|
|
564
604
|
// Step 3: Build payload and submit task
|
|
565
605
|
const payload = mapToPayload(params, routingResult);
|
|
566
606
|
const timeout = calculateTimeout?.(params) ?? defaultTimeout;
|
package/dist/mcp/http-server.js
CHANGED
|
@@ -715,6 +715,7 @@ class HTTPServerImpl {
|
|
|
715
715
|
// Non-fatal, discovery will return empty results
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
|
+
// eslint-disable-next-line no-async-promise-executor -- inner awaits are caught; server.on("error", reject) handles startup failures
|
|
718
719
|
return new Promise(async (resolve, reject) => {
|
|
719
720
|
this.server = createServer((req, res) => {
|
|
720
721
|
this.handleHttpRequest(req, res).catch((error) => {
|
|
@@ -1387,7 +1387,7 @@ export class MCPProtocolServer {
|
|
|
1387
1387
|
try {
|
|
1388
1388
|
unlinkSync(transcriptPath);
|
|
1389
1389
|
}
|
|
1390
|
-
catch { }
|
|
1390
|
+
catch { /* best-effort cleanup */ }
|
|
1391
1391
|
const lines = result.split('\n');
|
|
1392
1392
|
let jsonStr = '';
|
|
1393
1393
|
let depth = 0;
|
|
@@ -1410,7 +1410,7 @@ export class MCPProtocolServer {
|
|
|
1410
1410
|
try {
|
|
1411
1411
|
unlinkSync(transcriptPath);
|
|
1412
1412
|
}
|
|
1413
|
-
catch { }
|
|
1413
|
+
catch { /* best-effort cleanup */ }
|
|
1414
1414
|
return { error: err.message?.slice(0, 300) ?? 'Unknown error' };
|
|
1415
1415
|
}
|
|
1416
1416
|
},
|
|
@@ -73,7 +73,7 @@ export class CodeAnalyzeTool extends MCPToolBase {
|
|
|
73
73
|
if (this.isAborted(context)) {
|
|
74
74
|
return { success: false, error: 'Operation aborted' };
|
|
75
75
|
}
|
|
76
|
-
|
|
76
|
+
const result = { action };
|
|
77
77
|
switch (action) {
|
|
78
78
|
case 'index':
|
|
79
79
|
result.indexResult = await this.executeIndex(paths, incremental, context);
|
|
@@ -55,7 +55,7 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
55
55
|
if (this.isAborted(context)) {
|
|
56
56
|
return { success: false, error: 'Operation aborted' };
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
const result = { action };
|
|
59
59
|
switch (action) {
|
|
60
60
|
case 'learn':
|
|
61
61
|
result.learnResult = await this.executeLearn(domain, experienceIds, context);
|
|
@@ -51,140 +51,150 @@ export class QXHeuristicsEngine {
|
|
|
51
51
|
}
|
|
52
52
|
break;
|
|
53
53
|
case QXHeuristic.INTUITIVE_DESIGN:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
{
|
|
55
|
+
const hasNav = context.domMetrics?.semanticStructure?.hasNav;
|
|
56
|
+
const focusable = context.accessibility?.focusableElementsCount || 0;
|
|
57
|
+
if (hasNav && focusable > 10) {
|
|
58
|
+
score = 82;
|
|
59
|
+
findings.push('Intuitive navigation and interaction design');
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
score = 55;
|
|
63
|
+
issues.push({ description: 'Navigation or interaction patterns unclear', severity: 'medium' });
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
59
66
|
}
|
|
60
|
-
else {
|
|
61
|
-
score = 55;
|
|
62
|
-
issues.push({ description: 'Navigation or interaction patterns unclear', severity: 'medium' });
|
|
63
|
-
}
|
|
64
|
-
break;
|
|
65
67
|
case QXHeuristic.EXACTNESS_AND_CLARITY:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
68
|
+
{
|
|
69
|
+
score = 70;
|
|
70
|
+
const hasSemanticStructure = context.domMetrics?.semanticStructure;
|
|
71
|
+
const structureScore = [
|
|
72
|
+
hasSemanticStructure?.hasHeader,
|
|
73
|
+
hasSemanticStructure?.hasMain,
|
|
74
|
+
hasSemanticStructure?.hasNav,
|
|
75
|
+
hasSemanticStructure?.hasFooter,
|
|
76
|
+
].filter(Boolean).length;
|
|
77
|
+
score = 50 + structureScore * 10;
|
|
78
|
+
if (structureScore >= 3) {
|
|
79
|
+
findings.push('Strong visual hierarchy with semantic HTML elements');
|
|
80
|
+
}
|
|
81
|
+
else if (structureScore >= 2) {
|
|
82
|
+
findings.push('Moderate visual hierarchy - some semantic elements present');
|
|
83
|
+
recommendations.push('Add more semantic HTML5 elements for clarity');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
issues.push({ description: 'Weak visual hierarchy - missing semantic structure', severity: 'high' });
|
|
87
|
+
recommendations.push('Implement semantic HTML5: header, nav, main, footer');
|
|
88
|
+
}
|
|
89
|
+
if (context.metadata?.description && context.metadata.description.length > 20) {
|
|
90
|
+
score += 10;
|
|
91
|
+
findings.push('Page has descriptive metadata');
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
85
94
|
}
|
|
86
|
-
if (context.metadata?.description && context.metadata.description.length > 20) {
|
|
87
|
-
score += 10;
|
|
88
|
-
findings.push('Page has descriptive metadata');
|
|
89
|
-
}
|
|
90
|
-
break;
|
|
91
95
|
case QXHeuristic.COUNTER_INTUITIVE_DESIGN:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
{
|
|
97
|
+
score = 85; // High score means few counter-intuitive elements (good)
|
|
98
|
+
const confusingNav = !context.domMetrics?.semanticStructure?.hasNav && (context.domMetrics?.interactiveElements || 0) > 10;
|
|
99
|
+
const poorStructure = !context.domMetrics?.semanticStructure?.hasHeader && !context.domMetrics?.semanticStructure?.hasFooter;
|
|
100
|
+
if (confusingNav) {
|
|
101
|
+
score = 45;
|
|
102
|
+
issues.push({ description: 'Navigation structure may be counter-intuitive', severity: 'high' });
|
|
103
|
+
recommendations.push('Add semantic navigation elements');
|
|
104
|
+
}
|
|
105
|
+
if (poorStructure) {
|
|
106
|
+
score -= 15;
|
|
107
|
+
issues.push({ description: 'Page structure lacks expected header/footer', severity: 'medium' });
|
|
108
|
+
}
|
|
109
|
+
if (score > 75) {
|
|
110
|
+
findings.push('No counter-intuitive design patterns detected');
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
103
113
|
}
|
|
104
|
-
if (score > 75) {
|
|
105
|
-
findings.push('No counter-intuitive design patterns detected');
|
|
106
|
-
}
|
|
107
|
-
break;
|
|
108
114
|
// ========== Impact Analysis Heuristics (H5.x) ==========
|
|
109
115
|
case QXHeuristic.USER_FEELINGS_IMPACT:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
116
|
+
{
|
|
117
|
+
const altCoverage = context.accessibility?.altTextsCoverage || 0;
|
|
118
|
+
const loadTime = context.performance?.loadTime || 0;
|
|
119
|
+
const ariaLabels = context.accessibility?.ariaLabelsCount || 0;
|
|
120
|
+
const focusableElements = context.accessibility?.focusableElementsCount || 0;
|
|
121
|
+
score = 60;
|
|
122
|
+
// Accessibility impact on feelings (35% weight)
|
|
123
|
+
if (altCoverage >= 90) {
|
|
124
|
+
score += 20;
|
|
125
|
+
findings.push('Excellent accessibility (90%+ alt coverage) creates inclusive, positive experience');
|
|
126
|
+
}
|
|
127
|
+
else if (altCoverage >= 70) {
|
|
128
|
+
score += 12;
|
|
129
|
+
findings.push('Good accessibility creates generally positive user feelings');
|
|
130
|
+
}
|
|
131
|
+
else if (altCoverage < 50) {
|
|
132
|
+
score -= 15;
|
|
133
|
+
issues.push({
|
|
134
|
+
description: 'Poor accessibility (<50% alt coverage) frustrates users with disabilities',
|
|
135
|
+
severity: 'high',
|
|
136
|
+
});
|
|
137
|
+
recommendations.push('Improve alt text coverage to at least 80% for better accessibility');
|
|
138
|
+
}
|
|
139
|
+
// ARIA support impact
|
|
140
|
+
if (ariaLabels > 5) {
|
|
141
|
+
score += 8;
|
|
142
|
+
findings.push('Strong ARIA labeling enhances screen reader experience');
|
|
143
|
+
}
|
|
144
|
+
// Performance impact on feelings (35% weight)
|
|
145
|
+
if (loadTime < 1500) {
|
|
146
|
+
score += 15;
|
|
147
|
+
findings.push('Very fast load time (<1.5s) delights users');
|
|
148
|
+
}
|
|
149
|
+
else if (loadTime < 2500) {
|
|
150
|
+
score += 8;
|
|
151
|
+
findings.push('Fast load time enhances user satisfaction');
|
|
152
|
+
}
|
|
153
|
+
else if (loadTime > 4000) {
|
|
154
|
+
score -= 20;
|
|
155
|
+
issues.push({ description: 'Very slow load time (>4s) causes significant frustration', severity: 'critical' });
|
|
156
|
+
recommendations.push('Optimize page load time - target under 2.5 seconds');
|
|
157
|
+
}
|
|
158
|
+
else if (loadTime > 3000) {
|
|
159
|
+
score -= 12;
|
|
160
|
+
issues.push({ description: 'Slow load time causes user frustration', severity: 'high' });
|
|
161
|
+
}
|
|
162
|
+
// Error visibility impact
|
|
163
|
+
if (context.errorIndicators?.hasErrorMessages) {
|
|
164
|
+
score -= 12;
|
|
165
|
+
issues.push({ description: 'Visible errors reduce user confidence and satisfaction', severity: 'high' });
|
|
166
|
+
recommendations.push('Review and fix visible error messages');
|
|
167
|
+
}
|
|
168
|
+
// Interaction capability
|
|
169
|
+
if (focusableElements > 20) {
|
|
170
|
+
score += 5;
|
|
171
|
+
findings.push('Rich interactive elements provide user control and engagement');
|
|
172
|
+
}
|
|
173
|
+
else if (focusableElements < 5) {
|
|
174
|
+
score -= 8;
|
|
175
|
+
issues.push({ description: 'Limited interactivity may feel restrictive', severity: 'medium' });
|
|
176
|
+
}
|
|
177
|
+
score = Math.max(20, Math.min(100, score));
|
|
178
|
+
break;
|
|
169
179
|
}
|
|
170
|
-
score = Math.max(20, Math.min(100, score));
|
|
171
|
-
break;
|
|
172
180
|
case QXHeuristic.GUI_FLOW_IMPACT:
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
181
|
+
{
|
|
182
|
+
const interactiveElements = context.domMetrics?.interactiveElements || 0;
|
|
183
|
+
const forms = context.domMetrics?.forms || 0;
|
|
184
|
+
if (interactiveElements > 20) {
|
|
185
|
+
score = 75;
|
|
186
|
+
findings.push(`${interactiveElements} interactive elements provide user control`);
|
|
187
|
+
}
|
|
188
|
+
if (forms > 0) {
|
|
189
|
+
findings.push(`${forms} forms impact user input flows`);
|
|
190
|
+
score = Math.min(100, score + 10);
|
|
191
|
+
}
|
|
192
|
+
if (interactiveElements === 0) {
|
|
193
|
+
score = 30;
|
|
194
|
+
issues.push({ description: 'Limited user interaction capability', severity: 'high' });
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
186
197
|
}
|
|
187
|
-
break;
|
|
188
198
|
case QXHeuristic.CROSS_FUNCTIONAL_IMPACT:
|
|
189
199
|
score = 70;
|
|
190
200
|
if (context.accessibility && (context.accessibility.altTextsCoverage || 0) < 100) {
|
|
@@ -232,14 +242,16 @@ export class QXHeuristicsEngine {
|
|
|
232
242
|
break;
|
|
233
243
|
// ========== User Needs Heuristics (H2.x) ==========
|
|
234
244
|
case QXHeuristic.USER_NEEDS_IDENTIFICATION:
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
245
|
+
{
|
|
246
|
+
score = userNeeds.alignmentScore;
|
|
247
|
+
findings.push(`${userNeeds.needs.length} user needs identified`);
|
|
248
|
+
const mustHave = userNeeds.needs.filter((n) => n.priority === 'must-have').length;
|
|
249
|
+
findings.push(`${mustHave} must-have features`);
|
|
250
|
+
if (userNeeds.challenges.length > 0) {
|
|
251
|
+
issues.push({ description: `${userNeeds.challenges.length} user need challenges found`, severity: 'medium' });
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
241
254
|
}
|
|
242
|
-
break;
|
|
243
255
|
case QXHeuristic.USER_NEEDS_SUITABILITY:
|
|
244
256
|
score =
|
|
245
257
|
userNeeds.suitability === 'excellent'
|
|
@@ -252,10 +264,12 @@ export class QXHeuristicsEngine {
|
|
|
252
264
|
findings.push(`User needs suitability: ${userNeeds.suitability}`);
|
|
253
265
|
break;
|
|
254
266
|
case QXHeuristic.USER_NEEDS_VALIDATION:
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
267
|
+
{
|
|
268
|
+
const addressedNeeds = userNeeds.needs.filter((n) => n.addressed).length;
|
|
269
|
+
score = userNeeds.needs.length > 0 ? (addressedNeeds / userNeeds.needs.length) * 100 : 50;
|
|
270
|
+
findings.push(`${addressedNeeds}/${userNeeds.needs.length} needs validated and addressed`);
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
259
273
|
// ========== Business Needs Heuristics (H3.x) ==========
|
|
260
274
|
case QXHeuristic.BUSINESS_NEEDS_IDENTIFICATION:
|
|
261
275
|
score = businessNeeds.alignmentScore;
|
|
@@ -264,16 +278,18 @@ export class QXHeuristicsEngine {
|
|
|
264
278
|
findings.push(`${businessNeeds.crossTeamImpact.length} cross-team impacts`);
|
|
265
279
|
break;
|
|
266
280
|
case QXHeuristic.USER_VS_BUSINESS_BALANCE:
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
281
|
+
{
|
|
282
|
+
const balanceScore = 100 - Math.abs(userNeeds.alignmentScore - businessNeeds.alignmentScore);
|
|
283
|
+
score = balanceScore;
|
|
284
|
+
if (balanceScore > 80) {
|
|
285
|
+
findings.push('Good balance between user and business needs');
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
issues.push({ description: 'Imbalance between user and business priorities', severity: 'medium' });
|
|
289
|
+
recommendations.push('Align user and business objectives more closely');
|
|
290
|
+
}
|
|
291
|
+
break;
|
|
275
292
|
}
|
|
276
|
-
break;
|
|
277
293
|
case QXHeuristic.KPI_IMPACT_ANALYSIS:
|
|
278
294
|
score = businessNeeds.impactsKPIs ? 85 : 50;
|
|
279
295
|
findings.push(`KPIs impacted: ${businessNeeds.kpisAffected.join(', ')}`);
|
|
@@ -297,18 +313,20 @@ export class QXHeuristicsEngine {
|
|
|
297
313
|
}
|
|
298
314
|
break;
|
|
299
315
|
case QXHeuristic.SUPPORTING_DATA_ANALYSIS:
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
316
|
+
{
|
|
317
|
+
score = 75;
|
|
318
|
+
const hasData = (context.domMetrics?.forms || 0) > 0 || (context.domMetrics?.interactiveElements || 0) > 20;
|
|
319
|
+
if (hasData) {
|
|
320
|
+
score = 82;
|
|
321
|
+
findings.push('Sufficient data points for informed decision-making');
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
score = 60;
|
|
325
|
+
issues.push({ description: 'Limited data for comprehensive analysis', severity: 'medium' });
|
|
326
|
+
recommendations.push('Collect more user interaction data');
|
|
327
|
+
}
|
|
328
|
+
break;
|
|
310
329
|
}
|
|
311
|
-
break;
|
|
312
330
|
// ========== Creativity Heuristics (H6.x) ==========
|
|
313
331
|
case QXHeuristic.COMPETITIVE_ANALYSIS:
|
|
314
332
|
score = 70;
|
|
@@ -324,27 +342,31 @@ export class QXHeuristicsEngine {
|
|
|
324
342
|
}
|
|
325
343
|
break;
|
|
326
344
|
case QXHeuristic.DOMAIN_INSPIRATION:
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
345
|
+
{
|
|
346
|
+
score = 72;
|
|
347
|
+
const hasModernElements = context.accessibility && (context.accessibility.ariaLabelsCount || 0) > 0;
|
|
348
|
+
if (hasModernElements) {
|
|
349
|
+
score = 80;
|
|
350
|
+
findings.push('Modern accessibility patterns show domain inspiration');
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
recommendations.push('Research domain-specific design patterns and best practices');
|
|
354
|
+
}
|
|
355
|
+
break;
|
|
335
356
|
}
|
|
336
|
-
break;
|
|
337
357
|
case QXHeuristic.INNOVATIVE_SOLUTIONS:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
358
|
+
{
|
|
359
|
+
score = 65;
|
|
360
|
+
const hasAdvancedFeatures = (context.accessibility?.landmarkRoles || 0) > 3;
|
|
361
|
+
if (hasAdvancedFeatures) {
|
|
362
|
+
score = 75;
|
|
363
|
+
findings.push('Advanced accessibility features show innovative thinking');
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
recommendations.push('Explore innovative UX patterns to differentiate experience');
|
|
367
|
+
}
|
|
368
|
+
break;
|
|
343
369
|
}
|
|
344
|
-
else {
|
|
345
|
-
recommendations.push('Explore innovative UX patterns to differentiate experience');
|
|
346
|
-
}
|
|
347
|
-
break;
|
|
348
370
|
default:
|
|
349
371
|
// Generic heuristic evaluation based on category
|
|
350
372
|
if (category === 'user-needs') {
|
|
@@ -258,7 +258,7 @@ export class A11yAuditTool extends MCPToolBase {
|
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
// Optionally check keyboard navigation
|
|
261
|
-
|
|
261
|
+
const keyboardViolations = [];
|
|
262
262
|
if (checkKeyboard) {
|
|
263
263
|
const keyboardResult = await service.checkKeyboardNavigation(url);
|
|
264
264
|
if (keyboardResult.success) {
|
|
@@ -122,6 +122,7 @@ export class WebSocketTransport extends EventEmitter {
|
|
|
122
122
|
* Handle a manual WebSocket upgrade (for testing or custom servers)
|
|
123
123
|
*/
|
|
124
124
|
handleUpgrade(request, socket, head) {
|
|
125
|
+
// eslint-disable-next-line no-async-promise-executor -- body is wrapped in try/catch that calls reject()
|
|
125
126
|
return new Promise(async (resolve, reject) => {
|
|
126
127
|
if (this.disposed) {
|
|
127
128
|
socket.write('HTTP/1.1 503 Service Unavailable\r\n\r\n');
|
|
@@ -303,7 +303,7 @@ export class AQEAutoTuner {
|
|
|
303
303
|
const parameterValues = this.algorithm.suggestNextConfiguration(this.parameters, this.evaluationHistory, this.config);
|
|
304
304
|
// Check if we have applicators registered for real system integration
|
|
305
305
|
const hasApplicators = this.applicatorRegistry.getAll().length > 0;
|
|
306
|
-
|
|
306
|
+
const metricValues = {};
|
|
307
307
|
if (hasApplicators) {
|
|
308
308
|
// REAL EVALUATION: Apply configuration to actual systems
|
|
309
309
|
try {
|