agentic-qe 3.11.5 → 3.12.0
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/helpers/.helpers-version +1 -0
- package/.claude/helpers/auto-memory-hook.mjs +35 -3
- package/.claude/helpers/brain-checkpoint.cjs +16 -1
- package/.claude/helpers/helpers.manifest.json +12 -0
- package/.claude/helpers/hook-handler.cjs +26 -5
- package/.claude/helpers/intelligence.cjs +14 -1
- package/.claude/hooks/aqe-hook.cjs +14 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +52 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2a/auth/routes.js +59 -28
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-6IWRIHF3.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-CSTBLNYZ.js → agent-booster-wasm-IO54X6IQ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-M4W4GTXN.js → agent-handler-A57SZUCW.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-VGXFYLSQ.js → agent-memory-branch-BX7LRFGN.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-FSF5U67K.js +2 -0
- package/dist/cli/chunks/{arena-FKSD3LLM.js → arena-UTC4YY6Y.js} +4 -4
- package/dist/cli/chunks/{arena-IQBRGWAG.js → arena-Y3XTX6O7.js} +2 -2
- package/dist/cli/chunks/{audit-7NSGRR4Z.js → audit-L4RL2AOY.js} +3 -3
- package/dist/cli/chunks/base-2CKCJU3O.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-E6NSZPP2.js → better-sqlite3-LRDXKYOJ.js} +2 -2
- package/dist/cli/chunks/{brain-handler-M6A3UB66.js → brain-handler-OHDPI5TQ.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-2JGKY4BB.js → branch-enumerator-ZRXE2CQ7.js} +2 -2
- package/dist/cli/chunks/{browser-J43WQPJL.js → browser-NT33FG76.js} +2 -2
- package/dist/cli/chunks/browser-workflow-UGYJE64S.js +2 -0
- package/dist/cli/chunks/{chunk-JDSHUECG.js → chunk-27JCWG5J.js} +2 -2
- package/dist/cli/chunks/{chunk-B2VBDMDI.js → chunk-2ALNNXFF.js} +2 -2
- package/dist/cli/chunks/{chunk-SK754ZSH.js → chunk-2AOOIAW3.js} +4 -4
- package/dist/cli/chunks/{chunk-ZG5UAEEO.js → chunk-2AR4B3DI.js} +2 -2
- package/dist/cli/chunks/{chunk-GODAWJMZ.js → chunk-2KHDGC7N.js} +2 -2
- package/dist/cli/chunks/{chunk-YZSTZUGJ.js → chunk-2UMCB7AH.js} +1 -1
- package/dist/cli/chunks/{chunk-Q5TR6ETB.js → chunk-335GHVJV.js} +3 -3
- package/dist/cli/chunks/{chunk-UBI2EOS3.js → chunk-36MPDANH.js} +1 -1
- package/dist/cli/chunks/{chunk-C4EZNOWK.js → chunk-3AFNXU45.js} +1 -1
- package/dist/cli/chunks/{chunk-7YSBATSN.js → chunk-3B4XXFKD.js} +2 -2
- package/dist/cli/chunks/{chunk-DPL762HU.js → chunk-4GU656WM.js} +1 -1
- package/dist/cli/chunks/{chunk-I3NWKPXJ.js → chunk-4SALW7OT.js} +2 -2
- package/dist/cli/chunks/{chunk-7BCRULCP.js → chunk-5FR5GBUT.js} +2 -2
- package/dist/cli/chunks/{chunk-4XJ2A3HY.js → chunk-5VBPIJUZ.js} +4 -4
- package/dist/cli/chunks/chunk-5XFX25AJ.js +4 -0
- package/dist/cli/chunks/{chunk-UORTQXJ2.js → chunk-5YGESYBC.js} +1 -1
- package/dist/cli/chunks/{chunk-ABU64UWB.js → chunk-62RELCU6.js} +1 -1
- package/dist/cli/chunks/{chunk-2XQHG56O.js → chunk-64M3FFM4.js} +2 -2
- package/dist/cli/chunks/{chunk-K4I7UIU5.js → chunk-6JNNZGI2.js} +1 -1
- package/dist/cli/chunks/{chunk-XT4TDLOB.js → chunk-6X3RJBA3.js} +2 -2
- package/dist/cli/chunks/{chunk-JATLFS6A.js → chunk-72VZGAMJ.js} +1 -1
- package/dist/cli/chunks/{chunk-AGJOGUP5.js → chunk-7F7U2HUH.js} +1 -1
- package/dist/cli/chunks/{chunk-ZPP57WQU.js → chunk-7HJHXSYT.js} +2 -2
- package/dist/cli/chunks/{chunk-6T65OKUM.js → chunk-7WX3MKRS.js} +2 -2
- package/dist/cli/chunks/{chunk-5WMU7XCF.js → chunk-7ZIVDGSN.js} +1 -1
- package/dist/cli/chunks/{chunk-M6FW56MV.js → chunk-AAATFEIL.js} +2 -2
- package/dist/cli/chunks/{chunk-2XPMATEK.js → chunk-AEX75YGI.js} +2 -2
- package/dist/cli/chunks/chunk-BA6U7NSR.js +2 -0
- package/dist/cli/chunks/{chunk-4QOI5JS7.js → chunk-BB4OVXWF.js} +1 -1
- package/dist/cli/chunks/{chunk-K4C25BWV.js → chunk-BBC526PL.js} +2 -2
- package/dist/cli/chunks/{chunk-354367AP.js → chunk-BGRJZH5Q.js} +2 -2
- package/dist/cli/chunks/{chunk-7KXPNNMR.js → chunk-BUYPRUNY.js} +2 -2
- package/dist/cli/chunks/{chunk-O7J54OHN.js → chunk-BZPF6GTL.js} +1 -1
- package/dist/cli/chunks/{chunk-NCSXLMDL.js → chunk-C4SZSPXY.js} +2 -2
- package/dist/cli/chunks/{chunk-YBPLJRVT.js → chunk-C6GYLCTX.js} +2 -2
- package/dist/cli/chunks/{chunk-53YOYZW5.js → chunk-CC5G3K4X.js} +2 -2
- package/dist/cli/chunks/{chunk-UBY322ED.js → chunk-CHO54B34.js} +2 -2
- package/dist/cli/chunks/{chunk-EK3HPH6A.js → chunk-CMGYUCM7.js} +1 -1
- package/dist/cli/chunks/{chunk-W72FJA2H.js → chunk-CSEEGX5T.js} +2 -2
- package/dist/cli/chunks/{chunk-OS2HHJTM.js → chunk-CVGXB7IX.js} +2 -2
- package/dist/cli/chunks/{chunk-SE3JFUKP.js → chunk-DQDFACYW.js} +1 -1
- package/dist/cli/chunks/chunk-DR7PCO3S.js +153 -0
- package/dist/cli/chunks/{chunk-4MHN7JWC.js → chunk-DTOE3NYW.js} +2 -2
- package/dist/cli/chunks/{chunk-FGD6HINU.js → chunk-DXOMRWDC.js} +1 -1
- package/dist/cli/chunks/{chunk-3V36WMIO.js → chunk-EGH3H7QO.js} +1 -1
- package/dist/cli/chunks/{chunk-52U5BFZP.js → chunk-EM2JIIAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLBY25MB.js → chunk-ESDGCTC4.js} +1 -1
- package/dist/cli/chunks/{chunk-MTBGOWJA.js → chunk-EZE2HRQB.js} +2 -2
- package/dist/cli/chunks/{chunk-KVVJVMDM.js → chunk-FEEMJDUF.js} +2 -2
- package/dist/cli/chunks/{chunk-JBKZ5TUM.js → chunk-FI5SSLEF.js} +2 -2
- package/dist/cli/chunks/{chunk-J5XDKVI7.js → chunk-FKPUPQQT.js} +2 -2
- package/dist/cli/chunks/{chunk-URP75DL4.js → chunk-FOPS6DRZ.js} +1 -1
- package/dist/cli/chunks/{chunk-GW6XWMX2.js → chunk-FU5RNEXV.js} +2 -2
- package/dist/cli/chunks/{chunk-3JF5A72M.js → chunk-FZIHOMGY.js} +2 -2
- package/dist/cli/chunks/{chunk-AOQYORVA.js → chunk-FZRU73M4.js} +2 -2
- package/dist/cli/chunks/{chunk-MEIU7457.js → chunk-G5JQLUUO.js} +2 -2
- package/dist/cli/chunks/{chunk-MHMQ6MCT.js → chunk-G6LR7FK7.js} +2 -2
- package/dist/cli/chunks/{chunk-J6PFPY7V.js → chunk-G6RKUEGL.js} +2 -2
- package/dist/cli/chunks/{chunk-EEKG35K5.js → chunk-GCF42L7M.js} +3 -3
- package/dist/cli/chunks/{chunk-OS62Y77J.js → chunk-GGMQOEZZ.js} +2 -2
- package/dist/cli/chunks/{chunk-QKK7VBVB.js → chunk-HAEUPIKW.js} +2 -2
- package/dist/cli/chunks/{chunk-4RTWPR3X.js → chunk-HDJMD6UH.js} +1 -1
- package/dist/cli/chunks/{chunk-EDOGRFAG.js → chunk-HW62TB4T.js} +1 -1
- package/dist/cli/chunks/{chunk-LOE2JETO.js → chunk-I6WHYRWB.js} +2 -2
- package/dist/cli/chunks/{chunk-VMFAANWX.js → chunk-ICK3B24H.js} +2 -2
- package/dist/cli/chunks/{chunk-C5C4W572.js → chunk-IDLNLSQI.js} +2 -2
- package/dist/cli/chunks/{chunk-PVDXNQPL.js → chunk-IJUYHIKN.js} +2 -2
- package/dist/cli/chunks/{chunk-3WR35GFF.js → chunk-IKVNYK7Y.js} +2 -2
- package/dist/cli/chunks/{chunk-62OTU2AP.js → chunk-JOBCMNTP.js} +2 -2
- package/dist/cli/chunks/{chunk-BJLA2IX7.js → chunk-JYX7AZHE.js} +2 -2
- package/dist/cli/chunks/{chunk-6Q57K4YD.js → chunk-JYXSVSH2.js} +2 -2
- package/dist/cli/chunks/{chunk-CKOF27L7.js → chunk-K5SN66B4.js} +2 -2
- package/dist/cli/chunks/{chunk-PW72M2FE.js → chunk-KDLYTJ5C.js} +2 -2
- package/dist/cli/chunks/{chunk-4LODYRNV.js → chunk-KI5BP4X5.js} +2 -2
- package/dist/cli/chunks/{chunk-CDJP6COA.js → chunk-KJWQ7ENF.js} +2 -2
- package/dist/cli/chunks/{chunk-FII3WCCY.js → chunk-KN5GOEYK.js} +2 -2
- package/dist/cli/chunks/{chunk-7DTMENY6.js → chunk-KZ37VHMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-I3ANRYQ6.js → chunk-KZMRU7DL.js} +2 -2
- package/dist/cli/chunks/{chunk-YFCULQBP.js → chunk-L5ZLOW3K.js} +2 -2
- package/dist/cli/chunks/{chunk-37ZUF5NX.js → chunk-LMJUQWR7.js} +1 -1
- package/dist/cli/chunks/{chunk-HJWT4KME.js → chunk-MBF3Q7FQ.js} +1 -1
- package/dist/cli/chunks/chunk-MDT3LIXS.js +2 -0
- package/dist/cli/chunks/{chunk-3LY7OCSO.js → chunk-MJPYNGZ7.js} +1 -1
- package/dist/cli/chunks/{chunk-SO6G4IX3.js → chunk-MK3J7JVZ.js} +2 -2
- package/dist/cli/chunks/{chunk-VN2HHBZN.js → chunk-MUAHFGIX.js} +2 -2
- package/dist/cli/chunks/{chunk-6R3YOAKO.js → chunk-MUV56BPK.js} +2 -2
- package/dist/cli/chunks/{chunk-XLT3FYS7.js → chunk-NLHISTL2.js} +2 -2
- package/dist/cli/chunks/{chunk-26WEI3P4.js → chunk-NNGCUJWQ.js} +2 -2
- package/dist/cli/chunks/{chunk-W7TYKPLY.js → chunk-NW7G57NR.js} +2 -2
- package/dist/cli/chunks/{chunk-Y6DWJKHU.js → chunk-O3C5RRDQ.js} +3 -3
- package/dist/cli/chunks/{chunk-TEIWJ3GJ.js → chunk-OHSVDMF7.js} +1 -1
- package/dist/cli/chunks/{chunk-KP3R2M2G.js → chunk-OPIWFXME.js} +1 -1
- package/dist/cli/chunks/{chunk-FGSIID5C.js → chunk-P52YORQG.js} +2 -2
- package/dist/cli/chunks/chunk-PM566XEO.js +2 -0
- package/dist/cli/chunks/chunk-POKMJTD2.js +2 -0
- package/dist/cli/chunks/{chunk-HC6KTVFR.js → chunk-PQMLIVGV.js} +2 -2
- package/dist/cli/chunks/{chunk-RJN2RM76.js → chunk-PT3FTGKZ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXEWTZFR.js → chunk-Q5YRPS4P.js} +1 -1
- package/dist/cli/chunks/{chunk-AL5VJJN4.js → chunk-QJ6H2HQQ.js} +1 -1
- package/dist/cli/chunks/{chunk-AXKWV5NF.js → chunk-RG552ROA.js} +3 -3
- package/dist/cli/chunks/{chunk-RKXZLTWR.js → chunk-RHC7TFPU.js} +2 -2
- package/dist/cli/chunks/{chunk-RFLHPLET.js → chunk-RMFRFING.js} +1 -1
- package/dist/cli/chunks/{chunk-WMZ2QGGS.js → chunk-RQN4HWGV.js} +2 -2
- package/dist/cli/chunks/{chunk-3I4TCMOJ.js → chunk-RYUSZ43T.js} +1 -1
- package/dist/cli/chunks/{chunk-BTLUWH4R.js → chunk-RZDNCTOA.js} +2 -2
- package/dist/cli/chunks/chunk-SCMXIBI7.js +2 -0
- package/dist/cli/chunks/{chunk-FMNXHVIN.js → chunk-SPEUF7ZL.js} +2 -2
- package/dist/cli/chunks/{chunk-IU5RSN6M.js → chunk-SSXAW3ER.js} +2 -2
- package/dist/cli/chunks/{chunk-WPSK237F.js → chunk-TC2JE5OK.js} +3 -3
- package/dist/cli/chunks/{chunk-DFRRWOEX.js → chunk-TED4KOSK.js} +2 -2
- package/dist/cli/chunks/{chunk-SUL3I6QZ.js → chunk-TJ6N4CCX.js} +2 -2
- package/dist/cli/chunks/{chunk-Y25PO65W.js → chunk-TJEJ4UVX.js} +2 -2
- package/dist/cli/chunks/{chunk-G2ZIJZJ7.js → chunk-TO5PQSDD.js} +2 -2
- package/dist/cli/chunks/{chunk-MMEXHZUC.js → chunk-TR5GOGH3.js} +5 -5
- package/dist/cli/chunks/{chunk-OGNTCZKK.js → chunk-UGJQJSPB.js} +1 -1
- package/dist/cli/chunks/{chunk-AF6P5RWY.js → chunk-USB44IHJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DLBVADWQ.js → chunk-UUOXV3NS.js} +42 -42
- package/dist/cli/chunks/chunk-UVVKFBF7.js +2 -0
- package/dist/cli/chunks/{chunk-FIPKIIMS.js → chunk-V2MD5EDD.js} +2 -2
- package/dist/cli/chunks/{chunk-DVW66FPU.js → chunk-VA7TEOPM.js} +1 -1
- package/dist/cli/chunks/{chunk-MCHEUSY4.js → chunk-VMP4M5PB.js} +1 -1
- package/dist/cli/chunks/{chunk-4Y3LGBKJ.js → chunk-VS4GMNJK.js} +3 -3
- package/dist/cli/chunks/{chunk-XKQY2Z3Q.js → chunk-VWJSWXHG.js} +1 -1
- package/dist/cli/chunks/{chunk-LPR2R3AN.js → chunk-VZ67ZDB3.js} +3 -3
- package/dist/cli/chunks/{chunk-TTJJ4DQE.js → chunk-W2OMW6UU.js} +2 -2
- package/dist/cli/chunks/{chunk-62UM7Q5N.js → chunk-W766S4SK.js} +1 -1
- package/dist/cli/chunks/{chunk-7P6X4BFO.js → chunk-WJYTLRA5.js} +3 -3
- package/dist/cli/chunks/{chunk-AOXJFDH5.js → chunk-WNASEUBW.js} +10 -10
- package/dist/cli/chunks/{chunk-YGVDP6X7.js → chunk-WT4ZDDFM.js} +1 -1
- package/dist/cli/chunks/{chunk-IBDQWKI3.js → chunk-XEYW3V5I.js} +2 -2
- package/dist/cli/chunks/{chunk-BLPWJQTY.js → chunk-XIFPIVZI.js} +2 -2
- package/dist/cli/chunks/{chunk-D45QLJEL.js → chunk-Y2MCIIJD.js} +1 -1
- package/dist/cli/chunks/{chunk-WHHQIL4F.js → chunk-YKOTOCO6.js} +2 -2
- package/dist/cli/chunks/{chunk-TRNBQFFG.js → chunk-Z3W3R4CW.js} +2 -2
- package/dist/cli/chunks/{chunk-KQVIWE3W.js → chunk-ZT2WHCVM.js} +2 -2
- package/dist/cli/chunks/{chunk-TBT3OFRW.js → chunk-ZVPAFX4I.js} +2 -2
- package/dist/cli/chunks/{chunk-VMWRMINE.js → chunk-ZWC6CM4R.js} +1 -1
- package/dist/cli/chunks/{ci-CBNVLOOQ.js → ci-RJH5LAL3.js} +2 -2
- package/dist/cli/chunks/{ci-output-I4HY2FYJ.js → ci-output-62SGMGB2.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5VRBKGWL.js → circuit-breaker-QXTS5ZAW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-XPJPKHIO.js → claude-flow-setup-BBCCT5WV.js} +2 -2
- package/dist/cli/chunks/client-E2XUBCLK.js +2 -0
- package/dist/cli/chunks/{cline-installer-OFRDUUWZ.js → cline-installer-IZCUJJ3I.js} +2 -2
- package/dist/cli/chunks/{code-QIZQVB3E.js → code-AWNVOZ7S.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-LMUUWEX4.js → code-index-extractor-MX65BKMI.js} +2 -2
- package/dist/cli/chunks/{codex-installer-N2MKIZ2S.js → codex-installer-EQT6JVLM.js} +2 -2
- package/dist/cli/chunks/{completions-Y36S3C5J.js → completions-WOJAM45W.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-73YS3WUD.js → complexity-analyzer-3DJB7V3K.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-SAOTP6J3.js → continuedev-installer-P4KWUTCJ.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-A4HXF6HE.js → copilot-installer-FFZWTMWQ.js} +2 -2
- package/dist/cli/chunks/core-handlers-46Z5VOO6.js +2 -0
- package/dist/cli/chunks/{cost-tracker-P26XUVZS.js → cost-tracker-CYBOV3NI.js} +2 -2
- package/dist/cli/chunks/{coverage-HVNHSMVJ.js → coverage-GTZJBSC4.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-SXQ3HFRY.js +2 -0
- package/dist/cli/chunks/{cursor-installer-46BQFTYZ.js → cursor-installer-WZIVXGGB.js} +2 -2
- package/dist/cli/chunks/{daemon-YE7K2AZF.js → daemon-JWMHEJEN.js} +4 -4
- package/dist/cli/chunks/{daemon-Y54O3FLT.js → daemon-MSFN2LXY.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-ETA7YY52.js → dag-attention-scheduler-4TWOTTQE.js} +2 -2
- package/dist/cli/chunks/{detect-5WLQ2J3E.js → detect-YZ6AGQPB.js} +2 -2
- package/dist/cli/chunks/{dist-node-45WW6I7J.js → dist-node-3EM2XH54.js} +2 -2
- package/dist/cli/chunks/{domain-handler-J7DQV74M.js → domain-handler-4XU5BINU.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-GD2EGQVR.js → domain-transfer-HUFC7I52.js} +2 -2
- package/dist/cli/chunks/dream-R6MQQQ3N.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-JELNEA2D.js → embed-and-insert-pattern-J5ZFM6YX.js} +2 -2
- package/dist/cli/chunks/{eval-A4PA5G2U.js → eval-XYOA3EH2.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-MLHTYWTA.js → experience-capture-middleware-E3RYQB6Z.js} +3 -3
- package/dist/cli/chunks/{fast-paths-QYDTITRV.js → fast-paths-DKIYN2YS.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MQYYRHIK.js → feature-flags-S2RNZATS.js} +2 -2
- package/dist/cli/chunks/{feature-flags-H4MSY26Z.js → feature-flags-ZB63Z7N5.js} +2 -2
- package/dist/cli/chunks/{file-discovery-RMFVJNGL.js → file-discovery-USJJLYQU.js} +2 -2
- package/dist/cli/chunks/{fleet-7KZQOTAC.js → fleet-4MUPHSF5.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-NMZFTGVH.js → gnn-wrapper-PYOQZKX6.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-7BQDK7MG.js → heartbeat-handler-HLO5XCG7.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-OSDPJT6A.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-KMGSHBIN.js +2 -0
- package/dist/cli/chunks/hnsw-index-IMFRAOPE.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-TPPGBPKF.js → hnsw-legacy-bridge-FZEH2KLM.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-2KR4LQRU.js → hnswlib-node-VS6L5VUG.js} +2 -2
- package/dist/cli/chunks/{hooks-CYZIUYSH.js → hooks-R2757K57.js} +10 -10
- package/dist/cli/chunks/hybrid-router-57QSWSWC.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-WC6DMTYQ.js → hypergraph-engine-EAV3GJ5D.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-GTGA3TXJ.js → hypergraph-handler-5ERXAVGH.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-OC4MPBGA.js +2 -0
- package/dist/cli/chunks/{init-handler-N3Z72JNI.js → init-handler-RXUSEMG7.js} +6 -6
- package/dist/cli/chunks/init-wizard-CDBRL4PO.js +2 -0
- package/dist/cli/chunks/kernel-CQ7R3AAV.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-FUX4V6II.js → kilocode-installer-ZUBVBHGT.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-ZSNZT7ZR.js → kiro-installer-TRTRQDGL.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-UXNH7RY4.js +2 -0
- package/dist/cli/chunks/{learning-UQY64COU.js → learning-UYXWAU5D.js} +3 -3
- package/dist/cli/chunks/{llm-router-CMHGGX6N.js → llm-router-TB5OJPEV.js} +4 -4
- package/dist/cli/chunks/llm-router-service-UV34YXBE.js +2 -0
- package/dist/cli/chunks/{load-E6WH4QN2.js → load-ELPSUIPV.js} +2 -2
- package/dist/cli/chunks/load-test-2VEN3PQZ.js +2 -0
- package/dist/cli/chunks/{mcp-UM5VTW6N.js → mcp-UX7TK3XV.js} +2 -2
- package/dist/cli/chunks/{memory-7Q3XDUE5.js → memory-W3LG6H6N.js} +5 -5
- package/dist/cli/chunks/memory-backend-TZL5U6F3.js +2 -0
- package/dist/cli/chunks/memory-handlers-BNXAYS2P.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-LZENWVRR.js → multi-model-executor-227LWZRY.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-O2JAIPLF.js → opencode-installer-F4WKVWDL.js} +2 -2
- package/dist/cli/chunks/{orchestrator-DKZWXDRI.js → orchestrator-V4DBMGK6.js} +5 -5
- package/dist/cli/chunks/pattern-null-store-KLX2RNHM.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-CLUL4M55.js → pattern-usage-recorder-BY3HEWSU.js} +2 -2
- package/dist/cli/chunks/{pipeline-2VDLTR5J.js → pipeline-3F5RIESX.js} +2 -2
- package/dist/cli/chunks/{platform-4N4Q5XYX.js → platform-KCGXTZO3.js} +2 -2
- package/dist/cli/chunks/{plugin-GY5AU5CS.js → plugin-2H552KOV.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-TQ4DKDZS.js → prime-radiant-advanced-wasm-EFKVL7VN.js} +2 -2
- package/dist/cli/chunks/protocol-executor-5HJKW6MC.js +2 -0
- package/dist/cli/chunks/{protocol-handler-T3LZ3WRG.js → protocol-handler-ELGYV7D2.js} +2 -2
- package/dist/cli/chunks/{prove-OV7S5J4W.js → prove-AYJCQYNI.js} +2 -2
- package/dist/cli/chunks/provider-manager-TRZSBXD3.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-RCEYSLVV.js +2 -0
- package/dist/cli/chunks/{quality-AXD4NLQA.js → quality-HH7L5A7V.js} +2 -2
- package/dist/cli/chunks/quality-gate-NAQLXE4C.js +7 -0
- package/dist/cli/chunks/queen-coordinator-6JFZD54W.js +2 -0
- package/dist/cli/chunks/{real-embeddings-2PUCC7FG.js → real-embeddings-IO3F4ZFR.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-WJ5ARGLW.js → roocode-installer-X4TU5HO4.js} +2 -2
- package/dist/cli/chunks/router-KRLC46NS.js +2 -0
- package/dist/cli/chunks/routing-feedback-WW26H6SA.js +2 -0
- package/dist/cli/chunks/{routing-handler-CU6657SZ.js → routing-handler-ZJKGDDMT.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-IIF6VSFW.js → ruvector-commands-NXCSUBN2.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-YMQI7XO2.js → rvf-dual-writer-JMA74SKP.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-HDE3PR2W.js → rvf-migration-adapter-BNTGH2KU.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-MQV5OA7K.js → rvf-migration-coordinator-7T2HHUOH.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-OVQKPQUH.js +2 -0
- package/dist/cli/chunks/safe-db-UQOCQIH2.js +2 -0
- package/dist/cli/chunks/schedule-EUX7ZQUK.js +2 -0
- package/dist/cli/chunks/scheduler-MALHQKNR.js +2 -0
- package/dist/cli/chunks/{security-UM3IGDSM.js → security-XSK2QHB3.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-I3SOJ6M4.js → shared-rvf-adapter-WLRKI7RY.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-KQGC2UO7.js → shared-rvf-dual-writer-SZW3J7ZK.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-OBCLRP4L.js +2 -0
- package/dist/cli/chunks/{status-handler-OX4CJZME.js → status-handler-HGCKYJX2.js} +2 -2
- package/dist/cli/chunks/{structural-health-PYUMVBXJ.js → structural-health-4SJCFX63.js} +2 -2
- package/dist/cli/chunks/{sync-2TED3YTY.js → sync-7WAVNZGL.js} +2 -2
- package/dist/cli/chunks/{sync-VALFNTA6.js → sync-ATR4DUSA.js} +2 -2
- package/dist/cli/chunks/{task-handler-VPGAJVPC.js → task-handler-O6REL34Y.js} +2 -2
- package/dist/cli/chunks/{task-handlers-IB4UAMU6.js → task-handlers-WFV2ZYWW.js} +3 -3
- package/dist/cli/chunks/{test-OMRJOZB6.js → test-4LXUVHEU.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-ZL3YFPBU.js → test-scheduling-OTN3DMKY.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-DNWZI7SH.js → token-bootstrap-VA7T4P42.js} +2 -2
- package/dist/cli/chunks/{token-usage-IYO7RGFF.js → token-usage-TLT6OXXR.js} +2 -2
- package/dist/cli/chunks/{transformers-53ALC34T.js → transformers-JI7LZRQ3.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-WUKJ2I2Q.js → tree-sitter-wasm-parser-QNIMHB4K.js} +2 -2
- package/dist/cli/chunks/{types-47FTEPMV.js → types-DJNWOAC6.js} +2 -2
- package/dist/cli/chunks/unified-memory-A5BS3LGX.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-WJLJO5MY.js +2 -0
- package/dist/cli/chunks/unified-persistence-CFC2BKI5.js +2 -0
- package/dist/cli/chunks/{upgrade-QPLMJA5Z.js → upgrade-VEW4FL23.js} +2 -2
- package/dist/cli/chunks/{validate-3GVKZOVF.js → validate-O3P6PF7B.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-XCRTLVM6.js → validate-swarm-M2HXHZVC.js} +2 -2
- package/dist/cli/chunks/{vibium-CH4VPKVZ.js → vibium-GOU55LUO.js} +2 -2
- package/dist/cli/chunks/visual-security-VPB6KVYJ.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-JDBNAZTV.js → web-tree-sitter-MXOI4GH3.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-3MNPVJBP.js → windsurf-installer-6GKT53IH.js} +2 -2
- package/dist/cli/chunks/{witness-chain-HR5UBV5J.js → witness-chain-OXGQGL26.js} +2 -2
- package/dist/cli/chunks/witness-chain-ZZAUAXDY.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-G5SQTIBZ.js → witness-key-manager-PGFSQXUJ.js} +2 -2
- package/dist/cli/chunks/{workflow-43EMD5FY.js → workflow-ENBWRMBA.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-S4LBFTYD.js +2 -0
- package/dist/cli/chunks/{wrappers-3N7AYNM3.js → wrappers-MHLNYANQ.js} +2 -2
- package/dist/cli/commands/quality-gate.d.ts +24 -0
- package/dist/cli/commands/quality-gate.js +135 -0
- package/dist/cli/index.js +5 -0
- package/dist/coordination/mincut/dream-integration.d.ts +11 -0
- package/dist/coordination/mincut/dream-integration.js +39 -12
- package/dist/integrations/ruvector/feature-flags.js +7 -0
- package/dist/learning/pattern-lifecycle.d.ts +16 -0
- package/dist/learning/pattern-lifecycle.js +77 -1
- package/dist/learning/provenance-tier.d.ts +52 -0
- package/dist/learning/provenance-tier.js +64 -0
- package/dist/learning/qe-flywheel/corpus-scorer.d.ts +55 -0
- package/dist/learning/qe-flywheel/corpus-scorer.js +293 -0
- package/dist/learning/qe-flywheel/coupled-anchor.d.ts +91 -0
- package/dist/learning/qe-flywheel/coupled-anchor.js +181 -0
- package/dist/learning/qe-flywheel/generation.d.ts +121 -0
- package/dist/learning/qe-flywheel/generation.js +167 -0
- package/dist/learning/qe-flywheel/policy.d.ts +37 -0
- package/dist/learning/qe-flywheel/policy.js +66 -0
- package/dist/learning/qe-flywheel/receipt-store.d.ts +31 -0
- package/dist/learning/qe-flywheel/receipt-store.js +89 -0
- package/dist/learning/qe-flywheel/receipt.d.ts +62 -0
- package/dist/learning/qe-flywheel/receipt.js +97 -0
- package/dist/mcp/bundle.js +396 -390
- package/dist/mcp/tools/quality-assessment/gate.d.ts +38 -0
- package/dist/mcp/tools/quality-assessment/gate.js +86 -0
- package/dist/mcp/tools/registry.d.ts +1 -0
- package/dist/mcp/tools/registry.js +3 -0
- package/dist/shared/safe-db.js +23 -4
- package/dist/validation/anchor-set.d.ts +74 -0
- package/dist/validation/anchor-set.js +78 -0
- package/dist/validation/frontier-judge.d.ts +99 -0
- package/dist/validation/frontier-judge.js +234 -0
- package/dist/validation/gate-reexecute.d.ts +165 -0
- package/dist/validation/gate-reexecute.js +255 -0
- package/dist/validation/quality-gate-runner.d.ts +49 -0
- package/dist/validation/quality-gate-runner.js +62 -0
- package/dist/validation/quality-verdict.d.ts +94 -0
- package/dist/validation/quality-verdict.js +120 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-KNM5R47J.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-MXPJLVR3.js +0 -2
- package/dist/cli/chunks/base-X4EXQ2AS.js +0 -2
- package/dist/cli/chunks/browser-workflow-4HX6RP5F.js +0 -2
- package/dist/cli/chunks/chunk-FHTYEAQ3.js +0 -2
- package/dist/cli/chunks/chunk-MIU5RUBJ.js +0 -149
- package/dist/cli/chunks/chunk-V6NAB5UZ.js +0 -2
- package/dist/cli/chunks/chunk-YR2JKBZO.js +0 -2
- package/dist/cli/chunks/chunk-ZMPAM4DY.js +0 -2
- package/dist/cli/chunks/client-AHXNCOHK.js +0 -2
- package/dist/cli/chunks/core-handlers-EEFLLMAZ.js +0 -2
- package/dist/cli/chunks/cross-domain-router-LT3H4SNJ.js +0 -2
- package/dist/cli/chunks/dream-4K3BK4IG.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-IMPPGQUK.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EIAA6R2L.js +0 -2
- package/dist/cli/chunks/hnsw-index-ZXXP6AXZ.js +0 -2
- package/dist/cli/chunks/hybrid-router-LXWG4MLH.js +0 -2
- package/dist/cli/chunks/impact-analyzer-TP5LRFYH.js +0 -2
- package/dist/cli/chunks/init-wizard-AIOA5KOY.js +0 -2
- package/dist/cli/chunks/kernel-SQALRU6Q.js +0 -2
- package/dist/cli/chunks/knowledge-graph-JFVT6SNN.js +0 -2
- package/dist/cli/chunks/llm-router-service-XHFKTH3I.js +0 -2
- package/dist/cli/chunks/load-test-JEIFJKNN.js +0 -2
- package/dist/cli/chunks/memory-backend-NT7I37CP.js +0 -2
- package/dist/cli/chunks/memory-handlers-746D7NE7.js +0 -2
- package/dist/cli/chunks/pattern-null-store-6QU6WHDW.js +0 -2
- package/dist/cli/chunks/protocol-executor-GT2MZYUU.js +0 -2
- package/dist/cli/chunks/provider-manager-OATJ7R3D.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-IJXNQ67O.js +0 -2
- package/dist/cli/chunks/queen-coordinator-6RBHWCUG.js +0 -2
- package/dist/cli/chunks/router-XKQRT5JK.js +0 -2
- package/dist/cli/chunks/routing-feedback-ACPSD4LW.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-SIWRKE33.js +0 -2
- package/dist/cli/chunks/safe-db-LCPUYMX4.js +0 -2
- package/dist/cli/chunks/schedule-HIQJCWXG.js +0 -2
- package/dist/cli/chunks/scheduler-QE5EJ5LE.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-EU54UTMH.js +0 -2
- package/dist/cli/chunks/unified-memory-CJLMC2I4.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-FDGR4D2J.js +0 -2
- package/dist/cli/chunks/unified-persistence-UFH5GLDN.js +0 -2
- package/dist/cli/chunks/visual-security-4ARJ7J2Y.js +0 -2
- package/dist/cli/chunks/witness-chain-73QC33ED.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-RKMMPXNA.js +0 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Quality Gate MCP Tool (ADR-119)
|
|
3
|
+
*
|
|
4
|
+
* qe/quality/gate - two-gate, three-valued quality verdict against a pinned
|
|
5
|
+
* ADR-117 checklist. Calls the SAME `runQualityGate` orchestrator as the
|
|
6
|
+
* `aqe quality-gate` CLI subcommand so CLI and MCP stay in exact parity.
|
|
7
|
+
*
|
|
8
|
+
* The frontier judge is built from the forwarded HybridRouter
|
|
9
|
+
* (context.llmRouter). When no provider is configured the judge's preflight
|
|
10
|
+
* fails ⇒ the verdict is `inconclusive` — never a silent pass.
|
|
11
|
+
*/
|
|
12
|
+
import { MCPToolBase, MCPToolConfig, MCPToolContext } from '../base';
|
|
13
|
+
import { ToolResult } from '../../types';
|
|
14
|
+
import type { QualityVerdictResult } from '../../../validation/quality-verdict.js';
|
|
15
|
+
export interface QualityGateParams {
|
|
16
|
+
/** Pinned anchor checklist id (e.g. "A1-inRange"). */
|
|
17
|
+
checklistId: string;
|
|
18
|
+
/** The artifact under judgement (produced test source / spec output). */
|
|
19
|
+
artifact: string;
|
|
20
|
+
/**
|
|
21
|
+
* Mechanical-gate result from the ADR-113 oracle. Omit/null ⇒ oracle did not
|
|
22
|
+
* run ⇒ mechanical fail (a non-executed test can never be a silent pass).
|
|
23
|
+
*/
|
|
24
|
+
oracle?: {
|
|
25
|
+
passed: boolean;
|
|
26
|
+
baselinePassed: boolean;
|
|
27
|
+
} | null;
|
|
28
|
+
/** Override the frozen anchor path (ADR-117). */
|
|
29
|
+
anchorPath?: string;
|
|
30
|
+
/** Frontier judge model id (ADR-111: always frontier-tier). */
|
|
31
|
+
model?: string;
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
}
|
|
34
|
+
export declare class QualityGateTool extends MCPToolBase<QualityGateParams, QualityVerdictResult> {
|
|
35
|
+
readonly config: MCPToolConfig;
|
|
36
|
+
execute(params: QualityGateParams, context: MCPToolContext): Promise<ToolResult<QualityVerdictResult>>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=gate.d.ts.map
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Quality Gate MCP Tool (ADR-119)
|
|
3
|
+
*
|
|
4
|
+
* qe/quality/gate - two-gate, three-valued quality verdict against a pinned
|
|
5
|
+
* ADR-117 checklist. Calls the SAME `runQualityGate` orchestrator as the
|
|
6
|
+
* `aqe quality-gate` CLI subcommand so CLI and MCP stay in exact parity.
|
|
7
|
+
*
|
|
8
|
+
* The frontier judge is built from the forwarded HybridRouter
|
|
9
|
+
* (context.llmRouter). When no provider is configured the judge's preflight
|
|
10
|
+
* fails ⇒ the verdict is `inconclusive` — never a silent pass.
|
|
11
|
+
*/
|
|
12
|
+
import { MCPToolBase } from '../base';
|
|
13
|
+
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
14
|
+
import { getLLMRouter } from '../base.js';
|
|
15
|
+
import { runQualityGate } from '../../../validation/quality-gate-runner.js';
|
|
16
|
+
import { createRouterFrontierJudge, createUnavailableJudge, } from '../../../validation/frontier-judge.js';
|
|
17
|
+
export class QualityGateTool extends MCPToolBase {
|
|
18
|
+
config = {
|
|
19
|
+
name: 'qe/quality/gate',
|
|
20
|
+
description: 'Two-gate, three-valued quality verdict (ADR-119): mechanical oracle gate plus a frontier '
|
|
21
|
+
+ 'judge grading the artifact against a pinned ADR-117 checklist. Returns pass|fail|inconclusive.',
|
|
22
|
+
domain: 'quality-assessment',
|
|
23
|
+
schema: QUALITY_GATE_SCHEMA,
|
|
24
|
+
streaming: false,
|
|
25
|
+
timeout: 120000,
|
|
26
|
+
};
|
|
27
|
+
async execute(params, context) {
|
|
28
|
+
try {
|
|
29
|
+
if (!params.checklistId) {
|
|
30
|
+
return { success: false, error: 'checklistId is required' };
|
|
31
|
+
}
|
|
32
|
+
if (typeof params.artifact !== 'string' || params.artifact.length === 0) {
|
|
33
|
+
return { success: false, error: 'artifact (non-empty string) is required' };
|
|
34
|
+
}
|
|
35
|
+
const router = await getLLMRouter(context);
|
|
36
|
+
const judge = router
|
|
37
|
+
? createRouterFrontierJudge(router, params.model ? { model: params.model } : {})
|
|
38
|
+
: createUnavailableJudge('no LLM provider configured — set a frontier provider API key');
|
|
39
|
+
if (!router) {
|
|
40
|
+
this.markAsDemoData(context, 'no LLM router — frontier judge unavailable, verdict will be inconclusive');
|
|
41
|
+
}
|
|
42
|
+
const result = await runQualityGate({
|
|
43
|
+
oracleResult: params.oracle ?? null,
|
|
44
|
+
artifact: params.artifact,
|
|
45
|
+
checklistId: params.checklistId,
|
|
46
|
+
judge,
|
|
47
|
+
anchorPath: params.anchorPath,
|
|
48
|
+
});
|
|
49
|
+
return { success: true, data: result };
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return { success: false, error: `Quality gate failed: ${toErrorMessage(error)}` };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const QUALITY_GATE_SCHEMA = {
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: {
|
|
59
|
+
checklistId: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'Pinned ADR-117 anchor checklist id (e.g. "A1-inRange")',
|
|
62
|
+
},
|
|
63
|
+
artifact: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'The artifact under judgement (produced test source / spec output)',
|
|
66
|
+
},
|
|
67
|
+
oracle: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
description: 'ADR-113 mechanical oracle result. Omit ⇒ mechanical fail (test did not execute).',
|
|
70
|
+
properties: {
|
|
71
|
+
passed: { type: 'boolean', description: 'Mutation score met threshold' },
|
|
72
|
+
baselinePassed: { type: 'boolean', description: 'Tests executed against the reference impl' },
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
anchorPath: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'Override the frozen anchor path (ADR-117)',
|
|
78
|
+
},
|
|
79
|
+
model: {
|
|
80
|
+
type: 'string',
|
|
81
|
+
description: 'Frontier judge model id (ADR-111: always frontier-tier)',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
required: ['checklistId', 'artifact'],
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=gate.js.map
|
|
@@ -29,6 +29,7 @@ export declare const QE_TOOL_NAMES: {
|
|
|
29
29
|
readonly COVERAGE_ANALYZE: "qe/coverage/analyze";
|
|
30
30
|
readonly COVERAGE_GAPS: "qe/coverage/gaps";
|
|
31
31
|
readonly QUALITY_EVALUATE: "qe/quality/evaluate";
|
|
32
|
+
readonly QUALITY_GATE: "qe/quality/gate";
|
|
32
33
|
readonly DEFECT_PREDICT: "qe/defects/predict";
|
|
33
34
|
readonly REQUIREMENTS_VALIDATE: "qe/requirements/validate";
|
|
34
35
|
readonly QUALITY_CRITERIA: "qe/requirements/quality-criteria";
|
|
@@ -9,6 +9,7 @@ import { TestGenerateTool } from './test-generation/generate';
|
|
|
9
9
|
import { TestExecuteTool } from './test-execution/execute';
|
|
10
10
|
import { CoverageAnalyzeTool, CoverageGapsTool } from './coverage-analysis';
|
|
11
11
|
import { QualityEvaluateTool } from './quality-assessment/evaluate';
|
|
12
|
+
import { QualityGateTool } from './quality-assessment/gate';
|
|
12
13
|
import { DefectPredictTool } from './defect-intelligence/predict';
|
|
13
14
|
import { RequirementsValidateTool } from './requirements-validation/validate';
|
|
14
15
|
import { QualityCriteriaTool } from './requirements-validation/quality-criteria';
|
|
@@ -42,6 +43,7 @@ export const QE_TOOL_NAMES = {
|
|
|
42
43
|
COVERAGE_GAPS: 'qe/coverage/gaps',
|
|
43
44
|
// Quality Assessment
|
|
44
45
|
QUALITY_EVALUATE: 'qe/quality/evaluate',
|
|
46
|
+
QUALITY_GATE: 'qe/quality/gate',
|
|
45
47
|
// Defect Intelligence
|
|
46
48
|
DEFECT_PREDICT: 'qe/defects/predict',
|
|
47
49
|
// Requirements Validation
|
|
@@ -105,6 +107,7 @@ export const QE_TOOLS = [
|
|
|
105
107
|
new CoverageGapsTool(),
|
|
106
108
|
// Quality Assessment Domain
|
|
107
109
|
new QualityEvaluateTool(),
|
|
110
|
+
new QualityGateTool(),
|
|
108
111
|
// Defect Intelligence Domain
|
|
109
112
|
new DefectPredictTool(),
|
|
110
113
|
// Requirements Validation Domain
|
package/dist/shared/safe-db.js
CHANGED
|
@@ -23,6 +23,18 @@ export function openDatabase(dbPath, opts) {
|
|
|
23
23
|
const fileMustExist = opts?.fileMustExist ?? false;
|
|
24
24
|
const busyTimeout = opts?.busyTimeout ?? 5000;
|
|
25
25
|
const walMode = opts?.walMode ?? !readonly;
|
|
26
|
+
// Environment override for filesystems where WAL is UNSAFE. WAL prevents
|
|
27
|
+
// concurrent-writer corruption on a normal filesystem, but on a macOS
|
|
28
|
+
// Docker/virtiofs bind mount the `-shm` mmap coherence across the
|
|
29
|
+
// host/container boundary is broken, so WAL checkpoints can zero pages and
|
|
30
|
+
// corrupt the DB (observed 2026-06-08 and again 2026-07-07). On such a mount,
|
|
31
|
+
// set AQE_DISABLE_WAL=1 (or AQE_JOURNAL_MODE=DELETE|TRUNCATE) so this process
|
|
32
|
+
// opens the DB in a rollback-journal mode instead. Default behavior is
|
|
33
|
+
// unchanged: without the env var, writable connections still use WAL.
|
|
34
|
+
const journalOverride = (process.env.AQE_JOURNAL_MODE ?? '').trim().toUpperCase();
|
|
35
|
+
const disableWal = process.env.AQE_DISABLE_WAL === '1' ||
|
|
36
|
+
journalOverride === 'DELETE' ||
|
|
37
|
+
journalOverride === 'TRUNCATE';
|
|
26
38
|
const db = new Database(dbPath, {
|
|
27
39
|
readonly,
|
|
28
40
|
fileMustExist,
|
|
@@ -30,10 +42,17 @@ export function openDatabase(dbPath, opts) {
|
|
|
30
42
|
// Always set busy_timeout — even for readonly connections.
|
|
31
43
|
// Without this, concurrent access gets SQLITE_BUSY immediately.
|
|
32
44
|
db.pragma(`busy_timeout = ${busyTimeout}`);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
if (disableWal) {
|
|
46
|
+
// Explicit opt-out of WAL for this environment. Readonly connections cannot
|
|
47
|
+
// change journal_mode, so only apply to writable opens.
|
|
48
|
+
if (!readonly) {
|
|
49
|
+
db.pragma(`journal_mode = ${journalOverride || 'DELETE'}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (walMode) {
|
|
53
|
+
// WAL mode for writable connections prevents corruption from concurrent
|
|
54
|
+
// writers. Readonly connections inherit WAL from the DB file but we set it
|
|
55
|
+
// explicitly to be safe in case the DB was created without WAL.
|
|
37
56
|
db.pragma('journal_mode = WAL');
|
|
38
57
|
}
|
|
39
58
|
return db;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frozen oracle-grade QE anchor set (ADR-117).
|
|
3
|
+
*
|
|
4
|
+
* A small, human-labeled, content-hash-pinned, constant-denominator eval set
|
|
5
|
+
* that promotion gates (ADR-118 accept(), ADR-120 re-executed gates) must
|
|
6
|
+
* evaluate and never regress against. The loader recomputes the content hash on
|
|
7
|
+
* load and THROWS on drift — a frozen anchor the optimizer can silently edit is
|
|
8
|
+
* not frozen. Mirrors ruflo `harness-frozen-eval` + retort's constant-denominator
|
|
9
|
+
* `REQUIREMENTS.json`.
|
|
10
|
+
*
|
|
11
|
+
* Each item is a test-generation task graded by the ADR-113 oracle
|
|
12
|
+
* (`evaluateOracle`): the policy produces a test for `referenceImpl`, and the
|
|
13
|
+
* mutation kill rate is the score. `requirements` is the pinned checklist (the
|
|
14
|
+
* constant denominator) the ADR-119 judge grades against.
|
|
15
|
+
*/
|
|
16
|
+
export interface AnchorItem {
|
|
17
|
+
/** Stable item id (e.g. "A1-inRange"). */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Human-readable spec the test-gen policy is asked to produce a test for. */
|
|
20
|
+
inputUnderTest: string;
|
|
21
|
+
/** Base module name (no extension) for the reference impl. */
|
|
22
|
+
moduleName: string;
|
|
23
|
+
/** ESM source of the correct implementation. */
|
|
24
|
+
referenceImpl: string;
|
|
25
|
+
/** Pinned checklist of requirements — the CONSTANT denominator (frozen count). */
|
|
26
|
+
requirements: string[];
|
|
27
|
+
/** Ground-truth mutant count a correct test must kill (measured via the oracle at freeze time). */
|
|
28
|
+
expectedMutants: number;
|
|
29
|
+
}
|
|
30
|
+
export interface AnchorPassBar {
|
|
31
|
+
/** Minimum mutation kill rate for an item to pass (ADR-117 "High" bar = 0.8). */
|
|
32
|
+
mutationThreshold: number;
|
|
33
|
+
/** Required checklist coverage for the ADR-119 judge (pass only at 1.0). */
|
|
34
|
+
checklistCoverage: number;
|
|
35
|
+
}
|
|
36
|
+
export interface AnchorSet {
|
|
37
|
+
schemaVersion: number;
|
|
38
|
+
/** The frozen quality bar. */
|
|
39
|
+
passBar: AnchorPassBar;
|
|
40
|
+
/** No-regression tolerance: a promotion may not drop the anchor mean by more than this. */
|
|
41
|
+
anchorTol: number;
|
|
42
|
+
/** SHA-256 over the canonicalized items — recomputed and checked on load. */
|
|
43
|
+
contentHash: string;
|
|
44
|
+
items: AnchorItem[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Deterministic canonical form of the items for hashing: items sorted by id,
|
|
48
|
+
* object keys sorted, no incidental whitespace. Independent of file formatting
|
|
49
|
+
* and key order so a semantically-identical file hashes identically.
|
|
50
|
+
*/
|
|
51
|
+
export declare function canonicalizeItems(items: AnchorItem[]): string;
|
|
52
|
+
/** SHA-256 content hash over the canonicalized items. */
|
|
53
|
+
export declare function computeContentHash(items: AnchorItem[]): string;
|
|
54
|
+
/**
|
|
55
|
+
* Load a frozen anchor set, refusing to return if the recorded hash does not
|
|
56
|
+
* match the recomputed one (ADR-117 §2). No promotion path may read the anchor
|
|
57
|
+
* except through this loader.
|
|
58
|
+
*/
|
|
59
|
+
export declare function loadAnchorSet(path: string): AnchorSet;
|
|
60
|
+
/** The score of one anchor item = its oracle mutation kill rate. */
|
|
61
|
+
export declare function anchorItemScore(oracleResult: {
|
|
62
|
+
mutationScore: number;
|
|
63
|
+
}): number;
|
|
64
|
+
/**
|
|
65
|
+
* The anchor mean: Σ score / N with N constant (the constant-denominator
|
|
66
|
+
* property — comparable across runs and generations).
|
|
67
|
+
*/
|
|
68
|
+
export declare function anchorMean(scores: number[]): number;
|
|
69
|
+
/**
|
|
70
|
+
* No-regression contract (ADR-117 §4, ADR-118 accept(), ADR-120 re-exec).
|
|
71
|
+
* A candidate policy may not drop the anchor mean below baseline − tol.
|
|
72
|
+
*/
|
|
73
|
+
export declare function meetsNoRegression(candidateMean: number, baselineMean: number, tol: number): boolean;
|
|
74
|
+
//# sourceMappingURL=anchor-set.d.ts.map
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frozen oracle-grade QE anchor set (ADR-117).
|
|
3
|
+
*
|
|
4
|
+
* A small, human-labeled, content-hash-pinned, constant-denominator eval set
|
|
5
|
+
* that promotion gates (ADR-118 accept(), ADR-120 re-executed gates) must
|
|
6
|
+
* evaluate and never regress against. The loader recomputes the content hash on
|
|
7
|
+
* load and THROWS on drift — a frozen anchor the optimizer can silently edit is
|
|
8
|
+
* not frozen. Mirrors ruflo `harness-frozen-eval` + retort's constant-denominator
|
|
9
|
+
* `REQUIREMENTS.json`.
|
|
10
|
+
*
|
|
11
|
+
* Each item is a test-generation task graded by the ADR-113 oracle
|
|
12
|
+
* (`evaluateOracle`): the policy produces a test for `referenceImpl`, and the
|
|
13
|
+
* mutation kill rate is the score. `requirements` is the pinned checklist (the
|
|
14
|
+
* constant denominator) the ADR-119 judge grades against.
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from 'node:crypto';
|
|
17
|
+
import fs from 'node:fs';
|
|
18
|
+
/**
|
|
19
|
+
* Deterministic canonical form of the items for hashing: items sorted by id,
|
|
20
|
+
* object keys sorted, no incidental whitespace. Independent of file formatting
|
|
21
|
+
* and key order so a semantically-identical file hashes identically.
|
|
22
|
+
*/
|
|
23
|
+
export function canonicalizeItems(items) {
|
|
24
|
+
const norm = [...items]
|
|
25
|
+
.sort((a, b) => a.id.localeCompare(b.id))
|
|
26
|
+
.map((it) => ({
|
|
27
|
+
id: it.id,
|
|
28
|
+
inputUnderTest: it.inputUnderTest,
|
|
29
|
+
moduleName: it.moduleName,
|
|
30
|
+
referenceImpl: it.referenceImpl,
|
|
31
|
+
requirements: it.requirements,
|
|
32
|
+
expectedMutants: it.expectedMutants,
|
|
33
|
+
}));
|
|
34
|
+
return JSON.stringify(norm);
|
|
35
|
+
}
|
|
36
|
+
/** SHA-256 content hash over the canonicalized items. */
|
|
37
|
+
export function computeContentHash(items) {
|
|
38
|
+
return createHash('sha256').update(canonicalizeItems(items)).digest('hex');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Load a frozen anchor set, refusing to return if the recorded hash does not
|
|
42
|
+
* match the recomputed one (ADR-117 §2). No promotion path may read the anchor
|
|
43
|
+
* except through this loader.
|
|
44
|
+
*/
|
|
45
|
+
export function loadAnchorSet(path) {
|
|
46
|
+
const raw = JSON.parse(fs.readFileSync(path, 'utf8'));
|
|
47
|
+
const recomputed = computeContentHash(raw.items);
|
|
48
|
+
if (recomputed !== raw.contentHash) {
|
|
49
|
+
throw new Error(`Anchor set hash drift at ${path}: recorded ${raw.contentHash}, `
|
|
50
|
+
+ `recomputed ${recomputed}. Refusing to load a mutated frozen anchor (ADR-117). `
|
|
51
|
+
+ `A legitimate change must be a versioned re-freeze (qe-anchor-v2), never an in-place edit.`);
|
|
52
|
+
}
|
|
53
|
+
if (raw.items.length === 0) {
|
|
54
|
+
throw new Error(`Anchor set at ${path} has no items — a frozen anchor must be non-empty.`);
|
|
55
|
+
}
|
|
56
|
+
return raw;
|
|
57
|
+
}
|
|
58
|
+
/** The score of one anchor item = its oracle mutation kill rate. */
|
|
59
|
+
export function anchorItemScore(oracleResult) {
|
|
60
|
+
return oracleResult.mutationScore;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The anchor mean: Σ score / N with N constant (the constant-denominator
|
|
64
|
+
* property — comparable across runs and generations).
|
|
65
|
+
*/
|
|
66
|
+
export function anchorMean(scores) {
|
|
67
|
+
if (scores.length === 0)
|
|
68
|
+
return 0;
|
|
69
|
+
return scores.reduce((a, b) => a + b, 0) / scores.length;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* No-regression contract (ADR-117 §4, ADR-118 accept(), ADR-120 re-exec).
|
|
73
|
+
* A candidate policy may not drop the anchor mean below baseline − tol.
|
|
74
|
+
*/
|
|
75
|
+
export function meetsNoRegression(candidateMean, baselineMean, tol) {
|
|
76
|
+
return candidateMean >= baselineMean - tol;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=anchor-set.js.map
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frontier-tier spec judge for the ADR-119 two-gate quality verdict.
|
|
3
|
+
*
|
|
4
|
+
* This is the real spec-gate `Judge` consumed by `computeQualityVerdict`
|
|
5
|
+
* (quality-verdict.ts). It grades an artifact against a pinned,
|
|
6
|
+
* constant-denominator ADR-117 checklist using a FRONTIER model — never the
|
|
7
|
+
* cheap local writer lane (ADR-111: the oracle is the one place you never
|
|
8
|
+
* economize). Two design guarantees flow from the verdict logic:
|
|
9
|
+
*
|
|
10
|
+
* - `preflight()` does a cheap live round-trip to prove the provider and
|
|
11
|
+
* credentials actually respond. On any failure it returns `false`, which the
|
|
12
|
+
* verdict maps to `inconclusive` — a dead provider can never masquerade as a
|
|
13
|
+
* silent pass.
|
|
14
|
+
* - `grade()` returns `ran: false` on ANY tooling failure (timeout,
|
|
15
|
+
* usage-limit, unparseable response). A non-real opinion can never
|
|
16
|
+
* contribute to a `fail`; too few real opinions ⇒ `inconclusive`.
|
|
17
|
+
*
|
|
18
|
+
* The single provider call is isolated behind an injectable `complete(prompt)`
|
|
19
|
+
* seam so the judge is unit-testable with a fake and zero network. Wire the real
|
|
20
|
+
* frontier model with `routerComplete()` / `createRouterFrontierJudge()`.
|
|
21
|
+
*/
|
|
22
|
+
import type { Judge, RequirementChecklist } from './quality-verdict.js';
|
|
23
|
+
import type { HybridRouter } from '../shared/llm/router/hybrid-router.js';
|
|
24
|
+
import type { ExtendedProviderType } from '../shared/llm/router/types.js';
|
|
25
|
+
/** The model call seam. Returns the raw model text for one prompt. */
|
|
26
|
+
export type CompleteFn = (prompt: string) => Promise<string>;
|
|
27
|
+
export interface FrontierJudgeOptions {
|
|
28
|
+
/**
|
|
29
|
+
* Injectable frontier-model call. In production this is `routerComplete()`
|
|
30
|
+
* bound to a frontier model; in tests it is a fake — NO network either way.
|
|
31
|
+
*/
|
|
32
|
+
complete: CompleteFn;
|
|
33
|
+
/**
|
|
34
|
+
* Cheap liveness ping used by `preflight()`. Defaults to a minimal
|
|
35
|
+
* `complete()` round-trip. Should resolve truthy only when the provider and
|
|
36
|
+
* credentials actually respond.
|
|
37
|
+
*/
|
|
38
|
+
ping?: () => Promise<boolean>;
|
|
39
|
+
/** Frontier model id, for reporting/telemetry only (the seam owns the call). */
|
|
40
|
+
model?: string;
|
|
41
|
+
/** Per-call timeout in ms (grade + default ping). Default 60s. */
|
|
42
|
+
timeoutMs?: number;
|
|
43
|
+
/** Optional diagnostic logger. */
|
|
44
|
+
logger?: (message: string) => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create the ADR-119 frontier spec judge.
|
|
48
|
+
*
|
|
49
|
+
* The returned object satisfies the `Judge` contract consumed by
|
|
50
|
+
* `computeQualityVerdict`. All provider interaction is behind `opts.complete`.
|
|
51
|
+
*/
|
|
52
|
+
export declare function createFrontierJudge(opts: FrontierJudgeOptions): Judge;
|
|
53
|
+
/**
|
|
54
|
+
* Build a `complete()` seam backed by the shared HybridRouter, pinned to a
|
|
55
|
+
* frontier model. This is where the ADR-111 "never economize the oracle" rule is
|
|
56
|
+
* enforced: `model` defaults to a frontier Opus and `preferredProvider` lets the
|
|
57
|
+
* caller route to a frontier provider explicitly.
|
|
58
|
+
*/
|
|
59
|
+
export declare function routerComplete(router: HybridRouter, opts?: {
|
|
60
|
+
model?: string;
|
|
61
|
+
preferredProvider?: ExtendedProviderType;
|
|
62
|
+
temperature?: number;
|
|
63
|
+
maxTokens?: number;
|
|
64
|
+
timeoutMs?: number;
|
|
65
|
+
}): CompleteFn;
|
|
66
|
+
/**
|
|
67
|
+
* Convenience: a frontier judge wired to the shared HybridRouter. The judge is
|
|
68
|
+
* ALWAYS frontier-tier — `model` defaults to a frontier Opus.
|
|
69
|
+
*/
|
|
70
|
+
export declare function createRouterFrontierJudge(router: HybridRouter, opts?: {
|
|
71
|
+
model?: string;
|
|
72
|
+
preferredProvider?: ExtendedProviderType;
|
|
73
|
+
temperature?: number;
|
|
74
|
+
maxTokens?: number;
|
|
75
|
+
timeoutMs?: number;
|
|
76
|
+
logger?: (message: string) => void;
|
|
77
|
+
}): Judge;
|
|
78
|
+
/**
|
|
79
|
+
* A judge for when no frontier provider is available (no LLM router / no
|
|
80
|
+
* credentials). `preflight()` returns false so the verdict is `inconclusive` —
|
|
81
|
+
* NEVER a silent pass. Both CLI and MCP use this fallback so they stay in parity.
|
|
82
|
+
*/
|
|
83
|
+
export declare function createUnavailableJudge(_reason: string): Judge;
|
|
84
|
+
/**
|
|
85
|
+
* Build the grading prompt. Requirements are numbered 1..N and the model is
|
|
86
|
+
* asked for the numbers of the UNMET ones as strict JSON. Reporting unmet (not
|
|
87
|
+
* satisfied) keeps the denominator constant and the contract unambiguous.
|
|
88
|
+
*/
|
|
89
|
+
export declare function buildGradePrompt(artifact: string, checklist: RequirementChecklist): string;
|
|
90
|
+
/**
|
|
91
|
+
* Parse the model response into a set of 0-based unmet requirement indices.
|
|
92
|
+
* Returns `null` when the response cannot be parsed into the strict contract
|
|
93
|
+
* (so the caller treats it as a non-real opinion). Out-of-range and duplicate
|
|
94
|
+
* numbers are ignored — a garbled index list never inflates the unmet count.
|
|
95
|
+
*/
|
|
96
|
+
export declare function parseUnmetIndices(raw: string, total: number): Set<number> | null;
|
|
97
|
+
/** Reject with a timeout error if `p` does not settle within `ms`. */
|
|
98
|
+
export declare function withTimeout<T>(p: Promise<T>, ms: number, label: string): Promise<T>;
|
|
99
|
+
//# sourceMappingURL=frontier-judge.d.ts.map
|