agentic-qe 3.15.10 → 3.15.12
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 +38 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +263 -0
- package/README.md +8 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/adapters/a2a/agent-cards/generator.js +6 -3
- package/dist/adapters/a2a/tasks/task-router.js +3 -1
- package/dist/adapters/trajectory-adapter.js +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +3 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +31 -2
- package/dist/agents/overlay-loader.js +26 -21
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-HL7MOCQN.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-H7ANGXW4.js → agent-booster-wasm-5VZCKTIJ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-SVXSHEET.js → agent-handler-K3C6CQCD.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WKQH36XL.js → agent-memory-branch-NVFQ25WS.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-OZ2DXB4G.js +2 -0
- package/dist/cli/chunks/{arena-EKOOFVST.js → arena-QGWIJADQ.js} +2 -2
- package/dist/cli/chunks/{arena-OPS36NFZ.js → arena-TSZVDSXS.js} +4 -4
- package/dist/cli/chunks/{audit-AO5NDZRI.js → audit-KIEE2SHJ.js} +3 -3
- package/dist/cli/chunks/base-WIM7G3HC.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-TFLVEMMY.js → better-sqlite3-BNB32NW3.js} +2 -2
- package/dist/cli/chunks/{brain-handler-ADBBJPYW.js → brain-handler-MPC5SPYI.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HGHUYYL5.js → branch-enumerator-LZ7UXKAY.js} +2 -2
- package/dist/cli/chunks/{browser-5LU6P4SZ.js → browser-VDHAW4RK.js} +2 -2
- package/dist/cli/chunks/browser-workflow-QRKCFVR3.js +2 -0
- package/dist/cli/chunks/{chunk-5LPYV3TK.js → chunk-23PQF7NN.js} +1 -1
- package/dist/cli/chunks/{chunk-2ZMF4NCF.js → chunk-26672ISV.js} +2 -2
- package/dist/cli/chunks/{chunk-U53ZB4IX.js → chunk-2ASQRBK2.js} +2 -2
- package/dist/cli/chunks/{chunk-7PJIR4ST.js → chunk-2E2QO44T.js} +2 -2
- package/dist/cli/chunks/{chunk-2T7RRL6G.js → chunk-2IVE5AR3.js} +1 -1
- package/dist/cli/chunks/{chunk-B6LTH6YV.js → chunk-2JYUA27M.js} +1 -1
- package/dist/cli/chunks/{chunk-PFG6VQ5Z.js → chunk-2PPSS4JD.js} +2 -2
- package/dist/cli/chunks/{chunk-NZYLNXT6.js → chunk-32UTHIY5.js} +5 -5
- package/dist/cli/chunks/{chunk-5E6GHSTY.js → chunk-33I2ZP6E.js} +2 -2
- package/dist/cli/chunks/{chunk-XLZYRTNO.js → chunk-35MIUSXQ.js} +2 -2
- package/dist/cli/chunks/{chunk-7LFZ4CHM.js → chunk-35NW676P.js} +2 -2
- package/dist/cli/chunks/{chunk-4G63WT4F.js → chunk-3EWQN37E.js} +2 -2
- package/dist/cli/chunks/{chunk-GZLZCZ42.js → chunk-3IU4LDZR.js} +2 -2
- package/dist/cli/chunks/{chunk-CESIR27V.js → chunk-47RMGDG4.js} +2 -2
- package/dist/cli/chunks/chunk-4A76VPU4.js +3 -0
- package/dist/cli/chunks/{chunk-DT7SIJOA.js → chunk-4CB3QPZM.js} +2 -2
- package/dist/cli/chunks/{chunk-ERQKYIP7.js → chunk-4HWUECVD.js} +5 -5
- package/dist/cli/chunks/{chunk-MA7JIQ6U.js → chunk-4KUOYDY2.js} +5 -5
- package/dist/cli/chunks/{chunk-VWNFAW2M.js → chunk-4LWMAAWK.js} +2 -2
- package/dist/cli/chunks/{chunk-IKISCIGH.js → chunk-4PU5GTZW.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXPY654C.js → chunk-4SA7M34P.js} +1 -1
- package/dist/cli/chunks/{chunk-NGKNYIQZ.js → chunk-4Y6OEBJZ.js} +1 -1
- package/dist/cli/chunks/{chunk-KOBVYY6H.js → chunk-5A66EGEW.js} +2 -2
- package/dist/cli/chunks/{chunk-Z2O2YJAF.js → chunk-5ADXFUMO.js} +2 -2
- package/dist/cli/chunks/{chunk-YKMU4LBV.js → chunk-5S4UIDFK.js} +1 -1
- package/dist/cli/chunks/{chunk-Z7IYW5U7.js → chunk-5TAEW5OV.js} +1 -1
- package/dist/cli/chunks/chunk-5Z23ZMXZ.js +742 -0
- package/dist/cli/chunks/{chunk-6TB6YOCZ.js → chunk-65TH6RPD.js} +1 -1
- package/dist/cli/chunks/{chunk-3Y7SPD72.js → chunk-66PXR3NI.js} +2 -2
- package/dist/cli/chunks/{chunk-3P34JFQH.js → chunk-6E6HB4N4.js} +14 -14
- package/dist/cli/chunks/{chunk-6PX4OXQO.js → chunk-6QRI3JVE.js} +2 -2
- package/dist/cli/chunks/{chunk-WBM6N6IM.js → chunk-7DNR4KKR.js} +1 -1
- package/dist/cli/chunks/{chunk-6XCMKIZN.js → chunk-7JFDLL2F.js} +1 -1
- package/dist/cli/chunks/chunk-7OEFBWAG.js +5 -0
- package/dist/cli/chunks/{chunk-Y76IAYQD.js → chunk-7QEUHNKO.js} +1 -1
- package/dist/cli/chunks/{chunk-WQ4PYWSW.js → chunk-7TA5MUPW.js} +1 -1
- package/dist/cli/chunks/{chunk-2XGVTYVX.js → chunk-A2JCRXTK.js} +2 -2
- package/dist/cli/chunks/{chunk-ESUO3GTJ.js → chunk-A5Y7DAVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-ATHWDAXB.js → chunk-ADUAJIAU.js} +2 -2
- package/dist/cli/chunks/{chunk-IU2IV4NE.js → chunk-AJEXPFAB.js} +1 -1
- package/dist/cli/chunks/{chunk-YK7JN5N7.js → chunk-BC4T6SCV.js} +4 -4
- package/dist/cli/chunks/{chunk-KSIWGGJI.js → chunk-BMG2JLSQ.js} +2 -2
- package/dist/cli/chunks/chunk-BOSMELJX.js +180 -0
- package/dist/cli/chunks/{chunk-7OZVZIBE.js → chunk-BYRCB5JT.js} +2 -2
- package/dist/cli/chunks/{chunk-FAUCT5KR.js → chunk-C3YOVASQ.js} +6 -5
- package/dist/cli/chunks/{chunk-DMFTELBS.js → chunk-C74M4WUI.js} +2 -2
- package/dist/cli/chunks/{chunk-2SXBBUM6.js → chunk-CA5UNWQF.js} +2 -2
- package/dist/cli/chunks/{chunk-UCJMVXO4.js → chunk-CDA5Z74H.js} +2 -2
- package/dist/cli/chunks/{chunk-NVYIZCSR.js → chunk-CPIBIR3X.js} +2 -2
- package/dist/cli/chunks/{chunk-YK3BVZY6.js → chunk-CU36D7TN.js} +2 -2
- package/dist/cli/chunks/{chunk-H32EPIR2.js → chunk-DAUEK66C.js} +1 -1
- package/dist/cli/chunks/{chunk-6KIL6CMD.js → chunk-DRCBRUGN.js} +2 -2
- package/dist/cli/chunks/{chunk-EWFECZ2U.js → chunk-DZGPUGUG.js} +2 -2
- package/dist/cli/chunks/{chunk-YDAQK5UF.js → chunk-EF6OERRR.js} +1 -1
- package/dist/cli/chunks/{chunk-KG336OV3.js → chunk-EN7GRVEQ.js} +2 -2
- package/dist/cli/chunks/{chunk-DBMNJSBV.js → chunk-ENGL7FIJ.js} +1 -1
- package/dist/cli/chunks/{chunk-FKL3R5JQ.js → chunk-FAGKBOX2.js} +2 -2
- package/dist/cli/chunks/{chunk-NAXGWDVM.js → chunk-FNUFTWEO.js} +3 -3
- package/dist/cli/chunks/{chunk-RWWOHCMG.js → chunk-FZJCBSN4.js} +2 -2
- package/dist/cli/chunks/{chunk-ABFFWZPC.js → chunk-G24SWTAX.js} +151 -149
- package/dist/cli/chunks/{chunk-ODJNUMV3.js → chunk-G3AABG4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-FBXTQNRH.js → chunk-GJKZ7UQO.js} +2 -2
- package/dist/cli/chunks/{chunk-DEF34AFL.js → chunk-GKFV6CUD.js} +2 -2
- package/dist/cli/chunks/{chunk-SY2IB442.js → chunk-HLGFHHWV.js} +2 -2
- package/dist/cli/chunks/{chunk-CZGOSJQ4.js → chunk-HM3LSFTY.js} +2 -2
- package/dist/cli/chunks/chunk-HSA5IGGW.js +2 -0
- package/dist/cli/chunks/{chunk-GJHWY3ZX.js → chunk-HZBXJFGN.js} +2 -2
- package/dist/cli/chunks/chunk-IA55PFLG.js +7 -0
- package/dist/cli/chunks/{chunk-MNN5J4GU.js → chunk-ICKUINKD.js} +2 -2
- package/dist/cli/chunks/{chunk-XEB3NLJR.js → chunk-IETBWYHW.js} +2 -2
- package/dist/cli/chunks/{chunk-A55QKKT2.js → chunk-IL7GQNNE.js} +2 -2
- package/dist/cli/chunks/{chunk-LRZY4KS2.js → chunk-INZARYUD.js} +2 -2
- package/dist/cli/chunks/{chunk-OBAREPDC.js → chunk-IPA7K556.js} +2 -2
- package/dist/cli/chunks/{chunk-CFBEBXLO.js → chunk-IVTQF55W.js} +3 -3
- package/dist/cli/chunks/{chunk-FFTPAWM6.js → chunk-J7Y7ZBIT.js} +8 -8
- package/dist/cli/chunks/{chunk-I33O4BRQ.js → chunk-JGIJPDGD.js} +2 -2
- package/dist/cli/chunks/chunk-JNXK47OL.js +2 -0
- package/dist/cli/chunks/{chunk-PCEW6Q2C.js → chunk-JOWUS2X5.js} +1 -1
- package/dist/cli/chunks/{chunk-KI73QCR5.js → chunk-JR6CUKAI.js} +2 -2
- package/dist/cli/chunks/chunk-JRYWLOBD.js +21 -0
- package/dist/cli/chunks/{chunk-SO45NA4D.js → chunk-JW5PDJ5O.js} +11 -11
- package/dist/cli/chunks/{chunk-APSRPR4W.js → chunk-K3A3NWT3.js} +2 -2
- package/dist/cli/chunks/{chunk-FESZBPUB.js → chunk-KA5SHLMW.js} +2 -2
- package/dist/cli/chunks/{chunk-OPFGRS5S.js → chunk-KGA7VAI4.js} +2 -2
- package/dist/cli/chunks/chunk-KJDI5CHX.js +2 -0
- package/dist/cli/chunks/{chunk-V2RSNVMW.js → chunk-L3PV7VXK.js} +1 -1
- package/dist/cli/chunks/{chunk-C522H7XR.js → chunk-L7NGKANW.js} +32 -32
- package/dist/cli/chunks/{chunk-DNRWGATA.js → chunk-LFBA735S.js} +7 -7
- package/dist/cli/chunks/{chunk-V2M2XCR5.js → chunk-MAJXZYGK.js} +1 -1
- package/dist/cli/chunks/{chunk-FZOWULMH.js → chunk-MCPEC6OO.js} +1 -1
- package/dist/cli/chunks/{chunk-LMS3Y7JD.js → chunk-MCPXNUDK.js} +2 -2
- package/dist/cli/chunks/{chunk-GWZZ7DAO.js → chunk-MMEALJ4D.js} +2 -2
- package/dist/cli/chunks/{chunk-G3CZCUPM.js → chunk-MYF5CNGV.js} +2 -2
- package/dist/cli/chunks/{chunk-NNFZUTDH.js → chunk-MYUMJ2ZI.js} +1 -1
- package/dist/cli/chunks/{chunk-WDQ7IEZY.js → chunk-N7O3PF6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-YAKGBHO4.js → chunk-NA3F6FEO.js} +2 -2
- package/dist/cli/chunks/chunk-NNBQZR73.js +6 -0
- package/dist/cli/chunks/{chunk-6C3II5OM.js → chunk-NV74SICL.js} +2 -2
- package/dist/cli/chunks/chunk-NVRYELCY.js +13 -0
- package/dist/cli/chunks/{chunk-UHTTW3IT.js → chunk-NX4BCSOZ.js} +2 -2
- package/dist/cli/chunks/{chunk-EN2QSKFF.js → chunk-O3IM4WRZ.js} +2 -2
- package/dist/cli/chunks/{chunk-S75EYIJG.js → chunk-O4QJMANM.js} +1 -1
- package/dist/cli/chunks/{chunk-NPPHWFA2.js → chunk-OHVYINGM.js} +18 -18
- package/dist/cli/chunks/{chunk-DE4YJQJF.js → chunk-P5E26N2X.js} +2 -2
- package/dist/cli/chunks/chunk-P7UFJ6DO.js +14 -0
- package/dist/cli/chunks/{chunk-XFVTGAAJ.js → chunk-PGSJBXTD.js} +2 -2
- package/dist/cli/chunks/{chunk-CZ2IF6MC.js → chunk-PT2NXS43.js} +1 -1
- package/dist/cli/chunks/{chunk-RK73HB2F.js → chunk-PTBOLBM4.js} +2 -2
- package/dist/cli/chunks/{chunk-EAU5KDFO.js → chunk-PX5OPXY6.js} +1 -1
- package/dist/cli/chunks/chunk-QCPVUNN3.js +2 -0
- package/dist/cli/chunks/{chunk-VKRTTFB6.js → chunk-QSGEBCDB.js} +2 -2
- package/dist/cli/chunks/{chunk-SKQUUE4F.js → chunk-QUJJYTJH.js} +2 -2
- package/dist/cli/chunks/chunk-QWG3SILX.js +59 -0
- package/dist/cli/chunks/{chunk-D6DA2KFD.js → chunk-RCOLPF3B.js} +2 -2
- package/dist/cli/chunks/{chunk-SU5H66SD.js → chunk-RYHG3I7J.js} +2 -2
- package/dist/cli/chunks/chunk-SBHM5X2S.js +4 -0
- package/dist/cli/chunks/{chunk-62OAY5KJ.js → chunk-SDRJJUPO.js} +1 -1
- package/dist/cli/chunks/{chunk-FB6TI3BH.js → chunk-SG2TX72G.js} +2 -2
- package/dist/cli/chunks/{chunk-H2PYU7MN.js → chunk-SITL5YZV.js} +4 -4
- package/dist/cli/chunks/{chunk-AI4VYSFS.js → chunk-SPC4RBLF.js} +2 -2
- package/dist/cli/chunks/{chunk-BQUAE3CP.js → chunk-SQVZ3TRU.js} +2 -2
- package/dist/cli/chunks/{chunk-TBLI254A.js → chunk-SUX5XB2Z.js} +2 -2
- package/dist/cli/chunks/{chunk-VFSYMOAL.js → chunk-T4EN5VVK.js} +2 -2
- package/dist/cli/chunks/{chunk-KNQ2ERFX.js → chunk-TGMXUZZC.js} +2 -2
- package/dist/cli/chunks/{chunk-7TB6FK4B.js → chunk-TLRHAMX5.js} +1 -1
- package/dist/cli/chunks/{chunk-V6JBOIMX.js → chunk-TOWOJGEI.js} +1 -1
- package/dist/cli/chunks/{chunk-JHIY4VCC.js → chunk-TSOQ2QLT.js} +3 -3
- package/dist/cli/chunks/{chunk-YYTGXD3R.js → chunk-TVA5GRIU.js} +2 -2
- package/dist/cli/chunks/{chunk-6MVVSSID.js → chunk-TXEUVUMO.js} +1 -1
- package/dist/cli/chunks/{chunk-7ZCDZHDB.js → chunk-U6IXYQO4.js} +2 -2
- package/dist/cli/chunks/{chunk-NW5JUCCG.js → chunk-U7ZHDGXG.js} +1 -1
- package/dist/cli/chunks/{chunk-UARKIZAS.js → chunk-UCSK2RMI.js} +2 -2
- package/dist/cli/chunks/{chunk-RPHY2DU6.js → chunk-UIKQPO4Y.js} +2 -2
- package/dist/cli/chunks/chunk-UJNGGFGX.js +2 -0
- package/dist/cli/chunks/{chunk-EDLFX4ZB.js → chunk-ULCW6IVQ.js} +2 -2
- package/dist/cli/chunks/{chunk-M2QV7PT7.js → chunk-UREDS662.js} +2 -2
- package/dist/cli/chunks/{chunk-MG27QY4D.js → chunk-URSTP3WI.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZI5FKSF.js → chunk-UUZZXHUF.js} +2 -2
- package/dist/cli/chunks/{chunk-IPJ7Q3AJ.js → chunk-UZED4YZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-VFKF2XO7.js → chunk-VF7FTD64.js} +1 -1
- package/dist/cli/chunks/{chunk-YCGP5VFP.js → chunk-VUR5THML.js} +2 -2
- package/dist/cli/chunks/{chunk-WDVRE6GN.js → chunk-VXVTFKRA.js} +2 -2
- package/dist/cli/chunks/chunk-VZBC6DP7.js +2 -0
- package/dist/cli/chunks/{chunk-GHBNRMSJ.js → chunk-W4II6SIH.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMBRDCA.js → chunk-W5HQIYQU.js} +3 -3
- package/dist/cli/chunks/{chunk-H74Q7TJN.js → chunk-W7H55PY4.js} +1 -1
- package/dist/cli/chunks/{chunk-OY2AHLSF.js → chunk-WDEXOLK2.js} +1 -1
- package/dist/cli/chunks/{chunk-VJQYDYAJ.js → chunk-WGTEZT7G.js} +2 -2
- package/dist/cli/chunks/{chunk-GRCIBCJ2.js → chunk-WLRU6ESI.js} +2 -2
- package/dist/cli/chunks/{chunk-ACWFKES2.js → chunk-WTAUF6O4.js} +2 -2
- package/dist/cli/chunks/chunk-XCNSGSKV.js +3 -0
- package/dist/cli/chunks/{chunk-6S3WJGUV.js → chunk-XZOYKB22.js} +2 -2
- package/dist/cli/chunks/chunk-YIDAXOUX.js +8 -0
- package/dist/cli/chunks/{chunk-LQEURY7C.js → chunk-YLKIXEPP.js} +1 -1
- package/dist/cli/chunks/chunk-YNVEDFPQ.js +2 -0
- package/dist/cli/chunks/{chunk-PGYMKGOE.js → chunk-YUA6ZKKY.js} +2 -2
- package/dist/cli/chunks/{chunk-GJMLK5UT.js → chunk-YVJEUX3I.js} +2 -2
- package/dist/cli/chunks/{chunk-AH3ZD3NJ.js → chunk-YWWMNTBF.js} +2 -2
- package/dist/cli/chunks/{chunk-37OWRCUN.js → chunk-ZGROHCOW.js} +2 -2
- package/dist/cli/chunks/{chunk-OEKP73MC.js → chunk-ZPVGX4DI.js} +2 -2
- package/dist/cli/chunks/{chunk-6GP6W46M.js → chunk-ZROAMFX2.js} +2 -2
- package/dist/cli/chunks/{chunk-OY3NJNP2.js → chunk-ZYOYR3UR.js} +1 -1
- package/dist/cli/chunks/ci-BZNWW3I3.js +81 -0
- package/dist/cli/chunks/{ci-config-7ODMNAUM.js → ci-config-LOHNXOKV.js} +2 -2
- package/dist/cli/chunks/{ci-output-FXZ7ZZW3.js → ci-output-LCOQBSJL.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-4VOUEPOX.js → circuit-breaker-7LRXTLFE.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-7D4SGLM4.js → claude-flow-setup-HBU4VWC3.js} +2 -2
- package/dist/cli/chunks/client-4PNYDFYS.js +2 -0
- package/dist/cli/chunks/{cline-installer-WRRT7BGQ.js → cline-installer-CO6MLH6X.js} +2 -2
- package/dist/cli/chunks/{code-ZDJRIL3S.js → code-SIXBS6JM.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-4S4SHM56.js → code-index-extractor-GWJKZ2IQ.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YTRHNDWR.js → codex-installer-6NINVWXJ.js} +2 -2
- package/dist/cli/chunks/{completions-6N64JUXJ.js → completions-7VIX3GML.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-I4A26VCJ.js → complexity-analyzer-FBQR6ZP2.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-IIDR66LB.js → continuedev-installer-VA7RIXW5.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-SVVFY3S2.js → copilot-installer-4QEBC4MU.js} +2 -2
- package/dist/cli/chunks/core-handlers-ODO6LUWQ.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VGFS6IBX.js → cost-tracker-GRYKHPWL.js} +2 -2
- package/dist/cli/chunks/coverage-USPMNKOU.js +50 -0
- package/dist/cli/chunks/cross-domain-router-DT4MHJKK.js +2 -0
- package/dist/cli/chunks/{cursor-installer-UPETT57E.js → cursor-installer-ZXIPSZVH.js} +2 -2
- package/dist/cli/chunks/{daemon-CQFNZLXU.js → daemon-D7F3RGI5.js} +3 -3
- package/dist/cli/chunks/{daemon-7BDJHEIJ.js → daemon-N2VRHPSJ.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-PJVABHON.js → dag-attention-scheduler-NL6BA7BY.js} +2 -2
- package/dist/cli/chunks/{detect-56SKAGWX.js → detect-XC2HCIIT.js} +2 -2
- package/dist/cli/chunks/{dist-node-UYTYUMLN.js → dist-node-A3Y26MEI.js} +2 -2
- package/dist/cli/chunks/{domain-handler-YOYLBYJE.js → domain-handler-WV6SFXRB.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-7TARX2XF.js → domain-plugins-KJIF6Z2B.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-AKVSBD6E.js → domain-transfer-L3F6AES2.js} +2 -2
- package/dist/cli/chunks/dream-QOB3JCOM.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-IS6HSR66.js → embed-and-insert-pattern-PA3Y4KGO.js} +2 -2
- package/dist/cli/chunks/{eval-GNB574IM.js → eval-YGEZNUVE.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-RCAOCKM7.js → experience-capture-middleware-D4T7NW6B.js} +3 -3
- package/dist/cli/chunks/{fast-paths-KTZ5SF54.js → fast-paths-6JYK7RYQ.js} +2 -2
- package/dist/cli/chunks/{feature-flags-KFHSR5YF.js → feature-flags-DKXMDVPE.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ITX5LQ57.js → feature-flags-RBH2GDSR.js} +2 -2
- package/dist/cli/chunks/file-discovery-BN76S2PR.js +2 -0
- package/dist/cli/chunks/fleet-43YMXACN.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-RLFW3GSX.js → gnn-wrapper-MV54UC4C.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-EM2URCYZ.js → heartbeat-handler-7DKMVQQH.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-3NNP4WCP.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-MZR7Y4WF.js +2 -0
- package/dist/cli/chunks/hnsw-index-HE4AX22U.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-JMHEOIBH.js → hnsw-legacy-bridge-6IWREDQC.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-CBP73QHY.js → hnswlib-node-5BIESSCK.js} +2 -2
- package/dist/cli/chunks/{hooks-IP7XE34Z.js → hooks-3EETRM62.js} +30 -30
- package/dist/cli/chunks/hybrid-backend-IHUHB3Y2.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ONAYHU25.js → hypergraph-engine-RSWCB2D3.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-VINJRAID.js → hypergraph-handler-552LXKL3.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-FI6GI6PD.js +2 -0
- package/dist/cli/chunks/{init-guard-RYVV5R3Z.js → init-guard-OTDBJ5HD.js} +2 -2
- package/dist/cli/chunks/{init-handler-MPRGWMOE.js → init-handler-3FK3TKEA.js} +26 -25
- package/dist/cli/chunks/init-wizard-WLQKH5Y5.js +2 -0
- package/dist/cli/chunks/kernel-2WZOQEZS.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-OPD7JBRL.js → kilocode-installer-KZ2O4LF3.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-M4OPUNK2.js → kiro-installer-MLCCXRF7.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-G3LVKK6P.js +2 -0
- package/dist/cli/chunks/{learning-4UWTQLMF.js → learning-QUCMBD77.js} +3 -3
- package/dist/cli/chunks/{llm-router-SQ56FF6Z.js → llm-router-PDEV3UP2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-MM75HKWJ.js +2 -0
- package/dist/cli/chunks/{load-HPHKDGGL.js → load-XFVVLO7E.js} +2 -2
- package/dist/cli/chunks/load-test-BEWEE44J.js +2 -0
- package/dist/cli/chunks/{mcp-TELMAC7Z.js → mcp-74G3CL2S.js} +2 -2
- package/dist/cli/chunks/{memory-PFQ3KPVJ.js → memory-XIFM6JNX.js} +5 -5
- package/dist/cli/chunks/memory-backend-NYKBBKZR.js +2 -0
- package/dist/cli/chunks/memory-handlers-ZCKURV6S.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-3VDRX6TZ.js → multi-model-executor-7L4W3O2Q.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PJ576R63.js → opencode-installer-BPG422LF.js} +2 -2
- package/dist/cli/chunks/{orchestrator-72QP4UU7.js → orchestrator-OEAFLAEV.js} +61 -23
- package/dist/cli/chunks/pattern-null-store-QGPUIV6M.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-754YQW7C.js → pattern-usage-recorder-LOPNCULT.js} +2 -2
- package/dist/cli/chunks/{pipeline-AVXY4MVB.js → pipeline-VWTYUZB7.js} +2 -2
- package/dist/cli/chunks/{platform-3E3DXLYB.js → platform-WFJJ3X2E.js} +2 -2
- package/dist/cli/chunks/{plugin-7FUQAKRE.js → plugin-744TPUSG.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIB4F5NV.js → prime-radiant-advanced-wasm-BD5BLNDR.js} +2 -2
- package/dist/cli/chunks/project-root-C7ELXZRK.js +2 -0
- package/dist/cli/chunks/protocol-executor-SUVE33BM.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BQRYMUTG.js → protocol-handler-JIBILI74.js} +2 -2
- package/dist/cli/chunks/{prove-H52QGC6B.js → prove-MNOL5FYW.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-YWZMMGJB.js +2 -0
- package/dist/cli/chunks/{quality-QO4XPAUM.js → quality-JEGBDGGX.js} +2 -2
- package/dist/cli/chunks/{quality-gate-FBKE5E6F.js → quality-gate-SYJ6ROMI.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-ZFAKXRN7.js +2 -0
- package/dist/cli/chunks/real-embeddings-ZWXS5ZFV.js +2 -0
- package/dist/cli/chunks/{ref-validation-LF76ZOBD.js → ref-validation-RRHUFW2N.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-3BYEBTQ7.js → roocode-installer-XFO6JSVN.js} +2 -2
- package/dist/cli/chunks/router-4FTAVYLJ.js +2 -0
- package/dist/cli/chunks/routing-feedback-IO2KOWMJ.js +2 -0
- package/dist/cli/chunks/{routing-handler-DST7BVCU.js → routing-handler-L2K3JASE.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-XE32PGKC.js → ruvector-commands-A6CINHGM.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-KCIRNE7C.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-MFC5WTJU.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-VP32XC75.js → rvf-migration-coordinator-T4RY7L53.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-I3KWHE7X.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-SH2AMVI7.js → rvf-store-integrity-IR33TGQS.js} +2 -2
- package/dist/cli/chunks/safe-db-QXDZ6QY3.js +2 -0
- package/dist/cli/chunks/schedule-CZKD6RIY.js +2 -0
- package/dist/cli/chunks/scheduler-BLA3Q4CH.js +2 -0
- package/dist/cli/chunks/{security-VSPNKCDS.js → security-Z5GDE2IH.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-HX6AHL3P.js → shared-rvf-adapter-SIZMEHPM.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-MX4FC2JE.js → shared-rvf-dual-writer-HLM65RDS.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-XIUYDJC4.js +2 -0
- package/dist/cli/chunks/{standalone-memory-O4QUTK6L.js → standalone-memory-SKSZG7P5.js} +2 -2
- package/dist/cli/chunks/{status-handler-Z2BP6EOG.js → status-handler-766YOOMJ.js} +2 -2
- package/dist/cli/chunks/{structural-health-R36WNLQG.js → structural-health-M45FNOLT.js} +2 -2
- package/dist/cli/chunks/{sync-QF5Y3EMZ.js → sync-6CJ24B5T.js} +2 -2
- package/dist/cli/chunks/{sync-2ELWUFQU.js → sync-B2U366I3.js} +2 -2
- package/dist/cli/chunks/{task-handler-43PYE75J.js → task-handler-P6IFLCKP.js} +17 -15
- package/dist/cli/chunks/task-handlers-DPWMUKFC.js +9 -0
- package/dist/cli/chunks/{test-UWA377D4.js → test-TODH7KRF.js} +11 -11
- package/dist/cli/chunks/test-runner-process-46IPK3GH.js +2 -0
- package/dist/cli/chunks/{test-scheduling-YQZPJRRN.js → test-scheduling-VMVMVRHT.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-F7C6UKTC.js → token-bootstrap-XQW7BMCK.js} +2 -2
- package/dist/cli/chunks/{token-usage-DO6WLMXP.js → token-usage-JCZEIRKO.js} +2 -2
- package/dist/cli/chunks/{transformers-H5RGFKVO.js → transformers-U2ML3OHE.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-MOI2WWNJ.js +2 -0
- package/dist/cli/chunks/{types-PJS2FGPF.js → types-GGEPCHP6.js} +2 -2
- package/dist/cli/chunks/unified-memory-FL26RTV3.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-E2BPTH3U.js +2 -0
- package/dist/cli/chunks/unified-persistence-5ZOUPKHF.js +2 -0
- package/dist/cli/chunks/{upgrade-4IC4F6AB.js → upgrade-T5GRM7HS.js} +2 -2
- package/dist/cli/chunks/{validate-DHUWW7PF.js → validate-XMUJPLP3.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-OERQNOX5.js → validate-swarm-KJLF7JEH.js} +2 -2
- package/dist/cli/chunks/visual-security-IJVPO5FA.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-TV7DMKES.js → web-tree-sitter-LOHVZ7G5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-QZPWSH37.js → windsurf-installer-33FBTXJU.js} +2 -2
- package/dist/cli/chunks/witness-chain-5FAFCQKP.js +2 -0
- package/dist/cli/chunks/witness-chain-V2M32W5D.js +2 -0
- package/dist/cli/chunks/{witness-chain-repair-RUXIOE7F.js → witness-chain-repair-VWBO4NXE.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-YXENHB42.js → witness-chain-verifier-BHJ3ZAEK.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-HL26AGFO.js → witness-key-manager-WNVPH2Z3.js} +2 -2
- package/dist/cli/chunks/{workflow-EOVVCN2E.js → workflow-6QR5MQTO.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3JLF3IX7.js +2 -0
- package/dist/cli/chunks/{wrappers-AGODHBOO.js → wrappers-EHOL62TS.js} +2 -2
- package/dist/cli/commands/ci.js +7 -0
- package/dist/cli/commands/coverage.js +7 -1
- package/dist/cli/commands/fleet.js +5 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +4 -3
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +22 -4
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
- package/dist/cli/commands/test.js +5 -2
- package/dist/cli/handlers/init-handler.d.ts +12 -0
- package/dist/cli/handlers/init-handler.js +27 -12
- package/dist/cli/handlers/task-handler.js +6 -0
- package/dist/cli/utils/ci-output.d.ts +2 -0
- package/dist/cli/utils/ci-output.js +2 -0
- package/dist/cli/utils/coverage-verdict.d.ts +11 -2
- package/dist/cli/utils/coverage-verdict.js +26 -6
- package/dist/cli/utils/fleet-operation.d.ts +5 -0
- package/dist/cli/utils/fleet-operation.js +7 -1
- package/dist/cli/utils/fleet-result.d.ts +5 -3
- package/dist/cli/utils/fleet-result.js +9 -3
- package/dist/cli/utils/progress.d.ts +16 -2
- package/dist/cli/utils/progress.js +31 -14
- package/dist/coordination/consensus/consensus-engine.js +3 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +3 -2
- package/dist/coordination/handlers/coverage-collection.d.ts +2 -0
- package/dist/coordination/handlers/coverage-collection.js +5 -2
- package/dist/coordination/handlers/coverage-evidence.d.ts +75 -0
- package/dist/coordination/handlers/coverage-evidence.js +159 -0
- package/dist/coordination/handlers/coverage-handlers.js +16 -3
- package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
- package/dist/coordination/handlers/coverage-runner.js +6 -22
- package/dist/coordination/handlers/coverage-scope.d.ts +40 -0
- package/dist/coordination/handlers/coverage-scope.js +321 -0
- package/dist/coordination/handlers/coverage-stderr.d.ts +23 -0
- package/dist/coordination/handlers/coverage-stderr.js +39 -0
- package/dist/coordination/handlers/coverage-target.d.ts +9 -0
- package/dist/coordination/handlers/coverage-target.js +21 -8
- package/dist/coordination/handlers/handler-utils.d.ts +5 -0
- package/dist/coordination/handlers/handler-utils.js +11 -5
- package/dist/coordination/handlers/requirements-handlers.js +3 -2
- package/dist/coordination/handlers/security-handlers.js +34 -20
- package/dist/coordination/queen-coordinator.js +8 -3
- package/dist/coordination/task-executability.d.ts +12 -0
- package/dist/coordination/task-executability.js +27 -0
- package/dist/coordination/workflow-orchestrator.d.ts +6 -0
- package/dist/coordination/workflow-orchestrator.js +22 -8
- package/dist/domains/code-intelligence/services/metric-collector/listing-process-owner.js +4 -1
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
- package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +8 -0
- package/dist/domains/code-intelligence/services/semantic-analyzer.js +10 -7
- package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
- package/dist/domains/learning-optimization/interfaces.d.ts +2 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -1
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +14 -4
- package/dist/domains/learning-optimization/services/production-intel.js +3 -1
- package/dist/domains/security-compliance/generic-finding-dedup.d.ts +40 -0
- package/dist/domains/security-compliance/generic-finding-dedup.js +63 -0
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +14 -6
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -2
- package/dist/domains/security-compliance/services/security-auditor-sast.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor-secrets.js +2 -2
- package/dist/domains/security-compliance/services/security-auditor.js +3 -2
- package/dist/domains/test-execution/coordinator.d.ts +2 -1
- package/dist/domains/test-execution/coordinator.js +5 -14
- package/dist/domains/test-execution/interfaces.d.ts +11 -1
- package/dist/domains/test-execution/services/retry-outcome.d.ts +18 -0
- package/dist/domains/test-execution/services/retry-outcome.js +53 -0
- package/dist/domains/test-generation/coordinator.js +2 -2
- package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
- package/dist/domains/test-generation/services/test-generator.js +2 -2
- package/dist/governance/evolution-pipeline-integration.js +3 -1
- package/dist/hooks/cross-phase-hooks.js +3 -1
- package/dist/init/init-wizard-steps.js +5 -1
- package/dist/init/phases/04-database.js +7 -0
- package/dist/init/phases/10-workers.js +42 -4
- package/dist/init/phases/12-verification.js +14 -4
- package/dist/init/settings-merge.js +7 -4
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +29 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +70 -6
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +10 -3
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +13 -0
- package/dist/integrations/ruvector/filter-adapter.js +2 -1
- package/dist/learning/dream/insight-generator.js +5 -4
- package/dist/learning/embedder-endpoint-client.d.ts +8 -0
- package/dist/learning/embedder-endpoint-client.js +20 -0
- package/dist/learning/embedder-recovery.d.ts +63 -0
- package/dist/learning/embedder-recovery.js +94 -0
- package/dist/learning/memory-auditor.js +3 -1
- package/dist/learning/qe-patterns.js +2 -1
- package/dist/learning/qe-reasoning-bank-types.d.ts +5 -0
- package/dist/learning/qe-reasoning-bank.d.ts +21 -0
- package/dist/learning/qe-reasoning-bank.js +54 -8
- package/dist/learning/real-embeddings.d.ts +23 -0
- package/dist/learning/real-embeddings.js +69 -2
- package/dist/learning/real-qe-reasoning-bank.d.ts +39 -0
- package/dist/learning/real-qe-reasoning-bank.js +108 -38
- package/dist/logging/redaction.js +142 -12
- package/dist/mcp/bundle.js +520 -503
- package/dist/mcp/daemon-mode.d.ts +126 -0
- package/dist/mcp/daemon-mode.js +257 -0
- package/dist/mcp/entry.d.ts +4 -0
- package/dist/mcp/entry.js +50 -2
- package/dist/mcp/handlers/domain-handler-configs.d.ts +2 -0
- package/dist/mcp/handlers/domain-handler-configs.js +13 -2
- package/dist/mcp/handlers/orchestrate-routes.d.ts +6 -1
- package/dist/mcp/handlers/orchestrate-routes.js +53 -0
- package/dist/mcp/handlers/task-handlers.d.ts +23 -1
- package/dist/mcp/handlers/task-handlers.js +90 -19
- package/dist/mcp/handlers/validation-pipeline-handler.js +9 -9
- package/dist/mcp/protocol-server.js +11 -8
- package/dist/mcp/qe-tool-bridge.js +3 -0
- package/dist/mcp/services/reasoning-bank-service.d.ts +9 -2
- package/dist/mcp/services/reasoning-bank-service.js +13 -0
- package/dist/mcp/tool-annotations.js +4 -1
- package/dist/mcp/tools/coherence/check.js +1 -0
- package/dist/mcp/tools/coherence/consensus.js +4 -2
- package/dist/mcp/tools/learning-optimization/optimize.js +1 -2
- package/dist/mcp/tools/mincut/index.js +3 -0
- package/dist/mcp/tools/quality-assessment/gate.js +7 -0
- package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +10 -3
- package/dist/mcp/tools/security-compliance/scan.js +4 -2
- package/dist/mcp/tools/test-execution/e2e-execute.js +2 -2
- package/dist/mcp/tools/test-execution/execute.js +3 -2
- package/dist/mcp/types.d.ts +14 -0
- package/dist/memory/crdt/crdt-store.js +5 -0
- package/dist/memory/crdt/lww-register.js +12 -2
- package/dist/optimization/early-exit-token-optimizer.js +3 -1
- package/dist/planning/goap-planner.js +5 -0
- package/dist/planning/plan-executor.js +5 -0
- package/dist/routing/advisor/redaction.js +22 -2
- package/dist/shared/io/confined-read.d.ts +74 -0
- package/dist/shared/io/confined-read.js +256 -0
- package/dist/shared/io/file-reader.d.ts +6 -6
- package/dist/shared/io/file-reader.js +16 -42
- package/dist/shared/llm/providers/claude-code.js +4 -1
- package/dist/shared/llm/providers/response-deadline.js +16 -2
- package/dist/shared/native-module-errors.d.ts +51 -0
- package/dist/shared/native-module-errors.js +129 -0
- package/dist/shared/safe-db.js +14 -4
- package/dist/shared/security/osv-client.js +4 -1
- package/dist/shared/types/index.js +3 -1
- package/dist/shared/types/test-frameworks.js +2 -2
- package/dist/strange-loop/infra-healing/infra-aware-agent-provider.js +8 -1
- package/dist/sync/readers/json-reader.js +2 -1
- package/dist/validation/anchor-set.d.ts +6 -0
- package/dist/validation/anchor-set.js +9 -1
- package/dist/validation/quality-gate-runner.d.ts +7 -1
- package/dist/validation/quality-gate-runner.js +3 -3
- package/package.json +3 -3
- package/dist/cli/chunks/adapter-TR5SLAZC.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +0 -2
- package/dist/cli/chunks/base-GTB6POYE.js +0 -2
- package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +0 -2
- package/dist/cli/chunks/chunk-4SJYIX54.js +0 -3
- package/dist/cli/chunks/chunk-6P7424AO.js +0 -21
- package/dist/cli/chunks/chunk-6X5DHU6Q.js +0 -14
- package/dist/cli/chunks/chunk-CMBLM26R.js +0 -2
- package/dist/cli/chunks/chunk-DKAC3E3B.js +0 -3
- package/dist/cli/chunks/chunk-DURHK377.js +0 -742
- package/dist/cli/chunks/chunk-FPUDRSFJ.js +0 -180
- package/dist/cli/chunks/chunk-G5I6KGMW.js +0 -59
- package/dist/cli/chunks/chunk-HOZUDE4C.js +0 -2
- package/dist/cli/chunks/chunk-N6PIIK6G.js +0 -3
- package/dist/cli/chunks/chunk-NSHU347M.js +0 -2
- package/dist/cli/chunks/chunk-PPSAMXYN.js +0 -13
- package/dist/cli/chunks/chunk-TYFZXDGZ.js +0 -4
- package/dist/cli/chunks/chunk-U4OICXV2.js +0 -6
- package/dist/cli/chunks/chunk-WSF24I3D.js +0 -2
- package/dist/cli/chunks/chunk-XBVUVFJK.js +0 -4
- package/dist/cli/chunks/chunk-XUZDBQ5X.js +0 -6
- package/dist/cli/chunks/chunk-YBSBABOS.js +0 -2
- package/dist/cli/chunks/chunk-ZG5666GJ.js +0 -2
- package/dist/cli/chunks/ci-MSKMVH5X.js +0 -81
- package/dist/cli/chunks/client-POSVREVS.js +0 -2
- package/dist/cli/chunks/core-handlers-V243GY7X.js +0 -2
- package/dist/cli/chunks/coverage-B7MCGNTE.js +0 -49
- package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +0 -2
- package/dist/cli/chunks/dream-UA7MKOPQ.js +0 -2
- package/dist/cli/chunks/file-discovery-YCMNKZAK.js +0 -2
- package/dist/cli/chunks/fleet-2Y3ZE6CE.js +0 -46
- package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +0 -2
- package/dist/cli/chunks/hnsw-index-DFUNARVD.js +0 -2
- package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +0 -2
- package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +0 -2
- package/dist/cli/chunks/init-wizard-NIMZ4J55.js +0 -2
- package/dist/cli/chunks/kernel-JQK7PRAI.js +0 -2
- package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +0 -2
- package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +0 -2
- package/dist/cli/chunks/load-test-UKNV5MWW.js +0 -2
- package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +0 -2
- package/dist/cli/chunks/memory-handlers-FCXN437E.js +0 -2
- package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +0 -2
- package/dist/cli/chunks/project-root-JCAUNL6O.js +0 -2
- package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +0 -2
- package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +0 -2
- package/dist/cli/chunks/real-embeddings-RWGOVOXO.js +0 -2
- package/dist/cli/chunks/router-3DIS5X4R.js +0 -2
- package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +0 -2
- package/dist/cli/chunks/safe-db-EVB4ZC7T.js +0 -2
- package/dist/cli/chunks/schedule-ORDDXXY4.js +0 -2
- package/dist/cli/chunks/scheduler-XFLJSFIU.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +0 -2
- package/dist/cli/chunks/task-handlers-KPWAEMKH.js +0 -9
- package/dist/cli/chunks/test-runner-process-3XZUYST2.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +0 -2
- package/dist/cli/chunks/unified-memory-EHD4VNFW.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +0 -2
- package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +0 -2
- package/dist/cli/chunks/visual-security-54MLFKWY.js +0 -2
- package/dist/cli/chunks/witness-chain-LC6Q2W27.js +0 -2
- package/dist/cli/chunks/witness-chain-QUIBAF3W.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +0 -2
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { spawn } from 'node:child_process';
|
|
17
17
|
import { createLLMError, } from '../interfaces.js';
|
|
18
18
|
import { TokenMetricsCollector } from '../../../learning/token-tracker.js';
|
|
19
|
+
import { redactLogText } from '../../../logging/redaction.js';
|
|
19
20
|
/** Env vars whose presence flips the CLI from subscription to API billing. */
|
|
20
21
|
export const API_BILLING_ENV_VARS = [
|
|
21
22
|
'ANTHROPIC_API_KEY',
|
|
@@ -108,7 +109,9 @@ export class ClaudeCodeProvider {
|
|
|
108
109
|
data = JSON.parse(stdout);
|
|
109
110
|
}
|
|
110
111
|
catch {
|
|
111
|
-
throw createLLMError(
|
|
112
|
+
throw createLLMError(
|
|
113
|
+
// #1150: redact, then cut, so a cut secret leaves no fragment behind.
|
|
114
|
+
`Could not parse claude -p JSON output: ${redactLogText(stdout, Number.POSITIVE_INFINITY).slice(0, 200)}`, 'PROVIDER_UNAVAILABLE', { provider: 'claude-code', model, retryable: true });
|
|
112
115
|
}
|
|
113
116
|
if (data.is_error) {
|
|
114
117
|
throw this.classifyError(data.result ?? data.api_error_status ?? 'claude error', model);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const IDLE_READ_AHEAD_BYTES = 1024 * 1024;
|
|
1
2
|
/**
|
|
2
3
|
* Bound headers and bodies; streaming callers may use an idle body deadline.
|
|
3
4
|
* `maxDurationMs` adds an absolute cap from the start of the request, so an
|
|
@@ -40,22 +41,35 @@ export async function fetchWithResponseDeadline(url, options, timeoutMs, timeout
|
|
|
40
41
|
resetIdleDeadline();
|
|
41
42
|
const reader = response.body.getReader();
|
|
42
43
|
let finished = false;
|
|
44
|
+
let expiry;
|
|
43
45
|
const finish = () => {
|
|
44
46
|
finished = true;
|
|
45
47
|
clearTimers();
|
|
46
48
|
};
|
|
49
|
+
// Idle streams read ahead of the consumer, so the deadline measures network
|
|
50
|
+
// silence rather than consumer pauses (#962). The read-ahead is bounded; a
|
|
51
|
+
// consumer stalled behind a full buffer still meets the deadline.
|
|
52
|
+
const highWaterMark = bodyDeadline === 'idle' ? IDLE_READ_AHEAD_BYTES : 0;
|
|
53
|
+
// Bytes already received are delivered before the deadline error surfaces.
|
|
54
|
+
const failWhenDrained = (controller) => {
|
|
55
|
+
if (expiry && controller.desiredSize === highWaterMark)
|
|
56
|
+
controller.error(expiry);
|
|
57
|
+
};
|
|
47
58
|
const body = new ReadableStream({
|
|
48
59
|
start(controller) {
|
|
49
60
|
expireBody = error => {
|
|
50
61
|
if (finished)
|
|
51
62
|
return;
|
|
52
63
|
finish();
|
|
53
|
-
|
|
64
|
+
expiry = error;
|
|
65
|
+
failWhenDrained(controller);
|
|
54
66
|
// Cancel also settles any pending read before releasing its lock.
|
|
55
67
|
void reader.cancel(error).catch(() => { }).finally(() => reader.releaseLock());
|
|
56
68
|
};
|
|
57
69
|
},
|
|
58
70
|
async pull(controller) {
|
|
71
|
+
if (expiry)
|
|
72
|
+
return failWhenDrained(controller);
|
|
59
73
|
try {
|
|
60
74
|
const result = await reader.read();
|
|
61
75
|
if (finished)
|
|
@@ -89,7 +103,7 @@ export async function fetchWithResponseDeadline(url, options, timeoutMs, timeout
|
|
|
89
103
|
reader.releaseLock();
|
|
90
104
|
}
|
|
91
105
|
},
|
|
92
|
-
}, { highWaterMark
|
|
106
|
+
}, new ByteLengthQueuingStrategy({ highWaterMark }));
|
|
93
107
|
const bounded = new Response(body, {
|
|
94
108
|
status: response.status,
|
|
95
109
|
statusText: response.statusText,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native module load-failure diagnostics (issue #1173).
|
|
3
|
+
*
|
|
4
|
+
* better-sqlite3 ships a native addon whose binary is fetched/compiled by its
|
|
5
|
+
* `install` script. npm 12 blocks dependency install scripts unless they are
|
|
6
|
+
* allowed (`allowScripts`), so a plain `npm install -g agentic-qe` leaves the
|
|
7
|
+
* addon missing and the first `new Database()` throws "Could not locate the
|
|
8
|
+
* bindings file". Other installs hit the same wall via a Node upgrade
|
|
9
|
+
* (NODE_MODULE_VERSION mismatch) or an arch mismatch.
|
|
10
|
+
*
|
|
11
|
+
* These helpers recognise those failures and turn them into a message that
|
|
12
|
+
* names the cause and the exact command that fixes it, instead of a 20-line
|
|
13
|
+
* list of probed paths (or, in `aqe init`, nothing at all).
|
|
14
|
+
*/
|
|
15
|
+
export type NativeModuleFailureReason = 'missing-binding' | 'abi-mismatch' | 'load-failed';
|
|
16
|
+
export interface NativeModuleFailure {
|
|
17
|
+
/** npm package whose native addon failed to load */
|
|
18
|
+
readonly moduleName: string;
|
|
19
|
+
readonly reason: NativeModuleFailureReason;
|
|
20
|
+
/** First line of the original error, without the probed-path list */
|
|
21
|
+
readonly detail: string;
|
|
22
|
+
}
|
|
23
|
+
/** Marker present in every remedy we emit; used to avoid double-wrapping. */
|
|
24
|
+
export declare const NATIVE_MODULE_REMEDY_MARKER = "native module could not be loaded";
|
|
25
|
+
/** Packages with install scripts that a global agentic-qe install needs allowed. */
|
|
26
|
+
export declare const AQE_INSTALL_SCRIPT_PACKAGES = "agentic-qe,better-sqlite3,hnswlib-node";
|
|
27
|
+
/**
|
|
28
|
+
* Classify `error` as a native-addon load failure, or return null when it is
|
|
29
|
+
* something else (I/O error, corrupt DB, lock contention, ...).
|
|
30
|
+
*/
|
|
31
|
+
export declare function diagnoseNativeModuleError(error: unknown, moduleName?: string): NativeModuleFailure | null;
|
|
32
|
+
/** Multi-line, actionable explanation for a diagnosed native-module failure. */
|
|
33
|
+
export declare function formatNativeModuleRemedy(failure: NativeModuleFailure): string;
|
|
34
|
+
/**
|
|
35
|
+
* Error raised when a native addon cannot be loaded. The message carries the
|
|
36
|
+
* remedy; the original error is preserved as `cause`.
|
|
37
|
+
*/
|
|
38
|
+
export declare class NativeModuleLoadError extends Error {
|
|
39
|
+
readonly moduleName: string;
|
|
40
|
+
readonly reason: NativeModuleFailureReason;
|
|
41
|
+
constructor(failure: NativeModuleFailure, cause: unknown);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Return a NativeModuleLoadError for native-load failures, or the original
|
|
45
|
+
* error unchanged otherwise. Idempotent: an error that already carries the
|
|
46
|
+
* remedy is returned as-is.
|
|
47
|
+
*/
|
|
48
|
+
export declare function withNativeModuleRemedy(error: unknown, moduleName?: string): unknown;
|
|
49
|
+
/** True when `error` (or its message, after re-wrapping) is a native-load failure. */
|
|
50
|
+
export declare function isNativeModuleLoadFailure(error: unknown): boolean;
|
|
51
|
+
//# sourceMappingURL=native-module-errors.d.ts.map
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native module load-failure diagnostics (issue #1173).
|
|
3
|
+
*
|
|
4
|
+
* better-sqlite3 ships a native addon whose binary is fetched/compiled by its
|
|
5
|
+
* `install` script. npm 12 blocks dependency install scripts unless they are
|
|
6
|
+
* allowed (`allowScripts`), so a plain `npm install -g agentic-qe` leaves the
|
|
7
|
+
* addon missing and the first `new Database()` throws "Could not locate the
|
|
8
|
+
* bindings file". Other installs hit the same wall via a Node upgrade
|
|
9
|
+
* (NODE_MODULE_VERSION mismatch) or an arch mismatch.
|
|
10
|
+
*
|
|
11
|
+
* These helpers recognise those failures and turn them into a message that
|
|
12
|
+
* names the cause and the exact command that fixes it, instead of a 20-line
|
|
13
|
+
* list of probed paths (or, in `aqe init`, nothing at all).
|
|
14
|
+
*/
|
|
15
|
+
import { toErrorMessage } from './error-utils.js';
|
|
16
|
+
/** Marker present in every remedy we emit; used to avoid double-wrapping. */
|
|
17
|
+
export const NATIVE_MODULE_REMEDY_MARKER = 'native module could not be loaded';
|
|
18
|
+
/** Packages with install scripts that a global agentic-qe install needs allowed. */
|
|
19
|
+
export const AQE_INSTALL_SCRIPT_PACKAGES = 'agentic-qe,better-sqlite3,hnswlib-node';
|
|
20
|
+
const MISSING_BINDING_PATTERNS = [
|
|
21
|
+
/Could not locate the bindings file/i,
|
|
22
|
+
];
|
|
23
|
+
const ABI_MISMATCH_PATTERNS = [
|
|
24
|
+
/NODE_MODULE_VERSION/,
|
|
25
|
+
/compiled against a different Node\.js version/i,
|
|
26
|
+
/Module did not self-register/i,
|
|
27
|
+
];
|
|
28
|
+
const LOAD_FAILED_PATTERNS = [
|
|
29
|
+
/ERR_DLOPEN_FAILED/,
|
|
30
|
+
/invalid ELF header/i,
|
|
31
|
+
/wrong ELF class/i,
|
|
32
|
+
/incompatible architecture/i,
|
|
33
|
+
/mach-o file, but is an incompatible architecture/i,
|
|
34
|
+
/\.node: cannot open shared object file/i,
|
|
35
|
+
/is not a valid Win32 application/i,
|
|
36
|
+
];
|
|
37
|
+
function collectMessages(error) {
|
|
38
|
+
const parts = [];
|
|
39
|
+
let current = error;
|
|
40
|
+
// Walk the cause chain: callers commonly re-wrap the original error.
|
|
41
|
+
for (let depth = 0; current !== undefined && current !== null && depth < 5; depth++) {
|
|
42
|
+
parts.push(toErrorMessage(current));
|
|
43
|
+
const code = current.code;
|
|
44
|
+
if (typeof code === 'string')
|
|
45
|
+
parts.push(code);
|
|
46
|
+
current = current.cause;
|
|
47
|
+
}
|
|
48
|
+
return parts.join('\n');
|
|
49
|
+
}
|
|
50
|
+
function firstLine(message) {
|
|
51
|
+
// Drop the dangling "Tried:" that introduces the bindings package's path list.
|
|
52
|
+
const line = message.split('\n')[0].trim();
|
|
53
|
+
return line.endsWith('Tried:') ? line.slice(0, -'Tried:'.length).trimEnd() : line;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Classify `error` as a native-addon load failure, or return null when it is
|
|
57
|
+
* something else (I/O error, corrupt DB, lock contention, ...).
|
|
58
|
+
*/
|
|
59
|
+
export function diagnoseNativeModuleError(error, moduleName = 'better-sqlite3') {
|
|
60
|
+
if (error === undefined || error === null)
|
|
61
|
+
return null;
|
|
62
|
+
const text = collectMessages(error);
|
|
63
|
+
const detail = firstLine(toErrorMessage(error));
|
|
64
|
+
if (MISSING_BINDING_PATTERNS.some((p) => p.test(text))) {
|
|
65
|
+
return { moduleName, reason: 'missing-binding', detail };
|
|
66
|
+
}
|
|
67
|
+
if (ABI_MISMATCH_PATTERNS.some((p) => p.test(text))) {
|
|
68
|
+
return { moduleName, reason: 'abi-mismatch', detail };
|
|
69
|
+
}
|
|
70
|
+
if (LOAD_FAILED_PATTERNS.some((p) => p.test(text))) {
|
|
71
|
+
return { moduleName, reason: 'load-failed', detail };
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const CAUSE_TEXT = {
|
|
76
|
+
'missing-binding': 'its compiled binary is missing. Its install script never ran — npm 12+ blocks ' +
|
|
77
|
+
'dependency install scripts unless they are allowed (allowScripts).',
|
|
78
|
+
'abi-mismatch': `it was built for a different Node.js version than the one running now (${process.version}). ` +
|
|
79
|
+
'Rebuild it after switching Node versions.',
|
|
80
|
+
'load-failed': 'the binary exists but the OS refused to load it (wrong platform/architecture or a corrupt build).',
|
|
81
|
+
};
|
|
82
|
+
/** Multi-line, actionable explanation for a diagnosed native-module failure. */
|
|
83
|
+
export function formatNativeModuleRemedy(failure) {
|
|
84
|
+
const { moduleName } = failure;
|
|
85
|
+
return [
|
|
86
|
+
`${moduleName} ${NATIVE_MODULE_REMEDY_MARKER}: ${CAUSE_TEXT[failure.reason]}`,
|
|
87
|
+
' Fix a global install (reinstall, naming the package):',
|
|
88
|
+
` npm install -g agentic-qe --allow-scripts=${AQE_INSTALL_SCRIPT_PACKAGES}`,
|
|
89
|
+
' Or rebuild just the native module in an existing global install:',
|
|
90
|
+
` npm rebuild -g ${moduleName} --allow-scripts=${moduleName}`,
|
|
91
|
+
' For a project-local install (devDependency), run in the project:',
|
|
92
|
+
` npm install-scripts approve ${moduleName} && npm rebuild ${moduleName}`,
|
|
93
|
+
` Original error: ${failure.detail}`,
|
|
94
|
+
].join('\n');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Error raised when a native addon cannot be loaded. The message carries the
|
|
98
|
+
* remedy; the original error is preserved as `cause`.
|
|
99
|
+
*/
|
|
100
|
+
export class NativeModuleLoadError extends Error {
|
|
101
|
+
moduleName;
|
|
102
|
+
reason;
|
|
103
|
+
constructor(failure, cause) {
|
|
104
|
+
super(formatNativeModuleRemedy(failure), { cause });
|
|
105
|
+
this.name = 'NativeModuleLoadError';
|
|
106
|
+
this.moduleName = failure.moduleName;
|
|
107
|
+
this.reason = failure.reason;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Return a NativeModuleLoadError for native-load failures, or the original
|
|
112
|
+
* error unchanged otherwise. Idempotent: an error that already carries the
|
|
113
|
+
* remedy is returned as-is.
|
|
114
|
+
*/
|
|
115
|
+
export function withNativeModuleRemedy(error, moduleName = 'better-sqlite3') {
|
|
116
|
+
if (error instanceof NativeModuleLoadError)
|
|
117
|
+
return error;
|
|
118
|
+
if (toErrorMessage(error).includes(NATIVE_MODULE_REMEDY_MARKER))
|
|
119
|
+
return error;
|
|
120
|
+
const failure = diagnoseNativeModuleError(error, moduleName);
|
|
121
|
+
return failure ? new NativeModuleLoadError(failure, error) : error;
|
|
122
|
+
}
|
|
123
|
+
/** True when `error` (or its message, after re-wrapping) is a native-load failure. */
|
|
124
|
+
export function isNativeModuleLoadFailure(error) {
|
|
125
|
+
return error instanceof NativeModuleLoadError
|
|
126
|
+
|| toErrorMessage(error).includes(NATIVE_MODULE_REMEDY_MARKER)
|
|
127
|
+
|| diagnoseNativeModuleError(error) !== null;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=native-module-errors.js.map
|
package/dist/shared/safe-db.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import Database from 'better-sqlite3';
|
|
12
12
|
import { basename } from 'node:path';
|
|
13
13
|
import { attemptAutoRestore } from './db-recovery.js';
|
|
14
|
+
import { withNativeModuleRemedy } from './native-module-errors.js';
|
|
14
15
|
/**
|
|
15
16
|
* Open a SQLite database with safe defaults that prevent corruption.
|
|
16
17
|
*
|
|
@@ -53,10 +54,19 @@ export function openDatabase(dbPath, opts) {
|
|
|
53
54
|
const disableWal = process.env.AQE_DISABLE_WAL === '1' ||
|
|
54
55
|
journalOverride === 'DELETE' ||
|
|
55
56
|
journalOverride === 'TRUNCATE';
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
// better-sqlite3 loads its native addon lazily, on the first construction.
|
|
58
|
+
// A missing/mismatched binary (e.g. npm 12 blocked its install script, #1173)
|
|
59
|
+
// surfaces here; rethrow it with the cause and the fix command.
|
|
60
|
+
let db;
|
|
61
|
+
try {
|
|
62
|
+
db = new Database(dbPath, {
|
|
63
|
+
readonly,
|
|
64
|
+
fileMustExist,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
throw withNativeModuleRemedy(err);
|
|
69
|
+
}
|
|
60
70
|
// Always set busy_timeout — even for readonly connections.
|
|
61
71
|
// Without this, concurrent access gets SQLITE_BUSY immediately.
|
|
62
72
|
db.pragma(`busy_timeout = ${busyTimeout}`);
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { isIP } from 'node:net';
|
|
9
9
|
import { HttpClient } from '../http/index.js';
|
|
10
|
+
import { getOwn } from '../utils/safe-record.js';
|
|
10
11
|
import { OSVLookupError, advisoryAffectsVersion, boundedList, classifyNpmSpec, exactNpmVersion, isAdvisoryRecord, isConcreteVersion, lookupKey, lookupStatus, parseBatchBody, } from './osv-lookup.js';
|
|
11
12
|
export { OSVLookupError } from './osv-lookup.js';
|
|
12
13
|
const DEFAULT_BASE_URL = 'https://api.osv.dev';
|
|
@@ -198,7 +199,9 @@ export class OSVClient {
|
|
|
198
199
|
}
|
|
199
200
|
// An `npm:<real>@<range>` alias is the registry package <real>.
|
|
200
201
|
const packageName = kind.kind === 'alias' ? kind.name : name;
|
|
201
|
-
|
|
202
|
+
// #1157: own entries only; a dependency named `constructor` has no lock entry.
|
|
203
|
+
const lockedSpec = getOwn(lockedVersions, name);
|
|
204
|
+
const locked = lockedSpec !== undefined ? exactNpmVersion(lockedSpec) : null;
|
|
202
205
|
const version = locked ?? exactNpmVersion(kind.spec);
|
|
203
206
|
if (version)
|
|
204
207
|
queries.push({ name: packageName, ecosystem: 'npm', version });
|
|
@@ -43,6 +43,8 @@ export function isPriority(value) {
|
|
|
43
43
|
}
|
|
44
44
|
/** Shared rejection message so `task_submit` and `aqe task submit` stay in parity (#1108). */
|
|
45
45
|
export function invalidPriorityMessage(value) {
|
|
46
|
-
|
|
46
|
+
// An empty string would otherwise render as "Invalid priority: ." (#1117).
|
|
47
|
+
const shown = value === '' ? '(empty)' : String(value);
|
|
48
|
+
return `Invalid priority: ${shown}. Valid priorities: ${ALL_PRIORITIES.join(', ')}`;
|
|
47
49
|
}
|
|
48
50
|
//# sourceMappingURL=index.js.map
|
|
@@ -98,8 +98,8 @@ export function resolveFrameworkAlias(input) {
|
|
|
98
98
|
if (ALL_TEST_FRAMEWORKS.includes(lower)) {
|
|
99
99
|
return lower;
|
|
100
100
|
}
|
|
101
|
-
// Alias match
|
|
102
|
-
return FRAMEWORK_ALIASES[lower];
|
|
101
|
+
// Alias match. #1157: own entries only, so `constructor` is not an alias.
|
|
102
|
+
return Object.hasOwn(FRAMEWORK_ALIASES, lower) ? FRAMEWORK_ALIASES[lower] : undefined;
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Get the language for a given file extension.
|
|
@@ -79,7 +79,14 @@ export class InfraAwareAgentProvider {
|
|
|
79
79
|
* Failing services get responsiveness=0, healthy services get 1.0.
|
|
80
80
|
*/
|
|
81
81
|
getInfraAgentHealth(agentId) {
|
|
82
|
-
|
|
82
|
+
// The prefix is a literal, not a pattern: createInfraAgents() builds ids
|
|
83
|
+
// by concatenation and getAgentHealth() routes by startsWith(). Strip it
|
|
84
|
+
// the same way so a prefix containing regex metacharacters still recovers
|
|
85
|
+
// the real service name instead of silently reporting a down service as
|
|
86
|
+
// healthy (and so an unparseable prefix can't throw).
|
|
87
|
+
const serviceName = agentId.startsWith(this.prefix)
|
|
88
|
+
? agentId.slice(this.prefix.length)
|
|
89
|
+
: agentId;
|
|
83
90
|
const failingServices = this.observer.getFailingServices();
|
|
84
91
|
const isFailing = failingServices.has(serviceName);
|
|
85
92
|
return {
|
|
@@ -130,7 +130,8 @@ export class JSONReader {
|
|
|
130
130
|
const pathParts = jsonPath.replace(/^\$\./, '').split('.');
|
|
131
131
|
let current = data;
|
|
132
132
|
for (const part of pathParts) {
|
|
133
|
-
|
|
133
|
+
// #1157: own keys only; `$.constructor` is not a path into the data.
|
|
134
|
+
if (current && typeof current === 'object' && Object.hasOwn(current, part)) {
|
|
134
135
|
current = current[part];
|
|
135
136
|
}
|
|
136
137
|
else {
|
|
@@ -57,6 +57,12 @@ export declare function computeContentHash(items: AnchorItem[]): string;
|
|
|
57
57
|
* except through this loader.
|
|
58
58
|
*/
|
|
59
59
|
export declare function loadAnchorSet(path: string): AnchorSet;
|
|
60
|
+
/**
|
|
61
|
+
* Parse and verify an anchor set already read by the caller (#1161: the MCP
|
|
62
|
+
* gate reads a caller-named anchor through a confined read). `path` only
|
|
63
|
+
* labels error messages. Applies the same hash and non-empty checks.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseAnchorSet(text: string, path: string): AnchorSet;
|
|
60
66
|
/** The score of one anchor item = its oracle mutation kill rate. */
|
|
61
67
|
export declare function anchorItemScore(oracleResult: {
|
|
62
68
|
mutationScore: number;
|
|
@@ -43,7 +43,15 @@ export function computeContentHash(items) {
|
|
|
43
43
|
* except through this loader.
|
|
44
44
|
*/
|
|
45
45
|
export function loadAnchorSet(path) {
|
|
46
|
-
|
|
46
|
+
return parseAnchorSet(fs.readFileSync(path, 'utf8'), path);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parse and verify an anchor set already read by the caller (#1161: the MCP
|
|
50
|
+
* gate reads a caller-named anchor through a confined read). `path` only
|
|
51
|
+
* labels error messages. Applies the same hash and non-empty checks.
|
|
52
|
+
*/
|
|
53
|
+
export function parseAnchorSet(text, path) {
|
|
54
|
+
const raw = JSON.parse(text);
|
|
47
55
|
const recomputed = computeContentHash(raw.items);
|
|
48
56
|
if (recomputed !== raw.contentHash) {
|
|
49
57
|
throw new Error(`Anchor set hash drift at ${path}: recorded ${raw.contentHash}, `
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* The oracle result and the judge are injected — this module owns no LLM and no
|
|
17
17
|
* mutation runner, so it is deterministic and unit-testable with a fake judge.
|
|
18
18
|
*/
|
|
19
|
+
import { type AnchorSet } from './anchor-set.js';
|
|
19
20
|
import { type Judge, type QualityVerdictResult, type RequirementChecklist } from './quality-verdict.js';
|
|
20
21
|
import type { OracleResult } from './oracle-eval.js';
|
|
21
22
|
import { type VerificationCoverageVerdict, type VerificationReachManifest, type VerificationReachResult } from './verification-reach.js';
|
|
@@ -35,6 +36,11 @@ export interface QualityGateRequest {
|
|
|
35
36
|
judge: Judge;
|
|
36
37
|
/** Override the frozen anchor path (absolute, or relative to project root). */
|
|
37
38
|
anchorPath?: string;
|
|
39
|
+
/**
|
|
40
|
+
* The anchor set, already read and verified by the caller (#1161). When
|
|
41
|
+
* given, it is used instead of reading `anchorPath`, which only labels errors.
|
|
42
|
+
*/
|
|
43
|
+
anchor?: AnchorSet;
|
|
38
44
|
/** Revision-bound failure-mode reach evidence. Omit only for legacy migration. */
|
|
39
45
|
verificationManifest?: VerificationReachManifest;
|
|
40
46
|
}
|
|
@@ -66,7 +72,7 @@ export declare function runQualityGate(req: QualityGateRequest): Promise<ReachAw
|
|
|
66
72
|
* Load the pinned checklist for `checklistId` from the frozen anchor. Exposed so
|
|
67
73
|
* callers (CLI/MCP) can list valid ids or pre-validate before building a judge.
|
|
68
74
|
*/
|
|
69
|
-
export declare function loadChecklist(checklistId: string, anchorPath?: string): RequirementChecklist;
|
|
75
|
+
export declare function loadChecklist(checklistId: string, anchorPath?: string, preloaded?: AnchorSet): RequirementChecklist;
|
|
70
76
|
/** List every checklist id in the frozen anchor (for CLI/MCP discoverability). */
|
|
71
77
|
export declare function listChecklistIds(anchorPath?: string): string[];
|
|
72
78
|
//# sourceMappingURL=quality-gate-runner.d.ts.map
|
|
@@ -29,7 +29,7 @@ export const DEFAULT_ANCHOR_RELATIVE_PATH = 'verification/anchors/qe-anchor-v1.j
|
|
|
29
29
|
* every judgement outcome is returned as a three-valued reach-aware result.
|
|
30
30
|
*/
|
|
31
31
|
export async function runQualityGate(req) {
|
|
32
|
-
const checklist = loadChecklist(req.checklistId, req.anchorPath);
|
|
32
|
+
const checklist = loadChecklist(req.checklistId, req.anchorPath, req.anchor);
|
|
33
33
|
if (req.verificationManifest
|
|
34
34
|
&& req.verificationManifest.artifact.digest !== computeVerificationArtifactDigest(req.artifact)) {
|
|
35
35
|
throw new Error('Verification reach manifest artifact digest does not match the judged artifact');
|
|
@@ -67,9 +67,9 @@ function combineVerdicts(quality, coverage) {
|
|
|
67
67
|
* Load the pinned checklist for `checklistId` from the frozen anchor. Exposed so
|
|
68
68
|
* callers (CLI/MCP) can list valid ids or pre-validate before building a judge.
|
|
69
69
|
*/
|
|
70
|
-
export function loadChecklist(checklistId, anchorPath) {
|
|
70
|
+
export function loadChecklist(checklistId, anchorPath, preloaded) {
|
|
71
71
|
const resolved = resolveAnchorPath(anchorPath);
|
|
72
|
-
const anchor = loadAnchorSet(resolved); // throws on hash drift (ADR-117 §2)
|
|
72
|
+
const anchor = preloaded ?? loadAnchorSet(resolved); // throws on hash drift (ADR-117 §2)
|
|
73
73
|
const item = anchor.items.find((it) => it.id === checklistId);
|
|
74
74
|
if (!item) {
|
|
75
75
|
const available = anchor.items.map((it) => it.id).join(', ');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.12",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
"@types/ws": "^8.18.1",
|
|
272
272
|
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
273
273
|
"@typescript-eslint/parser": "^8.59.3",
|
|
274
|
-
"@vitest/coverage-v8": "^5.0.
|
|
274
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
275
275
|
"ajv": "^8.20.0",
|
|
276
276
|
"ajv-formats": "^3.0.1",
|
|
277
277
|
"dotenv": "^17.2.3",
|
|
@@ -282,7 +282,7 @@
|
|
|
282
282
|
"msw": "^2.12.7",
|
|
283
283
|
"tsx": "^4.21.0",
|
|
284
284
|
"vibium": "^26.8.21",
|
|
285
|
-
"vitest": "^5.0.
|
|
285
|
+
"vitest": "^5.0.5"
|
|
286
286
|
},
|
|
287
287
|
"engines": {
|
|
288
288
|
"node": ">=22.13.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-CFBEBXLO.js";import"./chunk-FKL3R5JQ.js";import"./chunk-H74Q7TJN.js";import"./chunk-ACWFKES2.js";import"./chunk-GHBNRMSJ.js";import"./chunk-OY2AHLSF.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-NAXGWDVM.js";import"./chunk-2ZI5FKSF.js";import"./chunk-DNRWGATA.js";import"./chunk-H2PYU7MN.js";import"./chunk-YK7JN5N7.js";import"./chunk-FBXTQNRH.js";import"./chunk-37OWRCUN.js";import"./chunk-62OAY5KJ.js";import"./chunk-6XCMKIZN.js";import"./chunk-TBLI254A.js";import"./chunk-XEB3NLJR.js";import"./chunk-2T7RRL6G.js";import"./chunk-7OZVZIBE.js";import"./chunk-RWWOHCMG.js";import"./chunk-6TB6YOCZ.js";import"./chunk-G3CZCUPM.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-PPSAMXYN.js";import"./chunk-6PX4OXQO.js";import"./chunk-WQ4PYWSW.js";import"./chunk-NSHU347M.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-NVYIZCSR.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-V2M2XCR5.js";import"./chunk-KOBVYY6H.js";import"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-YBSBABOS.js";import"./chunk-FB6TI3BH.js";import"./chunk-DEF34AFL.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-6PX4OXQO.js";import"./chunk-WQ4PYWSW.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-Z2O2YJAF.js";import"./chunk-YBSBABOS.js";import"./chunk-FB6TI3BH.js";import"./chunk-DEF34AFL.js";import"./chunk-C522H7XR.js";import"./chunk-3Y7SPD72.js";import"./chunk-ACWFKES2.js";import"./chunk-AI4VYSFS.js";import"./chunk-VJQYDYAJ.js";import"./chunk-OBAREPDC.js";import"./chunk-6GP6W46M.js";import"./chunk-PGYMKGOE.js";import"./chunk-GZLZCZ42.js";import"./chunk-GJMLK5UT.js";import"./chunk-6PX4OXQO.js";import"./chunk-WQ4PYWSW.js";import"./chunk-AH3ZD3NJ.js";import"./chunk-HOZUDE4C.js";import"./chunk-ATHWDAXB.js";import"./chunk-N6PIIK6G.js";import"./chunk-WSF24I3D.js";import"./chunk-GHBNRMSJ.js";import"./chunk-XLZYRTNO.js";import"./chunk-EWFECZ2U.js";import"./chunk-VWNFAW2M.js";import"./chunk-XBVUVFJK.js";import"./chunk-EN2QSKFF.js";import"./chunk-OY2AHLSF.js";export{a as BrowserWorkflowTool};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{a as b,b as y}from"./chunk-5E6GHSTY.js";import{b as v}from"./chunk-FESZBPUB.js";import{j as d,k as g,l as f,n as l}from"./chunk-XUZDBQ5X.js";import p from"chalk";var C=3,h="instrumented-report",k="static-estimation";async function D(e,r=a=>console.log(a)){let a=await d(e);if(a.status==="target-missing")return{kind:"no-data",reason:"target-missing",message:l("target-missing",e,null)};if(a.status==="evaluated"){let{evaluation:n,projectRoot:t}=a;if(n.status==="measured"){let u=n.files;return{kind:"data",data:{files:u,summary:b(u),instrumented:!0},projectRoot:t}}return{kind:"no-data",reason:n.reason,message:l(n.reason,e,t)}}let s=v(a.target,{includeTests:!1});return s.length===0?{kind:"no-sources"}:(r(p.gray(` Analyzing ${s.length} files...
|
|
3
|
-
`)),{kind:"data",data:y(s,a.projectRoot),projectRoot:a.projectRoot})}function R(e){return{branch:e.files.some(r=>r.branches.total>0),function:e.files.some(r=>r.functions.total>0),statement:e.files.some(r=>r.statements.total>0)}}var T=e=>e==="target-missing"||e==="unreadable-report";function x(){return"UNMEASURED: no coverage report exists for this project, so these figures are a STATIC ESTIMATE derived from source shape \u2014 not measured coverage. No threshold verdict is given and nothing is stored as evidence. Run your tests with coverage first (e.g. `npm test -- --coverage`) and re-run."}async function j(e,r,a,s){let n=await D(r,s);if(n.kind==="no-sources")return n;if(n.kind==="no-data")return T(n.reason)?{kind:"error",reason:n.reason,message:n.message}:{kind:"unmeasured",reason:n.reason,message:n.message};let t=n.data,u=t.instrumented,m=await e.analyze({coverageData:t,threshold:a,includeFileDetails:!0,measured:u,...n.projectRoot?{projectRoot:n.projectRoot}:{}});if(!m.success||!m.value)return{kind:"analysis-failed",message:m.error?.message||"Coverage analysis failed"};let o=m.value;if(!u)return{kind:"estimate",data:t,summary:{...o.summary},message:x()};let i=R(t),c=g(o.summary,a,i);return{kind:"measured",data:t,collected:i,verdict:c,summary:{...o.summary,branch:i.branch?o.summary.branch:null,function:i.function?o.summary.function:null,statement:i.statement?o.summary.statement:null},recommendations:f(o.recommendations??[],c,a,i)}}function M(e,r){switch(e.kind){case"measured":{let{overall:a,meetsThreshold:s}=e.verdict;return s?a<r+5?2:0:1}case"estimate":case"unmeasured":return C;case"no-sources":return 0;default:return 1}}function S(e,r,a){let s={line:null,branch:null,function:null,statement:null};switch(e.kind){case"measured":return{summary:e.summary,meetsThreshold:e.verdict.meetsThreshold,threshold:r,recommendations:e.recommendations,measured:!0,estimated:!1,coverageMethod:h,branchDataCollected:e.collected.branch,functionDataCollected:e.collected.function,statementDataCollected:e.collected.statement,...e.data.unmeasuredFiles?.length?{unmeasuredFiles:e.data.unmeasuredFiles}:{}};case"estimate":return{summary:e.summary,meetsThreshold:null,threshold:r,measured:!1,estimated:!0,unmeasured:!0,coverageMethod:k,reason:"no-coverage-report",target:a,warning:e.message};case"unmeasured":case"error":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,unmeasured:e.kind==="unmeasured",reason:e.reason,target:a,warning:e.message};case"analysis-failed":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,target:a,error:e.message};case"no-sources":return{summary:s,meetsThreshold:null,threshold:r,measured:!1,target:a,warning:"No source files found"}}}export{C as a,D as b,j as c,M as d,S as e};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{a as V}from"./chunk-5LPYV3TK.js";import{a as C,e as x,f as K}from"./chunk-ERQKYIP7.js";import{a as O}from"./chunk-DBMNJSBV.js";import{a as F,b as U,c as G,d as j,f as Y}from"./chunk-H2PYU7MN.js";import{c as $,d as J}from"./chunk-YK7JN5N7.js";import{a as W,b as _,g as z,j as H}from"./chunk-37OWRCUN.js";import{i as B}from"./chunk-RWWOHCMG.js";import{b as q,d as ne}from"./chunk-ACWFKES2.js";import{a as D,g as w,i as L,k as M,l as v,p as A}from"./chunk-PPSAMXYN.js";import{i as N}from"./chunk-WQ4PYWSW.js";import{c as y,d as f}from"./chunk-NSHU347M.js";import{a as te}from"./chunk-HOZUDE4C.js";import{c as I}from"./chunk-ATHWDAXB.js";import{a as T,b as S,e as ee}from"./chunk-GHBNRMSJ.js";te();ee();ne();var c=I.create("RealQEReasoningBank"),ie={sqlite:{dbPath:".agentic-qe/memory.db",walMode:!0,useUnified:!0},embeddings:{modelName:"Xenova/all-MiniLM-L6-v2",quantized:!0,enableCache:!0},enableLearning:!0,enableRouting:!0,enableGuidance:!0,hnsw:{M:16,efConstruction:200,efSearch:100},routingWeights:{similarity:.3,performance:.4,capabilities:.3},coherenceThreshold:.4},k=class{constructor(e={},t){this.coherenceService=t;this.qeConfig={...ie,...e},this.sqliteStore=B(this.qeConfig.sqlite),this.asymmetricEngine=new V}coherenceService;qeConfig;sqliteStore;hnswIndex=null;patternIdMap=new Map;initialized=!1;stats={routingRequests:0,totalRoutingLatency:0,learningOutcomes:0,successfulOutcomes:0};routingLatencies=new O(1e3);asymmetricEngine;agentCapabilities={"qe-test-generator":{domains:["test-generation"],capabilities:["test-generation","tdd","bdd","unit-test","integration-test"],performanceScore:.85},"qe-coverage-analyzer":{domains:["coverage-analysis"],capabilities:["coverage-analysis","gap-detection","risk-scoring"],performanceScore:.92},"qe-coverage-specialist":{domains:["coverage-analysis"],capabilities:["sublinear-analysis","branch-coverage","mutation-testing"],performanceScore:.88},"qe-test-architect":{domains:["test-generation","coverage-analysis"],capabilities:["test-strategy","test-pyramid","architecture"],performanceScore:.9},"qe-api-contract-validator":{domains:["contract-testing"],capabilities:["contract-testing","openapi","graphql","pact"],performanceScore:.87},"qe-security-auditor":{domains:["security-compliance"],capabilities:["sast","dast","vulnerability","owasp"],performanceScore:.82},"qe-visual-tester":{domains:["visual-accessibility"],capabilities:["screenshot","visual-regression","percy","chromatic"],performanceScore:.8},"qe-a11y-ally":{domains:["visual-accessibility"],capabilities:["wcag","aria","screen-reader","contrast"],performanceScore:.85},"qe-performance-tester":{domains:["chaos-resilience"],capabilities:["load-testing","stress-testing","k6","artillery"],performanceScore:.83},"qe-flaky-investigator":{domains:["test-execution"],capabilities:["flaky-detection","test-stability","retry"],performanceScore:.78},"qe-chaos-engineer":{domains:["chaos-resilience"],capabilities:["chaos-testing","resilience","fault-injection"],performanceScore:.75}};async initialize(){if(this.initialized)return;let e=performance.now();await this.sqliteStore.initialize(),c.info("SQLite persistence initialized"),await w(D,this.qeConfig.embeddings),await this.initializeHNSW(),c.info("HNSW index initialized"),await this.loadPatternsIntoHNSW(),this.sqliteStore.getStats().totalPatterns===0&&(this.sqliteStore.hasAnyHistoricalData?.()??!1?c.error("qe_patterns table is EMPTY but historical data exists \u2014 possible data loss! Restore from backup instead of loading seed patterns. Skipping foundational pattern load to avoid masking data loss."):await this.loadFoundationalPatterns()),this.initialized=!0;let i=performance.now()-e;c.info("Fully initialized",{durationMs:Math.round(i)})}async initializeHNSW(){try{let e=await import("./hnswlib-node-CBP73QHY.js"),i=e.default?.HierarchicalNSW||e.HierarchicalNSW;if(typeof i!="function")throw new Error("HierarchicalNSW not found in hnswlib-node module");let n=i,a=v();this.hnswIndex=new n("cosine",a),this.hnswIndex.initIndex(1e5,this.qeConfig.hnsw.M,this.qeConfig.hnsw.efConstruction),this.hnswIndex.setEf(this.qeConfig.hnsw.efSearch),c.info("HNSW initialized",{dimension:a,M:this.qeConfig.hnsw.M})}catch(e){throw c.error("HNSW initialization failed",e instanceof Error?e:void 0),e}}async loadPatternsIntoHNSW(){if(!this.hnswIndex)return;let e=this.sqliteStore.getAllEmbeddings(),t=v(),i=0,n=0,a=A()?.spaceId;for(let{patternId:s,embedding:r,spaceId:m}of e){if(!a||m!==a||!r||!Array.isArray(r)||r.length!==t){n++;continue}let g=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(r,g),this.patternIdMap.set(g,s),i++}n>0&&c.warn("Skipped invalid embeddings",{skipped:n,expectedDim:t}),c.info("Loaded patterns into HNSW index",{count:i})}async loadFoundationalPatterns(){let e=[{patternType:"test-template",name:"AAA Unit Test",description:"Arrange-Act-Assert pattern for clear, maintainable unit tests",template:{type:"code",content:`describe('{{className}}', () => {
|
|
3
|
-
describe('{{methodName}}', () => {
|
|
4
|
-
it('should {{expectedBehavior}}', {{async}} () => {
|
|
5
|
-
// Arrange
|
|
6
|
-
{{arrangeCode}}
|
|
7
|
-
|
|
8
|
-
// Act
|
|
9
|
-
{{actCode}}
|
|
10
|
-
|
|
11
|
-
// Assert
|
|
12
|
-
{{assertCode}}
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
});`,variables:[{name:"className",type:"string",required:!0},{name:"methodName",type:"string",required:!0},{name:"expectedBehavior",type:"string",required:!0}]},context:{testType:"unit",tags:["unit-test","aaa","best-practice"]}},{patternType:"coverage-strategy",name:"Risk-Based Coverage",description:"Prioritize coverage by code risk and complexity",template:{type:"prompt",content:"Analyze coverage gaps focusing on critical business logic, error handling, and high-complexity functions.",variables:[]},context:{tags:["coverage","risk-based"]}}];for(let t of e)try{await this.storeQEPattern(t)}catch(i){c.warn("Failed to load foundational pattern",{name:t.name,error:i})}c.info("Loaded foundational patterns",{count:e.length})}async storeQEPattern(e){try{let t=`${e.name} ${e.description||""} ${e.context?.tags?.join(" ")||""}`,i=await w(t,this.qeConfig.embeddings),n=W(t)||"test-generation";if(C())try{let r=K(e.name,{description:e.description,template:e.template,patternType:e.patternType},n,{tags:e.context?.tags}),m=await x.evaluateWrite(r);if(!m.allowed&&(c.warn("Pattern blocked by MemoryWriteGate",{name:e.name,reason:m.reason,conflicts:m.conflictingPatterns?.join(", ")||"none"}),m.reason?.includes("strict")))return f(new Error(`Pattern blocked by governance: ${m.reason}`))}catch(r){c.warn("MemoryWriteGate check error (continuing)",{error:r})}let a=N(),s={id:a,patternType:e.patternType,qeDomain:n,domain:n,name:e.name,description:e.description||"",confidence:.5,usageCount:0,successRate:0,qualityScore:0,tier:"short-term",template:e.template,context:{tags:[],...e.context},createdAt:new Date,lastUsedAt:new Date,successfulUses:0,embedding:i,reusable:!1,reuseCount:0,averageTokenSavings:0};if(this.sqliteStore.storePattern(s,i),this.hnswIndex){let r=this.hnswIndex.getCurrentCount();this.hnswIndex.addPoint(i,r),this.patternIdMap.set(r,a)}if(C())try{x.registerPattern({key:a,value:{name:s.name,description:s.description,patternType:s.patternType},domain:s.domain})}catch(r){c.warn("Pattern registration with MemoryWriteGate failed",{error:r})}return y(s)}catch(t){return f(S(t))}}async searchQEPatterns(e,t={}){let i=performance.now();try{if(!this.hnswIndex)return f(new Error("HNSW index not available"));let n=await w(e,this.qeConfig.embeddings),a=t.limit||10,s=this.hnswIndex.searchKnn(n,a*2),r=[];for(let o=0;o<s.neighbors.length;o++){let p=s.neighbors[o],d=1-s.distances[o];if(t.minSimilarity!==void 0&&d<t.minSimilarity)continue;let h=this.patternIdMap.get(p);if(!h)continue;let u=this.sqliteStore.getPattern(h);if(!u||t.domain&&u.qeDomain!==t.domain)continue;let b=$.reuseOptimization,P=(Date.now()-new Date(u.lastUsedAt).getTime())/864e5;r.push({pattern:u,similarity:d,score:d,matchType:"vector",canReuse:!!(u.reusable&&d>=b.minSimilarityForReuse&&u.successRate>=b.minSuccessRateForReuse&&P<=b.maxAgeForReuse)})}let m=new Map(r.map(o=>[o.pattern.id,o]));for(let o of this.sqliteStore.searchFTS(e,a*2)){let p=m.get(o.id);if(p){p.score=J(p.score,o.ftsScore*o.coverage);continue}if(t.minSimilarity!==void 0)continue;let l=this.sqliteStore.getPattern(o.id);!l||t.domain&&l.qeDomain!==t.domain||r.push({pattern:l,score:.5*o.ftsScore*o.coverage,similarity:0,matchType:"lexical",canReuse:!1})}r.sort((o,p)=>p.score-o.score);let g=performance.now()-i;return g>10&&c.warn("Slow search",{searchTimeMs:Number(g.toFixed(1))}),y(r.slice(0,a))}catch(n){return f(S(n))}}async routeTask(e){let t=performance.now();this.stats.routingRequests++;try{let i=e.domain?[e.domain]:_(e.task);i.length===0&&i.push("test-generation");let n=await this.searchQEPatterns(e.task,{limit:10,domain:i[0]}),a=n.success?n.value.map(l=>l.pattern):[],s=[];for(let[l,d]of Object.entries(this.agentCapabilities)){let h=0,u=[],b=i.filter(E=>d.domains.includes(E)).length,P=b>0?b/i.length*.4:0;if(h+=P*this.qeConfig.routingWeights.similarity,P>0&&u.push(`Domain: ${(P*100).toFixed(0)}%`),e.capabilities&&e.capabilities.length>0){let E=e.capabilities.filter(X=>d.capabilities.some(Z=>Z.toLowerCase().includes(X.toLowerCase()))).length,R=E>0?E/e.capabilities.length*.3:0;h+=R*this.qeConfig.routingWeights.capabilities,R>0&&u.push(`Caps: ${(R*100).toFixed(0)}%`)}else h+=.15*this.qeConfig.routingWeights.capabilities;h+=d.performanceScore*.3*this.qeConfig.routingWeights.performance,u.push(`Perf: ${(d.performanceScore*100).toFixed(0)}%`),s.push({agent:l,score:h,reasoning:u})}s.sort((l,d)=>d.score-l.score);let r=s[0],m=s.slice(1,4),g=[];if(this.qeConfig.enableGuidance&&i.length>0){let l=U(i[0],{framework:e.context?.framework,language:e.context?.language,includeAntiPatterns:!0});g.push(...l.slice(0,5))}let o=performance.now()-t;this.stats.totalRoutingLatency+=o,this.routingLatencies.push(o);let p={recommendedAgent:r.agent,confidence:r.score,alternatives:m.map(l=>({agent:l.agent,score:l.score})),domains:i,patterns:a,guidance:g,reasoning:r.reasoning.join("; "),latencyMs:o};return y(Y(e.includePatternGuidance,p,n.success?n.value:[]))}catch(i){return f(S(i))}}async recordOutcome(e){if(!this.qeConfig.enableLearning)return y(void 0);try{this.sqliteStore.recordUsage(e.patternId,e.success,e.metrics,e.feedback),this.stats.learningOutcomes++,e.success&&this.stats.successfulOutcomes++;let t=this.sqliteStore.getPattern(e.patternId);if(t){let i=t.qeDomain,n=this.asymmetricEngine.computeConfidenceUpdate(t.confidence,e.success?"success":"failure",i);this.asymmetricEngine.shouldQuarantine(n,i).shouldQuarantine&&c.info("Pattern quarantined (asymmetric drop)",{name:t.name}),this.sqliteStore.updatePattern(e.patternId,{confidence:n}),await this.checkPatternPromotionWithCoherence(t)&&(this.sqliteStore.promotePattern(e.patternId),c.info("Pattern promoted to long-term",{name:t.name}))}return y(void 0)}catch(t){return f(S(t))}}async checkPatternPromotionWithCoherence(e){let t=z(e);if(!t.meetsUsageCriteria||!t.meetsQualityCriteria)return!1;if(this.coherenceService&&this.coherenceService.isInitialized()){let a=[...await this.getLongTermPatterns(),e].map(r=>({id:r.id,embedding:r.embedding||[],weight:r.confidence,metadata:{name:r.name,domain:r.qeDomain}})),s=await this.coherenceService.checkCoherence(a);if(s.energy>=(this.qeConfig.coherenceThreshold||.4))return c.info("Pattern promotion blocked due to coherence violation",{name:e.name,energy:s.energy}),s.contradictions&&s.contradictions.length>0&&c.info("Conflicts with existing patterns",{conflictingNodeIds:s.contradictions.map(r=>r.nodeIds).flat()}),!1}return!0}async getLongTermPatterns(){return this.sqliteStore.getPatterns({limit:1e3}).filter(t=>t.tier==="long-term")}shouldPromote(e){return e.tier==="short-term"&&e.successfulUses>=3&&e.successRate>=.7&&e.confidence>=.6}getQEGuidance(e){return F(e)}generateQEContext(e,t){return j(e,t||{})}checkQEAntiPatterns(e,t){return G(e,t)}async getQEStats(){let e=this.sqliteStore.getStats(),t=this.routingLatencies.percentile(95)||0,i={};for(let n of H)i[n]=e.byDomain[n]||0;return{totalPatterns:e.totalPatterns,byDomain:i,byTier:e.byTier,routingRequests:this.stats.routingRequests,avgRoutingLatencyMs:this.stats.routingRequests>0?this.stats.totalRoutingLatency/this.stats.routingRequests:0,p95RoutingLatencyMs:t,learningOutcomes:this.stats.learningOutcomes,patternSuccessRate:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes:0,embeddingCacheSize:0,transformerAvailable:M(),embeddingDimension:v(),sqliteDbPath:this.qeConfig.sqlite.dbPath||".agentic-qe/memory.db",asymmetricLearning:{failurePenaltyRatio:"10:1",quarantinedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(n=>n.quarantined===!0).length,rehabilitatedPatterns:this.sqliteStore.getPatterns({limit:1e4}).filter(n=>n.quarantined===!1&&n.quarantinedAt).length,avgConfidenceDelta:this.stats.learningOutcomes>0?this.stats.successfulOutcomes/this.stats.learningOutcomes-.5:0}}}async storeLoopPattern(e){try{let t=await this.storeQEPattern({patternType:"anti-pattern",name:`loop-detection:${e.toolCallSignature}`,description:`Tool call loop detected for agent ${e.agentId} during ${e.taskType}. Steering: ${e.steeringUsed}. Resolved: ${e.resolved}`,template:{type:"prompt",content:e.steeringUsed,variables:[]},context:{tags:["anti-pattern","loop-detection","learning-optimization",e.taskType]}});return t.success?{success:!0,patternId:t.value.id}:{success:!1,error:t.error?.message??"Unknown error"}}catch(t){return{success:!1,error:T(t)}}}async recordPatternOutcome(e,t,i){let n=this.sqliteStore.getPattern(e);if(!n)return;let a=n.usageCount+1,s=t?n.successfulUses+1:n.successfulUses,r=s/a,m=.3,g=(1-m)*n.qualityScore+m*i,o=Math.min(1,.5+a*.05+r*.3);this.sqliteStore.updatePattern(e,{usageCount:a,successfulUses:s,successRate:r,qualityScore:g,confidence:o})}async checkPatternPromotion(e,t,i,n){let a=this.sqliteStore.getPattern(e);return a?a.tier==="short-term"?t>=3&&i>=.6&&n>=.5:a.tier==="long-term"?t>=10&&i>=.75&&n>=.7:!1:!1}async promotePattern(e){this.sqliteStore.promotePattern(e)}async demotePattern(e){let t=this.sqliteStore.getPattern(e);if(!t)return;let i=["short-term","working","long-term"],n=i.indexOf(t.tier);if(n>0){let a=i[n-1];this.sqliteStore.updatePattern(e,{tier:a}),c.info("Pattern demoted",{name:t.name,newTier:a})}}cleanupPatternIdMap(){if(!this.initialized)return 0;let e=0,t=this.sqliteStore.getPatterns({limit:1e5}),i=new Set(t.map(n=>n.id));for(let[n,a]of Array.from(this.patternIdMap.entries()))i.has(a)||(this.patternIdMap.delete(n),e++);return e>0&&c.info("Cleaned stale patternIdMap entries",{count:e}),e}removePatternFromHNSW(e){for(let[t,i]of Array.from(this.patternIdMap.entries()))if(i===e)return this.patternIdMap.delete(t),c.info("Removed pattern from HNSW mapping",{patternId:e}),!0;return!1}getMemoryStats(){return{patternIdMapSize:this.patternIdMap.size,routingLatenciesSize:this.routingLatencies.length,hnswIndexCount:this.hnswIndex?.getCurrentCount()??0}}async storeTrajectory(e){return this.sqliteStore.getDb().prepare(`
|
|
16
|
-
INSERT OR REPLACE INTO qe_trajectories (
|
|
17
|
-
id, task, agent, domain, started_at, ended_at, success, steps_json, metadata_json
|
|
18
|
-
) VALUES (?, ?, ?, ?, datetime('now'), datetime('now'), ?, ?, ?)
|
|
19
|
-
`).run(e.id,e.task,e.agent??null,e.domain??null,e.success?1:0,JSON.stringify(e.steps),JSON.stringify(e.metrics??{})),e.id}async getTrajectories(e,t=50){let i=this.sqliteStore.getDb(),n="SELECT * FROM qe_trajectories",a=[];return e&&(n+=" WHERE domain = ?",a.push(e)),n+=" ORDER BY ended_at DESC LIMIT ?",a.push(t),i.prepare(n).all(...a).map(r=>({id:r.id,task:r.task,agent:r.agent??void 0,domain:r.domain,success:r.success===1,steps:q(r.steps_json||"[]"),metrics:r.metadata_json?q(r.metadata_json):void 0}))}async linkPatternToTrajectory(e,t){let i=this.sqliteStore.getDb(),n=this.sqliteStore.getPattern(e);if(n){let a={...n.context,sourceTrajectoryId:t};i.prepare(`
|
|
20
|
-
UPDATE qe_patterns SET context_json = ?, updated_at = datetime('now') WHERE id = ?
|
|
21
|
-
`).run(JSON.stringify(a),e)}}async getEnhancedAdapter(){return{message:"Use EnhancedReasoningBankAdapter for full agentic-flow integration",importPath:"../integrations/agentic-flow/reasoning-bank/index.js"}}async dispose(){this.sqliteStore.close(),L(),this.hnswIndex=null,this.patternIdMap.clear(),this.routingLatencies.clear(),this.stats.routingRequests=0,this.stats.totalRoutingLatency=0,this.stats.learningOutcomes=0,this.stats.successfulOutcomes=0,this.initialized=!1,c.info("Disposed")}async destroy(){return this.dispose()}};function xe(Q={},e){return new k(Q,e)}export{xe as a};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{readFileSync as O,existsSync as x,readdirSync as A}from"fs";import{join as y,basename as v}from"path";function m(r){let e=[];if(!r||typeof r!="object")return e.push("Overlay must be a non-null object"),e;let t=r;if((!t.agent||typeof t.agent!="string")&&e.push('Overlay must have a string "agent" field'),t.replace!==void 0)if(typeof t.replace!="object"||t.replace===null)e.push('"replace" must be an object');else{let n=t.replace;n.description!==void 0&&typeof n.description!="string"&&e.push('"replace.description" must be a string'),n.domains!==void 0&&!Array.isArray(n.domains)&&e.push('"replace.domains" must be an array'),n.complexity!==void 0&&typeof n.complexity!="string"&&e.push('"replace.complexity" must be a string')}if(t.append!==void 0)if(typeof t.append!="object"||t.append===null)e.push('"append" must be an object');else{let n=t.append;n.instructions!==void 0&&typeof n.instructions!="string"&&e.push('"append.instructions" must be a string'),n.capabilities!==void 0&&!Array.isArray(n.capabilities)&&e.push('"append.capabilities" must be an array'),n.tags!==void 0&&!Array.isArray(n.tags)&&e.push('"append.tags" must be an array')}if(t.config!==void 0)if(typeof t.config!="object"||t.config===null)e.push('"config" must be an object');else{let n=t.config;n.minimumFindings!==void 0&&typeof n.minimumFindings!="number"&&e.push('"config.minimumFindings" must be a number'),n.maxParallelAgents!==void 0&&typeof n.maxParallelAgents!="number"&&e.push('"config.maxParallelAgents" must be a number'),n.preferredFrameworks!==void 0&&!Array.isArray(n.preferredFrameworks)&&e.push('"config.preferredFrameworks" must be an array'),n.needsContext!==void 0&&typeof n.needsContext!="boolean"&&e.push('"config.needsContext" must be a boolean')}return e}var w=".claude/agent-overrides";function $(r){let e={},t=r.split(`
|
|
3
|
-
`),n=null,i=null,s=null,a=null;for(let o of t){let l=o.replace(/\r$/,"");if(l.trim().startsWith("#")||l.trim()==="")continue;let u=l.length-l.trimStart().length,g=l.trim();if(g.startsWith("- ")){let c=g.slice(2).trim().replace(/^["']|["']$/g,"");s&&s.push(c);continue}if(s&&a){if(i&&n){let c=e[n]||{};c[a]=s,e[n]=c}else if(n){let c=e[n]||{};c[a]=s,e[n]=c}s=null,a=null}let f=g.match(/^(\w[\w.-]*)\s*:\s*(.*)$/);if(!f)continue;let[,p,b]=f,d=b.trim().replace(/^["']|["']$/g,"");if(u===0)d===""||d===void 0?(n=p,i=null,e[p]||(e[p]={})):(e[p]=h(d),n=null,i=null);else if(u<=4&&n)if(d===""||d===void 0)i=p,s=[],a=p;else{let c=e[n]||{};c[p]=h(d),e[n]=c}}if(s&&a&&n){let o=e[n]||{};o[a]=s,e[n]=o}return e}function h(r){if(r==="true")return!0;if(r==="false")return!1;if(r==="null")return null;let e=Number(r);return!isNaN(e)&&r!==""?e:r}function N(r){let e=y(r,w),t={overlays:[],warnings:[],errors:[]};if(!x(e))return t;let n;try{n=A(e).filter(i=>(i.endsWith(".yaml")||i.endsWith(".yml"))&&!i.startsWith("_"))}catch(i){return t.errors.push(`Failed to read overrides directory: ${i.message}`),t}for(let i of n){let s=y(e,i);try{let a=O(s,"utf-8"),o=$(a);if(!o.agent){let u=v(i).replace(/\.(override|customize)\.(yaml|yml)$/,"");o.agent=u}let l=m(o);if(l.length>0){t.warnings.push(`Overlay ${i} has validation issues: ${l.join("; ")}. Loading without overlay.`);continue}t.overlays.push(o)}catch(a){t.warnings.push(`Failed to parse overlay ${i}: ${a.message}. Agent loads without overlay.`)}}return t}function E(r,e){let t=r,n={agentName:e.agent,overlayFile:`${e.agent}.override.yaml`,replacedFields:[],appendedFields:[],configOverrides:[]};if(e.replace){if(e.replace.description){let i=/^(description:\s*).+$/m;i.test(t)&&(t=t.replace(i,`$1${e.replace.description}`),n.replacedFields.push("description"))}if(e.replace.domains){let i=/^(domain:\s*).+$/m;i.test(t)&&(t=t.replace(i,`$1${e.replace.domains.join(", ")}`),n.replacedFields.push("domains"))}if(e.replace.complexity){let i=/^(complexity:\s*).+$/m;i.test(t)&&(t=t.replace(i,`$1${e.replace.complexity}`),n.replacedFields.push("complexity"))}}if(e.append){if(e.append.instructions&&(t+=`
|
|
4
|
-
|
|
5
|
-
## Custom Instructions (User Override)
|
|
6
|
-
|
|
7
|
-
${e.append.instructions}
|
|
8
|
-
`,n.appendedFields.push("instructions")),e.append.capabilities&&e.append.capabilities.length>0){let i=e.append.capabilities.map(s=>`- ${s}`).join(`
|
|
9
|
-
`);t+=`
|
|
10
|
-
|
|
11
|
-
### Additional Capabilities (User Override)
|
|
12
|
-
|
|
13
|
-
${i}
|
|
14
|
-
`,n.appendedFields.push("capabilities")}if(e.append.tags&&e.append.tags.length>0){let i=/^(tags:\s*).+$/m;i.test(t)&&(t=t.replace(i,s=>{let a=s.replace(/^tags:\s*/,"").split(",").map(l=>l.trim());return`tags: ${[...new Set([...a,...e.append.tags])].join(", ")}`})),n.appendedFields.push("tags")}}return e.config&&(n.configOverrides=Object.keys(e.config)),{content:t,applied:n}}export{N as a,E as b};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.10");process.exit(0)}
|
|
2
|
-
import{c as r,e as u}from"./chunk-GHBNRMSJ.js";u();var a='expected [{ "functionName": "add", "args": [2, 3], "expected": 5 }]',p={type:"object",description:"One caller-owned specification example",properties:{functionName:{type:"string",description:"Named export of the source file to call"},args:{type:"array",description:"Positional JSON arguments; length must equal the function arity",items:{}},expected:{description:"Expected JSON return value (use null for a null result)"}},required:["functionName","args","expected"]};function s(o,n="Behavior example value"){let i=(e,t)=>{if(!(e===null||typeof e=="string"||typeof e=="boolean")&&!(typeof e=="number"&&Number.isFinite(e)&&!Object.is(e,-0))){if(typeof e!="object"||t.has(e))throw new r(`${n} must be finite JSON data (no undefined, functions, NaN/Infinity, cycles, or negative zero)`);if(!Array.isArray(e)&&Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new r(`${n} must contain only plain JSON objects`);t.add(e);for(let c of Array.isArray(e)?Array.from(e):Object.values(e))i(c,t);t.delete(e)}};i(o,new Set)}function l(o){if(o!==void 0){if(!Array.isArray(o))throw new r(`behaviorExamples must be an array; ${a}`);return o.forEach((n,i)=>{let e=`behaviorExamples[${i}]`;if(typeof n!="object"||n===null||Array.isArray(n))throw new r(`${e} must be an object; ${a}`);let t=n;if(typeof t.functionName!="string"||t.functionName.trim()==="")throw new r(`${e}.functionName must be a non-empty string`);if(!Array.isArray(t.args))throw new r(`${e}.args must be an array of arguments`);if(!Object.prototype.hasOwnProperty.call(t,"expected"))throw new r(`${e}.expected is required (use null for a null result)`);s(t.args,`${e}.args`),s(t.expected,`${e}.expected`)}),o}}export{p as a,s as b,l as c};
|