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
|
@@ -298,8 +298,43 @@ const FAST_HOOKS = new Set(['guard', 'pre-command']);
|
|
|
298
298
|
const SPAWN_TIMEOUT_MS = Number(process.env.AQE_HOOK_TIMEOUT_MS)
|
|
299
299
|
|| (FAST_HOOKS.has(args[0]) ? 2500 : 4500);
|
|
300
300
|
|
|
301
|
+
// Credential shapes scrubbed from health-log lines (#740). The child's stderr
|
|
302
|
+
// can echo hook arguments (commands, prompts) and provider errors. This file is
|
|
303
|
+
// copied standalone into user projects and cannot import the AQE logger, so it
|
|
304
|
+
// carries a compact copy of src/logging/redaction.ts's detectors; the parity
|
|
305
|
+
// test (tests/unit/logging/redaction-copies.test.ts) keeps them in step. Every
|
|
306
|
+
// pattern is linear: bounded or single-pass quantifiers only.
|
|
307
|
+
const HEALTH_REDACTIONS = [
|
|
308
|
+
[/-----BEGIN[^-\n]{0,64}PRIVATE KEY-----(?:[\s\S]*?-----END[^-\n]{0,64}PRIVATE KEY-----|[\s\S]*)/g, '<REDACTED:private_key>'],
|
|
309
|
+
[/(:\/\/)[^\s/@:"']*:[^\s/@"']+@/g, '$1<REDACTED:credentials>@'],
|
|
310
|
+
[/\b((?:authorization|x-api-key):\s*(?:(?:Bearer|Basic|Token)\s+)?)[^\s"']+/gi, '$1<REDACTED:credential>'],
|
|
311
|
+
[/\b(set-cookie|cookie):\s*[^\n]+/gi, '$1: <REDACTED:cookie>'],
|
|
312
|
+
[/\b(Bearer)\s+([A-Za-z0-9._~+/=-]{8,})/gi,
|
|
313
|
+
(match, scheme, value) => (isProseWord(value) ? match : `${scheme} <REDACTED:credential>`)],
|
|
314
|
+
[/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/g, '<REDACTED:jwt>'],
|
|
315
|
+
[/\b(?:sk-(?:ant-|proj-)?[A-Za-z0-9_-]{16,}|gh[pousr]_[A-Za-z0-9_]{16,}|github_pat_[A-Za-z0-9_]{16,}|glpat-[A-Za-z0-9_-]{20,}|xox[bpsa]-[A-Za-z0-9-]{10,}|hf_[A-Za-z0-9]{30,}|npm_[A-Za-z0-9]{36,}|cog_[A-Za-z0-9-]{20,}|[spr]k_(?:live|test)_[A-Za-z0-9]{10,}|AIzaSy[A-Za-z0-9_-]{33}|A[KS]IA[0-9A-Z]{16})/g,
|
|
316
|
+
'<REDACTED:token>'],
|
|
317
|
+
// key=value, key: value, "key": "value" and --key value for sensitive key names.
|
|
318
|
+
[/((?:^|[^A-Za-z0-9])[A-Za-z0-9_-]{0,64}?(?:token|secret|password|passwd|passphrase|api[_-]?key|credentials?|private[_-]?key)["']?\s*[:=]\s*["']?)[^\s"'&,;}]+/gi,
|
|
319
|
+
'$1<REDACTED:credential>'],
|
|
320
|
+
[/(--?[A-Za-z0-9-]{0,64}?(?:token|secret|password|api-?key)\s+)[^\s-][^\s]*/gi, '$1<REDACTED:credential>'],
|
|
321
|
+
];
|
|
322
|
+
|
|
323
|
+
/** "use Bearer authorization" is prose; digits, mixed case, symbols or >16 letters mean a token. */
|
|
324
|
+
function isProseWord(value) {
|
|
325
|
+
return /^[A-Z]?[a-z]+\.?$/.test(value) && value.replace(/\.$/, '').length <= 16;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/** Redact credential-shaped text before it reaches the health log. */
|
|
329
|
+
function redactHealthText(text) {
|
|
330
|
+
let out = String(text);
|
|
331
|
+
for (const [regex, replacement] of HEALTH_REDACTIONS) out = out.replace(regex, replacement);
|
|
332
|
+
return out;
|
|
333
|
+
}
|
|
334
|
+
|
|
301
335
|
function recordHookHealth(line) {
|
|
302
336
|
try {
|
|
337
|
+
line = redactHealthText(line);
|
|
303
338
|
const logPath = path.join(PROJECT, '.agentic-qe', 'hooks-health.log');
|
|
304
339
|
// Throttle: skip if we logged within the last 5 min (avoid a line/turn).
|
|
305
340
|
// lstat, so a planted symlink's TARGET mtime never decides anything.
|
|
@@ -399,7 +434,8 @@ function superviseSpawn(cmd, cmdArgs, subcmd, ts) {
|
|
|
399
434
|
// Child exited non-zero with no JSON payload — e.g. an empty-task throw
|
|
400
435
|
// when the harness didn't populate $PROMPT/$TOOL_INPUT_*.
|
|
401
436
|
recordHookHealth(`[${ts()}] EMPTY-RESULT hook exited status=${res.status} `
|
|
402
|
-
|
|
437
|
+
// Redact before truncating, so a cut can never leave a token too short to match.
|
|
438
|
+
+ `with no JSON output (cmd=${subcmd}). stderr: ${redactHealthText(stderr.slice(0, 4096)).slice(0, 300)}\n`);
|
|
403
439
|
}
|
|
404
440
|
return out;
|
|
405
441
|
}
|
|
@@ -426,6 +462,6 @@ function main() {
|
|
|
426
462
|
// requiring this file never spawns anything.
|
|
427
463
|
// brain-checkpoint.cjs checks for this export (and the require.main guard
|
|
428
464
|
// below) before requiring this file; keep both.
|
|
429
|
-
module.exports = { resolveAqeInvocation, parseCmdShimTarget };
|
|
465
|
+
module.exports = { resolveAqeInvocation, parseCmdShimTarget, redactHealthText };
|
|
430
466
|
|
|
431
467
|
if (require.main === module) main();
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,269 @@ All notable changes to the Agentic QE project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.15.12] - 2026-10-23
|
|
9
|
+
|
|
10
|
+
A coverage verdict now needs evidence for the whole target. A report that
|
|
11
|
+
leaves out source files, or is older than the code, gives INSUFFICIENT
|
|
12
|
+
EVIDENCE instead of PASSED. Coverage tasks sent through `task_orchestrate`
|
|
13
|
+
work. The worker daemon started by `start-daemon.cjs` stays running and keeps
|
|
14
|
+
its log small. When the embedder fails after startup, pattern learning falls
|
|
15
|
+
back to text search instead of failing, and retries the embedder without
|
|
16
|
+
stalling anyone. Redaction catches more secrets and stops redacting plain
|
|
17
|
+
prose. CI and the Docker image use the patched October Node releases.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- **Coverage verdicts need complete, current evidence** ([#1154], [#1199]):
|
|
22
|
+
`aqe fleet run analyze`, `aqe coverage`, `aqe ci` and MCP
|
|
23
|
+
`coverage_analyze_sublinear` no longer report a pass from a coverage report
|
|
24
|
+
that covers only part of the target or is older than the sources. Source
|
|
25
|
+
files under the target that the report doesn't list are counted as
|
|
26
|
+
unmeasured and named, and a stale report is flagged. Either one gives
|
|
27
|
+
**INSUFFICIENT EVIDENCE**: `aqe coverage` and `aqe ci` exit with 3, and the
|
|
28
|
+
fleet verdict is FAILED. Only production source files inside the project's
|
|
29
|
+
own coverage scope count. That scope is read from the include/exclude
|
|
30
|
+
settings in vitest/vite, jest, nyc or c8 config, so files you exclude there
|
|
31
|
+
are not required. To fix a failing verdict, regenerate the report for the
|
|
32
|
+
whole target (for example `npm test -- --coverage`), or exclude the files
|
|
33
|
+
that are not meant to be measured. JSON output carries `evidenceStatus`,
|
|
34
|
+
`unmeasuredFiles` and `staleReport`.
|
|
35
|
+
- **Invalid task priorities are rejected** ([#1117], [#1131], by
|
|
36
|
+
@rudycelekli): `task_orchestrate` used to turn any unknown priority into
|
|
37
|
+
`p1`, including `""` and `null`, and could downgrade a requested `p0`. It
|
|
38
|
+
now accepts `critical`, `high`, `medium`, `low` and `p0`–`p3` and rejects
|
|
39
|
+
anything else with a message. `aqe task list --priority` and MCP
|
|
40
|
+
`task_list` validate their filter the same way, instead of silently
|
|
41
|
+
listing nothing.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- **Coverage tasks from `task_orchestrate` work** ([#1200], [#1202]): they
|
|
46
|
+
always failed with "Invalid analyze-coverage payload: missing
|
|
47
|
+
coverageData". They now run through the same code as
|
|
48
|
+
`coverage_analyze_sublinear`, with the same figures and evidence checks.
|
|
49
|
+
The target is the single `filePaths` entry, else a path named in the task
|
|
50
|
+
text, else the project. A task that names more than one target is refused
|
|
51
|
+
and asked for one.
|
|
52
|
+
- **The worker daemon stays running** ([#1158], [#1208]): `start-daemon.cjs`
|
|
53
|
+
started the MCP server with no stdin, and the server read that as a
|
|
54
|
+
disconnected client and shut down within seconds. The script now starts
|
|
55
|
+
the server in daemon mode (`AQE_MCP_DAEMON=1`). It ignores stdin EOF, logs a
|
|
56
|
+
heartbeat each minute and stops on SIGTERM, which `stop-daemon.cjs` sends.
|
|
57
|
+
Daemon mode is honoured only when nothing is attached to stdin, so a
|
|
58
|
+
normal MCP client still shuts its server down when it disconnects.
|
|
59
|
+
**Re-run `aqe init` once** so the project's `start-daemon.cjs` is
|
|
60
|
+
regenerated.
|
|
61
|
+
- **`daemon.log` stays small** ([#1207], [#1214]): the daemon moves the log
|
|
62
|
+
to `daemon.log.1` when it passes 5 MB. Set `AQE_DAEMON_LOG_MAX_SIZE` to
|
|
63
|
+
change the cap (`0` or `off` disables it), and
|
|
64
|
+
`AQE_DAEMON_HEARTBEAT_SECONDS` to change the heartbeat interval.
|
|
65
|
+
- **An embedder that fails after startup no longer breaks pattern learning**
|
|
66
|
+
([#1187], [#1203], [#1204], [#1215]): when the embedding endpoint went down
|
|
67
|
+
mid-session, pattern search threw and lost its text matches, storing a
|
|
68
|
+
pattern failed, and the status still said `vector`. Now:
|
|
69
|
+
- search returns its text matches, labelled `lexical-only` with the reason;
|
|
70
|
+
- patterns are stored without a vector (`aqe learning backfill-embeddings`
|
|
71
|
+
adds it later);
|
|
72
|
+
- `aqe hooks learn` and `aqe hooks search` work in text-only mode instead
|
|
73
|
+
of exiting 1, and the hint names the configured endpoint and why it
|
|
74
|
+
failed.
|
|
75
|
+
|
|
76
|
+
The embedder is retried every 60 s (`embedderRetryIntervalMs`), in the
|
|
77
|
+
background, so the call that triggers a retry never waits for it. Recovery
|
|
78
|
+
takes about one interval, down from two. `task_orchestrate` reports
|
|
79
|
+
experience guidance the same way, in `learning.experienceGuidance`.
|
|
80
|
+
- **Experience guidance reports only measured similarity** ([#1192],
|
|
81
|
+
[#1215]): reservoir samples, picked without looking at the task, were
|
|
82
|
+
blended in with a similarity derived from their coherence score. A sample
|
|
83
|
+
is now included only when its similarity to the task was actually computed
|
|
84
|
+
and meets the threshold. Some tasks get less guidance as a result.
|
|
85
|
+
- **Slow stream consumers no longer time out** ([#962], [#1197]): a
|
|
86
|
+
streaming LLM call's idle deadline fired when the caller paused between
|
|
87
|
+
chunks, even after the server had sent everything. It now measures network
|
|
88
|
+
silence, reading up to 1 MiB ahead of the consumer.
|
|
89
|
+
- **One interrupt reaches the host once** ([#992], [#1198]): when a test
|
|
90
|
+
count was interrupted, AQE re-raised the signal even if the program
|
|
91
|
+
embedding it had its own handler, so a host that counts Ctrl-C presses saw
|
|
92
|
+
two.
|
|
93
|
+
- **Cached code analyses belong to the right code** ([#1190], by
|
|
94
|
+
@rudycelekli): the semantic analyzer keyed its analysis and embedding
|
|
95
|
+
caches with a weak 32-bit hash, so two different snippets could share an
|
|
96
|
+
entry and get each other's results or embeddings. Entries are now keyed by
|
|
97
|
+
SHA-256 of the content.
|
|
98
|
+
- **Infra health with a custom agent prefix** ([#1189], by @rudycelekli): a
|
|
99
|
+
prefix containing regex characters recovered the wrong service name, so a
|
|
100
|
+
service that was down reported as healthy. The prefix is now stripped
|
|
101
|
+
literally.
|
|
102
|
+
|
|
103
|
+
### Security
|
|
104
|
+
|
|
105
|
+
- **More secrets are redacted** ([#740], [#1195], [#1213]): logs, MCP tool
|
|
106
|
+
errors, the CLI fatal handler and kernel errors now redact:
|
|
107
|
+
- Hugging Face (`hf_`), npm (`npm_`) and Cognitum (`cog_`) tokens;
|
|
108
|
+
- `Authorization: Token …` headers;
|
|
109
|
+
- private-key blocks that are missing their END line;
|
|
110
|
+
- whole objects and arrays stored under a sensitive key (for example
|
|
111
|
+
`"apiKey": {…}`), not only plain values.
|
|
112
|
+
|
|
113
|
+
`.agentic-qe/hooks-health.log` and the OpenCode plugin's output are
|
|
114
|
+
redacted too. Error logs show the error's `code` and `status` again.
|
|
115
|
+
- **Less over-redaction** ([#740], [#1195], [#1196], [#1213]): prose such as
|
|
116
|
+
"Basic authentication" or "use Bearer authorization" is no longer replaced.
|
|
117
|
+
Real Basic credentials and Bearer tokens, and any value in an
|
|
118
|
+
`Authorization:` header, still are.
|
|
119
|
+
- **Patched Node releases** ([#1206]): CI, the release workflow, the Docker
|
|
120
|
+
image and `.nvmrc` use Node 24.22.1, and the Node 22 compatibility job uses
|
|
121
|
+
22.23.4. Both include the October 2026 Node security fixes. The supported
|
|
122
|
+
minimum stays `>=22.13.0`.
|
|
123
|
+
|
|
124
|
+
### Changed (development)
|
|
125
|
+
|
|
126
|
+
- `vitest` and `@vitest/coverage-v8` 5.0.1 → 5.0.5 (dev dependencies), which
|
|
127
|
+
clears two `@vitest/mocker` advisories ([#1210]).
|
|
128
|
+
|
|
129
|
+
[#740]: https://github.com/proffesor-for-testing/agentic-qe/issues/740
|
|
130
|
+
[#962]: https://github.com/proffesor-for-testing/agentic-qe/issues/962
|
|
131
|
+
[#992]: https://github.com/proffesor-for-testing/agentic-qe/issues/992
|
|
132
|
+
[#1117]: https://github.com/proffesor-for-testing/agentic-qe/issues/1117
|
|
133
|
+
[#1131]: https://github.com/proffesor-for-testing/agentic-qe/pull/1131
|
|
134
|
+
[#1154]: https://github.com/proffesor-for-testing/agentic-qe/issues/1154
|
|
135
|
+
[#1158]: https://github.com/proffesor-for-testing/agentic-qe/issues/1158
|
|
136
|
+
[#1187]: https://github.com/proffesor-for-testing/agentic-qe/issues/1187
|
|
137
|
+
[#1189]: https://github.com/proffesor-for-testing/agentic-qe/pull/1189
|
|
138
|
+
[#1190]: https://github.com/proffesor-for-testing/agentic-qe/pull/1190
|
|
139
|
+
[#1192]: https://github.com/proffesor-for-testing/agentic-qe/issues/1192
|
|
140
|
+
[#1195]: https://github.com/proffesor-for-testing/agentic-qe/pull/1195
|
|
141
|
+
[#1196]: https://github.com/proffesor-for-testing/agentic-qe/issues/1196
|
|
142
|
+
[#1197]: https://github.com/proffesor-for-testing/agentic-qe/pull/1197
|
|
143
|
+
[#1198]: https://github.com/proffesor-for-testing/agentic-qe/pull/1198
|
|
144
|
+
[#1199]: https://github.com/proffesor-for-testing/agentic-qe/pull/1199
|
|
145
|
+
[#1200]: https://github.com/proffesor-for-testing/agentic-qe/issues/1200
|
|
146
|
+
[#1202]: https://github.com/proffesor-for-testing/agentic-qe/pull/1202
|
|
147
|
+
[#1203]: https://github.com/proffesor-for-testing/agentic-qe/pull/1203
|
|
148
|
+
[#1204]: https://github.com/proffesor-for-testing/agentic-qe/issues/1204
|
|
149
|
+
[#1206]: https://github.com/proffesor-for-testing/agentic-qe/pull/1206
|
|
150
|
+
[#1207]: https://github.com/proffesor-for-testing/agentic-qe/issues/1207
|
|
151
|
+
[#1208]: https://github.com/proffesor-for-testing/agentic-qe/pull/1208
|
|
152
|
+
[#1210]: https://github.com/proffesor-for-testing/agentic-qe/pull/1210
|
|
153
|
+
[#1213]: https://github.com/proffesor-for-testing/agentic-qe/pull/1213
|
|
154
|
+
[#1214]: https://github.com/proffesor-for-testing/agentic-qe/pull/1214
|
|
155
|
+
[#1215]: https://github.com/proffesor-for-testing/agentic-qe/pull/1215
|
|
156
|
+
|
|
157
|
+
## [3.15.11] - 2026-10-22
|
|
158
|
+
|
|
159
|
+
AQE now works on npm 12 and on a plain install without the optional
|
|
160
|
+
embedding package, and its MCP tools load in VS Code Copilot. When the
|
|
161
|
+
database cannot start, `aqe init` prints the real cause and the command that
|
|
162
|
+
fixes it. `aqe fleet run` progress output is readable, a test that passes on
|
|
163
|
+
retry counts as passed and flaky, and an `eval()` is no longer reported twice.
|
|
164
|
+
Four security fixes close the follow-ups from the 3.15.10 review: a checked
|
|
165
|
+
file is read from exactly what was checked, runner stderr is redacted before
|
|
166
|
+
it is cut, and names like `constructor` or `__proto__` are plain names in
|
|
167
|
+
every data lookup.
|
|
168
|
+
|
|
169
|
+
### Fixed
|
|
170
|
+
|
|
171
|
+
- **`aqe init` explains a missing database driver** ([#1173], [#1175]): on
|
|
172
|
+
npm 12, `npm install -g agentic-qe` blocks the install script of
|
|
173
|
+
`better-sqlite3`, so its native binary is never built. `aqe init` then
|
|
174
|
+
failed at "Initialize persistence database" with no error printed. Now
|
|
175
|
+
`init` prints the real error, and every command that opens the database
|
|
176
|
+
(`init`, `health`, `status`, `memory`, MCP fleet init) names the cause and
|
|
177
|
+
prints the exact fix:
|
|
178
|
+
`npm install -g agentic-qe --allow-scripts=agentic-qe,better-sqlite3,hnswlib-node`.
|
|
179
|
+
The README and getting-started guide include the npm 12 install note.
|
|
180
|
+
- **MCP tools load in VS Code Copilot** ([#1185], [#1193]): Copilot refused
|
|
181
|
+
`fleet_init` and 17 other tools with "tool parameters array type must have
|
|
182
|
+
items". Every list parameter in every tool schema now declares what its
|
|
183
|
+
elements are, including the `qe/*` domain tools, whose element types were
|
|
184
|
+
dropped when they were published.
|
|
185
|
+
- **`task_orchestrate` and `aqe eval` work without an embedder** ([#1022],
|
|
186
|
+
[#1181]): on a plain install without `@huggingface/transformers`,
|
|
187
|
+
`task_orchestrate` always failed with "Transformer initialization
|
|
188
|
+
previously failed" and `aqe eval` failed to load. Both now work. Pattern
|
|
189
|
+
learning stores patterns without a vector and searches them by text; its
|
|
190
|
+
response says so in a new `learning` field (`patternSearch: "vector"`,
|
|
191
|
+
`"lexical-only"` with the reason, or `"unavailable"`). Text matches report
|
|
192
|
+
`similarity: 0` because no similarity was measured. Experience guidance is
|
|
193
|
+
not produced without an embedding of the task, instead of guidance for an
|
|
194
|
+
unrelated task with a made-up similarity.
|
|
195
|
+
- **`aqe fleet run` progress output** ([#1168], [#1177]): the progress header
|
|
196
|
+
shows `Fleet Progress` instead of a literal `{name}` and a stray `0`. When
|
|
197
|
+
the verdict is FAILED, the completion line no longer says "successfully".
|
|
198
|
+
- **A test that passes on retry counts as passed and flaky** ([#1170],
|
|
199
|
+
[#1177]): MCP `test_execute_parallel` and `aqe test execute` (text, JSON and
|
|
200
|
+
markdown) now count it as passed, report it as flaky, and agree with
|
|
201
|
+
`retryStats`. MCP and the CLI share one default retry count, 2 (MCP used 3).
|
|
202
|
+
- **`sast-scan` runs without naming a domain** ([#1170], [#1177]):
|
|
203
|
+
`task_submit` and `aqe task submit` route it to `security-compliance`. A
|
|
204
|
+
task type no loaded domain handles is still rejected, with an error that
|
|
205
|
+
says so.
|
|
206
|
+
- **One `eval()` is reported once** ([#1170], [#1177], [#1184]):
|
|
207
|
+
`security_scan_comprehensive` dropped a duplicate generic eval/exec finding
|
|
208
|
+
only when SAST reported eval injection (CWE-95) on the same file and line,
|
|
209
|
+
at the same or a higher severity, and the line has no `exec()`. Secret, CORS
|
|
210
|
+
and debug findings are always kept. The generic rule reports every matching
|
|
211
|
+
line, and its findings name the scanned path.
|
|
212
|
+
- **Learning recommendations stay in their domain and objective** ([#1091],
|
|
213
|
+
thanks @rudycelekli): a strategy tuned to maximize coverage can no longer
|
|
214
|
+
be recommended for minimizing latency or for another domain.
|
|
215
|
+
- **CRDT sync rejects non-finite timestamps** ([#1087], thanks
|
|
216
|
+
@rudycelekli): a remote register with a `NaN` or infinite timestamp is
|
|
217
|
+
skipped at merge instead of winning every later comparison; valid
|
|
218
|
+
registers, including cleared ones, keep converging.
|
|
219
|
+
|
|
220
|
+
### Security
|
|
221
|
+
|
|
222
|
+
- **A checked file is read from exactly what was checked** ([#1161],
|
|
223
|
+
[#1179]): the path guard checked a path, and the handler opened it again
|
|
224
|
+
later by name, so a file or symlink swapped in between was read
|
|
225
|
+
unchecked. Fixed-name files inside an accepted folder (coverage reports,
|
|
226
|
+
`package.json`, dependency manifests) were not checked at all, so a
|
|
227
|
+
committed symlink could pull an outside file into results or point a
|
|
228
|
+
coverage report at `/dev/zero`. One shared reader now opens the file once
|
|
229
|
+
without following a final symlink, checks the open file (regular, within the
|
|
230
|
+
size limit, inside the project) and reads from it. Code index, SAST,
|
|
231
|
+
security scans, contract and requirements validation, test generation, C4
|
|
232
|
+
and every coverage report parser use it.
|
|
233
|
+
- **Test runner stderr is redacted before it is cut** ([#1150], [#1180]):
|
|
234
|
+
when coverage tests crashed without a report, `coverage_analyze_sublinear`
|
|
235
|
+
quoted the runner's raw stderr, and a secret cut at the 2 KB boundary left a
|
|
236
|
+
fragment no redaction pattern recognizes. Stderr is now redacted first, then
|
|
237
|
+
cut. Claim-verifier command evidence and the claude-code provider's parse
|
|
238
|
+
error are redacted the same way.
|
|
239
|
+
- **`constructor`, `__proto__` and other built-in names are plain names**
|
|
240
|
+
([#1157], [#1182]): names from callers, files or stored data matched
|
|
241
|
+
built-in JavaScript members. A pipeline condition on `input.constructor`
|
|
242
|
+
ran a step that should be skipped, a dependency named `constructor` crashed
|
|
243
|
+
`qe/code/c4` and hid real findings, an agent-overlay `__proto__:` section
|
|
244
|
+
wrote onto every object, and a tool named `constructor` could claim to be
|
|
245
|
+
read-only. Every such lookup now reads own entries only.
|
|
246
|
+
|
|
247
|
+
### Changed
|
|
248
|
+
|
|
249
|
+
- `vite` (dev dependency) 8.3.0 → 8.3.4 ([#1172]).
|
|
250
|
+
|
|
251
|
+
[#1022]: https://github.com/proffesor-for-testing/agentic-qe/issues/1022
|
|
252
|
+
[#1087]: https://github.com/proffesor-for-testing/agentic-qe/pull/1087
|
|
253
|
+
[#1091]: https://github.com/proffesor-for-testing/agentic-qe/pull/1091
|
|
254
|
+
[#1150]: https://github.com/proffesor-for-testing/agentic-qe/issues/1150
|
|
255
|
+
[#1157]: https://github.com/proffesor-for-testing/agentic-qe/issues/1157
|
|
256
|
+
[#1161]: https://github.com/proffesor-for-testing/agentic-qe/issues/1161
|
|
257
|
+
[#1168]: https://github.com/proffesor-for-testing/agentic-qe/issues/1168
|
|
258
|
+
[#1170]: https://github.com/proffesor-for-testing/agentic-qe/issues/1170
|
|
259
|
+
[#1172]: https://github.com/proffesor-for-testing/agentic-qe/pull/1172
|
|
260
|
+
[#1173]: https://github.com/proffesor-for-testing/agentic-qe/issues/1173
|
|
261
|
+
[#1175]: https://github.com/proffesor-for-testing/agentic-qe/pull/1175
|
|
262
|
+
[#1177]: https://github.com/proffesor-for-testing/agentic-qe/pull/1177
|
|
263
|
+
[#1179]: https://github.com/proffesor-for-testing/agentic-qe/pull/1179
|
|
264
|
+
[#1180]: https://github.com/proffesor-for-testing/agentic-qe/pull/1180
|
|
265
|
+
[#1181]: https://github.com/proffesor-for-testing/agentic-qe/pull/1181
|
|
266
|
+
[#1182]: https://github.com/proffesor-for-testing/agentic-qe/pull/1182
|
|
267
|
+
[#1184]: https://github.com/proffesor-for-testing/agentic-qe/pull/1184
|
|
268
|
+
[#1185]: https://github.com/proffesor-for-testing/agentic-qe/issues/1185
|
|
269
|
+
[#1193]: https://github.com/proffesor-for-testing/agentic-qe/pull/1193
|
|
270
|
+
|
|
8
271
|
## [3.15.10] - 2026-10-19
|
|
9
272
|
|
|
10
273
|
Files named in a request are now read only when they are inside your
|
package/README.md
CHANGED
|
@@ -34,6 +34,14 @@ aqe init --auto
|
|
|
34
34
|
aqe health
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
**npm 12+:** dependency install scripts are blocked unless allowed, and AQE's SQLite store (`better-sqlite3`) needs its install script to fetch its native binary. Name the packages when you install:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install -g agentic-qe --allow-scripts=agentic-qe,better-sqlite3,hnswlib-node
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Include `agentic-qe` in the command — npm's warning suggests `npm install -g --allow-scripts=...` without a package name, which installs the current directory instead. If `aqe init` reports that the `better-sqlite3` native module could not be loaded on an existing install, rebuild it with `npm rebuild -g better-sqlite3 --allow-scripts=better-sqlite3` (for a project-local install: `npm install-scripts approve better-sqlite3 && npm rebuild better-sqlite3`). `hnswlib-node` is optional; AQE runs without it.
|
|
44
|
+
|
|
37
45
|
`aqe init --auto` analyzes your project and configures the default Claude Code surface, including MCP. Review the generated project files. For another client, select its setup flag below and use its MCP connection flow.
|
|
38
46
|
|
|
39
47
|
In your coding agent, start with a narrow request:
|
|
@@ -53,15 +53,18 @@ export function parseFrontmatter(markdown) {
|
|
|
53
53
|
if (keyValueMatch) {
|
|
54
54
|
const [, indent, key, value] = keyValueMatch;
|
|
55
55
|
const currentIndent = indent.length;
|
|
56
|
+
// #1157: keys come from agent markdown; skip ones that would re-prototype
|
|
57
|
+
// the result (and, for a top-level key, the nested block under it).
|
|
58
|
+
const unsafe = key === '__proto__' || key === 'constructor' || key === 'prototype';
|
|
56
59
|
if (currentIndent === 0) {
|
|
57
60
|
// Top-level key
|
|
58
61
|
if (currentKey && indentLevel > 0) {
|
|
59
62
|
result[currentKey] = nestedObj;
|
|
60
63
|
nestedObj = {};
|
|
61
64
|
}
|
|
62
|
-
currentKey = key;
|
|
65
|
+
currentKey = unsafe ? '' : key;
|
|
63
66
|
indentLevel = 0;
|
|
64
|
-
if (value.trim()) {
|
|
67
|
+
if (value.trim() && !unsafe) {
|
|
65
68
|
// Clean up quoted values
|
|
66
69
|
result[key] = value.replace(/^["']|["']$/g, '');
|
|
67
70
|
}
|
|
@@ -69,7 +72,7 @@ export function parseFrontmatter(markdown) {
|
|
|
69
72
|
else if (currentIndent > 0 && currentKey) {
|
|
70
73
|
// Nested key
|
|
71
74
|
indentLevel = currentIndent;
|
|
72
|
-
if (value.trim()) {
|
|
75
|
+
if (value.trim() && !unsafe) {
|
|
73
76
|
nestedObj[key] = value.replace(/^["']|["']$/g, '');
|
|
74
77
|
}
|
|
75
78
|
}
|
|
@@ -401,7 +401,9 @@ export class TaskRouter extends EventEmitter {
|
|
|
401
401
|
// Check capabilities
|
|
402
402
|
if (request.requiredCapabilities) {
|
|
403
403
|
for (const cap of request.requiredCapabilities) {
|
|
404
|
-
|
|
404
|
+
// #1157: the capability name comes from the routing request; an
|
|
405
|
+
// inherited member such as `toString` is not a capability.
|
|
406
|
+
if (!Object.hasOwn(agent.capabilities, cap) || !agent.capabilities[cap]) {
|
|
405
407
|
return false;
|
|
406
408
|
}
|
|
407
409
|
}
|
|
@@ -135,7 +135,7 @@ export class TrajectoryAdapter {
|
|
|
135
135
|
acc[type] = [];
|
|
136
136
|
acc[type].push(t);
|
|
137
137
|
return acc;
|
|
138
|
-
},
|
|
138
|
+
}, createSafeRecord()); // #1157: workflow types are stored data
|
|
139
139
|
// Extract common sequences within each workflow type
|
|
140
140
|
for (const [workflowType, trajs] of Object.entries(successfulByType)) {
|
|
141
141
|
const commonSequences = this.findCommonSequences(trajs);
|
|
@@ -92,7 +92,9 @@ export declare class OutputBasedVerifier {
|
|
|
92
92
|
*/
|
|
93
93
|
private verifyExistingEvidence;
|
|
94
94
|
/**
|
|
95
|
-
*
|
|
95
|
+
* Redact command output, then truncate it if it exceeds max size. #1150:
|
|
96
|
+
* redaction runs first, so a cut cannot leave a fragment of a secret that
|
|
97
|
+
* the redaction patterns no longer recognise.
|
|
96
98
|
*/
|
|
97
99
|
private truncateOutput;
|
|
98
100
|
}
|
|
@@ -12,6 +12,32 @@
|
|
|
12
12
|
import { execFile } from 'node:child_process';
|
|
13
13
|
import { promisify } from 'node:util';
|
|
14
14
|
import { generateContentHash } from '../index.js';
|
|
15
|
+
import { redactLogText } from '../../../logging/redaction.js';
|
|
16
|
+
/** Output above this size is redacted in line-aligned pieces. */
|
|
17
|
+
const REDACT_PIECE_CHARS = 256 * 1024;
|
|
18
|
+
/**
|
|
19
|
+
* Redact command output of any size (#1150). redactLogText drops a string over
|
|
20
|
+
* its scan limit instead of scanning it, and maxBuffer lets output reach 1 MB,
|
|
21
|
+
* so long output is redacted in pieces cut at line ends, and a credential on
|
|
22
|
+
* one line is never split between pieces. A line longer than a piece stays
|
|
23
|
+
* whole; one over the scan limit is dropped by redactLogText, never cut.
|
|
24
|
+
*/
|
|
25
|
+
function redactOutput(raw) {
|
|
26
|
+
if (raw.length <= REDACT_PIECE_CHARS)
|
|
27
|
+
return redactLogText(raw, Number.POSITIVE_INFINITY);
|
|
28
|
+
const parts = [];
|
|
29
|
+
for (let start = 0; start < raw.length;) {
|
|
30
|
+
let end = Math.min(start + REDACT_PIECE_CHARS, raw.length);
|
|
31
|
+
if (end < raw.length) {
|
|
32
|
+
const lineEnd = raw.lastIndexOf('\n', end - 1);
|
|
33
|
+
const next = raw.indexOf('\n', end);
|
|
34
|
+
end = lineEnd >= start ? lineEnd + 1 : next === -1 ? raw.length : next + 1;
|
|
35
|
+
}
|
|
36
|
+
parts.push(redactLogText(raw.slice(start, end), Number.POSITIVE_INFINITY));
|
|
37
|
+
start = end;
|
|
38
|
+
}
|
|
39
|
+
return parts.join('');
|
|
40
|
+
}
|
|
15
41
|
const execFileAsync = promisify(execFile);
|
|
16
42
|
const ALLOWED_COMMANDS = new Map([
|
|
17
43
|
['npm run build', { bin: 'npm', args: ['run', 'build'] }],
|
|
@@ -347,9 +373,12 @@ export class OutputBasedVerifier {
|
|
|
347
373
|
return { evidence, verified, reasoning, confidence };
|
|
348
374
|
}
|
|
349
375
|
/**
|
|
350
|
-
*
|
|
376
|
+
* Redact command output, then truncate it if it exceeds max size. #1150:
|
|
377
|
+
* redaction runs first, so a cut cannot leave a fragment of a secret that
|
|
378
|
+
* the redaction patterns no longer recognise.
|
|
351
379
|
*/
|
|
352
|
-
truncateOutput(
|
|
380
|
+
truncateOutput(raw) {
|
|
381
|
+
const output = redactOutput(raw);
|
|
353
382
|
if (output.length <= this.config.maxOutputSize) {
|
|
354
383
|
return output;
|
|
355
384
|
}
|
|
@@ -8,6 +8,11 @@ import { readFileSync, existsSync, readdirSync } from 'fs';
|
|
|
8
8
|
import { join, basename } from 'path';
|
|
9
9
|
import { validateOverlay } from './overlay-schema.js';
|
|
10
10
|
const OVERRIDES_DIR = '.claude/agent-overrides';
|
|
11
|
+
/**
|
|
12
|
+
* #1157: keys come from the overlay file. These would reach Object.prototype
|
|
13
|
+
* (or the Object constructor) through a plain object, so they are skipped.
|
|
14
|
+
*/
|
|
15
|
+
const UNSAFE_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
11
16
|
/**
|
|
12
17
|
* Parse YAML-like overlay files.
|
|
13
18
|
* Uses a simple parser to avoid adding a yaml dependency.
|
|
@@ -15,9 +20,17 @@ const OVERRIDES_DIR = '.claude/agent-overrides';
|
|
|
15
20
|
*/
|
|
16
21
|
function parseSimpleYaml(content) {
|
|
17
22
|
const result = {};
|
|
23
|
+
// An own section object for `name`; an inherited member never counts.
|
|
24
|
+
const sectionOf = (name) => {
|
|
25
|
+
const existing = Object.hasOwn(result, name) ? result[name] : undefined;
|
|
26
|
+
if (existing !== null && typeof existing === 'object')
|
|
27
|
+
return existing;
|
|
28
|
+
const fresh = {};
|
|
29
|
+
result[name] = fresh;
|
|
30
|
+
return fresh;
|
|
31
|
+
};
|
|
18
32
|
const lines = content.split('\n');
|
|
19
33
|
let currentSection = null;
|
|
20
|
-
let currentSubSection = null;
|
|
21
34
|
let currentArray = null;
|
|
22
35
|
let currentArrayKey = null;
|
|
23
36
|
for (const rawLine of lines) {
|
|
@@ -37,15 +50,8 @@ function parseSimpleYaml(content) {
|
|
|
37
50
|
}
|
|
38
51
|
// Flush any pending array
|
|
39
52
|
if (currentArray && currentArrayKey) {
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
section[currentArrayKey] = currentArray;
|
|
43
|
-
result[currentSection] = section;
|
|
44
|
-
}
|
|
45
|
-
else if (currentSection) {
|
|
46
|
-
const section = result[currentSection] || {};
|
|
47
|
-
section[currentArrayKey] = currentArray;
|
|
48
|
-
result[currentSection] = section;
|
|
53
|
+
if (currentSection) {
|
|
54
|
+
sectionOf(currentSection)[currentArrayKey] = currentArray;
|
|
49
55
|
}
|
|
50
56
|
currentArray = null;
|
|
51
57
|
currentArrayKey = null;
|
|
@@ -56,39 +62,38 @@ function parseSimpleYaml(content) {
|
|
|
56
62
|
continue;
|
|
57
63
|
const [, key, rawValue] = match;
|
|
58
64
|
const value = rawValue.trim().replace(/^["']|["']$/g, '');
|
|
65
|
+
if (UNSAFE_KEYS.has(key)) {
|
|
66
|
+
// Skip the key, and a whole section under it.
|
|
67
|
+
if (indent === 0) {
|
|
68
|
+
currentSection = null;
|
|
69
|
+
}
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
59
72
|
if (indent === 0) {
|
|
60
73
|
// Top-level key
|
|
61
74
|
if (value === '' || value === undefined) {
|
|
62
75
|
currentSection = key;
|
|
63
|
-
|
|
64
|
-
if (!result[key])
|
|
65
|
-
result[key] = {};
|
|
76
|
+
sectionOf(key);
|
|
66
77
|
}
|
|
67
78
|
else {
|
|
68
79
|
result[key] = parseValue(value);
|
|
69
80
|
currentSection = null;
|
|
70
|
-
currentSubSection = null;
|
|
71
81
|
}
|
|
72
82
|
}
|
|
73
83
|
else if (indent <= 4 && currentSection) {
|
|
74
84
|
if (value === '' || value === undefined) {
|
|
75
85
|
// Sub-section or array start
|
|
76
|
-
currentSubSection = key;
|
|
77
86
|
currentArray = [];
|
|
78
87
|
currentArrayKey = key;
|
|
79
88
|
}
|
|
80
89
|
else {
|
|
81
|
-
|
|
82
|
-
section[key] = parseValue(value);
|
|
83
|
-
result[currentSection] = section;
|
|
90
|
+
sectionOf(currentSection)[key] = parseValue(value);
|
|
84
91
|
}
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
94
|
// Flush final array
|
|
88
95
|
if (currentArray && currentArrayKey && currentSection) {
|
|
89
|
-
|
|
90
|
-
section[currentArrayKey] = currentArray;
|
|
91
|
-
result[currentSection] = section;
|
|
96
|
+
sectionOf(currentSection)[currentArrayKey] = currentArray;
|
|
92
97
|
}
|
|
93
98
|
return result;
|
|
94
99
|
}
|