agentic-qe 3.11.3 → 3.11.5
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/hooks/aqe-hook.cjs +44 -10
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +106 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/audit/witness-chain.d.ts +25 -0
- package/dist/audit/witness-chain.js +69 -22
- package/dist/audit/witness-key-manager.d.ts +11 -0
- package/dist/audit/witness-key-manager.js +24 -0
- package/dist/cli/brain-commands.js +2 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-KNM5R47J.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-BFRW7HEU.js → agent-booster-wasm-CSTBLNYZ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-ZVC3VFPC.js → agent-handler-M4W4GTXN.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-3WU3CVSX.js → agent-memory-branch-VGXFYLSQ.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-MXPJLVR3.js +2 -0
- package/dist/cli/chunks/{arena-QMRLNQUC.js → arena-FKSD3LLM.js} +4 -4
- package/dist/cli/chunks/{arena-JMVTWWG5.js → arena-IQBRGWAG.js} +2 -2
- package/dist/cli/chunks/audit-7NSGRR4Z.js +3 -0
- package/dist/cli/chunks/base-X4EXQ2AS.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-EBRXKEX5.js → better-sqlite3-2KR4LQRU.js} +2 -2
- package/dist/cli/chunks/brain-handler-M6A3UB66.js +89 -0
- package/dist/cli/chunks/{branch-enumerator-CJJG6X3I.js → branch-enumerator-2JGKY4BB.js} +2 -2
- package/dist/cli/chunks/{browser-LI2CDWVR.js → browser-J43WQPJL.js} +2 -2
- package/dist/cli/chunks/browser-workflow-4HX6RP5F.js +2 -0
- package/dist/cli/chunks/{chunk-DS7AZD26.js → chunk-26WEI3P4.js} +2 -2
- package/dist/cli/chunks/{chunk-OVEG5MEL.js → chunk-2XPMATEK.js} +2 -2
- package/dist/cli/chunks/{chunk-36HTS4EP.js → chunk-2XQHG56O.js} +2 -2
- package/dist/cli/chunks/{chunk-CGKHG46K.js → chunk-354367AP.js} +2 -2
- package/dist/cli/chunks/{chunk-FPKKKUWF.js → chunk-37ZUF5NX.js} +1 -1
- package/dist/cli/chunks/{chunk-H7Y43HBQ.js → chunk-3I4TCMOJ.js} +1 -1
- package/dist/cli/chunks/{chunk-WV66MXJI.js → chunk-3JF5A72M.js} +2 -2
- package/dist/cli/chunks/{chunk-MX5FMAY5.js → chunk-3LY7OCSO.js} +1 -1
- package/dist/cli/chunks/{chunk-KHUN65Q3.js → chunk-3V36WMIO.js} +1 -1
- package/dist/cli/chunks/{chunk-VFEU4JM4.js → chunk-3WR35GFF.js} +2 -2
- package/dist/cli/chunks/{chunk-A43MKBSX.js → chunk-4LODYRNV.js} +2 -2
- package/dist/cli/chunks/{chunk-3E3PSEC5.js → chunk-4MHN7JWC.js} +3 -3
- package/dist/cli/chunks/chunk-4QOI5JS7.js +14 -0
- package/dist/cli/chunks/{chunk-LKLWIP4Z.js → chunk-4RTWPR3X.js} +1 -1
- package/dist/cli/chunks/chunk-4XJ2A3HY.js +65 -0
- package/dist/cli/chunks/{chunk-PMHSTMHV.js → chunk-4Y3LGBKJ.js} +3 -3
- package/dist/cli/chunks/{chunk-SFDBIO64.js → chunk-52U5BFZP.js} +2 -2
- package/dist/cli/chunks/{chunk-YPRM6ZFL.js → chunk-53YOYZW5.js} +2 -2
- package/dist/cli/chunks/{chunk-REZ2GZQ3.js → chunk-5WMU7XCF.js} +1 -1
- package/dist/cli/chunks/{chunk-VUEYLW5P.js → chunk-62OTU2AP.js} +2 -2
- package/dist/cli/chunks/{chunk-3XLGXCSX.js → chunk-62UM7Q5N.js} +1 -1
- package/dist/cli/chunks/{chunk-DZZ4AJQI.js → chunk-6Q57K4YD.js} +2 -2
- package/dist/cli/chunks/chunk-6R3YOAKO.js +2 -0
- package/dist/cli/chunks/chunk-6T65OKUM.js +2 -0
- package/dist/cli/chunks/{chunk-VTDWQ7WI.js → chunk-7BCRULCP.js} +2 -2
- package/dist/cli/chunks/{chunk-XCSEJQXR.js → chunk-7DTMENY6.js} +2 -2
- package/dist/cli/chunks/{chunk-N2K2EQFH.js → chunk-7KXPNNMR.js} +2 -2
- package/dist/cli/chunks/{chunk-XKUN5PDH.js → chunk-7P6X4BFO.js} +3 -3
- package/dist/cli/chunks/{chunk-3CBYKKRW.js → chunk-7YSBATSN.js} +2 -2
- package/dist/cli/chunks/{chunk-ZDPQB67L.js → chunk-ABU64UWB.js} +1 -1
- package/dist/cli/chunks/{chunk-IJHPZMEQ.js → chunk-AF6P5RWY.js} +2 -2
- package/dist/cli/chunks/{chunk-7S7QF4HJ.js → chunk-AGJOGUP5.js} +1 -1
- package/dist/cli/chunks/{chunk-EHEFI6LR.js → chunk-AL5VJJN4.js} +1 -1
- package/dist/cli/chunks/{chunk-Q2A2XQGF.js → chunk-AOQYORVA.js} +2 -2
- package/dist/cli/chunks/{chunk-6WWNK67C.js → chunk-AOXJFDH5.js} +180 -176
- package/dist/cli/chunks/{chunk-SWRGPCZ2.js → chunk-AXKWV5NF.js} +4 -4
- package/dist/cli/chunks/{chunk-3BREKEL5.js → chunk-B2VBDMDI.js} +2 -2
- package/dist/cli/chunks/{chunk-RXN5DWVM.js → chunk-BJLA2IX7.js} +2 -2
- package/dist/cli/chunks/{chunk-DPYNXEBC.js → chunk-BLPWJQTY.js} +2 -2
- package/dist/cli/chunks/{chunk-SMHYPPO6.js → chunk-BTLUWH4R.js} +2 -2
- package/dist/cli/chunks/{chunk-PUK5NE47.js → chunk-C4EZNOWK.js} +1 -1
- package/dist/cli/chunks/{chunk-ATFADWGD.js → chunk-C5C4W572.js} +2 -2
- package/dist/cli/chunks/{chunk-WTKT2AD3.js → chunk-CDJP6COA.js} +2 -2
- package/dist/cli/chunks/{chunk-G6MPXBCD.js → chunk-CKOF27L7.js} +2 -2
- package/dist/cli/chunks/{chunk-BQ5EJPK3.js → chunk-D45QLJEL.js} +1 -1
- package/dist/cli/chunks/{chunk-WCVZHXWL.js → chunk-DFRRWOEX.js} +2 -2
- package/dist/cli/chunks/{chunk-PSL53AQ4.js → chunk-DLBVADWQ.js} +92 -92
- package/dist/cli/chunks/{chunk-HRD5I7ES.js → chunk-DPL762HU.js} +1 -1
- package/dist/cli/chunks/{chunk-7QIYYYUE.js → chunk-DVW66FPU.js} +1 -1
- package/dist/cli/chunks/{chunk-ABD6JBNO.js → chunk-EDOGRFAG.js} +1 -1
- package/dist/cli/chunks/{chunk-7SBMTSGY.js → chunk-EEKG35K5.js} +5 -5
- package/dist/cli/chunks/{chunk-PW4GGJMP.js → chunk-EK3HPH6A.js} +1 -1
- package/dist/cli/chunks/{chunk-QPMISAWB.js → chunk-FGD6HINU.js} +1 -1
- package/dist/cli/chunks/{chunk-SLU35IDJ.js → chunk-FGSIID5C.js} +2 -2
- package/dist/cli/chunks/{chunk-DNOBN3IR.js → chunk-FHTYEAQ3.js} +2 -2
- package/dist/cli/chunks/{chunk-S2T2BXUL.js → chunk-FII3WCCY.js} +2 -2
- package/dist/cli/chunks/{chunk-77QJQRL2.js → chunk-FIPKIIMS.js} +2 -2
- package/dist/cli/chunks/{chunk-WYJFVSEB.js → chunk-FMNXHVIN.js} +2 -2
- package/dist/cli/chunks/{chunk-FZLCKIPP.js → chunk-G2ZIJZJ7.js} +2 -2
- package/dist/cli/chunks/{chunk-L6PH7JIE.js → chunk-GODAWJMZ.js} +2 -2
- package/dist/cli/chunks/{chunk-KTYESESI.js → chunk-GW6XWMX2.js} +2 -2
- package/dist/cli/chunks/{chunk-AC6OZTY4.js → chunk-HC6KTVFR.js} +2 -2
- package/dist/cli/chunks/{chunk-EXCU4J7T.js → chunk-HJWT4KME.js} +1 -1
- package/dist/cli/chunks/{chunk-GBCDJJWH.js → chunk-I3ANRYQ6.js} +2 -2
- package/dist/cli/chunks/{chunk-KXRI4MR3.js → chunk-I3NWKPXJ.js} +2 -2
- package/dist/cli/chunks/chunk-IBDQWKI3.js +2 -0
- package/dist/cli/chunks/{chunk-7FVWETN4.js → chunk-IU5RSN6M.js} +2 -2
- package/dist/cli/chunks/{chunk-L44XXD3X.js → chunk-J5XDKVI7.js} +2 -2
- package/dist/cli/chunks/{chunk-NJ2RY4OL.js → chunk-J6PFPY7V.js} +2 -2
- package/dist/cli/chunks/{chunk-27MMZQ7X.js → chunk-JATLFS6A.js} +1 -1
- package/dist/cli/chunks/{chunk-SIAJP3YA.js → chunk-JBKZ5TUM.js} +2 -2
- package/dist/cli/chunks/{chunk-PLQADRA6.js → chunk-JDSHUECG.js} +2 -2
- package/dist/cli/chunks/chunk-K4C25BWV.js +24 -0
- package/dist/cli/chunks/{chunk-UFZCHVLH.js → chunk-K4I7UIU5.js} +1 -1
- package/dist/cli/chunks/{chunk-6F43POT6.js → chunk-KP3R2M2G.js} +1 -1
- package/dist/cli/chunks/chunk-KQVIWE3W.js +2 -0
- package/dist/cli/chunks/{chunk-JWTMVC6E.js → chunk-KVVJVMDM.js} +2 -2
- package/dist/cli/chunks/{chunk-EZ4GKHSI.js → chunk-LOE2JETO.js} +2 -2
- package/dist/cli/chunks/{chunk-O7ZDQ5FF.js → chunk-LPR2R3AN.js} +3 -3
- package/dist/cli/chunks/{chunk-AKOGQT3A.js → chunk-M6FW56MV.js} +2 -2
- package/dist/cli/chunks/{chunk-NBOEXSV2.js → chunk-MCHEUSY4.js} +1 -1
- package/dist/cli/chunks/{chunk-B7XPSXK6.js → chunk-MEIU7457.js} +2 -2
- package/dist/cli/chunks/{chunk-3FOFPGHH.js → chunk-MHMQ6MCT.js} +2 -2
- package/dist/cli/chunks/{chunk-6JR2RSY2.js → chunk-MIU5RUBJ.js} +2 -2
- package/dist/cli/chunks/{chunk-QCCXH5DK.js → chunk-MMEXHZUC.js} +37 -12
- package/dist/cli/chunks/{chunk-LW5TUN5F.js → chunk-MTBGOWJA.js} +2 -2
- package/dist/cli/chunks/{chunk-JVXPKHND.js → chunk-NCSXLMDL.js} +77 -27
- package/dist/cli/chunks/{chunk-WLLGPGQY.js → chunk-O7J54OHN.js} +1 -1
- package/dist/cli/chunks/{chunk-ZM7WOA3K.js → chunk-OGNTCZKK.js} +1 -1
- package/dist/cli/chunks/{chunk-CYJ6O5VZ.js → chunk-OS2HHJTM.js} +2 -2
- package/dist/cli/chunks/{chunk-242B625Q.js → chunk-OS62Y77J.js} +2 -2
- package/dist/cli/chunks/{chunk-CLZ5RQVA.js → chunk-PVDXNQPL.js} +2 -2
- package/dist/cli/chunks/{chunk-PUUGIBFF.js → chunk-PW72M2FE.js} +2 -2
- package/dist/cli/chunks/{chunk-RWUGXU2K.js → chunk-Q5TR6ETB.js} +22 -22
- package/dist/cli/chunks/{chunk-CCDGNJZX.js → chunk-QKK7VBVB.js} +2 -2
- package/dist/cli/chunks/{chunk-BHZI6PDR.js → chunk-RFLHPLET.js} +1 -1
- package/dist/cli/chunks/{chunk-KULBMV6K.js → chunk-RJN2RM76.js} +2 -2
- package/dist/cli/chunks/{chunk-LGEZ3ZJX.js → chunk-RKXZLTWR.js} +2 -2
- package/dist/cli/chunks/{chunk-OFMVC6P3.js → chunk-SE3JFUKP.js} +1 -1
- package/dist/cli/chunks/{chunk-S7KDHA6P.js → chunk-SK754ZSH.js} +4 -4
- package/dist/cli/chunks/{chunk-OQGELUM2.js → chunk-SO6G4IX3.js} +2 -2
- package/dist/cli/chunks/{chunk-5746QYRF.js → chunk-SUL3I6QZ.js} +2 -2
- package/dist/cli/chunks/{chunk-22CUJA33.js → chunk-TBT3OFRW.js} +2 -2
- package/dist/cli/chunks/{chunk-26KHL4VO.js → chunk-TEIWJ3GJ.js} +1 -1
- package/dist/cli/chunks/{chunk-SFGBC5RP.js → chunk-TRNBQFFG.js} +8 -20
- package/dist/cli/chunks/{chunk-UTGW75AZ.js → chunk-TTJJ4DQE.js} +2 -2
- package/dist/cli/chunks/{chunk-H6YFMUFG.js → chunk-UBI2EOS3.js} +1 -1
- package/dist/cli/chunks/{chunk-GCIL7PK7.js → chunk-UBY322ED.js} +2 -2
- package/dist/cli/chunks/{chunk-P4UGVVVX.js → chunk-UORTQXJ2.js} +1 -1
- package/dist/cli/chunks/{chunk-BFBZFUBP.js → chunk-URP75DL4.js} +1 -1
- package/dist/cli/chunks/chunk-V6NAB5UZ.js +2 -0
- package/dist/cli/chunks/{chunk-DZ7PWB6E.js → chunk-VMFAANWX.js} +2 -2
- package/dist/cli/chunks/{chunk-6KKKPVOF.js → chunk-VMWRMINE.js} +1 -1
- package/dist/cli/chunks/{chunk-ECGASTG7.js → chunk-VN2HHBZN.js} +2 -2
- package/dist/cli/chunks/{chunk-6GVRP64A.js → chunk-W72FJA2H.js} +2 -2
- package/dist/cli/chunks/chunk-W7TYKPLY.js +27 -0
- package/dist/cli/chunks/{chunk-2OUXYSQV.js → chunk-WHHQIL4F.js} +2 -2
- package/dist/cli/chunks/{chunk-RRSUW2TK.js → chunk-WMZ2QGGS.js} +2 -2
- package/dist/cli/chunks/{chunk-54TDOQAH.js → chunk-WPSK237F.js} +3 -3
- package/dist/cli/chunks/{chunk-LMA6KEZH.js → chunk-XKQY2Z3Q.js} +1 -1
- package/dist/cli/chunks/{chunk-UMWYL37S.js → chunk-XLT3FYS7.js} +2 -2
- package/dist/cli/chunks/{chunk-5EW36WTI.js → chunk-XT4TDLOB.js} +2 -2
- package/dist/cli/chunks/{chunk-7UOH55UT.js → chunk-Y25PO65W.js} +2 -2
- package/dist/cli/chunks/{chunk-ED7MD6OI.js → chunk-Y6DWJKHU.js} +3 -3
- package/dist/cli/chunks/{chunk-A4NYOH7P.js → chunk-YBPLJRVT.js} +2 -2
- package/dist/cli/chunks/{chunk-BA7PJS3Y.js → chunk-YFCULQBP.js} +2 -2
- package/dist/cli/chunks/{chunk-B65CRJN6.js → chunk-YGVDP6X7.js} +1 -1
- package/dist/cli/chunks/chunk-YR2JKBZO.js +2 -0
- package/dist/cli/chunks/{chunk-FJRRXCIS.js → chunk-YZSTZUGJ.js} +1 -1
- package/dist/cli/chunks/{chunk-H2YOWAEB.js → chunk-ZG5UAEEO.js} +2 -2
- package/dist/cli/chunks/{chunk-MU36VPXV.js → chunk-ZLBY25MB.js} +1 -1
- package/dist/cli/chunks/chunk-ZMPAM4DY.js +2 -0
- package/dist/cli/chunks/{chunk-4ITHKHR5.js → chunk-ZPP57WQU.js} +2 -2
- package/dist/cli/chunks/{chunk-B6USJW5E.js → chunk-ZXEWTZFR.js} +1 -1
- package/dist/cli/chunks/{ci-JW4O2J3W.js → ci-CBNVLOOQ.js} +2 -2
- package/dist/cli/chunks/{ci-output-JNXJV4B2.js → ci-output-I4HY2FYJ.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-XDD4KUGR.js → circuit-breaker-5VRBKGWL.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-L6IZOGYZ.js → claude-flow-setup-XPJPKHIO.js} +2 -2
- package/dist/cli/chunks/client-AHXNCOHK.js +2 -0
- package/dist/cli/chunks/{cline-installer-PK5SMN2B.js → cline-installer-OFRDUUWZ.js} +2 -2
- package/dist/cli/chunks/{code-ZDVX3SQH.js → code-QIZQVB3E.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-VXZNKEU5.js → code-index-extractor-LMUUWEX4.js} +2 -2
- package/dist/cli/chunks/{codex-installer-OXKSIX7H.js → codex-installer-N2MKIZ2S.js} +2 -2
- package/dist/cli/chunks/{completions-VRFFK223.js → completions-Y36S3C5J.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-FTIMV74J.js → complexity-analyzer-73YS3WUD.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-KTYBBPN4.js → continuedev-installer-SAOTP6J3.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-WDC3YNUR.js → copilot-installer-A4HXF6HE.js} +2 -2
- package/dist/cli/chunks/core-handlers-EEFLLMAZ.js +2 -0
- package/dist/cli/chunks/{cost-tracker-6MH4H33B.js → cost-tracker-P26XUVZS.js} +2 -2
- package/dist/cli/chunks/{coverage-NHATLNS4.js → coverage-HVNHSMVJ.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-LT3H4SNJ.js +2 -0
- package/dist/cli/chunks/{cursor-installer-VQSUJDFB.js → cursor-installer-46BQFTYZ.js} +2 -2
- package/dist/cli/chunks/{daemon-3VAOEKQW.js → daemon-Y54O3FLT.js} +3 -3
- package/dist/cli/chunks/daemon-YE7K2AZF.js +10 -0
- package/dist/cli/chunks/{dag-attention-scheduler-HZ6OGYIH.js → dag-attention-scheduler-ETA7YY52.js} +2 -2
- package/dist/cli/chunks/{detect-CGU3SC63.js → detect-5WLQ2J3E.js} +2 -2
- package/dist/cli/chunks/{dist-node-DIBQ7PTA.js → dist-node-45WW6I7J.js} +2 -2
- package/dist/cli/chunks/{domain-handler-DCMGAYXS.js → domain-handler-J7DQV74M.js} +2 -2
- package/dist/cli/chunks/domain-transfer-GD2EGQVR.js +2 -0
- package/dist/cli/chunks/dream-4K3BK4IG.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-7247LAU3.js → embed-and-insert-pattern-JELNEA2D.js} +2 -2
- package/dist/cli/chunks/{eval-6KR7TFOK.js → eval-A4PA5G2U.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-IIOR6RVV.js → experience-capture-middleware-MLHTYWTA.js} +3 -3
- package/dist/cli/chunks/{fast-paths-M7OGD4ZI.js → fast-paths-QYDTITRV.js} +2 -2
- package/dist/cli/chunks/{feature-flags-U75KFIGH.js → feature-flags-H4MSY26Z.js} +2 -2
- package/dist/cli/chunks/{feature-flags-GGUXHRJI.js → feature-flags-MQYYRHIK.js} +2 -2
- package/dist/cli/chunks/{file-discovery-V52AYEB7.js → file-discovery-RMFVJNGL.js} +2 -2
- package/dist/cli/chunks/{fleet-2UH72CK4.js → fleet-7KZQOTAC.js} +4 -4
- package/dist/cli/chunks/{gnn-wrapper-J2GDLT3P.js → gnn-wrapper-NMZFTGVH.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-QIDQHRXT.js → heartbeat-handler-7BQDK7MG.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-IMPPGQUK.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-EIAA6R2L.js +2 -0
- package/dist/cli/chunks/hnsw-index-ZXXP6AXZ.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-IU62PIY5.js → hnsw-legacy-bridge-TPPGBPKF.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-QNZJOJAB.js → hnswlib-node-E6NSZPP2.js} +2 -2
- package/dist/cli/chunks/{hooks-ZI4D3ATS.js → hooks-CYZIUYSH.js} +48 -52
- package/dist/cli/chunks/hybrid-router-LXWG4MLH.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6JEERAGA.js → hypergraph-engine-WC6DMTYQ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YMDGYCB6.js → hypergraph-handler-GTGA3TXJ.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-TP5LRFYH.js +2 -0
- package/dist/cli/chunks/{init-handler-N57NW3QI.js → init-handler-N3Z72JNI.js} +6 -6
- package/dist/cli/chunks/init-wizard-AIOA5KOY.js +2 -0
- package/dist/cli/chunks/kernel-SQALRU6Q.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-7ABTGXJ5.js → kilocode-installer-FUX4V6II.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-2JFOHLVI.js → kiro-installer-ZSNZT7ZR.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-JFVT6SNN.js +2 -0
- package/dist/cli/chunks/{learning-3P3ZXRGD.js → learning-UQY64COU.js} +3 -3
- package/dist/cli/chunks/{llm-router-AWB2KHDW.js → llm-router-CMHGGX6N.js} +4 -4
- package/dist/cli/chunks/llm-router-service-XHFKTH3I.js +2 -0
- package/dist/cli/chunks/{load-GGVBCBGX.js → load-E6WH4QN2.js} +2 -2
- package/dist/cli/chunks/load-test-JEIFJKNN.js +2 -0
- package/dist/cli/chunks/{mcp-33NHIBN3.js → mcp-UM5VTW6N.js} +2 -2
- package/dist/cli/chunks/{memory-IVAQS4OW.js → memory-7Q3XDUE5.js} +5 -5
- package/dist/cli/chunks/memory-backend-NT7I37CP.js +2 -0
- package/dist/cli/chunks/memory-handlers-746D7NE7.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-NWQY6IN2.js → multi-model-executor-LZENWVRR.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-FBB4JOEV.js → opencode-installer-O2JAIPLF.js} +2 -2
- package/dist/cli/chunks/{orchestrator-GDAXR7DH.js → orchestrator-DKZWXDRI.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-6QU6WHDW.js +2 -0
- package/dist/cli/chunks/pattern-usage-recorder-CLUL4M55.js +2 -0
- package/dist/cli/chunks/{pipeline-VIKAOIBE.js → pipeline-2VDLTR5J.js} +2 -2
- package/dist/cli/chunks/{platform-FFVP36LH.js → platform-4N4Q5XYX.js} +2 -2
- package/dist/cli/chunks/{plugin-TI6QOLXH.js → plugin-GY5AU5CS.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-AZRNI2OL.js → prime-radiant-advanced-wasm-TQ4DKDZS.js} +2 -2
- package/dist/cli/chunks/protocol-executor-GT2MZYUU.js +2 -0
- package/dist/cli/chunks/{protocol-handler-J4EA34B3.js → protocol-handler-T3LZ3WRG.js} +2 -2
- package/dist/cli/chunks/{prove-ADVRMAWS.js → prove-OV7S5J4W.js} +2 -2
- package/dist/cli/chunks/provider-manager-OATJ7R3D.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-IJXNQ67O.js +2 -0
- package/dist/cli/chunks/{quality-GB5SJFSD.js → quality-AXD4NLQA.js} +2 -2
- package/dist/cli/chunks/queen-coordinator-6RBHWCUG.js +2 -0
- package/dist/cli/chunks/{real-embeddings-GDRJ4XSH.js → real-embeddings-2PUCC7FG.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-Q6EISUDV.js → roocode-installer-WJ5ARGLW.js} +2 -2
- package/dist/cli/chunks/router-XKQRT5JK.js +2 -0
- package/dist/cli/chunks/routing-feedback-ACPSD4LW.js +2 -0
- package/dist/cli/chunks/{routing-handler-RO4RTRAG.js → routing-handler-CU6657SZ.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-FFIHCGVQ.js → ruvector-commands-IIF6VSFW.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-JGEK3A5Y.js → rvf-dual-writer-YMQI7XO2.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-OVYC4QM6.js → rvf-migration-adapter-HDE3PR2W.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-U6L77QTS.js → rvf-migration-coordinator-MQV5OA7K.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-SIWRKE33.js +2 -0
- package/dist/cli/chunks/safe-db-LCPUYMX4.js +2 -0
- package/dist/cli/chunks/schedule-HIQJCWXG.js +2 -0
- package/dist/cli/chunks/scheduler-QE5EJ5LE.js +2 -0
- package/dist/cli/chunks/{security-QPQIDAIL.js → security-UM3IGDSM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-JRJTI4UD.js → shared-rvf-adapter-I3SOJ6M4.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-DSHGURDA.js → shared-rvf-dual-writer-KQGC2UO7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-EU54UTMH.js +2 -0
- package/dist/cli/chunks/status-handler-OX4CJZME.js +46 -0
- package/dist/cli/chunks/{structural-health-UVECCN7U.js → structural-health-PYUMVBXJ.js} +2 -2
- package/dist/cli/chunks/{sync-XXIGTGCG.js → sync-2TED3YTY.js} +2 -2
- package/dist/cli/chunks/{sync-ZLZ4CZFJ.js → sync-VALFNTA6.js} +2 -2
- package/dist/cli/chunks/{task-handler-73YAVOKJ.js → task-handler-VPGAJVPC.js} +2 -2
- package/dist/cli/chunks/{task-handlers-PKECV27D.js → task-handlers-IB4UAMU6.js} +3 -3
- package/dist/cli/chunks/{test-U3SXW4SV.js → test-OMRJOZB6.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-POJND3GV.js → test-scheduling-ZL3YFPBU.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-ICX6SIXJ.js → token-bootstrap-DNWZI7SH.js} +2 -2
- package/dist/cli/chunks/{token-usage-WCHJUVGT.js → token-usage-IYO7RGFF.js} +2 -2
- package/dist/cli/chunks/{transformers-L77UIHIY.js → transformers-53ALC34T.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-CVAXURQP.js → tree-sitter-wasm-parser-WUKJ2I2Q.js} +2 -2
- package/dist/cli/chunks/{types-LNVJBDM2.js → types-47FTEPMV.js} +2 -2
- package/dist/cli/chunks/unified-memory-CJLMC2I4.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-FDGR4D2J.js +2 -0
- package/dist/cli/chunks/unified-persistence-UFH5GLDN.js +2 -0
- package/dist/cli/chunks/{upgrade-4ND5RQFY.js → upgrade-QPLMJA5Z.js} +2 -2
- package/dist/cli/chunks/{validate-ZA4XT6K2.js → validate-3GVKZOVF.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-FNK3GCJ4.js → validate-swarm-XCRTLVM6.js} +2 -2
- package/dist/cli/chunks/{vibium-E2CK2GBQ.js → vibium-CH4VPKVZ.js} +2 -2
- package/dist/cli/chunks/visual-security-4ARJ7J2Y.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-63VRNKZV.js → web-tree-sitter-JDBNAZTV.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-5BTCVOLH.js → windsurf-installer-3MNPVJBP.js} +2 -2
- package/dist/cli/chunks/witness-chain-73QC33ED.js +2 -0
- package/dist/cli/chunks/{witness-chain-6CUUGISD.js → witness-chain-HR5UBV5J.js} +2 -2
- package/dist/cli/chunks/witness-key-manager-G5SQTIBZ.js +2 -0
- package/dist/cli/chunks/{workflow-V7ED22XT.js → workflow-43EMD5FY.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-RKMMPXNA.js +2 -0
- package/dist/cli/chunks/{wrappers-7S3NTTLW.js → wrappers-3N7AYNM3.js} +2 -2
- package/dist/cli/commands/audit.d.ts +12 -0
- package/dist/cli/commands/audit.js +64 -4
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +45 -19
- package/dist/cli/commands/hooks-handlers/hooks-shared.d.ts +13 -0
- package/dist/cli/commands/hooks-handlers/hooks-shared.js +38 -0
- package/dist/cli/commands/hooks-handlers/task-hooks.js +19 -1
- package/dist/cli/handlers/status-handler.d.ts +18 -0
- package/dist/cli/handlers/status-handler.js +47 -0
- package/dist/coordination/consensus/providers/ollama-provider.js +3 -2
- package/dist/coordination/mincut/queen-integration.js +24 -7
- package/dist/coordination/protocol-executor.js +2 -1
- package/dist/coordination/queen-lifecycle.js +4 -1
- package/dist/domains/code-intelligence/coordinator.js +10 -6
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +3 -1
- package/dist/domains/defect-intelligence/services/defect-predictor.d.ts +6 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +21 -0
- package/dist/domains/learning-optimization/interfaces.d.ts +7 -0
- package/dist/domains/learning-optimization/plugin.js +5 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +10 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.js +57 -0
- package/dist/domains/test-execution/plugin.js +2 -2
- package/dist/domains/test-execution/services/flaky-detector.js +1 -1
- package/dist/domains/test-generation/coordinator.js +22 -8
- package/dist/domains/test-generation/interfaces.d.ts +3 -0
- package/dist/domains/test-generation/services/test-generator.js +9 -1
- package/dist/integrations/ruvector/delta-tracker.js +10 -1
- package/dist/integrations/ruvector/proof-gate.d.ts +68 -0
- package/dist/integrations/ruvector/proof-gate.js +135 -0
- package/dist/integrations/ruvector/sona-persistence.d.ts +24 -0
- package/dist/integrations/ruvector/sona-persistence.js +76 -0
- package/dist/integrations/ruvector/sona-three-loop.d.ts +15 -0
- package/dist/integrations/ruvector/sona-three-loop.js +17 -0
- package/dist/kernel/unified-memory-schemas.d.ts +2 -2
- package/dist/kernel/unified-memory-schemas.js +48 -2
- package/dist/kernel/unified-memory.d.ts +57 -0
- package/dist/kernel/unified-memory.js +148 -0
- package/dist/learning/aqe-learning-engine.js +3 -1
- package/dist/learning/dream/concept-graph.d.ts +31 -1
- package/dist/learning/dream/concept-graph.js +109 -3
- package/dist/learning/dream/dream-engine.d.ts +13 -1
- package/dist/learning/dream/dream-engine.js +146 -10
- package/dist/learning/dream/index.d.ts +1 -1
- package/dist/learning/dream/types.d.ts +23 -0
- package/dist/learning/local-judge-client.js +2 -1
- package/dist/learning/pattern-store.d.ts +2 -2
- package/dist/learning/pattern-store.js +14 -3
- package/dist/learning/qe-reasoning-bank.js +34 -31
- package/dist/learning/routing-topology-gate.d.ts +12 -2
- package/dist/learning/routing-topology-gate.js +15 -3
- package/dist/learning/rvf-pattern-store.d.ts +1 -1
- package/dist/learning/rvf-pattern-store.js +21 -8
- package/dist/learning/sqlite-persistence.js +12 -9
- package/dist/mcp/bundle.js +524 -445
- package/dist/mcp/qe-tool-bridge.js +7 -2
- package/dist/mcp/tools/base.d.ts +29 -0
- package/dist/mcp/tools/base.js +25 -0
- package/dist/mcp/tools/coverage-analysis/index.js +6 -4
- package/dist/mcp/tools/learning-optimization/dream.d.ts +4 -13
- package/dist/mcp/tools/learning-optimization/dream.js +10 -96
- package/dist/mcp/tools/planning/goap-execute.d.ts +13 -1
- package/dist/mcp/tools/planning/goap-execute.js +33 -18
- package/dist/mcp/tools/registry.js +7 -2
- package/dist/persistence/rvf-migration-coordinator.js +2 -1
- package/dist/planning/actions/qe-action-library.js +124 -1
- package/dist/planning/goap-planner.d.ts +14 -2
- package/dist/planning/goap-planner.js +51 -9
- package/dist/planning/index.d.ts +1 -1
- package/dist/planning/plan-executor.d.ts +84 -4
- package/dist/planning/plan-executor.js +221 -56
- package/dist/planning/types.d.ts +27 -0
- package/dist/routing/free-tier/coordinator-support.d.ts +6 -3
- package/dist/routing/free-tier/coordinator-support.js +6 -3
- package/dist/routing/free-tier/executor.d.ts +14 -0
- package/dist/routing/free-tier/executor.js +21 -0
- package/dist/routing/free-tier/index.d.ts +1 -0
- package/dist/routing/free-tier/index.js +1 -0
- package/dist/routing/free-tier/pattern-cache.d.ts +57 -0
- package/dist/routing/free-tier/pattern-cache.js +148 -0
- package/dist/routing/free-tier/provider.js +9 -1
- package/dist/routing/value-score.js +3 -0
- package/dist/shared/embeddings/ollama-client.js +2 -1
- package/dist/shared/events/domain-events.d.ts +2 -0
- package/dist/shared/llm/model-mapping.js +26 -0
- package/dist/shared/llm/model-registry.d.ts +10 -0
- package/dist/shared/llm/model-registry.js +92 -0
- package/dist/shared/llm/ollama-url.d.ts +17 -0
- package/dist/shared/llm/ollama-url.js +25 -0
- package/dist/shared/llm/providers/ollama-timeout.d.ts +26 -0
- package/dist/shared/llm/providers/ollama-timeout.js +31 -0
- package/dist/shared/llm/providers/ollama.d.ts +10 -0
- package/dist/shared/llm/providers/ollama.js +31 -4
- package/dist/shared/llm/router/hybrid-router.js +18 -1
- package/dist/workers/workers/learning-consolidation.js +21 -1
- package/package.json +5 -1
- package/dist/cli/chunks/adapter-IU3H3MD7.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-BGOC63IN.js +0 -2
- package/dist/cli/chunks/audit-TTWAAV7P.js +0 -3
- package/dist/cli/chunks/base-DVPRE3WO.js +0 -2
- package/dist/cli/chunks/brain-handler-FXPLJCPV.js +0 -89
- package/dist/cli/chunks/browser-workflow-MP5P7KZF.js +0 -2
- package/dist/cli/chunks/chunk-2SZQDTI5.js +0 -2
- package/dist/cli/chunks/chunk-6IHB3T6M.js +0 -2
- package/dist/cli/chunks/chunk-7PDUD7FF.js +0 -2
- package/dist/cli/chunks/chunk-EBCUWMLX.js +0 -27
- package/dist/cli/chunks/chunk-NWUVXLBB.js +0 -65
- package/dist/cli/chunks/chunk-OCACCUFO.js +0 -2
- package/dist/cli/chunks/chunk-PY2Q6MN3.js +0 -24
- package/dist/cli/chunks/chunk-UNH2DE2G.js +0 -2
- package/dist/cli/chunks/client-ADCDBTEE.js +0 -2
- package/dist/cli/chunks/core-handlers-HCACMLUW.js +0 -2
- package/dist/cli/chunks/cross-domain-router-HXFQAU4M.js +0 -2
- package/dist/cli/chunks/daemon-ZSK6CLQR.js +0 -10
- package/dist/cli/chunks/domain-transfer-UWFKBZTJ.js +0 -2
- package/dist/cli/chunks/dream-SVWQH62A.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-QW5TW5QS.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-D6EJWYAL.js +0 -2
- package/dist/cli/chunks/hnsw-index-4MWR4U5W.js +0 -2
- package/dist/cli/chunks/hybrid-router-BYVUBHER.js +0 -2
- package/dist/cli/chunks/impact-analyzer-OK2UIMSG.js +0 -2
- package/dist/cli/chunks/init-wizard-6NNPNS6J.js +0 -2
- package/dist/cli/chunks/kernel-F4A4GRNO.js +0 -2
- package/dist/cli/chunks/knowledge-graph-MSJDEZCF.js +0 -2
- package/dist/cli/chunks/llm-router-service-27IQAO7G.js +0 -2
- package/dist/cli/chunks/load-test-TT5VLAN7.js +0 -2
- package/dist/cli/chunks/memory-backend-FVSK53IM.js +0 -2
- package/dist/cli/chunks/memory-handlers-OPUDOZNT.js +0 -2
- package/dist/cli/chunks/pattern-null-store-7MVEDWCY.js +0 -2
- package/dist/cli/chunks/protocol-executor-BLDDYEJ4.js +0 -2
- package/dist/cli/chunks/provider-manager-ZYCFRYZQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-P66CCPHM.js +0 -2
- package/dist/cli/chunks/queen-coordinator-LPHT3SX5.js +0 -2
- package/dist/cli/chunks/router-XQ2TERUT.js +0 -2
- package/dist/cli/chunks/routing-feedback-K52O752B.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-G4DV7FK3.js +0 -2
- package/dist/cli/chunks/safe-db-TMSEITES.js +0 -2
- package/dist/cli/chunks/schedule-RWFLA43O.js +0 -2
- package/dist/cli/chunks/scheduler-2V55MJJR.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-L7QM6IWF.js +0 -2
- package/dist/cli/chunks/status-handler-SBT3MZTX.js +0 -45
- package/dist/cli/chunks/unified-memory-ZSULA46X.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-SQEWFUBN.js +0 -2
- package/dist/cli/chunks/unified-persistence-EDCTT6SE.js +0 -2
- package/dist/cli/chunks/visual-security-SOGAETFP.js +0 -2
- package/dist/cli/chunks/witness-chain-AJCECBH5.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-UXRUCOZR.js +0 -2
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* qwen3:30b-a3b — 18GB, highest quality, use only if RAM permits
|
|
18
18
|
*/
|
|
19
19
|
import { LoggerFactory } from '../logging/index.js';
|
|
20
|
+
import { resolveOllamaBaseUrl } from '../shared/llm/ollama-url.js';
|
|
20
21
|
const logger = LoggerFactory.create('local-judge');
|
|
21
22
|
const DEFAULT_URL = 'http://localhost:11434';
|
|
22
23
|
const DEFAULT_MODEL = 'qwen3:8b';
|
|
@@ -46,7 +47,7 @@ export class LocalJudgeClient {
|
|
|
46
47
|
model;
|
|
47
48
|
enabled;
|
|
48
49
|
constructor(opts) {
|
|
49
|
-
this.baseUrl = opts?.url ?? process.env['NAGUAL_JUDGE_URL'] ?? DEFAULT_URL;
|
|
50
|
+
this.baseUrl = opts?.url ?? process.env['NAGUAL_JUDGE_URL'] ?? resolveOllamaBaseUrl(DEFAULT_URL);
|
|
50
51
|
this.model = opts?.model ?? process.env['NAGUAL_JUDGE_MODEL'] ?? DEFAULT_MODEL;
|
|
51
52
|
// Only active when explicitly configured via env or constructor options
|
|
52
53
|
this.enabled = Boolean(opts?.url ?? opts?.model ??
|
|
@@ -175,7 +175,7 @@ export interface IPatternStore {
|
|
|
175
175
|
/** Search for patterns */
|
|
176
176
|
search(query: string | number[], options?: PatternSearchOptions): Promise<Result<PatternSearchResult[]>>;
|
|
177
177
|
/** Update pattern after use */
|
|
178
|
-
recordUsage(id: string, success: boolean): Promise<Result<void>>;
|
|
178
|
+
recordUsage(id: string, success: boolean, metrics?: Record<string, unknown>, feedback?: string): Promise<Result<void>>;
|
|
179
179
|
/** Promote pattern from short-term to long-term */
|
|
180
180
|
promote(id: string): Promise<Result<void>>;
|
|
181
181
|
/** Delete a pattern */
|
|
@@ -315,7 +315,7 @@ export declare class PatternStore implements IPatternStore {
|
|
|
315
315
|
/**
|
|
316
316
|
* Record pattern usage and update stats
|
|
317
317
|
*/
|
|
318
|
-
recordUsage(id: string, success: boolean): Promise<Result<void>>;
|
|
318
|
+
recordUsage(id: string, success: boolean, metrics?: Record<string, unknown>, feedback?: string): Promise<Result<void>>;
|
|
319
319
|
/**
|
|
320
320
|
* Promote pattern from short-term to long-term storage
|
|
321
321
|
*/
|
|
@@ -436,7 +436,18 @@ export class PatternStore {
|
|
|
436
436
|
// Persist to SQLite (pattern + embedding atomically)
|
|
437
437
|
if (this.sqliteStore) {
|
|
438
438
|
try {
|
|
439
|
-
this.sqliteStore.storePattern(pattern, pattern.embedding);
|
|
439
|
+
const actualId = this.sqliteStore.storePattern(pattern, pattern.embedding);
|
|
440
|
+
// #447: ON CONFLICT(name, qe_domain, pattern_type) may preserve an
|
|
441
|
+
// existing row's id instead of the one we generated — realign the
|
|
442
|
+
// in-memory indices (and pattern.id itself) or every later
|
|
443
|
+
// recordUsage()/promote()/delete() call for this pattern throws
|
|
444
|
+
// "Pattern not found" against SQLite while silently succeeding
|
|
445
|
+
// in-memory, permanently desyncing usage stats from qe_pattern_usage.
|
|
446
|
+
if (actualId && actualId !== pattern.id) {
|
|
447
|
+
this.unindexPattern(pattern);
|
|
448
|
+
pattern.id = actualId;
|
|
449
|
+
this.indexPattern(pattern);
|
|
450
|
+
}
|
|
440
451
|
}
|
|
441
452
|
catch (error) {
|
|
442
453
|
console.warn(`[PatternStore] SQLite persist failed for ${pattern.id}:`, toErrorMessage(error));
|
|
@@ -987,7 +998,7 @@ export class PatternStore {
|
|
|
987
998
|
/**
|
|
988
999
|
* Record pattern usage and update stats
|
|
989
1000
|
*/
|
|
990
|
-
async recordUsage(id, success) {
|
|
1001
|
+
async recordUsage(id, success, metrics, feedback) {
|
|
991
1002
|
const pattern = await this.get(id);
|
|
992
1003
|
if (!pattern) {
|
|
993
1004
|
return err(new Error(`Pattern not found: ${id}`));
|
|
@@ -1016,7 +1027,7 @@ export class PatternStore {
|
|
|
1016
1027
|
// Persist usage to SQLite
|
|
1017
1028
|
if (this.sqliteStore) {
|
|
1018
1029
|
try {
|
|
1019
|
-
this.sqliteStore.recordUsage(id, success);
|
|
1030
|
+
this.sqliteStore.recordUsage(id, success, metrics, feedback);
|
|
1020
1031
|
}
|
|
1021
1032
|
catch (error) {
|
|
1022
1033
|
console.warn(`[PatternStore] SQLite recordUsage failed for ${id}:`, toErrorMessage(error));
|
|
@@ -343,16 +343,12 @@ export class QEReasoningBank {
|
|
|
343
343
|
if (!this.config.enableLearning) {
|
|
344
344
|
return ok(undefined);
|
|
345
345
|
}
|
|
346
|
-
|
|
347
|
-
//
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
catch (persistError) {
|
|
353
|
-
// Non-critical — don't fail if persistence fails
|
|
354
|
-
logger.warn('SQLite pattern usage persist failed', { error: toErrorMessage(persistError) });
|
|
355
|
-
}
|
|
346
|
+
// Single writer (#486 Gap B): patternStore.recordUsage() persists to SQLite
|
|
347
|
+
// itself (updates qe_patterns row AND inserts qe_pattern_usage) when a
|
|
348
|
+
// SQLitePatternStore is wired via setSqliteStore(). A second explicit
|
|
349
|
+
// SQLite write here previously double-counted every outcome — two
|
|
350
|
+
// qe_pattern_usage rows and a +2 usage_count for one recordOutcome() call.
|
|
351
|
+
const result = await this.patternStore.recordUsage(outcome.patternId, outcome.success, outcome.metrics, outcome.feedback);
|
|
356
352
|
if (result.success) {
|
|
357
353
|
this.stats.learningOutcomes++;
|
|
358
354
|
if (outcome.success) {
|
|
@@ -608,9 +604,18 @@ export class QEReasoningBank {
|
|
|
608
604
|
// DB fallback (#454): in-memory `this.stats` is reset on every process
|
|
609
605
|
// start, but every hook invocation spawns a fresh node. Without a DB
|
|
610
606
|
// fallback, `aqe hooks stats` always reports zeros even when historical
|
|
611
|
-
// routing_outcomes / qe_pattern_usage rows exist.
|
|
612
|
-
//
|
|
613
|
-
//
|
|
607
|
+
// routing_outcomes / qe_pattern_usage rows exist.
|
|
608
|
+
//
|
|
609
|
+
// routing_outcomes / qe_pattern_usage are written synchronously on every
|
|
610
|
+
// recordOutcome()/routeTask() call, so the DB aggregate is always a
|
|
611
|
+
// superset of (>=) the in-memory counters for this process. Previously
|
|
612
|
+
// this only consulted the DB when the in-memory counter was exactly
|
|
613
|
+
// zero, which made reported totals regress the moment in-memory ticked
|
|
614
|
+
// past zero mid-session — a cold-start call would correctly report the
|
|
615
|
+
// historical DB total, then the very next call after one recordOutcome()
|
|
616
|
+
// would drop to reporting just "1" instead of "historical total + 1".
|
|
617
|
+
// Taking the max keeps the number monotonic while still tolerating a
|
|
618
|
+
// failed/unavailable DB aggregate (falls back to in-memory).
|
|
614
619
|
let routingRequests = this.stats.routingRequests;
|
|
615
620
|
let avgRoutingConfidence = this.stats.routingRequests > 0
|
|
616
621
|
? this.stats.totalRoutingConfidence / this.stats.routingRequests
|
|
@@ -619,27 +624,25 @@ export class QEReasoningBank {
|
|
|
619
624
|
let patternSuccessRate = this.stats.learningOutcomes > 0
|
|
620
625
|
? this.stats.successfulOutcomes / this.stats.learningOutcomes
|
|
621
626
|
: 0;
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
avgRoutingConfidence = agg.avgRoutingConfidence;
|
|
628
|
-
}
|
|
629
|
-
if (learningOutcomes === 0 && agg.learningOutcomes > 0) {
|
|
630
|
-
learningOutcomes = agg.learningOutcomes;
|
|
631
|
-
// Prefer per-usage success rate (closer to recordOutcome semantics);
|
|
632
|
-
// fall back to qe_patterns.success_rate aggregate when no usage rows.
|
|
633
|
-
patternSuccessRate =
|
|
634
|
-
agg.learningOutcomes > 0
|
|
635
|
-
? agg.successfulOutcomes / agg.learningOutcomes
|
|
636
|
-
: agg.avgPatternSuccessRate;
|
|
637
|
-
}
|
|
627
|
+
try {
|
|
628
|
+
const agg = this.getSqliteStore().getAggregateOutcomeStats();
|
|
629
|
+
if (agg.routingRequests > routingRequests) {
|
|
630
|
+
routingRequests = agg.routingRequests;
|
|
631
|
+
avgRoutingConfidence = agg.avgRoutingConfidence;
|
|
638
632
|
}
|
|
639
|
-
|
|
640
|
-
|
|
633
|
+
if (agg.learningOutcomes > learningOutcomes) {
|
|
634
|
+
learningOutcomes = agg.learningOutcomes;
|
|
635
|
+
// Prefer per-usage success rate (closer to recordOutcome semantics);
|
|
636
|
+
// fall back to qe_patterns.success_rate aggregate when no usage rows.
|
|
637
|
+
patternSuccessRate =
|
|
638
|
+
agg.learningOutcomes > 0
|
|
639
|
+
? agg.successfulOutcomes / agg.learningOutcomes
|
|
640
|
+
: agg.avgPatternSuccessRate;
|
|
641
641
|
}
|
|
642
642
|
}
|
|
643
|
+
catch {
|
|
644
|
+
// best-effort — never let stats reporting crash the host
|
|
645
|
+
}
|
|
643
646
|
return {
|
|
644
647
|
totalPatterns: patternStoreStats.totalPatterns,
|
|
645
648
|
byDomain,
|
|
@@ -20,8 +20,18 @@
|
|
|
20
20
|
* permanently dampened in the exact deployment case ADR-095 was meant
|
|
21
21
|
* to help.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* A16 correction (2026-07-06): `graph.isEmpty()` alone doesn't catch
|
|
24
|
+
* this — `QueenMinCutBridge` always seeds ~14 `domain:*` scaffold
|
|
25
|
+
* vertices + workflow edges on init, so `isEmpty()` is false as soon as
|
|
26
|
+
* Queen starts, even with zero real agents ever spawned. The mincut
|
|
27
|
+
* over those scaffold-only edges (one-directional, `defect-intelligence`
|
|
28
|
+
* a pure sink) computes to exactly 0.0 — still degenerate, still
|
|
29
|
+
* "critical" by the threshold check. Check for real `agent:*` vertices
|
|
30
|
+
* specifically (same fix `QueenMinCutBridge.isEmptyTopology()` already
|
|
31
|
+
* applies internally), not raw vertex count.
|
|
32
|
+
*
|
|
33
|
+
* Treat a graph with no real agent vertices as "no signal" (full ε rate).
|
|
34
|
+
* Only consult `isCritical()` once at least one agent has actually spawned.
|
|
25
35
|
*/
|
|
26
36
|
/**
|
|
27
37
|
* Returns true ONLY when:
|
|
@@ -20,8 +20,18 @@
|
|
|
20
20
|
* permanently dampened in the exact deployment case ADR-095 was meant
|
|
21
21
|
* to help.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* A16 correction (2026-07-06): `graph.isEmpty()` alone doesn't catch
|
|
24
|
+
* this — `QueenMinCutBridge` always seeds ~14 `domain:*` scaffold
|
|
25
|
+
* vertices + workflow edges on init, so `isEmpty()` is false as soon as
|
|
26
|
+
* Queen starts, even with zero real agents ever spawned. The mincut
|
|
27
|
+
* over those scaffold-only edges (one-directional, `defect-intelligence`
|
|
28
|
+
* a pure sink) computes to exactly 0.0 — still degenerate, still
|
|
29
|
+
* "critical" by the threshold check. Check for real `agent:*` vertices
|
|
30
|
+
* specifically (same fix `QueenMinCutBridge.isEmptyTopology()` already
|
|
31
|
+
* applies internally), not raw vertex count.
|
|
32
|
+
*
|
|
33
|
+
* Treat a graph with no real agent vertices as "no signal" (full ε rate).
|
|
34
|
+
* Only consult `isCritical()` once at least one agent has actually spawned.
|
|
25
35
|
*/
|
|
26
36
|
import { getSharedMinCutGraph, getSharedMinCutMonitor, isSharedMinCutGraphInitialized, isSharedMinCutMonitorInitialized, } from '../coordination/mincut/shared-singleton.js';
|
|
27
37
|
/**
|
|
@@ -44,7 +54,9 @@ export function resolveTopologyCriticalFromSharedMincut() {
|
|
|
44
54
|
if (!isSharedMinCutGraphInitialized())
|
|
45
55
|
return false;
|
|
46
56
|
const graph = getSharedMinCutGraph();
|
|
47
|
-
|
|
57
|
+
// Domain-coordinator scaffold vertices/edges are always present once
|
|
58
|
+
// Queen initializes; they don't count as "the graph has real signal".
|
|
59
|
+
if (graph.getVerticesByType('agent').length === 0)
|
|
48
60
|
return false;
|
|
49
61
|
return getSharedMinCutMonitor().isCritical();
|
|
50
62
|
}
|
|
@@ -63,7 +63,7 @@ export declare class RvfPatternStore implements IPatternStore {
|
|
|
63
63
|
create(options: CreateQEPatternOptions): Promise<Result<QEPattern>>;
|
|
64
64
|
get(id: string): Promise<QEPattern | null>;
|
|
65
65
|
search(query: string | number[], options?: PatternSearchOptions): Promise<Result<PatternSearchResult[]>>;
|
|
66
|
-
recordUsage(id: string, success: boolean): Promise<Result<void>>;
|
|
66
|
+
recordUsage(id: string, success: boolean, metrics?: Record<string, unknown>, feedback?: string): Promise<Result<void>>;
|
|
67
67
|
promote(id: string): Promise<Result<void>>;
|
|
68
68
|
delete(id: string): Promise<Result<void>>;
|
|
69
69
|
getStats(): Promise<PatternStoreStats>;
|
|
@@ -372,12 +372,12 @@ export class RvfPatternStore {
|
|
|
372
372
|
// --------------------------------------------------------------------------
|
|
373
373
|
// IPatternStore — Mutation operations
|
|
374
374
|
// --------------------------------------------------------------------------
|
|
375
|
-
async recordUsage(id, success) {
|
|
375
|
+
async recordUsage(id, success, metrics, feedback) {
|
|
376
376
|
if (!this.sqliteStore) {
|
|
377
377
|
return err(new Error('No SQLite store attached'));
|
|
378
378
|
}
|
|
379
379
|
try {
|
|
380
|
-
this.sqliteStore.recordUsage(id, success);
|
|
380
|
+
this.sqliteStore.recordUsage(id, success, metrics, feedback);
|
|
381
381
|
return ok(undefined);
|
|
382
382
|
}
|
|
383
383
|
catch (error) {
|
|
@@ -419,18 +419,31 @@ export class RvfPatternStore {
|
|
|
419
419
|
}
|
|
420
420
|
async getStats() {
|
|
421
421
|
const rvfStatus = this.adapter?.status();
|
|
422
|
-
//
|
|
423
|
-
|
|
424
|
-
|
|
422
|
+
// qe_patterns (SQLite) is the source of truth for pattern count and
|
|
423
|
+
// domain/tier breakdown — the RVF vector index only covers patterns
|
|
424
|
+
// that have actually been embedded, and is reported separately via
|
|
425
|
+
// hnswStats.vectorCount. Previously this used RVF's totalVectors as the
|
|
426
|
+
// headline count, which silently hid any pattern stored without a
|
|
427
|
+
// matching embedding (#553).
|
|
428
|
+
let totalPatterns = 0;
|
|
429
|
+
let byDomain = {};
|
|
430
|
+
let byTier = { shortTerm: 0, longTerm: 0 };
|
|
431
|
+
if (this.sqliteStore) {
|
|
425
432
|
try {
|
|
426
|
-
|
|
433
|
+
const sqliteStats = this.sqliteStore.getStats();
|
|
434
|
+
totalPatterns = sqliteStats.totalPatterns;
|
|
435
|
+
byDomain = sqliteStats.byDomain;
|
|
436
|
+
byTier = {
|
|
437
|
+
shortTerm: sqliteStats.byTier['short-term'] ?? 0,
|
|
438
|
+
longTerm: sqliteStats.byTier['long-term'] ?? 0,
|
|
439
|
+
};
|
|
427
440
|
}
|
|
428
441
|
catch { /* best effort */ }
|
|
429
442
|
}
|
|
430
443
|
return {
|
|
431
444
|
totalPatterns,
|
|
432
|
-
byTier
|
|
433
|
-
byDomain
|
|
445
|
+
byTier,
|
|
446
|
+
byDomain,
|
|
434
447
|
byType: {},
|
|
435
448
|
avgConfidence: 0,
|
|
436
449
|
avgQualityScore: 0,
|
|
@@ -391,24 +391,27 @@ export class SQLitePatternStore {
|
|
|
391
391
|
if (!insertPattern || !insertEmbedding) {
|
|
392
392
|
throw new Error('Prepared statements not ready');
|
|
393
393
|
}
|
|
394
|
+
let actualId = id;
|
|
394
395
|
// Use transaction for atomicity
|
|
395
396
|
const transaction = this.db.transaction(() => {
|
|
396
397
|
insertPattern.run(id, pattern.patternType, pattern.qeDomain, pattern.domain, pattern.name, pattern.description || '', pattern.confidence, pattern.tier || 'short-term', JSON.stringify(pattern.template), JSON.stringify(pattern.context));
|
|
398
|
+
// #447: ON CONFLICT(name, qe_domain, pattern_type) preserves the
|
|
399
|
+
// existing row's id instead of `id`. Resolve the actual id BEFORE
|
|
400
|
+
// inserting the embedding — qe_pattern_embeddings.pattern_id has a
|
|
401
|
+
// FOREIGN KEY on qe_patterns(id), so inserting under the discarded
|
|
402
|
+
// `id` (no such row) throws "FOREIGN KEY constraint failed".
|
|
403
|
+
const actualRow = this.db
|
|
404
|
+
.prepare('SELECT id FROM qe_patterns WHERE name = ? AND qe_domain = ? AND pattern_type = ?')
|
|
405
|
+
.get(pattern.name, pattern.qeDomain ?? '', pattern.patternType ?? '');
|
|
406
|
+
actualId = actualRow ? actualRow.id : id;
|
|
397
407
|
if (embedding) {
|
|
398
408
|
// Store embedding as BLOB (Float32Array)
|
|
399
409
|
const buffer = Buffer.from(new Float32Array(embedding).buffer);
|
|
400
|
-
insertEmbedding.run(
|
|
410
|
+
insertEmbedding.run(actualId, buffer, embedding.length, 'all-MiniLM-L6-v2');
|
|
401
411
|
}
|
|
402
412
|
});
|
|
403
413
|
transaction();
|
|
404
|
-
|
|
405
|
-
// row's id, so the new `id` we just tried to insert may not be what's
|
|
406
|
-
// actually stored. SELECT the actual id back so callers (rvf-pattern-store,
|
|
407
|
-
// qe-hooks) can stay consistent with HNSW and downstream usage tables.
|
|
408
|
-
const actualRow = this.db
|
|
409
|
-
.prepare('SELECT id FROM qe_patterns WHERE name = ? AND qe_domain = ? AND pattern_type = ?')
|
|
410
|
-
.get(pattern.name, pattern.qeDomain ?? '', pattern.patternType ?? '');
|
|
411
|
-
return actualRow ? actualRow.id : id;
|
|
414
|
+
return actualId;
|
|
412
415
|
}
|
|
413
416
|
/**
|
|
414
417
|
* Get a pattern by ID
|