agentic-qe 3.9.9 → 3.9.10
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/agents/_shared/executor-preamble.md +86 -0
- package/.claude/agents/v3/qe-coverage-specialist.md +20 -1
- package/.claude/agents/v3/qe-fleet-commander.md +20 -1
- package/.claude/agents/v3/qe-pentest-validator.md +20 -1
- package/.claude/agents/v3/qe-queen-coordinator.md +20 -1
- package/.claude/agents/v3/qe-risk-assessor.md +20 -1
- package/.claude/agents/v3/qe-root-cause-analyzer.md +19 -0
- package/.claude/agents/v3/qe-security-auditor.md +20 -1
- package/.claude/agents/v3/qe-test-architect.md +33 -1
- package/.claude/helpers/advisor-call.cjs +283 -0
- package/.claude/skills/skills-manifest.json +2 -2
- package/CHANGELOG.md +22 -0
- package/assets/agents/v3/helpers/advisor-call.cjs +283 -0
- package/assets/agents/v3/qe-coverage-specialist.md +20 -1
- package/assets/agents/v3/qe-fleet-commander.md +20 -1
- package/assets/agents/v3/qe-pentest-validator.md +20 -1
- package/assets/agents/v3/qe-queen-coordinator.md +20 -1
- package/assets/agents/v3/qe-risk-assessor.md +20 -1
- package/assets/agents/v3/qe-root-cause-analyzer.md +19 -0
- package/assets/agents/v3/qe-security-auditor.md +20 -1
- package/assets/agents/v3/qe-test-architect.md +33 -1
- package/assets/skills/skills-manifest.json +2 -2
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-IKCDCMSI.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-QEN7W6VC.js → agent-booster-wasm-HM4XSABF.js} +2 -2
- package/dist/cli/chunks/{agent-handler-F3RLG42J.js → agent-handler-UDBDLLO4.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-U3PZ3CPL.js → agent-memory-branch-VIXQ3DAR.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-W4WW7SQW.js +2 -0
- package/dist/cli/chunks/{audit-FF6SP7Q2.js → audit-FWTGLQHH.js} +2 -2
- package/dist/cli/chunks/base-UQKFTHOY.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-CVXRDGQX.js → better-sqlite3-TYI3CCWU.js} +2 -2
- package/dist/cli/chunks/{brain-handler-AMTRZ35W.js → brain-handler-45ZGBLSB.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-Y4A34YFT.js → branch-enumerator-ZBXELCQA.js} +2 -2
- package/dist/cli/chunks/{browser-ETSF5GZR.js → browser-2KM5IKEX.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NMOEM3HW.js +2 -0
- package/dist/cli/chunks/{chunk-3NU4C62D.js → chunk-226DSROQ.js} +3 -3
- package/dist/cli/chunks/{chunk-JK4K4EH3.js → chunk-27B575K6.js} +2 -2
- package/dist/cli/chunks/{chunk-J2DNMVB5.js → chunk-2IJFZW3N.js} +12 -12
- package/dist/cli/chunks/{chunk-BVKS3X2I.js → chunk-32OB4ZYQ.js} +1 -1
- package/dist/cli/chunks/{chunk-UYKIPSRX.js → chunk-335CCAOL.js} +1 -1
- package/dist/cli/chunks/{chunk-ECNPBD4Y.js → chunk-34WI4QNF.js} +2 -2
- package/dist/cli/chunks/chunk-3A4BL62O.js +2 -0
- package/dist/cli/chunks/{chunk-4HDG7OS4.js → chunk-3AG647MY.js} +2 -2
- package/dist/cli/chunks/{chunk-22HQFULR.js → chunk-3HIDCXW3.js} +1 -1
- package/dist/cli/chunks/{chunk-OMRZUYXN.js → chunk-4EKWEDHA.js} +9 -9
- package/dist/cli/chunks/{chunk-S6VT7VAO.js → chunk-4FU6YNDP.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZHA6ORO.js → chunk-4LOJJ4VX.js} +1 -1
- package/dist/cli/chunks/{chunk-Q2ZBPOUX.js → chunk-4VOGUZW5.js} +1 -1
- package/dist/cli/chunks/{chunk-QMNAELZG.js → chunk-4ZR5G4MZ.js} +2 -2
- package/dist/cli/chunks/{chunk-MDTF7LE6.js → chunk-52ZHPZVX.js} +2 -2
- package/dist/cli/chunks/{chunk-5DU4YW2S.js → chunk-53G3OCGS.js} +2 -2
- package/dist/cli/chunks/{chunk-NLKJI73E.js → chunk-54TZA65H.js} +2 -2
- package/dist/cli/chunks/{chunk-3JCZTTFY.js → chunk-5QKTLOGO.js} +1 -1
- package/dist/cli/chunks/{chunk-QHATTMJC.js → chunk-5TATJQ3Z.js} +2 -2
- package/dist/cli/chunks/{chunk-CJQLJEO4.js → chunk-5V6DRRLO.js} +2 -2
- package/dist/cli/chunks/{chunk-5L3EUZJA.js → chunk-6X7WKNDF.js} +2 -2
- package/dist/cli/chunks/chunk-7FWZHYYE.js +2 -0
- package/dist/cli/chunks/{chunk-PEEN4AAK.js → chunk-A2ULGMMG.js} +1 -1
- package/dist/cli/chunks/{chunk-2KY5B4ON.js → chunk-A53XKLEA.js} +8 -8
- package/dist/cli/chunks/{chunk-QSA23PJ6.js → chunk-A5OIXFFL.js} +1 -1
- package/dist/cli/chunks/{chunk-VTX4NAWB.js → chunk-ACNL4NFI.js} +2 -2
- package/dist/cli/chunks/{chunk-2UP3DYNH.js → chunk-AE6Y5CNJ.js} +2 -2
- package/dist/cli/chunks/{chunk-3F666FYP.js → chunk-AO4HDN62.js} +2 -2
- package/dist/cli/chunks/{chunk-JIPU4YQK.js → chunk-AOA454FC.js} +2 -2
- package/dist/cli/chunks/{chunk-YRORPSPA.js → chunk-B2QVWL5R.js} +2 -2
- package/dist/cli/chunks/{chunk-AYMIF4W5.js → chunk-B3L3CT4X.js} +2 -2
- package/dist/cli/chunks/{chunk-MXMKHI2I.js → chunk-B4AFVIOA.js} +2 -2
- package/dist/cli/chunks/{chunk-R23PJGH7.js → chunk-BCSCJBYQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CCCBGKVY.js → chunk-BIV6HWMT.js} +2 -2
- package/dist/cli/chunks/{chunk-A6GYFTIA.js → chunk-BNNH3KZP.js} +1 -1
- package/dist/cli/chunks/{chunk-74FBSJVC.js → chunk-C234RGWZ.js} +2 -2
- package/dist/cli/chunks/{chunk-PRJUO2OQ.js → chunk-C55GEYDA.js} +2 -2
- package/dist/cli/chunks/{chunk-IZC5NPHD.js → chunk-CEBZHZ4O.js} +1 -1
- package/dist/cli/chunks/{chunk-TTENF6AH.js → chunk-CFQHIWWH.js} +1 -1
- package/dist/cli/chunks/{chunk-B3DA4SCL.js → chunk-CJO2V2FB.js} +1 -1
- package/dist/cli/chunks/{chunk-CZYTPNUI.js → chunk-CQNXIYQW.js} +2 -2
- package/dist/cli/chunks/{chunk-FTF34UME.js → chunk-D2A4TGZY.js} +1 -1
- package/dist/cli/chunks/{chunk-MWZN4PYF.js → chunk-DG2OYKUQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OFOFXJ3M.js → chunk-DPYCHODC.js} +2 -2
- package/dist/cli/chunks/{chunk-JQJHRQRX.js → chunk-E4YKNKQL.js} +2 -2
- package/dist/cli/chunks/{chunk-65XCVUP7.js → chunk-EEWTTYRC.js} +1 -1
- package/dist/cli/chunks/{chunk-KSJCMXAJ.js → chunk-EGIYLRW5.js} +2 -2
- package/dist/cli/chunks/{chunk-ADJGMTIW.js → chunk-EHGTNSJ2.js} +1 -1
- package/dist/cli/chunks/{chunk-P6YMECV2.js → chunk-EJNASXOY.js} +2 -2
- package/dist/cli/chunks/{chunk-AT2VD2ZP.js → chunk-F7HRGQRS.js} +2 -2
- package/dist/cli/chunks/{chunk-C7YD7O74.js → chunk-FF7TSDO4.js} +2 -2
- package/dist/cli/chunks/{chunk-MUCFC3YG.js → chunk-FIQNVPYY.js} +2 -2
- package/dist/cli/chunks/{chunk-RZYTJSQT.js → chunk-FJOBKT7N.js} +1 -1
- package/dist/cli/chunks/{chunk-YXE67VME.js → chunk-FYI52MFF.js} +2 -2
- package/dist/cli/chunks/{chunk-DNS7DP2O.js → chunk-GCNTU3QJ.js} +1 -1
- package/dist/cli/chunks/{chunk-ZEUORIH2.js → chunk-H56YBNXW.js} +2 -2
- package/dist/cli/chunks/{chunk-J62N66ZH.js → chunk-HJMLJNCB.js} +1 -1
- package/dist/cli/chunks/chunk-I3IRIJOT.js +2 -0
- package/dist/cli/chunks/chunk-IEQ2VYMO.js +3 -0
- package/dist/cli/chunks/{chunk-BVOGMK6N.js → chunk-IGRKFVFD.js} +2 -2
- package/dist/cli/chunks/{chunk-6LTJP3DO.js → chunk-IJPE6OGD.js} +10 -10
- package/dist/cli/chunks/{chunk-HDM43P7H.js → chunk-IJUL2UMO.js} +1 -1
- package/dist/cli/chunks/{chunk-EV2NMWJV.js → chunk-ISZJAZ2D.js} +1 -1
- package/dist/cli/chunks/{chunk-4CDSEZD6.js → chunk-ITDYTODU.js} +2 -2
- package/dist/cli/chunks/{chunk-BYJEK6LX.js → chunk-JHUEBBSX.js} +2 -2
- package/dist/cli/chunks/{chunk-2HFPJPQW.js → chunk-JN3CC2TX.js} +2 -2
- package/dist/cli/chunks/{chunk-CXWA34RL.js → chunk-JOEEGNNX.js} +2 -2
- package/dist/cli/chunks/{chunk-BYPBKVTC.js → chunk-JQX2DHQT.js} +1 -1
- package/dist/cli/chunks/{chunk-ZKXA4VBK.js → chunk-JRG4AFUR.js} +3 -3
- package/dist/cli/chunks/{chunk-52RZZV4M.js → chunk-JRMNQWRL.js} +3 -3
- package/dist/cli/chunks/{chunk-2JAYDTSE.js → chunk-JXDJMVIG.js} +2 -2
- package/dist/cli/chunks/{chunk-2X7LDTVD.js → chunk-JYPW22JV.js} +2 -2
- package/dist/cli/chunks/{chunk-XZ2JYMFT.js → chunk-KK3KVYE7.js} +2 -2
- package/dist/cli/chunks/{chunk-BSES27JE.js → chunk-KSRAA6ZD.js} +3 -3
- package/dist/cli/chunks/chunk-KUCU5ML6.js +6 -0
- package/dist/cli/chunks/{chunk-QTYTM7C7.js → chunk-KXXLMLMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DI6R2AVP.js → chunk-LKCFJC4Q.js} +1 -1
- package/dist/cli/chunks/{chunk-SVLO2DVL.js → chunk-LODXDV4G.js} +2 -2
- package/dist/cli/chunks/{chunk-AHOP227C.js → chunk-M4CYXAVP.js} +4 -4
- package/dist/cli/chunks/{chunk-6KQLF3ZO.js → chunk-MOLMS6MA.js} +2 -2
- package/dist/cli/chunks/{chunk-YISXT54V.js → chunk-NBTM2J4B.js} +2 -2
- package/dist/cli/chunks/{chunk-FGW5W3YK.js → chunk-NIFVFUCU.js} +2 -2
- package/dist/cli/chunks/{chunk-W57I57M4.js → chunk-OOHKW3UE.js} +2 -2
- package/dist/cli/chunks/{chunk-6PJUDLCT.js → chunk-ORA6NIXN.js} +2 -2
- package/dist/cli/chunks/{chunk-HOWZFW7G.js → chunk-OSD55UO7.js} +2 -2
- package/dist/cli/chunks/{chunk-Z7AFNZMI.js → chunk-OWQRMH3G.js} +2 -2
- package/dist/cli/chunks/chunk-QFUINEBN.js +2 -0
- package/dist/cli/chunks/{chunk-OEZA7Q2Z.js → chunk-RE2IBX7Z.js} +2 -2
- package/dist/cli/chunks/{chunk-5SWY75MJ.js → chunk-RMQQ5UHM.js} +2 -2
- package/dist/cli/chunks/{chunk-MZOYBHJ3.js → chunk-ROEMVTXC.js} +3 -3
- package/dist/cli/chunks/{chunk-WDWIJDQR.js → chunk-SMTAZQJ3.js} +2 -2
- package/dist/cli/chunks/{chunk-W4VDPHWC.js → chunk-TO4NGP3E.js} +1 -1
- package/dist/cli/chunks/{chunk-PYTXZMXR.js → chunk-TTXYZUTQ.js} +2 -2
- package/dist/cli/chunks/{chunk-WEJJWJ5M.js → chunk-U4NODKRR.js} +2 -2
- package/dist/cli/chunks/{chunk-RLLDZNLF.js → chunk-U635PSAW.js} +2 -2
- package/dist/cli/chunks/{chunk-QZMBJ67L.js → chunk-UBT7VCKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-R5ZKFJ3H.js → chunk-UETM5XDO.js} +1 -1
- package/dist/cli/chunks/{chunk-MUIJVPGB.js → chunk-URXG7FMO.js} +4 -3
- package/dist/cli/chunks/{chunk-VIIUJRKA.js → chunk-VIWDVS24.js} +2 -2
- package/dist/cli/chunks/{chunk-5HM66R4W.js → chunk-VNKCUKUJ.js} +3 -3
- package/dist/cli/chunks/{chunk-ZTI3BATG.js → chunk-VXIXHZCN.js} +2 -2
- package/dist/cli/chunks/{chunk-GYNGJHYF.js → chunk-WFEXEDMC.js} +2 -2
- package/dist/cli/chunks/{chunk-UEKDDUGV.js → chunk-WLX57ULC.js} +2 -2
- package/dist/cli/chunks/{chunk-ANLFEGDG.js → chunk-WVQZGLCT.js} +2 -2
- package/dist/cli/chunks/{chunk-2BSVGL35.js → chunk-WW5DZ6BU.js} +1 -1
- package/dist/cli/chunks/{chunk-4CSINHCB.js → chunk-X364AIY6.js} +1 -1
- package/dist/cli/chunks/{chunk-3FAEM5M7.js → chunk-XH7D6EGE.js} +1 -1
- package/dist/cli/chunks/{chunk-NQ3WHTLT.js → chunk-XICRAXUR.js} +4 -4
- package/dist/cli/chunks/{chunk-WZR4CKR4.js → chunk-XMAV7AIC.js} +1 -1
- package/dist/cli/chunks/{chunk-2O3WZ6E3.js → chunk-XSUPK7FI.js} +1 -1
- package/dist/cli/chunks/{chunk-QQLQEQJM.js → chunk-XSWOB74I.js} +2 -2
- package/dist/cli/chunks/chunk-YPIZMTTA.js +14 -0
- package/dist/cli/chunks/{chunk-3XR7ARS6.js → chunk-YT6KBEXE.js} +2 -2
- package/dist/cli/chunks/{chunk-VWHALAEO.js → chunk-ZENLP5LF.js} +1 -1
- package/dist/cli/chunks/{ci-4QYE6JBM.js → ci-WS32HBBS.js} +2 -2
- package/dist/cli/chunks/{ci-output-MV75HUK7.js → ci-output-67R5MSLL.js} +2 -2
- package/dist/cli/chunks/circuit-breaker-MA562FT7.js +2 -0
- package/dist/cli/chunks/{claude-flow-setup-CZITY7SG.js → claude-flow-setup-4QKGSRS7.js} +2 -2
- package/dist/cli/chunks/client-XQGZKXOB.js +2 -0
- package/dist/cli/chunks/{cline-installer-ZLQKCPFF.js → cline-installer-6VSROHRY.js} +2 -2
- package/dist/cli/chunks/{code-NYEXOJVP.js → code-FBPBHVV3.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-TITXUC44.js → code-index-extractor-62F622V2.js} +2 -2
- package/dist/cli/chunks/{codex-installer-TWT4LIL2.js → codex-installer-LSR6DVCU.js} +2 -2
- package/dist/cli/chunks/{completions-2KNV2MZG.js → completions-56QOICBN.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-2U3OVRDX.js → complexity-analyzer-SDH4NWIS.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-BWQBRVTC.js → continuedev-installer-S7ZPL3VC.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CYN33NMG.js → copilot-installer-25GNNKNL.js} +2 -2
- package/dist/cli/chunks/{cost-tracker-2GUCBYLK.js → cost-tracker-73J4Y2RS.js} +2 -2
- package/dist/cli/chunks/{coverage-BAVD66VL.js → coverage-WEE2AZ5F.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-C2ZFCSXJ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-ZQAUD47B.js → cursor-installer-DHQ644T3.js} +2 -2
- package/dist/cli/chunks/{daemon-VY2LZPIM.js → daemon-3WUJ5E3X.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-JNQWWXSW.js → dag-attention-scheduler-IRLAM43H.js} +2 -2
- package/dist/cli/chunks/{detect-Y7BBW4LI.js → detect-DTSB4T4R.js} +2 -2
- package/dist/cli/chunks/{domain-handler-473WNSR2.js → domain-handler-DDN2Z5XC.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-R4VK7CRR.js → domain-transfer-3RRG4S6R.js} +2 -2
- package/dist/cli/chunks/dream-JSZZ67OO.js +2 -0
- package/dist/cli/chunks/esm-node-X4TES6NX.js +2 -0
- package/dist/cli/chunks/{eval-TJAZGRCM.js → eval-UXEP425X.js} +2 -2
- package/dist/cli/chunks/{fast-paths-LMN542IB.js → fast-paths-4XLHS2VN.js} +2 -2
- package/dist/cli/chunks/{feature-flags-IMFZ7KED.js → feature-flags-6C2HD76K.js} +2 -2
- package/dist/cli/chunks/{feature-flags-WMXIDTXL.js → feature-flags-KXXHAEYF.js} +2 -2
- package/dist/cli/chunks/{file-discovery-GXXWQJV3.js → file-discovery-YSDUIZO4.js} +2 -2
- package/dist/cli/chunks/{fleet-WIC7RHJV.js → fleet-TYDG5DWK.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-PVKCXV25.js → gnn-wrapper-GJVYRPHB.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-BJ6ZZP7Q.js → heartbeat-handler-X63CM35O.js} +4 -4
- package/dist/cli/chunks/{heartbeat-scheduler-3SQXTFYU.js → heartbeat-scheduler-NYH4CMVM.js} +2 -2
- package/dist/cli/chunks/hnsw-adapter-SQCVEHB5.js +2 -0
- package/dist/cli/chunks/hnsw-index-UGVC5IDK.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-23HFWIPK.js → hnsw-legacy-bridge-YDVUZTJI.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-4GRFMUPD.js → hnswlib-node-TLBDFWA6.js} +2 -2
- package/dist/cli/chunks/{hooks-IXH5454I.js → hooks-B6PVGP7D.js} +6 -6
- package/dist/cli/chunks/hybrid-router-YZEBKUZJ.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-TEQMJFJJ.js → hypergraph-engine-OQ2ZEG53.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-3ECUWIG3.js → hypergraph-handler-VPD424MI.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-ZIXSRWED.js +2 -0
- package/dist/cli/chunks/{init-handler-TZRKW3NZ.js → init-handler-5WYP6NJW.js} +6 -6
- package/dist/cli/chunks/init-wizard-MO6PCXPX.js +2 -0
- package/dist/cli/chunks/kernel-P54KQB2F.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-IPH3O3ZS.js → kilocode-installer-YVY4EVMY.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-VROMOOQO.js → kiro-installer-GNT4BN3A.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-GU57FQAQ.js +2 -0
- package/dist/cli/chunks/{learning-JYQLD66S.js → learning-LD2RSBRS.js} +3 -3
- package/dist/cli/chunks/llm-router-ALKXFKLQ.js +36 -0
- package/dist/cli/chunks/{load-DMAQB4NC.js → load-XAOTGZYB.js} +2 -2
- package/dist/cli/chunks/load-test-5RFBTSS7.js +2 -0
- package/dist/cli/chunks/{mcp-K6CSUBMU.js → mcp-WDAJHGH4.js} +2 -2
- package/dist/cli/chunks/{memory-5BSXKHSK.js → memory-M7QD57JD.js} +5 -5
- package/dist/cli/chunks/memory-backend-GPOP3IR4.js +2 -0
- package/dist/cli/chunks/memory-handlers-2NHGZLQM.js +2 -0
- package/dist/cli/chunks/multi-model-executor-2XZQK2IN.js +14 -0
- package/dist/cli/chunks/{opencode-installer-IUWO2QV6.js → opencode-installer-ASCVY3GG.js} +2 -2
- package/dist/cli/chunks/{orchestrator-Z2EM76CR.js → orchestrator-GOZICWN3.js} +6 -6
- package/dist/cli/chunks/{pipeline-OL5SI2RI.js → pipeline-YHQRJWV3.js} +2 -2
- package/dist/cli/chunks/{platform-VNJIKIHZ.js → platform-4NESYFHN.js} +2 -2
- package/dist/cli/chunks/{plugin-SJJUE47D.js → plugin-E24I2RVB.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-ZLVTCNSH.js → prime-radiant-advanced-wasm-CDVSLR7R.js} +2 -2
- package/dist/cli/chunks/protocol-executor-M5IONISJ.js +2 -0
- package/dist/cli/chunks/{protocol-handler-HTX44YTW.js → protocol-handler-TGTDKSZB.js} +2 -2
- package/dist/cli/chunks/{prove-MGFLVZNS.js → prove-WUKDAMSE.js} +2 -2
- package/dist/cli/chunks/provider-manager-BTKK6W7M.js +24 -0
- package/dist/cli/chunks/qe-reasoning-bank-WIEXCBVE.js +2 -0
- package/dist/cli/chunks/{quality-FMFKPICZ.js → quality-RTIOIS2K.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-ZFK6DANW.js +2 -0
- package/dist/cli/chunks/{real-embeddings-2BMEEOA2.js → real-embeddings-4JJKAEMO.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-2PA3B5JI.js → roocode-installer-XU2IXRBM.js} +2 -2
- package/dist/cli/chunks/router-TOFBEI2Q.js +2 -0
- package/dist/cli/chunks/routing-feedback-RC2VDP6W.js +2 -0
- package/dist/cli/chunks/{routing-handler-SNGSQ757.js → routing-handler-3KBOCIEN.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-54MYLF63.js → ruvector-commands-HHE2ZPX7.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-6Q44XJOJ.js → rvf-dual-writer-GAWM2BUZ.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-JECN625C.js → rvf-migration-adapter-HQPEC4BN.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-MEAVIHQY.js → rvf-migration-coordinator-A4K45EFU.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-ZOQDH3JY.js +2 -0
- package/dist/cli/chunks/safe-db-RIP3X32S.js +2 -0
- package/dist/cli/chunks/schedule-Q6KZRLWS.js +2 -0
- package/dist/cli/chunks/scheduler-SJO5QPAU.js +2 -0
- package/dist/cli/chunks/{security-CXLXTNIV.js → security-UIKUNOXB.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-JJCR3AWU.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-SOQDKE6S.js → shared-rvf-dual-writer-ZUWSLFPH.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HK2S6XAI.js +2 -0
- package/dist/cli/chunks/{status-handler-NNEF4SQV.js → status-handler-E3VSWGA6.js} +2 -2
- package/dist/cli/chunks/{structural-health-FY6QIA55.js → structural-health-Y22H4BOU.js} +2 -2
- package/dist/cli/chunks/{sync-2QMSZ67Q.js → sync-CA4KWZFS.js} +2 -2
- package/dist/cli/chunks/{task-handler-GZJPE2QW.js → task-handler-3EZPIAMD.js} +2 -2
- package/dist/cli/chunks/task-handlers-6UVAQAGP.js +2 -0
- package/dist/cli/chunks/{test-JVA2S2R2.js → test-Q5DOFSJI.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-PRMP4H6X.js → test-scheduling-BSXWCIMQ.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-XGEZU2CS.js +2 -0
- package/dist/cli/chunks/{token-usage-G73L32OF.js → token-usage-BZX5TCG6.js} +2 -2
- package/dist/cli/chunks/{transformers-U3TSLEGO.js → transformers-7ITQPXAU.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-QXP2MNSX.js → tree-sitter-wasm-parser-ZYBBNYR3.js} +2 -2
- package/dist/cli/chunks/{types-BIQ7O5VR.js → types-ACZ5VVRC.js} +2 -2
- package/dist/cli/chunks/unified-memory-EXO6WK33.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-7HPSTFVV.js +2 -0
- package/dist/cli/chunks/unified-persistence-WC3O4WOJ.js +2 -0
- package/dist/cli/chunks/{validate-CTBEA4BZ.js → validate-IQL6OVXD.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-PHT6XW3A.js → validate-swarm-J52J2K5X.js} +2 -2
- package/dist/cli/chunks/{vibium-CRCYAH3V.js → vibium-XSE76PXE.js} +2 -2
- package/dist/cli/chunks/visual-security-COW3OCEE.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-2MH3G7K7.js → web-tree-sitter-YM6QXUIY.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-LBRNYFSI.js → windsurf-installer-M27DVL4H.js} +2 -2
- package/dist/cli/chunks/{witness-chain-HNFQLO7Q.js → witness-chain-NB5LP73S.js} +2 -2
- package/dist/cli/chunks/witness-chain-XQXF3RSP.js +2 -0
- package/dist/cli/chunks/{workflow-DNAF6BQ2.js → workflow-5DODQ6XS.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-HSIZEKZM.js +2 -0
- package/dist/cli/chunks/{wrappers-U7AO6ZZN.js → wrappers-K7HHCIYD.js} +2 -2
- package/dist/cli/commands/llm-router.js +252 -0
- package/dist/coordination/queen-task-management.js +8 -1
- package/dist/init/init-wizard-steps.js +9 -0
- package/dist/init/phases/12-verification.js +8 -0
- package/dist/kernel/unified-memory-schemas.d.ts +1 -1
- package/dist/kernel/unified-memory-schemas.js +2 -1
- package/dist/mcp/bundle.js +47 -44
- package/dist/mcp/protocol-server.js +87 -0
- package/dist/routing/advisor/circuit-breaker.d.ts +56 -0
- package/dist/routing/advisor/circuit-breaker.js +128 -0
- package/dist/routing/advisor/domain-prompts.d.ts +14 -0
- package/dist/routing/advisor/domain-prompts.js +53 -0
- package/dist/routing/advisor/index.d.ts +10 -0
- package/dist/routing/advisor/index.js +9 -0
- package/dist/routing/advisor/multi-model-executor.d.ts +60 -0
- package/dist/routing/advisor/multi-model-executor.js +176 -0
- package/dist/routing/advisor/redaction.d.ts +40 -0
- package/dist/routing/advisor/redaction.js +187 -0
- package/dist/routing/advisor/types.d.ts +101 -0
- package/dist/routing/advisor/types.js +9 -0
- package/dist/routing/queen-integration.d.ts +3 -0
- package/dist/routing/queen-integration.js +7 -1
- package/dist/routing/routing-feedback.d.ts +7 -1
- package/dist/routing/routing-feedback.js +57 -11
- package/dist/routing/tiny-dancer-router.d.ts +35 -1
- package/dist/routing/tiny-dancer-router.js +33 -0
- package/dist/routing/types.d.ts +12 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-XKXEZEMM.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-K7XGBDMZ.js +0 -2
- package/dist/cli/chunks/base-NUF35LIJ.js +0 -2
- package/dist/cli/chunks/browser-workflow-MWPELXFA.js +0 -2
- package/dist/cli/chunks/chunk-ENG5UF7M.js +0 -7
- package/dist/cli/chunks/chunk-NVVF5ROM.js +0 -14
- package/dist/cli/chunks/chunk-VRH3YLO2.js +0 -2
- package/dist/cli/chunks/client-VXVVUQDV.js +0 -2
- package/dist/cli/chunks/cross-domain-router-HUJG6CFC.js +0 -2
- package/dist/cli/chunks/dream-QQDRI2EQ.js +0 -2
- package/dist/cli/chunks/esm-node-Y3HIFLTX.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-VKS7ORL2.js +0 -2
- package/dist/cli/chunks/hnsw-index-GPUBY6EQ.js +0 -2
- package/dist/cli/chunks/impact-analyzer-D6MBGRKX.js +0 -2
- package/dist/cli/chunks/init-wizard-S6P2MFJF.js +0 -2
- package/dist/cli/chunks/kernel-EFDDMNXJ.js +0 -2
- package/dist/cli/chunks/knowledge-graph-4PM4DFH3.js +0 -2
- package/dist/cli/chunks/llm-router-CIICNICY.js +0 -30
- package/dist/cli/chunks/load-test-PPSWF3TO.js +0 -2
- package/dist/cli/chunks/memory-backend-3E6BA2JU.js +0 -2
- package/dist/cli/chunks/memory-handlers-APOLXPNH.js +0 -2
- package/dist/cli/chunks/protocol-executor-2RD52J5J.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-OGKT52EN.js +0 -2
- package/dist/cli/chunks/queen-coordinator-B63YXNI6.js +0 -2
- package/dist/cli/chunks/router-NDQCJQC6.js +0 -2
- package/dist/cli/chunks/routing-feedback-PSN2RLDO.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-F56HQKLS.js +0 -2
- package/dist/cli/chunks/safe-db-LMRMNROL.js +0 -2
- package/dist/cli/chunks/schedule-OZSUYPPC.js +0 -2
- package/dist/cli/chunks/scheduler-GFXCQ6ZA.js +0 -2
- package/dist/cli/chunks/shared-rvf-adapter-RZPF4WWK.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-VP67CJPK.js +0 -2
- package/dist/cli/chunks/task-handlers-AHM37D4I.js +0 -2
- package/dist/cli/chunks/token-bootstrap-YJEHCBV2.js +0 -2
- package/dist/cli/chunks/unified-memory-JB4KPMPI.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-RPSZZIWP.js +0 -2
- package/dist/cli/chunks/unified-persistence-L23T4C5C.js +0 -2
- package/dist/cli/chunks/visual-security-F2I524IQ.js +0 -2
- package/dist/cli/chunks/witness-chain-CN6FCWRY.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-JJBCCNYI.js +0 -2
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Executor Preamble — Advisor Protocol (ADR-092)
|
|
2
|
+
|
|
3
|
+
This preamble is prepended to any qe-* agent with `advisor.enabled: true` in its
|
|
4
|
+
frontmatter. It follows Anthropic's published canonical system prompt for the
|
|
5
|
+
executor/advisor pattern, adapted to AQE's CLI surface.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Advisor Tool Access
|
|
10
|
+
|
|
11
|
+
You have access to an advisor backed by a stronger reviewer model. You invoke it
|
|
12
|
+
by running the following Bash command:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
aqe llm advise --session <session-id> --agent <your-agent-name> --json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The CLI takes no semantic parameters beyond the session ID — when you call it,
|
|
19
|
+
the advisor receives your full conversation history automatically. The advisor
|
|
20
|
+
sees the task, every tool call you have made, and every result you have seen.
|
|
21
|
+
|
|
22
|
+
## Routing Signal: `advisor:triggerMultiModel`
|
|
23
|
+
|
|
24
|
+
If your task capabilities include `advisor:triggerMultiModel`, the routing
|
|
25
|
+
layer (TinyDancerRouter) flagged this task as needing a second opinion due to
|
|
26
|
+
low routing confidence or security sensitivity. When this signal is present,
|
|
27
|
+
call the advisor **immediately after orientation** — do not wait for difficulty
|
|
28
|
+
to appear. The routing layer identified uncertainty before you started; confirm
|
|
29
|
+
the approach early.
|
|
30
|
+
|
|
31
|
+
## When to Call the Advisor
|
|
32
|
+
|
|
33
|
+
Call the advisor **BEFORE substantive work** — before writing code, before
|
|
34
|
+
committing to an interpretation, before building on an assumption. If the task
|
|
35
|
+
requires orientation first (finding files, fetching a source, seeing what's
|
|
36
|
+
there), do that first, then call the advisor. Orientation is not substantive
|
|
37
|
+
work. Writing, editing, and declaring an answer are.
|
|
38
|
+
|
|
39
|
+
Also call the advisor:
|
|
40
|
+
- **When you believe the task is complete.** Before this call, make your
|
|
41
|
+
deliverable durable: write the file, save the result, commit the change. The
|
|
42
|
+
advisor call takes time; if the session ends during it, a durable result
|
|
43
|
+
persists and an unwritten one does not.
|
|
44
|
+
- **When stuck** — errors recurring, approach not converging, results that do
|
|
45
|
+
not fit.
|
|
46
|
+
- **When considering a change of approach.**
|
|
47
|
+
|
|
48
|
+
On tasks longer than a few steps, call the advisor at least once before
|
|
49
|
+
committing to an approach and once before declaring done. On short reactive
|
|
50
|
+
tasks where the next action is dictated by tool output you just read, you do
|
|
51
|
+
not need to keep calling — the advisor adds most of its value on the first
|
|
52
|
+
call, before the approach crystallizes.
|
|
53
|
+
|
|
54
|
+
## How to Treat the Advice
|
|
55
|
+
|
|
56
|
+
Give the advice serious weight. If you follow a step and it fails empirically,
|
|
57
|
+
or you have primary-source evidence that contradicts a specific claim (the file
|
|
58
|
+
says X, the paper states Y), adapt. A passing self-test is not evidence the
|
|
59
|
+
advice is wrong — it is evidence your test does not check what the advice is
|
|
60
|
+
checking.
|
|
61
|
+
|
|
62
|
+
If you have already retrieved data pointing one way and the advisor points
|
|
63
|
+
another: **do not silently switch**. Surface the conflict in one more advisor
|
|
64
|
+
call — "I found X, you suggest Y, which constraint breaks the tie?" The
|
|
65
|
+
advisor saw your evidence but may have underweighted it; a reconcile call is
|
|
66
|
+
cheaper than committing to the wrong branch.
|
|
67
|
+
|
|
68
|
+
## Output Contract
|
|
69
|
+
|
|
70
|
+
The advisor responds in under 100 words using enumerated steps, not
|
|
71
|
+
explanations. Expect something like:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. Read auth.ts before changing the route handler — current implementation uses express-session, not JWT.
|
|
75
|
+
2. Check TestUserFactory line 42 for the role field you need.
|
|
76
|
+
3. Write a failing test first; production code after.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Parse it as a list of next actions, not as natural-language commentary.
|
|
80
|
+
|
|
81
|
+
## Budget and Limits
|
|
82
|
+
|
|
83
|
+
- Per-task cap: 3 advisor calls (configurable via frontmatter `max_uses`)
|
|
84
|
+
- Per-session hard ceiling: 10 advisor calls total
|
|
85
|
+
- Exceeding these limits returns exit code 3 — do not retry; continue without
|
|
86
|
+
the advisor.
|
|
@@ -1,16 +1,35 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-coverage-specialist
|
|
3
3
|
version: "3.0.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-12"
|
|
5
5
|
description: O(log n) sublinear coverage analysis with risk-weighted gap detection and HNSW vector indexing
|
|
6
6
|
v2_compat:
|
|
7
7
|
name: qe-coverage-analyzer
|
|
8
8
|
deprecated_in: "3.0.0"
|
|
9
9
|
removed_in: "4.0.0"
|
|
10
10
|
domain: coverage-analysis
|
|
11
|
+
advisor:
|
|
12
|
+
enabled: true
|
|
13
|
+
provider: openrouter
|
|
14
|
+
model: anthropic/claude-opus-4
|
|
15
|
+
max_uses: 3
|
|
16
|
+
redact: strict
|
|
11
17
|
---
|
|
12
18
|
|
|
13
19
|
<qe_agent_definition>
|
|
20
|
+
<advisor_protocol>
|
|
21
|
+
You have access to an advisor for strategic guidance on coverage analysis. The helper auto-detects the best provider from the user's environment.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
25
|
+
--agent qe-coverage-specialist \
|
|
26
|
+
--task "Analyze coverage gaps for <target>" \
|
|
27
|
+
--context "Coverage data shows: <summary of uncovered areas>"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Call BEFORE deciding which gaps to prioritize. Skip for simple single-file checks.
|
|
31
|
+
</advisor_protocol>
|
|
32
|
+
|
|
14
33
|
<identity>
|
|
15
34
|
You are the V3 QE Coverage Specialist, the primary agent for intelligent coverage analysis in Agentic QE v3.
|
|
16
35
|
Mission: Achieve O(log n) coverage gap detection using HNSW vector indexing with risk-weighted prioritization.
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-fleet-commander
|
|
3
3
|
version: "3.0.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-12"
|
|
5
5
|
description: Fleet management with agent lifecycle, workload distribution, and cross-domain coordination at scale
|
|
6
6
|
v2_compat: qe-fleet-commander
|
|
7
7
|
domain: cross-domain
|
|
8
|
+
advisor:
|
|
9
|
+
enabled: true
|
|
10
|
+
provider: openrouter
|
|
11
|
+
model: anthropic/claude-opus-4
|
|
12
|
+
max_uses: 3
|
|
13
|
+
redact: strict
|
|
8
14
|
---
|
|
9
15
|
|
|
10
16
|
<qe_agent_definition>
|
|
17
|
+
<advisor_protocol>
|
|
18
|
+
You have access to an advisor for strategic guidance on fleet coordination. The helper auto-detects the best provider from the user's environment.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
22
|
+
--agent qe-fleet-commander \
|
|
23
|
+
--task "Coordinate <task description>" \
|
|
24
|
+
--context "Fleet state: <N agents active>, domains: <list>, plan: <decomposition>"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Call BEFORE task decomposition and BEFORE declaring a multi-agent coordination complete.
|
|
28
|
+
</advisor_protocol>
|
|
29
|
+
|
|
11
30
|
<identity>
|
|
12
31
|
You are the V3 QE Fleet Commander, the fleet management and orchestration expert in Agentic QE v3.
|
|
13
32
|
Mission: Oversee and coordinate all QE agents across the fleet, managing resource allocation, workload distribution, agent health, and cross-domain orchestration at scale.
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-pentest-validator
|
|
3
3
|
version: "3.6.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-12"
|
|
5
5
|
description: Graduated exploit validation with parallel vulnerability pipelines, browser-based attack execution, and "No Exploit, No Report" quality gate
|
|
6
6
|
v2_compat: null
|
|
7
7
|
domain: security-compliance
|
|
8
|
+
advisor:
|
|
9
|
+
enabled: true
|
|
10
|
+
provider: claude
|
|
11
|
+
model: claude-opus-4-6
|
|
12
|
+
max_uses: 3
|
|
13
|
+
redact: strict
|
|
8
14
|
---
|
|
9
15
|
|
|
10
16
|
<qe_agent_definition>
|
|
17
|
+
<advisor_protocol>
|
|
18
|
+
You have access to an advisor for strategic guidance on exploit validation. The helper auto-detects the provider. Security agents are automatically restricted to direct Anthropic or self-hosted Ollama (OpenRouter is blocked).
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
22
|
+
--agent qe-pentest-validator \
|
|
23
|
+
--task "Validate <vulnerability type> in <target>" \
|
|
24
|
+
--context "SAST found <finding>. Attempting exploitation via <approach>."
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Call BEFORE each exploitation attempt and BEFORE declaring a finding validated or false-positive. Skip for obvious true-positives with clear reproduction steps.
|
|
28
|
+
</advisor_protocol>
|
|
29
|
+
|
|
11
30
|
<identity>
|
|
12
31
|
You are the V3 QE Pentest Validator, the exploit validation agent in Agentic QE v3.
|
|
13
32
|
Mission: Validate security findings through graduated exploitation - proving vulnerabilities are real before reporting them. Adopts the "No Exploit, No Report" philosophy to eliminate false positives.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-queen-coordinator
|
|
3
3
|
version: "3.1.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-12"
|
|
5
5
|
description: V3 QE Queen Coordinator - MCP-powered swarm orchestration with real fleet coordination
|
|
6
6
|
v2_compat: null # New in v3
|
|
7
7
|
domain: coordination
|
|
@@ -11,9 +11,28 @@ dependencies:
|
|
|
11
11
|
required: true
|
|
12
12
|
- name: claude-flow
|
|
13
13
|
required: false
|
|
14
|
+
advisor:
|
|
15
|
+
enabled: true
|
|
16
|
+
provider: openrouter
|
|
17
|
+
model: anthropic/claude-opus-4
|
|
18
|
+
max_uses: 3
|
|
19
|
+
redact: strict
|
|
14
20
|
---
|
|
15
21
|
|
|
16
22
|
<qe_agent_definition>
|
|
23
|
+
<advisor_protocol>
|
|
24
|
+
You have access to an advisor for strategic guidance on fleet orchestration decisions. The helper auto-detects the best provider.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
28
|
+
--agent qe-queen-coordinator \
|
|
29
|
+
--task "Orchestrate <objective>" \
|
|
30
|
+
--context "Fleet state: <agents active>, domains: <list>, current plan: <decomposition>"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Call BEFORE decomposing a complex multi-domain objective and BEFORE finalizing agent delegation.
|
|
34
|
+
</advisor_protocol>
|
|
35
|
+
|
|
17
36
|
<identity>
|
|
18
37
|
You are the V3 QE Queen Coordinator, the sovereign orchestrator of the Agentic QE v3 fleet.
|
|
19
38
|
Mission: Lead hierarchical coordination of 40+ specialized QE agents to achieve >90% coverage, zero-defect releases, and <5min test feedback.
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-risk-assessor
|
|
3
3
|
version: "3.0.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-12"
|
|
5
5
|
description: Quality risk assessment with multi-factor scoring, impact analysis, and mitigation recommendations
|
|
6
6
|
domain: quality-assessment
|
|
7
7
|
v3_new: true
|
|
8
|
+
advisor:
|
|
9
|
+
enabled: true
|
|
10
|
+
provider: openrouter
|
|
11
|
+
model: anthropic/claude-opus-4
|
|
12
|
+
max_uses: 3
|
|
13
|
+
redact: strict
|
|
8
14
|
---
|
|
9
15
|
|
|
10
16
|
<qe_agent_definition>
|
|
17
|
+
<advisor_protocol>
|
|
18
|
+
You have access to an advisor for strategic guidance on risk assessment decisions. The helper auto-detects the best provider.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
22
|
+
--agent qe-risk-assessor \
|
|
23
|
+
--task "Assess quality risk for <target>" \
|
|
24
|
+
--context "Risk factors identified: <list>. Current scoring: <summary>"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Call BEFORE assigning final risk scores and BEFORE recommending mitigation strategies. The advisor can identify risk factors you may have underweighted.
|
|
28
|
+
</advisor_protocol>
|
|
29
|
+
|
|
11
30
|
<identity>
|
|
12
31
|
You are the V3 QE Risk Assessor, the quality risk assessment expert in Agentic QE v3.
|
|
13
32
|
Mission: Assess and quantify quality risks across code, tests, and releases using multi-factor risk models and predictive analytics.
|
|
@@ -16,9 +16,28 @@ dependencies:
|
|
|
16
16
|
mcp_servers:
|
|
17
17
|
- name: agentic-qe
|
|
18
18
|
required: true
|
|
19
|
+
advisor:
|
|
20
|
+
enabled: true
|
|
21
|
+
provider: openrouter
|
|
22
|
+
model: anthropic/claude-opus-4
|
|
23
|
+
max_uses: 3
|
|
24
|
+
redact: strict
|
|
19
25
|
---
|
|
20
26
|
|
|
21
27
|
<qe_agent_definition>
|
|
28
|
+
<advisor_protocol>
|
|
29
|
+
You have access to an advisor for strategic guidance on root cause investigations. The helper auto-detects the best provider.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
33
|
+
--agent qe-root-cause-analyzer \
|
|
34
|
+
--task "Root cause analysis for <failure description>" \
|
|
35
|
+
--context "Evidence gathered: <logs, traces, timeline>. Current hypothesis: <theory>"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Call BEFORE committing to a root cause hypothesis and BEFORE recommending prevention strategies. Early wrong turns in RCA compound — the advisor can challenge your hypothesis.
|
|
39
|
+
</advisor_protocol>
|
|
40
|
+
|
|
22
41
|
<identity>
|
|
23
42
|
You are the V3 QE Root Cause Analyzer, the failure investigation expert in Agentic QE v3.
|
|
24
43
|
Mission: Perform systematic root cause analysis on test failures, production incidents, and defects to identify underlying causes and prevent recurrence.
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-security-auditor
|
|
3
3
|
version: "3.0.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-12"
|
|
5
5
|
description: Security audit specialist with OWASP coverage, compliance validation, and remediation workflows
|
|
6
6
|
v2_compat: null # New in v3
|
|
7
7
|
domain: security-compliance
|
|
8
|
+
advisor:
|
|
9
|
+
enabled: true
|
|
10
|
+
provider: claude
|
|
11
|
+
model: claude-opus-4-6
|
|
12
|
+
max_uses: 3
|
|
13
|
+
redact: strict
|
|
8
14
|
---
|
|
9
15
|
|
|
10
16
|
<qe_agent_definition>
|
|
17
|
+
<advisor_protocol>
|
|
18
|
+
You have access to an advisor for strategic guidance on security audits. The helper auto-detects the provider. Security agents are automatically restricted to direct Anthropic or self-hosted Ollama (OpenRouter is blocked).
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
22
|
+
--agent qe-security-auditor \
|
|
23
|
+
--task "Security audit of <target>" \
|
|
24
|
+
--context "Found so far: <findings summary>"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Call BEFORE committing to a finding severity assessment and BEFORE declaring the audit complete.
|
|
28
|
+
</advisor_protocol>
|
|
29
|
+
|
|
11
30
|
<identity>
|
|
12
31
|
You are the V3 QE Security Auditor, the comprehensive security audit expert in Agentic QE v3.
|
|
13
32
|
Mission: Conduct comprehensive security audits of code, configurations, and infrastructure to identify vulnerabilities, ensure compliance, and recommend remediation strategies.
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qe-test-architect
|
|
3
3
|
version: "3.0.0"
|
|
4
|
-
updated: "2026-
|
|
4
|
+
updated: "2026-04-11"
|
|
5
5
|
description: AI-powered test generation with sublinear optimization, multi-framework support, and self-learning capabilities
|
|
6
6
|
v2_compat:
|
|
7
7
|
name: qe-test-generator
|
|
8
8
|
deprecated_in: "3.0.0"
|
|
9
9
|
removed_in: "4.0.0"
|
|
10
10
|
domain: test-generation
|
|
11
|
+
advisor:
|
|
12
|
+
enabled: true # ADR-092 Phase 0 target agent
|
|
13
|
+
provider: openrouter # Phase 0 default; any HybridRouter provider supported
|
|
14
|
+
model: anthropic/claude-opus-4 # Strong reasoning model via OpenRouter
|
|
15
|
+
max_uses: 3 # Per-task advisor call cap
|
|
16
|
+
budget_usd_per_task: 0.05 # Per-call budget ceiling
|
|
17
|
+
required: false # Phase 5 flips this to true for quality-gate enforcement
|
|
18
|
+
redact: strict # Phase 1 activates; Phase 0 uses happy path
|
|
11
19
|
---
|
|
12
20
|
|
|
13
21
|
<qe_agent_definition>
|
|
@@ -37,6 +45,30 @@ Planned:
|
|
|
37
45
|
- AI-powered test data synthesis at scale
|
|
38
46
|
</implementation_status>
|
|
39
47
|
|
|
48
|
+
<advisor_protocol>
|
|
49
|
+
You have access to an advisor backed by a stronger model. The helper script auto-detects which provider and model to use from the user's environment and project config.
|
|
50
|
+
|
|
51
|
+
To call the advisor:
|
|
52
|
+
```bash
|
|
53
|
+
node .claude/helpers/v3/advisor-call.cjs \
|
|
54
|
+
--agent qe-test-architect \
|
|
55
|
+
--task "Generate pytest tests for <module>" \
|
|
56
|
+
--context "I read the source. It has classes X, Y, Z with deps on A, B."
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If `aqe` is not on PATH, use `npx` instead:
|
|
60
|
+
```bash
|
|
61
|
+
npx -y agentic-qe llm advise --stdin --agent qe-test-architect --json <<< '{"taskDescription":"...","messages":[{"role":"user","content":"..."},{"role":"assistant","content":"..."}]}'
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
WHEN TO CALL:
|
|
65
|
+
- BEFORE writing any test code — after reading the source file(s), call for a strategic plan
|
|
66
|
+
- When stuck — errors recurring, approach not converging
|
|
67
|
+
- Before declaring the task complete — verify your approach
|
|
68
|
+
|
|
69
|
+
The advisor responds in under 100 words with enumerated steps naming concrete classes, methods, and mock targets. Give the advice serious weight. On short tasks (1-2 files, obvious strategy), skip the call.
|
|
70
|
+
</advisor_protocol>
|
|
71
|
+
|
|
40
72
|
<default_to_action>
|
|
41
73
|
Generate tests immediately when provided with source code and requirements.
|
|
42
74
|
Make autonomous decisions about test types and coverage strategies when goals are clear.
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* advisor-call.cjs — Helper script for agent advisor protocol (ADR-092)
|
|
4
|
+
*
|
|
5
|
+
* Agents call this instead of invoking `aqe llm advise` directly.
|
|
6
|
+
* This script:
|
|
7
|
+
* 1. Reads .agentic-qe/config.yaml for advisor settings
|
|
8
|
+
* 2. Detects available API keys in environment
|
|
9
|
+
* 3. Applies security-agent provider restrictions automatically
|
|
10
|
+
* 4. Picks the best available provider/model
|
|
11
|
+
* 5. Calls `aqe llm advise` with the resolved settings
|
|
12
|
+
*
|
|
13
|
+
* Usage from agent definitions:
|
|
14
|
+
* node "$(dirname "$(which aqe)")/../lib/helpers/advisor-call.cjs" \
|
|
15
|
+
* --agent <agent-name> \
|
|
16
|
+
* --task "<task description>" \
|
|
17
|
+
* --context "<what the executor has found so far>"
|
|
18
|
+
*
|
|
19
|
+
* Or simpler (when aqe is installed):
|
|
20
|
+
* aqe advisor call --agent <name> --task "<desc>" --context "<ctx>"
|
|
21
|
+
*
|
|
22
|
+
* Exits 0 with JSON on success, 1-6 with error JSON on failure.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
'use strict';
|
|
26
|
+
|
|
27
|
+
const { execFileSync } = require('child_process');
|
|
28
|
+
const { readFileSync, writeFileSync, mkdirSync, existsSync } = require('fs');
|
|
29
|
+
const { join, dirname } = require('path');
|
|
30
|
+
const { tmpdir } = require('os');
|
|
31
|
+
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Parse arguments
|
|
34
|
+
// ============================================================================
|
|
35
|
+
|
|
36
|
+
const args = process.argv.slice(2);
|
|
37
|
+
function getArg(name) {
|
|
38
|
+
const idx = args.indexOf(`--${name}`);
|
|
39
|
+
return idx >= 0 && idx + 1 < args.length ? args[idx + 1] : null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const agentName = getArg('agent') || 'unknown';
|
|
43
|
+
const taskDescription = getArg('task') || '';
|
|
44
|
+
const context = getArg('context') || '';
|
|
45
|
+
const userMessage = getArg('message') || taskDescription;
|
|
46
|
+
|
|
47
|
+
if (!taskDescription && !userMessage) {
|
|
48
|
+
console.error(JSON.stringify({
|
|
49
|
+
error: 'Usage: advisor-call.cjs --agent <name> --task "<description>" [--context "<findings>"] [--message "<user request>"]',
|
|
50
|
+
exit_code: 1,
|
|
51
|
+
}));
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Detect available providers from environment
|
|
57
|
+
// ============================================================================
|
|
58
|
+
|
|
59
|
+
const availableProviders = [];
|
|
60
|
+
|
|
61
|
+
if (process.env.OPENROUTER_API_KEY) {
|
|
62
|
+
availableProviders.push({
|
|
63
|
+
name: 'openrouter',
|
|
64
|
+
model: 'anthropic/claude-opus-4',
|
|
65
|
+
securityAllowed: false, // third-party proxy
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (process.env.ANTHROPIC_API_KEY) {
|
|
70
|
+
availableProviders.push({
|
|
71
|
+
name: 'claude',
|
|
72
|
+
model: 'claude-opus-4-6',
|
|
73
|
+
securityAllowed: true,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (process.env.OLLAMA_HOST || process.env.OLLAMA_BASE_URL) {
|
|
78
|
+
availableProviders.push({
|
|
79
|
+
name: 'ollama',
|
|
80
|
+
model: process.env.OLLAMA_ADVISOR_MODEL || 'llama3.1:70b',
|
|
81
|
+
securityAllowed: true, // self-hosted
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (availableProviders.length === 0) {
|
|
86
|
+
console.error(JSON.stringify({
|
|
87
|
+
error: 'No advisor provider available. Set one of: OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OLLAMA_HOST',
|
|
88
|
+
exit_code: 4,
|
|
89
|
+
}));
|
|
90
|
+
process.exit(4);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ============================================================================
|
|
94
|
+
// Read project config for advisor overrides
|
|
95
|
+
// ============================================================================
|
|
96
|
+
|
|
97
|
+
let advisorConfig = {};
|
|
98
|
+
const configPaths = [
|
|
99
|
+
join(process.cwd(), '.agentic-qe', 'config.yaml'),
|
|
100
|
+
join(process.cwd(), '.agentic-qe', 'config.json'),
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
for (const cfgPath of configPaths) {
|
|
104
|
+
try {
|
|
105
|
+
if (!existsSync(cfgPath)) continue;
|
|
106
|
+
const raw = readFileSync(cfgPath, 'utf-8');
|
|
107
|
+
|
|
108
|
+
if (cfgPath.endsWith('.yaml') || cfgPath.endsWith('.yml')) {
|
|
109
|
+
// Simple YAML parse for advisor section (no dependency required)
|
|
110
|
+
const advisorMatch = raw.match(/^advisor:\s*\n((?: .+\n)*)/m);
|
|
111
|
+
if (advisorMatch) {
|
|
112
|
+
const lines = advisorMatch[1].split('\n').filter(Boolean);
|
|
113
|
+
for (const line of lines) {
|
|
114
|
+
const kv = line.match(/^\s+(\w+):\s*"?([^"#\n]+)"?/);
|
|
115
|
+
if (kv) advisorConfig[kv[1].trim()] = kv[2].trim();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
const json = JSON.parse(raw);
|
|
120
|
+
if (json.advisor) advisorConfig = json.advisor;
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
} catch {
|
|
124
|
+
// config not available — use defaults
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ============================================================================
|
|
129
|
+
// Select provider based on agent domain + security constraints
|
|
130
|
+
// ============================================================================
|
|
131
|
+
|
|
132
|
+
const isSecurityAgent = /^qe-security|^qe-pentest/.test(agentName);
|
|
133
|
+
|
|
134
|
+
let selectedProvider;
|
|
135
|
+
|
|
136
|
+
// Config override takes priority
|
|
137
|
+
if (advisorConfig.provider) {
|
|
138
|
+
selectedProvider = availableProviders.find(p => p.name === advisorConfig.provider);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Security agents: filter to allowed providers only
|
|
142
|
+
if (!selectedProvider && isSecurityAgent) {
|
|
143
|
+
selectedProvider = availableProviders.find(p => p.securityAllowed);
|
|
144
|
+
if (!selectedProvider) {
|
|
145
|
+
console.error(JSON.stringify({
|
|
146
|
+
error: `Security agent "${agentName}" requires direct Anthropic (ANTHROPIC_API_KEY) or self-hosted Ollama. OpenRouter is not allowed for security agents.`,
|
|
147
|
+
exit_code: 6,
|
|
148
|
+
}));
|
|
149
|
+
process.exit(6);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Default: first available provider (preference: openrouter > claude > ollama)
|
|
154
|
+
if (!selectedProvider) {
|
|
155
|
+
selectedProvider = availableProviders[0];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Config model override
|
|
159
|
+
const model = advisorConfig.model || selectedProvider.model;
|
|
160
|
+
const maxUses = advisorConfig.maxUses || '3';
|
|
161
|
+
const redactMode = advisorConfig.redact || 'strict';
|
|
162
|
+
|
|
163
|
+
// M2 fix: resolve domain-specific advisor prompt from agent name
|
|
164
|
+
const DOMAIN_PROMPTS = {
|
|
165
|
+
'test-generation': 'You are the advisor for a test-generation executor. Respond in under 100 words, enumerated steps. Name concrete classes, methods, dependencies. Focus on: what to mock, priority coverage methods, edge cases the executor will miss, test structure.',
|
|
166
|
+
'security-compliance': 'You are the advisor for a security executor. Respond in under 100 words, enumerated steps. Name concrete attack vectors, CWE IDs, code locations. Focus on: input validation gaps, auth/authz issues, data exposure, dependency CVEs. Prioritize by exploitability.',
|
|
167
|
+
'coverage-analysis': 'You are the advisor for a coverage analysis executor. Respond in under 100 words, enumerated steps. Name concrete uncovered files, functions, branches. Focus on: highest business risk gaps, missed branch types, quick wins.',
|
|
168
|
+
'cross-domain': 'You are the advisor for a fleet commander. Respond in under 100 words, enumerated steps. Focus on: which domains need attention, agent delegation, coordination risks, missing subtasks.',
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
const AGENT_DOMAIN_MAP = {
|
|
172
|
+
'qe-test-architect': 'test-generation',
|
|
173
|
+
'qe-test-generator': 'test-generation',
|
|
174
|
+
'qe-coverage-specialist': 'coverage-analysis',
|
|
175
|
+
'qe-coverage-analyzer': 'coverage-analysis',
|
|
176
|
+
'qe-security-auditor': 'security-compliance',
|
|
177
|
+
'qe-security-scanner': 'security-compliance',
|
|
178
|
+
'qe-pentest-validator': 'security-compliance',
|
|
179
|
+
'qe-fleet-commander': 'cross-domain',
|
|
180
|
+
'qe-queen-coordinator': 'cross-domain',
|
|
181
|
+
'qe-risk-assessor': 'cross-domain',
|
|
182
|
+
'qe-root-cause-analyzer': 'cross-domain',
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const agentDomain = AGENT_DOMAIN_MAP[agentName];
|
|
186
|
+
const domainPrompt = agentDomain ? DOMAIN_PROMPTS[agentDomain] : null;
|
|
187
|
+
|
|
188
|
+
// ============================================================================
|
|
189
|
+
// Write transcript and call aqe llm advise
|
|
190
|
+
// ============================================================================
|
|
191
|
+
|
|
192
|
+
const transcriptDir = join(tmpdir(), 'aqe-advisor');
|
|
193
|
+
mkdirSync(transcriptDir, { recursive: true });
|
|
194
|
+
const transcriptPath = join(transcriptDir, `transcript-${Date.now()}.json`);
|
|
195
|
+
|
|
196
|
+
const transcript = {
|
|
197
|
+
taskDescription,
|
|
198
|
+
messages: [
|
|
199
|
+
{ role: 'user', content: userMessage },
|
|
200
|
+
...(context ? [{ role: 'assistant', content: context }] : []),
|
|
201
|
+
],
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
writeFileSync(transcriptPath, JSON.stringify(transcript));
|
|
205
|
+
|
|
206
|
+
// Find aqe binary
|
|
207
|
+
let aqeBin = 'aqe';
|
|
208
|
+
try {
|
|
209
|
+
execFileSync('which', ['aqe'], { encoding: 'utf-8' });
|
|
210
|
+
} catch {
|
|
211
|
+
// aqe not on PATH — try npx
|
|
212
|
+
aqeBin = 'npx';
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const cliArgs = aqeBin === 'npx'
|
|
216
|
+
? ['aqe', 'llm', 'advise']
|
|
217
|
+
: ['llm', 'advise'];
|
|
218
|
+
|
|
219
|
+
cliArgs.push(
|
|
220
|
+
'--transcript', transcriptPath,
|
|
221
|
+
'--agent', agentName,
|
|
222
|
+
'--provider', selectedProvider.name,
|
|
223
|
+
'--model', model,
|
|
224
|
+
'--redact', redactMode,
|
|
225
|
+
'--json',
|
|
226
|
+
);
|
|
227
|
+
|
|
228
|
+
// M2 fix: pass domain-specific prompt if resolved
|
|
229
|
+
if (domainPrompt) {
|
|
230
|
+
cliArgs.push('--advisor-prompt', domainPrompt);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
try {
|
|
234
|
+
const result = execFileSync(aqeBin, cliArgs, {
|
|
235
|
+
encoding: 'utf-8',
|
|
236
|
+
timeout: 60000,
|
|
237
|
+
env: process.env,
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// Forward the JSON result, filtering out non-JSON lines (e.g., UnifiedMemory init)
|
|
241
|
+
const lines = result.split('\n');
|
|
242
|
+
let inJson = false;
|
|
243
|
+
let jsonDepth = 0;
|
|
244
|
+
const jsonLines = [];
|
|
245
|
+
|
|
246
|
+
for (const line of lines) {
|
|
247
|
+
const trimmed = line.trim();
|
|
248
|
+
if (!inJson && trimmed.startsWith('{')) {
|
|
249
|
+
inJson = true;
|
|
250
|
+
}
|
|
251
|
+
if (inJson) {
|
|
252
|
+
jsonLines.push(line);
|
|
253
|
+
jsonDepth += (trimmed.match(/{/g) || []).length;
|
|
254
|
+
jsonDepth -= (trimmed.match(/}/g) || []).length;
|
|
255
|
+
if (jsonDepth <= 0) break;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
if (jsonLines.length > 0) {
|
|
260
|
+
console.log(jsonLines.join('\n'));
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// Clean up transcript
|
|
264
|
+
try { require('fs').unlinkSync(transcriptPath); } catch {}
|
|
265
|
+
|
|
266
|
+
process.exit(0);
|
|
267
|
+
} catch (err) {
|
|
268
|
+
const exitCode = err.status || 1;
|
|
269
|
+
const stderr = err.stderr || err.message || 'Unknown error';
|
|
270
|
+
|
|
271
|
+
console.error(JSON.stringify({
|
|
272
|
+
error: stderr.slice(0, 500),
|
|
273
|
+
exit_code: exitCode,
|
|
274
|
+
provider: selectedProvider.name,
|
|
275
|
+
model,
|
|
276
|
+
agent: agentName,
|
|
277
|
+
}));
|
|
278
|
+
|
|
279
|
+
// Clean up
|
|
280
|
+
try { require('fs').unlinkSync(transcriptPath); } catch {}
|
|
281
|
+
|
|
282
|
+
process.exit(exitCode);
|
|
283
|
+
}
|
|
@@ -939,9 +939,9 @@
|
|
|
939
939
|
},
|
|
940
940
|
"metadata": {
|
|
941
941
|
"generatedBy": "Agentic QE Fleet",
|
|
942
|
-
"fleetVersion": "3.9.
|
|
942
|
+
"fleetVersion": "3.9.10",
|
|
943
943
|
"manifestVersion": "1.4.0",
|
|
944
|
-
"lastUpdated": "2026-04-
|
|
944
|
+
"lastUpdated": "2026-04-13T00:00:00.000Z",
|
|
945
945
|
"contributors": [
|
|
946
946
|
{
|
|
947
947
|
"name": "@fndlalit",
|