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,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secrets / PII Redaction Pre-Flight
|
|
3
|
+
* ADR-092 Phase 1: mandatory before non-self-hosted advisors see the transcript
|
|
4
|
+
*
|
|
5
|
+
* Scans transcript content for credential patterns, API keys, PII, and other
|
|
6
|
+
* sensitive data. Replaces matches with typed redaction markers. Returns the
|
|
7
|
+
* list of redaction categories applied so the audit log can record them.
|
|
8
|
+
*
|
|
9
|
+
* Three modes:
|
|
10
|
+
* strict — redacts credentials + PII + env values (default)
|
|
11
|
+
* balanced — redacts credentials + env values only
|
|
12
|
+
* off — no redaction (rejected for non-self-hosted providers by MultiModelExecutor)
|
|
13
|
+
*/
|
|
14
|
+
const PATTERNS = [
|
|
15
|
+
{
|
|
16
|
+
category: 'aws_key',
|
|
17
|
+
regex: /\b(AKIA[0-9A-Z]{16})\b/g,
|
|
18
|
+
replacement: '<REDACTED:aws_key>',
|
|
19
|
+
modes: ['strict', 'balanced'],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
category: 'env_value',
|
|
23
|
+
regex: /^([A-Z][A-Z0-9_]{2,})=(.+)$/gm,
|
|
24
|
+
replacement: '$1=<REDACTED:env_value>',
|
|
25
|
+
modes: ['strict', 'balanced'],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
category: 'api_key_header',
|
|
29
|
+
regex: /(Authorization:\s*Bearer\s+)\S+/gi,
|
|
30
|
+
replacement: '$1<REDACTED:api_key>',
|
|
31
|
+
modes: ['strict', 'balanced'],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
category: 'api_key_header',
|
|
35
|
+
regex: /(x-api-key:\s*)\S+/gi,
|
|
36
|
+
replacement: '$1<REDACTED:api_key>',
|
|
37
|
+
modes: ['strict', 'balanced'],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
category: 'private_key',
|
|
41
|
+
regex: /-----BEGIN\s[\w\s]*PRIVATE KEY-----[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----/g,
|
|
42
|
+
replacement: '<REDACTED:private_key>',
|
|
43
|
+
modes: ['strict', 'balanced'],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
category: 'jwt',
|
|
47
|
+
regex: /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,
|
|
48
|
+
replacement: '<REDACTED:jwt>',
|
|
49
|
+
modes: ['strict', 'balanced'],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
category: 'github_token',
|
|
53
|
+
regex: /\b(ghp_|gho_|ghs_|ghr_|github_pat_)[A-Za-z0-9_]{16,}\b/g,
|
|
54
|
+
replacement: '<REDACTED:github_token>',
|
|
55
|
+
modes: ['strict', 'balanced'],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
category: 'gitlab_token',
|
|
59
|
+
regex: /\b(glpat-)[A-Za-z0-9_-]{20,}\b/g,
|
|
60
|
+
replacement: '<REDACTED:gitlab_token>',
|
|
61
|
+
modes: ['strict', 'balanced'],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
category: 'slack_token',
|
|
65
|
+
regex: /\b(xoxb-|xoxp-|xoxs-|xoxa-)[A-Za-z0-9-]{10,}\b/g,
|
|
66
|
+
replacement: '<REDACTED:slack_token>',
|
|
67
|
+
modes: ['strict', 'balanced'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
category: 'stripe_key',
|
|
71
|
+
regex: /\b(sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_)[A-Za-z0-9]{10,}\b/g,
|
|
72
|
+
replacement: '<REDACTED:stripe_key>',
|
|
73
|
+
modes: ['strict', 'balanced'],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
category: 'google_api_key',
|
|
77
|
+
regex: /\bAIzaSy[A-Za-z0-9_-]{33}\b/g,
|
|
78
|
+
replacement: '<REDACTED:google_api_key>',
|
|
79
|
+
modes: ['strict', 'balanced'],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
category: 'aws_session_token',
|
|
83
|
+
regex: /\bASIA[0-9A-Z]{16}\b/g,
|
|
84
|
+
replacement: '<REDACTED:aws_session_token>',
|
|
85
|
+
modes: ['strict', 'balanced'],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
category: 'connection_string',
|
|
89
|
+
regex: /\b(mongodb(\+srv)?|postgres(ql)?|mysql|redis|amqp):\/\/[^\s"']+/gi,
|
|
90
|
+
replacement: '<REDACTED:connection_string>',
|
|
91
|
+
modes: ['strict', 'balanced'],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
category: 'generic_secret',
|
|
95
|
+
regex: /\b(password|secret|token|apikey|api_key|access_key|secret_key)\s*[:=]\s*['"]?(?!ghp_|gho_|ghs_|ghr_|github_pat_|glpat-|xoxb-|xoxp-|xoxs-|xoxa-|sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_|AIzaSy|AKIA|ASIA|<REDACTED:)[^\s'"]{8,}['"]?/gi,
|
|
96
|
+
replacement: '<REDACTED:generic_secret>',
|
|
97
|
+
modes: ['strict', 'balanced'],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
category: 'email',
|
|
101
|
+
regex: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
|
|
102
|
+
replacement: '<REDACTED:pii_email>',
|
|
103
|
+
modes: ['strict'],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
category: 'phone',
|
|
107
|
+
regex: /\b(\+?1?[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,
|
|
108
|
+
replacement: '<REDACTED:pii_phone>',
|
|
109
|
+
modes: ['strict'],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
category: 'ssn',
|
|
113
|
+
regex: /\b\d{3}-\d{2}-\d{4}\b/g,
|
|
114
|
+
replacement: '<REDACTED:pii_ssn>',
|
|
115
|
+
modes: ['strict'],
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
/**
|
|
119
|
+
* Self-hosted providers that may receive unredacted transcripts.
|
|
120
|
+
* All other providers require redaction.
|
|
121
|
+
*/
|
|
122
|
+
const SELF_HOSTED_PROVIDERS = new Set(['ollama']);
|
|
123
|
+
/**
|
|
124
|
+
* Providers allowed for security-sensitive agents.
|
|
125
|
+
* OpenRouter is explicitly excluded (third-party proxy).
|
|
126
|
+
*/
|
|
127
|
+
const SECURITY_AGENT_ALLOWED_PROVIDERS = new Set(['claude', 'ollama']);
|
|
128
|
+
export function isSelfHosted(provider) {
|
|
129
|
+
return SELF_HOSTED_PROVIDERS.has(provider);
|
|
130
|
+
}
|
|
131
|
+
export function isSecurityAgentAllowed(provider) {
|
|
132
|
+
return SECURITY_AGENT_ALLOWED_PROVIDERS.has(provider);
|
|
133
|
+
}
|
|
134
|
+
export function isSecurityAgent(agentName) {
|
|
135
|
+
return /^qe-security|^qe-pentest/.test(agentName);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Redact sensitive patterns from text.
|
|
139
|
+
* Returns the redacted text and a list of categories found.
|
|
140
|
+
*/
|
|
141
|
+
export function redact(text, mode = 'strict') {
|
|
142
|
+
if (mode === 'off') {
|
|
143
|
+
return { text, redactions: [], replacementCount: 0 };
|
|
144
|
+
}
|
|
145
|
+
let result = text;
|
|
146
|
+
const foundCategories = new Set();
|
|
147
|
+
let totalReplacements = 0;
|
|
148
|
+
for (const pattern of PATTERNS) {
|
|
149
|
+
if (!pattern.modes.includes(mode))
|
|
150
|
+
continue;
|
|
151
|
+
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
152
|
+
const matches = result.match(regex);
|
|
153
|
+
if (matches && matches.length > 0) {
|
|
154
|
+
foundCategories.add(pattern.category);
|
|
155
|
+
totalReplacements += matches.length;
|
|
156
|
+
result = result.replace(regex, pattern.replacement);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
text: result,
|
|
161
|
+
redactions: Array.from(foundCategories).sort(),
|
|
162
|
+
replacementCount: totalReplacements,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Validate that the advisor call is allowed given the agent and provider.
|
|
167
|
+
* Throws with a descriptive message if the combination is forbidden.
|
|
168
|
+
*/
|
|
169
|
+
export function validateProviderForAgent(agentName, provider, redactionMode) {
|
|
170
|
+
if (isSecurityAgent(agentName) && !isSecurityAgentAllowed(provider)) {
|
|
171
|
+
throw new AdvisorRedactionError(`Security agent "${agentName}" may only use providers: ${[...SECURITY_AGENT_ALLOWED_PROVIDERS].join(', ')}. ` +
|
|
172
|
+
`Got: "${provider}". OpenRouter is excluded (third-party proxy risk).`, 6);
|
|
173
|
+
}
|
|
174
|
+
if (redactionMode === 'off' && !isSelfHosted(provider)) {
|
|
175
|
+
throw new AdvisorRedactionError(`Redaction mode "off" is only allowed for self-hosted providers (${[...SELF_HOSTED_PROVIDERS].join(', ')}). ` +
|
|
176
|
+
`Got: "${provider}".`, 6);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export class AdvisorRedactionError extends Error {
|
|
180
|
+
exitCode;
|
|
181
|
+
constructor(message, exitCode) {
|
|
182
|
+
super(message);
|
|
183
|
+
this.exitCode = exitCode;
|
|
184
|
+
this.name = 'AdvisorRedactionError';
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=redaction.js.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advisor Strategy Types
|
|
3
|
+
* ADR-092: Provider-Agnostic Advisor Strategy for QE Agents
|
|
4
|
+
*
|
|
5
|
+
* Completes ADR-082's dormant `triggerMultiModel` flag by providing
|
|
6
|
+
* an execution layer for multi-model consultation.
|
|
7
|
+
*/
|
|
8
|
+
import type { ExtendedProviderType } from '../../shared/llm/router/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Transcript slice forwarded to the advisor model.
|
|
11
|
+
* Minimal structure for Phase 0 — real callers pass a synthesized string.
|
|
12
|
+
*/
|
|
13
|
+
export interface AdvisorTranscript {
|
|
14
|
+
/** Executor system prompt */
|
|
15
|
+
systemPrompt?: string;
|
|
16
|
+
/** Conversation history in role/content pairs */
|
|
17
|
+
messages: Array<{
|
|
18
|
+
role: 'user' | 'assistant' | 'system';
|
|
19
|
+
content: string;
|
|
20
|
+
}>;
|
|
21
|
+
/** Optional task description for context */
|
|
22
|
+
taskDescription?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options passed to `MultiModelExecutor.consult()`.
|
|
26
|
+
*/
|
|
27
|
+
export interface ConsultOptions {
|
|
28
|
+
/** Advisor provider (default: 'openrouter' per ADR-092 Phase 0) */
|
|
29
|
+
provider?: ExtendedProviderType;
|
|
30
|
+
/** Advisor model ID (provider-specific, e.g., 'anthropic/claude-opus-4' for openrouter) */
|
|
31
|
+
model?: string;
|
|
32
|
+
/** Max advice length in words (default: 100 per Anthropic published guidance) */
|
|
33
|
+
maxWords?: number;
|
|
34
|
+
/** Agent name for feedback tracking and audit */
|
|
35
|
+
agentName?: string;
|
|
36
|
+
/** Reason the executor wants advice (for trigger attribution) */
|
|
37
|
+
triggerReason?: string;
|
|
38
|
+
/** Session ID for circuit breaker tracking (default: 'default') */
|
|
39
|
+
sessionId?: string;
|
|
40
|
+
/** Redaction mode (default: 'strict'). 'off' rejected for non-self-hosted. */
|
|
41
|
+
redact?: 'strict' | 'balanced' | 'off';
|
|
42
|
+
/** Domain-specific advisor system prompt (overrides the default generic prompt). */
|
|
43
|
+
advisorSystemPrompt?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Structured advisor response returned to the caller.
|
|
47
|
+
* Matches the `aqe llm advise --json` stdout schema in ADR-092.
|
|
48
|
+
*/
|
|
49
|
+
export interface AdvisorResult {
|
|
50
|
+
/** Advice text returned by the advisor model */
|
|
51
|
+
advice: string;
|
|
52
|
+
/** Canonical model ID that produced the advice */
|
|
53
|
+
model: string;
|
|
54
|
+
/** Provider that handled the request */
|
|
55
|
+
provider: ExtendedProviderType;
|
|
56
|
+
/** Tokens sent to the advisor */
|
|
57
|
+
tokensIn: number;
|
|
58
|
+
/** Tokens returned by the advisor */
|
|
59
|
+
tokensOut: number;
|
|
60
|
+
/** Sub-call latency in milliseconds */
|
|
61
|
+
latencyMs: number;
|
|
62
|
+
/** Cost in USD for the advisor sub-call */
|
|
63
|
+
costUsd: number;
|
|
64
|
+
/** sha256 of the advice text (for cache lookups and replay) */
|
|
65
|
+
adviceHash: string;
|
|
66
|
+
/** Trigger attribution (e.g., "tiny_dancer.confidence=0.71") */
|
|
67
|
+
triggerReason: string;
|
|
68
|
+
/** Whether the result came from a cache (Phase 2+) */
|
|
69
|
+
cacheHit: boolean;
|
|
70
|
+
/** Redaction categories applied before dispatch (Phase 1) */
|
|
71
|
+
redactionsApplied: string[];
|
|
72
|
+
/** Remaining advisor calls before circuit breaker trips (Phase 1) */
|
|
73
|
+
circuitBreakerRemaining: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Optional `RoutingOutcome.advisorConsultation` field (Phase 1+).
|
|
77
|
+
* Phase 0 does not yet populate this; kept here so the shape is stable.
|
|
78
|
+
*/
|
|
79
|
+
export interface AdvisorConsultation {
|
|
80
|
+
model: string;
|
|
81
|
+
provider: ExtendedProviderType;
|
|
82
|
+
tokensIn: number;
|
|
83
|
+
tokensOut: number;
|
|
84
|
+
latencyMs: number;
|
|
85
|
+
costUsd: number;
|
|
86
|
+
adviceHash: string;
|
|
87
|
+
/** Did the executor act on the advice? (Phase 3+ — requires outcome feedback) */
|
|
88
|
+
followedAdvice?: boolean;
|
|
89
|
+
triggerReason: string;
|
|
90
|
+
/** Redaction categories applied before dispatch (Phase 1+) */
|
|
91
|
+
redactionsApplied?: string[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The execution layer ADR-082 left unfinished.
|
|
95
|
+
* Consumed by `TinyDancerRouter` when `RouteResult.triggerMultiModel === true`
|
|
96
|
+
* AND an executor is configured on the router.
|
|
97
|
+
*/
|
|
98
|
+
export interface IMultiModelExecutor {
|
|
99
|
+
consult(transcript: AdvisorTranscript, opts?: ConsultOptions): Promise<AdvisorResult>;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advisor Strategy Types
|
|
3
|
+
* ADR-092: Provider-Agnostic Advisor Strategy for QE Agents
|
|
4
|
+
*
|
|
5
|
+
* Completes ADR-082's dormant `triggerMultiModel` flag by providing
|
|
6
|
+
* an execution layer for multi-model consultation.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* to agent pool tiers and handles fallback scenarios.
|
|
8
8
|
*/
|
|
9
9
|
import { type TinyDancerConfig, type RouteResult } from './tiny-dancer-router.js';
|
|
10
|
+
import type { AdvisorResult } from './advisor/types.js';
|
|
10
11
|
import { type ClassifiableTask, type TaskComplexity, type ClaudeModel } from './task-classifier.js';
|
|
11
12
|
import { type RoutingConfig, type AgentTier, type ConfidenceThresholds } from './routing-config.js';
|
|
12
13
|
import type { QETask } from './types.js';
|
|
@@ -36,6 +37,8 @@ export interface QueenRouteDecision {
|
|
|
36
37
|
readonly latencyMs: number;
|
|
37
38
|
/** Original TinyDancer result */
|
|
38
39
|
readonly tinyDancerResult: RouteResult;
|
|
40
|
+
/** Advisor consultation result if triggered (ADR-092) */
|
|
41
|
+
readonly advisorResult?: AdvisorResult;
|
|
39
42
|
/** Timestamp */
|
|
40
43
|
readonly timestamp: Date;
|
|
41
44
|
}
|
|
@@ -65,8 +65,13 @@ export class QueenRouterAdapter {
|
|
|
65
65
|
const startTime = performance.now();
|
|
66
66
|
// Reset daily cost if needed
|
|
67
67
|
this.checkDailyCostReset();
|
|
68
|
-
// Use TinyDancer to classify and route
|
|
68
|
+
// Use TinyDancer to classify and route.
|
|
69
|
+
// ADR-092: triggerMultiModel is surfaced as a signal to spawned agents via
|
|
70
|
+
// spawn capabilities (queen-task-management.ts). Agents consume it via the
|
|
71
|
+
// executor preamble and call `aqe llm advise` when they have a transcript.
|
|
72
|
+
// The routing layer does NOT call the advisor — transcripts don't exist here.
|
|
69
73
|
const tinyDancerResult = await this.tinyDancer.route(task);
|
|
74
|
+
const advisorResult = undefined;
|
|
70
75
|
// Map complexity to agent tiers
|
|
71
76
|
const tiers = mapComplexityToTier(tinyDancerResult.complexity, tinyDancerResult.classification.score, this.routingConfig);
|
|
72
77
|
const primaryTier = tiers[0];
|
|
@@ -94,6 +99,7 @@ export class QueenRouterAdapter {
|
|
|
94
99
|
reasoning,
|
|
95
100
|
latencyMs,
|
|
96
101
|
tinyDancerResult,
|
|
102
|
+
advisorResult,
|
|
97
103
|
timestamp: new Date(),
|
|
98
104
|
};
|
|
99
105
|
// Update cost tracking
|
|
@@ -16,6 +16,7 @@ import { CostTracker } from '../shared/llm/cost-tracker.js';
|
|
|
16
16
|
* Collects and processes routing feedback for continuous learning
|
|
17
17
|
*/
|
|
18
18
|
export declare class RoutingFeedbackCollector {
|
|
19
|
+
private static schemaMigrated;
|
|
19
20
|
private outcomeStore;
|
|
20
21
|
private router;
|
|
21
22
|
private db;
|
|
@@ -45,6 +46,11 @@ export declare class RoutingFeedbackCollector {
|
|
|
45
46
|
* Infer model tier from agent name for analytics.
|
|
46
47
|
* Maps known agent patterns to ADR-026 tiers.
|
|
47
48
|
*/
|
|
49
|
+
/**
|
|
50
|
+
* M1 fix: read advisor consultation sidecar file written by MultiModelExecutor.
|
|
51
|
+
* Uses the task ID or a recent session file as a key.
|
|
52
|
+
*/
|
|
53
|
+
private loadAdvisorConsultationSidecar;
|
|
48
54
|
private inferTier;
|
|
49
55
|
/**
|
|
50
56
|
* Delete oldest rows beyond retention limit
|
|
@@ -114,7 +120,7 @@ export declare class RoutingFeedbackCollector {
|
|
|
114
120
|
qualityScore: number;
|
|
115
121
|
durationMs: number;
|
|
116
122
|
error?: string;
|
|
117
|
-
}): RoutingOutcome;
|
|
123
|
+
}, advisorConsultation?: RoutingOutcome['advisorConsultation']): RoutingOutcome;
|
|
118
124
|
/**
|
|
119
125
|
* Get aggregated performance metrics for an agent
|
|
120
126
|
*/
|
|
@@ -61,6 +61,7 @@ class OutcomeStore {
|
|
|
61
61
|
* Collects and processes routing feedback for continuous learning
|
|
62
62
|
*/
|
|
63
63
|
export class RoutingFeedbackCollector {
|
|
64
|
+
static schemaMigrated = false;
|
|
64
65
|
outcomeStore;
|
|
65
66
|
router = null;
|
|
66
67
|
db = null;
|
|
@@ -125,6 +126,9 @@ export class RoutingFeedbackCollector {
|
|
|
125
126
|
error: row.error || undefined,
|
|
126
127
|
},
|
|
127
128
|
timestamp: new Date(row.created_at),
|
|
129
|
+
advisorConsultation: row.advisor_consultation_json
|
|
130
|
+
? safeJsonParse(row.advisor_consultation_json)
|
|
131
|
+
: undefined,
|
|
128
132
|
};
|
|
129
133
|
this.outcomeStore.add(outcome);
|
|
130
134
|
}
|
|
@@ -140,22 +144,32 @@ export class RoutingFeedbackCollector {
|
|
|
140
144
|
return;
|
|
141
145
|
try {
|
|
142
146
|
const database = this.db.getDatabase();
|
|
143
|
-
// Ensure
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
// Ensure schema columns exist for databases created before ADR-092.
|
|
148
|
+
// Runs once per process via the flag; new databases have columns from
|
|
149
|
+
// unified-memory-schemas.ts CREATE TABLE.
|
|
150
|
+
if (!RoutingFeedbackCollector.schemaMigrated) {
|
|
151
|
+
for (const col of [
|
|
152
|
+
'ALTER TABLE routing_outcomes ADD COLUMN model_tier TEXT',
|
|
153
|
+
'ALTER TABLE routing_outcomes ADD COLUMN advisor_consultation_json TEXT',
|
|
154
|
+
]) {
|
|
155
|
+
try {
|
|
156
|
+
database.prepare(col).run();
|
|
157
|
+
}
|
|
158
|
+
catch { /* column already exists */ }
|
|
159
|
+
}
|
|
160
|
+
RoutingFeedbackCollector.schemaMigrated = true;
|
|
149
161
|
}
|
|
150
|
-
// Extract tier from usedAgent name (e.g. "tier-0" → "booster", "qe-test-architect" → "sonnet")
|
|
151
162
|
const modelTier = this.inferTier(outcome.usedAgent);
|
|
163
|
+
const advisorJson = outcome.advisorConsultation
|
|
164
|
+
? JSON.stringify(outcome.advisorConsultation)
|
|
165
|
+
: null;
|
|
152
166
|
database.prepare(`
|
|
153
167
|
INSERT OR REPLACE INTO routing_outcomes (
|
|
154
168
|
id, task_json, decision_json, used_agent,
|
|
155
169
|
followed_recommendation, success, quality_score,
|
|
156
|
-
duration_ms, error, model_tier
|
|
157
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
158
|
-
`).run(outcome.id, JSON.stringify(outcome.task), JSON.stringify(outcome.decision), outcome.usedAgent, outcome.followedRecommendation ? 1 : 0, outcome.outcome.success ? 1 : 0, outcome.outcome.qualityScore, outcome.outcome.durationMs, outcome.outcome.error || null, modelTier);
|
|
170
|
+
duration_ms, error, model_tier, advisor_consultation_json
|
|
171
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
172
|
+
`).run(outcome.id, JSON.stringify(outcome.task), JSON.stringify(outcome.decision), outcome.usedAgent, outcome.followedRecommendation ? 1 : 0, outcome.outcome.success ? 1 : 0, outcome.outcome.qualityScore, outcome.outcome.durationMs, outcome.outcome.error || null, modelTier, advisorJson);
|
|
159
173
|
this.persistCount++;
|
|
160
174
|
if (this.persistCount % RoutingFeedbackCollector.RETENTION_CLEANUP_INTERVAL === 0) {
|
|
161
175
|
this.enforceRetention(database);
|
|
@@ -169,6 +183,31 @@ export class RoutingFeedbackCollector {
|
|
|
169
183
|
* Infer model tier from agent name for analytics.
|
|
170
184
|
* Maps known agent patterns to ADR-026 tiers.
|
|
171
185
|
*/
|
|
186
|
+
/**
|
|
187
|
+
* M1 fix: read advisor consultation sidecar file written by MultiModelExecutor.
|
|
188
|
+
* Uses the task ID or a recent session file as a key.
|
|
189
|
+
*/
|
|
190
|
+
loadAdvisorConsultationSidecar(task) {
|
|
191
|
+
try {
|
|
192
|
+
const { readdirSync, readFileSync } = require('fs');
|
|
193
|
+
const { join } = require('path');
|
|
194
|
+
const { homedir } = require('os');
|
|
195
|
+
const dir = join(homedir(), '.agentic-qe', 'advisor', 'consultations');
|
|
196
|
+
const files = readdirSync(dir).filter(f => f.endsWith('.json')).sort().reverse();
|
|
197
|
+
if (files.length === 0)
|
|
198
|
+
return undefined;
|
|
199
|
+
// Read the most recent consultation (within last 5 minutes)
|
|
200
|
+
const newest = files[0];
|
|
201
|
+
const data = JSON.parse(readFileSync(join(dir, newest), 'utf-8'));
|
|
202
|
+
const age = Date.now() - new Date(data.timestamp).getTime();
|
|
203
|
+
if (age > 5 * 60 * 1000)
|
|
204
|
+
return undefined;
|
|
205
|
+
return data;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
172
211
|
inferTier(agentName) {
|
|
173
212
|
const lower = agentName.toLowerCase();
|
|
174
213
|
if (lower.includes('booster') || lower === 'tier-0')
|
|
@@ -331,7 +370,13 @@ export class RoutingFeedbackCollector {
|
|
|
331
370
|
/**
|
|
332
371
|
* Record a routing outcome
|
|
333
372
|
*/
|
|
334
|
-
recordOutcome(task, decision, usedAgent, outcome) {
|
|
373
|
+
recordOutcome(task, decision, usedAgent, outcome, advisorConsultation) {
|
|
374
|
+
// M1 fix: if no explicit advisorConsultation passed, check sidecar file
|
|
375
|
+
// written by MultiModelExecutor.persistConsultation()
|
|
376
|
+
let resolvedAdvisor = advisorConsultation;
|
|
377
|
+
if (!resolvedAdvisor) {
|
|
378
|
+
resolvedAdvisor = this.loadAdvisorConsultationSidecar(task);
|
|
379
|
+
}
|
|
335
380
|
const routingOutcome = {
|
|
336
381
|
id: `outcome-${Date.now()}-${randomUUID().slice(0, 8)}`,
|
|
337
382
|
task,
|
|
@@ -340,6 +385,7 @@ export class RoutingFeedbackCollector {
|
|
|
340
385
|
followedRecommendation: usedAgent === decision.recommended,
|
|
341
386
|
outcome,
|
|
342
387
|
timestamp: new Date(),
|
|
388
|
+
advisorConsultation: resolvedAdvisor,
|
|
343
389
|
};
|
|
344
390
|
// Store outcome
|
|
345
391
|
this.outcomeStore.add(routingOutcome);
|
|
@@ -52,6 +52,18 @@ export interface TinyDancerConfig {
|
|
|
52
52
|
enableLearning?: boolean;
|
|
53
53
|
/** Enable verbose logging (default: false) */
|
|
54
54
|
verbose?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Optional MultiModelExecutor that consumes `triggerMultiModel=true`
|
|
57
|
+
* and dispatches an advisor consultation (ADR-092).
|
|
58
|
+
*
|
|
59
|
+
* When omitted, `triggerMultiModel` remains a flag-only signal as before.
|
|
60
|
+
* When provided, `route()` still returns synchronously, but callers can
|
|
61
|
+
* opt in to advisor consultation via `routeWithAdvisor()`.
|
|
62
|
+
*
|
|
63
|
+
* Phase 0: hooked via the explicit `routeWithAdvisor()` method only, to
|
|
64
|
+
* keep the hot-path `route()` API fully backward-compatible.
|
|
65
|
+
*/
|
|
66
|
+
executor?: import('./advisor/types.js').IMultiModelExecutor;
|
|
55
67
|
}
|
|
56
68
|
/**
|
|
57
69
|
* Routing outcome for learning
|
|
@@ -82,8 +94,10 @@ export interface RouterStats {
|
|
|
82
94
|
readonly routesByModel: Record<ClaudeModel, number>;
|
|
83
95
|
/** Routes by complexity */
|
|
84
96
|
readonly routesByComplexity: Record<TaskComplexity, number>;
|
|
85
|
-
/** Multi-model triggers */
|
|
97
|
+
/** Multi-model triggers (triggerMultiModel flag set) */
|
|
86
98
|
readonly multiModelTriggers: number;
|
|
99
|
+
/** Advisor consultations actually executed (ADR-092 — requires executor wired) */
|
|
100
|
+
readonly advisorConsultations: number;
|
|
87
101
|
/** Human review triggers */
|
|
88
102
|
readonly humanReviewTriggers: number;
|
|
89
103
|
/** Average confidence */
|
|
@@ -109,16 +123,36 @@ export declare class TinyDancerRouter {
|
|
|
109
123
|
private readonly securityConfidenceThreshold;
|
|
110
124
|
private readonly enableLearning;
|
|
111
125
|
private readonly verbose;
|
|
126
|
+
private readonly executor?;
|
|
112
127
|
private totalRouted;
|
|
113
128
|
private routesByModel;
|
|
114
129
|
private routesByComplexity;
|
|
115
130
|
private multiModelTriggers;
|
|
116
131
|
private humanReviewTriggers;
|
|
132
|
+
private advisorConsultations;
|
|
117
133
|
private totalConfidence;
|
|
118
134
|
private totalLatencyMs;
|
|
119
135
|
private outcomes;
|
|
120
136
|
private readonly maxOutcomes;
|
|
121
137
|
constructor(config?: TinyDancerConfig);
|
|
138
|
+
/**
|
|
139
|
+
* Whether a MultiModelExecutor is wired (ADR-092).
|
|
140
|
+
* Used by callers to decide whether to call `routeWithAdvisor()`.
|
|
141
|
+
*/
|
|
142
|
+
hasExecutor(): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Route a task and, when `triggerMultiModel === true` AND an executor is
|
|
145
|
+
* configured, consult the advisor and return both the route result and the
|
|
146
|
+
* advisor consultation. Backward-compatible: when no executor is configured,
|
|
147
|
+
* returns `{ route, advisor: undefined }` identical to calling `route()`.
|
|
148
|
+
*
|
|
149
|
+
* ADR-092: this is the execution layer for ADR-082's dormant
|
|
150
|
+
* `triggerMultiModel` flag.
|
|
151
|
+
*/
|
|
152
|
+
routeWithAdvisor(task: QETask | ClassifiableTask, transcript?: import('./advisor/types.js').AdvisorTranscript): Promise<{
|
|
153
|
+
route: RouteResult;
|
|
154
|
+
advisor?: import('./advisor/types.js').AdvisorResult;
|
|
155
|
+
}>;
|
|
122
156
|
/**
|
|
123
157
|
* Route a task to the optimal Claude model
|
|
124
158
|
*
|
|
@@ -34,6 +34,7 @@ export class TinyDancerRouter {
|
|
|
34
34
|
securityConfidenceThreshold;
|
|
35
35
|
enableLearning;
|
|
36
36
|
verbose;
|
|
37
|
+
executor;
|
|
37
38
|
// Statistics tracking
|
|
38
39
|
totalRouted = 0;
|
|
39
40
|
routesByModel = { haiku: 0, sonnet: 0, opus: 0 };
|
|
@@ -42,6 +43,7 @@ export class TinyDancerRouter {
|
|
|
42
43
|
};
|
|
43
44
|
multiModelTriggers = 0;
|
|
44
45
|
humanReviewTriggers = 0;
|
|
46
|
+
advisorConsultations = 0;
|
|
45
47
|
totalConfidence = 0;
|
|
46
48
|
totalLatencyMs = 0;
|
|
47
49
|
// Learning storage
|
|
@@ -53,6 +55,35 @@ export class TinyDancerRouter {
|
|
|
53
55
|
this.securityConfidenceThreshold = config.securityConfidenceThreshold ?? 0.85;
|
|
54
56
|
this.enableLearning = config.enableLearning ?? true;
|
|
55
57
|
this.verbose = config.verbose ?? false;
|
|
58
|
+
this.executor = config.executor;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Whether a MultiModelExecutor is wired (ADR-092).
|
|
62
|
+
* Used by callers to decide whether to call `routeWithAdvisor()`.
|
|
63
|
+
*/
|
|
64
|
+
hasExecutor() {
|
|
65
|
+
return this.executor !== undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Route a task and, when `triggerMultiModel === true` AND an executor is
|
|
69
|
+
* configured, consult the advisor and return both the route result and the
|
|
70
|
+
* advisor consultation. Backward-compatible: when no executor is configured,
|
|
71
|
+
* returns `{ route, advisor: undefined }` identical to calling `route()`.
|
|
72
|
+
*
|
|
73
|
+
* ADR-092: this is the execution layer for ADR-082's dormant
|
|
74
|
+
* `triggerMultiModel` flag.
|
|
75
|
+
*/
|
|
76
|
+
async routeWithAdvisor(task, transcript) {
|
|
77
|
+
const route = await this.route(task);
|
|
78
|
+
if (!route.triggerMultiModel || !this.executor || !transcript) {
|
|
79
|
+
return { route };
|
|
80
|
+
}
|
|
81
|
+
const advisor = await this.executor.consult(transcript, {
|
|
82
|
+
agentName: task.agentId ?? task.id ?? 'unknown',
|
|
83
|
+
triggerReason: `tiny_dancer.confidence=${route.confidence.toFixed(2)}<${this.confidenceThreshold}`,
|
|
84
|
+
});
|
|
85
|
+
this.advisorConsultations++;
|
|
86
|
+
return { route, advisor };
|
|
56
87
|
}
|
|
57
88
|
/**
|
|
58
89
|
* Route a task to the optimal Claude model
|
|
@@ -259,6 +290,7 @@ export class TinyDancerRouter {
|
|
|
259
290
|
routesByModel: { ...this.routesByModel },
|
|
260
291
|
routesByComplexity: { ...this.routesByComplexity },
|
|
261
292
|
multiModelTriggers: this.multiModelTriggers,
|
|
293
|
+
advisorConsultations: this.advisorConsultations,
|
|
262
294
|
humanReviewTriggers: this.humanReviewTriggers,
|
|
263
295
|
avgConfidence: this.totalRouted > 0
|
|
264
296
|
? this.totalConfidence / this.totalRouted
|
|
@@ -311,6 +343,7 @@ export class TinyDancerRouter {
|
|
|
311
343
|
this.routesByModel = { haiku: 0, sonnet: 0, opus: 0 };
|
|
312
344
|
this.routesByComplexity = { simple: 0, moderate: 0, complex: 0, critical: 0 };
|
|
313
345
|
this.multiModelTriggers = 0;
|
|
346
|
+
this.advisorConsultations = 0;
|
|
314
347
|
this.humanReviewTriggers = 0;
|
|
315
348
|
this.totalConfidence = 0;
|
|
316
349
|
this.totalLatencyMs = 0;
|
package/dist/routing/types.d.ts
CHANGED
|
@@ -170,6 +170,18 @@ export interface RoutingOutcome {
|
|
|
170
170
|
};
|
|
171
171
|
/** Timestamp */
|
|
172
172
|
readonly timestamp: Date;
|
|
173
|
+
/** Advisor consultation details if an advisor was consulted (ADR-092 Phase 1) */
|
|
174
|
+
readonly advisorConsultation?: {
|
|
175
|
+
model: string;
|
|
176
|
+
provider: string;
|
|
177
|
+
tokensIn: number;
|
|
178
|
+
tokensOut: number;
|
|
179
|
+
latencyMs: number;
|
|
180
|
+
costUsd: number;
|
|
181
|
+
adviceHash: string;
|
|
182
|
+
triggerReason: string;
|
|
183
|
+
redactionsApplied?: string[];
|
|
184
|
+
};
|
|
173
185
|
}
|
|
174
186
|
/**
|
|
175
187
|
* Aggregated agent performance metrics
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.10",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.9");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-BSES27JE.js";import"./chunk-ZTI3BATG.js";import"./chunk-DNS7DP2O.js";import"./chunk-MWZN4PYF.js";import"./chunk-BVOGMK6N.js";import"./chunk-UYKIPSRX.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.9");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-3NU4C62D.js";import"./chunk-Z7AFNZMI.js";import"./chunk-5HM66R4W.js";import"./chunk-NQ3WHTLT.js";import"./chunk-65XCVUP7.js";import"./chunk-VWHALAEO.js";import"./chunk-3FAEM5M7.js";import"./chunk-5DU4YW2S.js";import"./chunk-4CDSEZD6.js";import"./chunk-XZ2JYMFT.js";import"./chunk-3F666FYP.js";import"./chunk-2X7LDTVD.js";import"./chunk-FGW5W3YK.js";import"./chunk-MUIJVPGB.js";import"./chunk-PYTXZMXR.js";import"./chunk-VRH3YLO2.js";import"./chunk-UEKDDUGV.js";import"./chunk-MWZN4PYF.js";import"./chunk-PEEN4AAK.js";import"./chunk-BVOGMK6N.js";import"./chunk-FTF34UME.js";import"./chunk-5SWY75MJ.js";import"./chunk-OEZA7Q2Z.js";import"./chunk-WDWIJDQR.js";import"./chunk-JIPU4YQK.js";import"./chunk-QZMBJ67L.js";import"./chunk-MXMKHI2I.js";import"./chunk-QMNAELZG.js";import"./chunk-QTYTM7C7.js";import"./chunk-NLKJI73E.js";import"./chunk-UYKIPSRX.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.9");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-ECNPBD4Y.js";import"./chunk-2HFPJPQW.js";import"./chunk-MUIJVPGB.js";import"./chunk-PYTXZMXR.js";import"./chunk-VRH3YLO2.js";import"./chunk-UEKDDUGV.js";import"./chunk-MWZN4PYF.js";import"./chunk-BVOGMK6N.js";import"./chunk-FTF34UME.js";import"./chunk-5SWY75MJ.js";import"./chunk-OEZA7Q2Z.js";import"./chunk-WDWIJDQR.js";import"./chunk-JIPU4YQK.js";import"./chunk-QZMBJ67L.js";import"./chunk-MXMKHI2I.js";import"./chunk-QMNAELZG.js";import"./chunk-QTYTM7C7.js";import"./chunk-NLKJI73E.js";import"./chunk-UYKIPSRX.js";export{f as MCPToolBase,e as defaultToolLogger,d as getMemoryBackend,b as getSharedMemoryBackend,a as registerRvfResetFn,c as resetSharedMemoryBackend};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.9.9");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-SVLO2DVL.js";import"./chunk-ECNPBD4Y.js";import"./chunk-2HFPJPQW.js";import"./chunk-MUIJVPGB.js";import"./chunk-PYTXZMXR.js";import"./chunk-VRH3YLO2.js";import"./chunk-UEKDDUGV.js";import"./chunk-MWZN4PYF.js";import"./chunk-BVOGMK6N.js";import"./chunk-FTF34UME.js";import"./chunk-5SWY75MJ.js";import"./chunk-OEZA7Q2Z.js";import"./chunk-WDWIJDQR.js";import"./chunk-JIPU4YQK.js";import"./chunk-QZMBJ67L.js";import"./chunk-MXMKHI2I.js";import"./chunk-QMNAELZG.js";import"./chunk-QTYTM7C7.js";import"./chunk-NLKJI73E.js";import"./chunk-UYKIPSRX.js";export{a as BrowserWorkflowTool};
|