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
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
import { ToolResult, TaskSubmitParams, TaskSubmitResult, TaskListParams, TaskStatusParams, TaskStatusResult, TaskCancelParams } from '../types';
|
|
9
9
|
import { TaskType } from '../../coordination/queen-coordinator';
|
|
10
10
|
import { type RoutingLogEntry, type RoutingStats } from '../services/task-router';
|
|
11
|
+
import type { ExperienceGuidanceStatus } from '../../integrations/agentic-flow/reasoning-bank/index.js';
|
|
11
12
|
import type { ModelTier } from '../../integrations/agentic-flow';
|
|
13
|
+
import { type Priority } from '../../shared/types/index.js';
|
|
12
14
|
export declare function handleTaskSubmit(params: TaskSubmitParams): Promise<ToolResult<TaskSubmitResult>>;
|
|
13
15
|
export declare function handleTaskList(params: TaskListParams): Promise<ToolResult<TaskStatusResult[]>>;
|
|
14
16
|
export declare function handleTaskStatus(params: TaskStatusParams): Promise<ToolResult<TaskStatusResult>>;
|
|
@@ -20,7 +22,8 @@ export declare function handleTaskCancel(params: TaskCancelParams): Promise<Tool
|
|
|
20
22
|
export interface TaskOrchestrateParams {
|
|
21
23
|
task: string;
|
|
22
24
|
strategy?: 'parallel' | 'sequential' | 'adaptive';
|
|
23
|
-
|
|
25
|
+
/** Named levels, or a canonical p0-p3 priority (p0 stays p0). */
|
|
26
|
+
priority?: 'low' | 'medium' | 'high' | 'critical' | Priority;
|
|
24
27
|
maxAgents?: number;
|
|
25
28
|
/** Manual tier override (0-4) */
|
|
26
29
|
manualTier?: ModelTier;
|
|
@@ -35,6 +38,23 @@ export interface TaskOrchestrateParams {
|
|
|
35
38
|
requirements?: string[];
|
|
36
39
|
};
|
|
37
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* #1022: how learned patterns informed task_orchestrate.
|
|
43
|
+
* - 'vector': embedding similarity plus text matching
|
|
44
|
+
* - 'lexical-only': no working embedder (absent, or failed at runtime, #1187);
|
|
45
|
+
* text matching only, no similarity
|
|
46
|
+
* scores, and experience guidance unavailable
|
|
47
|
+
* - 'unavailable': the ReasoningBank could not start; no learned guidance
|
|
48
|
+
*
|
|
49
|
+
* #1204: `experienceGuidance` says the same for similar-experience guidance:
|
|
50
|
+
* 'unavailable' (with the reason) when its embedder failed or is absent.
|
|
51
|
+
* Omitted when experience replay is disabled or the ReasoningBank is down.
|
|
52
|
+
*/
|
|
53
|
+
export interface OrchestrateLearningStatus {
|
|
54
|
+
patternSearch: 'vector' | 'lexical-only' | 'unavailable';
|
|
55
|
+
reason?: string;
|
|
56
|
+
experienceGuidance?: ExperienceGuidanceStatus;
|
|
57
|
+
}
|
|
38
58
|
export interface TaskOrchestrateResult {
|
|
39
59
|
taskId: string;
|
|
40
60
|
/** The task type submitted to the domain. */
|
|
@@ -57,6 +77,8 @@ export interface TaskOrchestrateResult {
|
|
|
57
77
|
rationale: string;
|
|
58
78
|
decisionTimeMs: number;
|
|
59
79
|
};
|
|
80
|
+
/** #1022: how learned patterns informed this orchestration */
|
|
81
|
+
learning: OrchestrateLearningStatus;
|
|
60
82
|
}
|
|
61
83
|
export declare function handleTaskOrchestrate(params: TaskOrchestrateParams): Promise<ToolResult<TaskOrchestrateResult>>;
|
|
62
84
|
export interface ModelRouteParams {
|
|
@@ -13,6 +13,7 @@ import { toErrorMessage } from '../../shared/error-utils.js';
|
|
|
13
13
|
import { ALL_DOMAINS, invalidPriorityMessage, isDomainName, isPriority } from '../../shared/types/index.js';
|
|
14
14
|
import { validateIndexPaths, validateIndexTaskPayload } from '../../domains/code-intelligence/index-path-guard.js';
|
|
15
15
|
import { routeInferredTask } from './orchestrate-routes.js';
|
|
16
|
+
import { getTaskExecutor } from './handler-factory.js';
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Task Type to Workflow Mapping (Issue #206)
|
|
18
19
|
// Maps TaskTypes to their associated workflow IDs for auto-execution
|
|
@@ -111,6 +112,11 @@ export async function handleTaskList(params) {
|
|
|
111
112
|
error: 'Fleet not initialized. Call fleet_init first.',
|
|
112
113
|
};
|
|
113
114
|
}
|
|
115
|
+
// A priority outside the allowed set is an error, not an empty list.
|
|
116
|
+
// Parity with `aqe task list --priority`.
|
|
117
|
+
if (params.priority !== undefined && !isPriority(params.priority)) {
|
|
118
|
+
return { success: false, error: invalidPriorityMessage(params.priority) };
|
|
119
|
+
}
|
|
114
120
|
const { queen } = getFleetState();
|
|
115
121
|
try {
|
|
116
122
|
const tasks = queen.listTasks({
|
|
@@ -232,6 +238,56 @@ export async function handleTaskCancel(params) {
|
|
|
232
238
|
};
|
|
233
239
|
}
|
|
234
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* #1022: gather experience guidance and pattern hints for task_orchestrate.
|
|
243
|
+
* Learned guidance is optional: a missing embedder, or a ReasoningBank that
|
|
244
|
+
* cannot start, must not fail the orchestration. The returned status says
|
|
245
|
+
* which kind of matching produced the hints.
|
|
246
|
+
*/
|
|
247
|
+
async function getOrchestrateLearningContext(task, guidanceDomain, patternDomain) {
|
|
248
|
+
let service;
|
|
249
|
+
try {
|
|
250
|
+
service = await getReasoningBankService();
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
return {
|
|
254
|
+
experienceGuidance: null,
|
|
255
|
+
patternHintMatches: [],
|
|
256
|
+
learning: { patternSearch: 'unavailable', reason: toErrorMessage(error) },
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// #1204: a background embedder retry can finish while this call runs.
|
|
260
|
+
// Report vector matching only if the embedder was usable for the whole
|
|
261
|
+
// call, so hints found by text alone are never labelled vector.
|
|
262
|
+
const patternStatusBefore = service.getPatternSearchStatus();
|
|
263
|
+
const experienceStatusBefore = service.getExperienceGuidanceStatus();
|
|
264
|
+
const experienceGuidance = await service.getExperienceGuidance(task, guidanceDomain);
|
|
265
|
+
// Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
|
|
266
|
+
// (experienceGuidance). Without this, only past trajectories influenced
|
|
267
|
+
// routing — the catalog of consolidated long-term patterns was never
|
|
268
|
+
// consulted for new tasks. Fail-soft: empty array on error.
|
|
269
|
+
const patternHintMatches = await service
|
|
270
|
+
.searchPatternMatches(task, { limit: 5, domain: patternDomain })
|
|
271
|
+
.catch(() => []);
|
|
272
|
+
const status = notVectorIfEither(patternStatusBefore, service.getPatternSearchStatus());
|
|
273
|
+
const experienceStatusAfter = service.getExperienceGuidanceStatus();
|
|
274
|
+
const experienceStatus = experienceStatusBefore && experienceStatusAfter
|
|
275
|
+
? notVectorIfEither(experienceStatusBefore, experienceStatusAfter)
|
|
276
|
+
: experienceStatusAfter;
|
|
277
|
+
return {
|
|
278
|
+
experienceGuidance,
|
|
279
|
+
patternHintMatches,
|
|
280
|
+
learning: {
|
|
281
|
+
patternSearch: status.mode,
|
|
282
|
+
...(status.reason ? { reason: status.reason } : {}),
|
|
283
|
+
...(experienceStatus ? { experienceGuidance: experienceStatus } : {}),
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/** #1204: the status before the call unless it was vector; otherwise the one after. */
|
|
288
|
+
function notVectorIfEither(before, after) {
|
|
289
|
+
return before.mode === 'vector' ? after : before;
|
|
290
|
+
}
|
|
235
291
|
export async function handleTaskOrchestrate(params) {
|
|
236
292
|
if (!isFleetInitialized()) {
|
|
237
293
|
return {
|
|
@@ -247,6 +303,11 @@ export async function handleTaskOrchestrate(params) {
|
|
|
247
303
|
return { success: false, error: filePaths.error.message };
|
|
248
304
|
}
|
|
249
305
|
}
|
|
306
|
+
// #1117: an unrecognised priority used to fall through to p1 (and a
|
|
307
|
+
// requested p0 was downgraded). Reject it up front, as task_submit does.
|
|
308
|
+
if (params.priority !== undefined && mapPriority(params.priority) === undefined) {
|
|
309
|
+
return { success: false, error: invalidOrchestratePriorityMessage(params.priority) };
|
|
310
|
+
}
|
|
250
311
|
const { queen, workflowOrchestrator } = getFleetState();
|
|
251
312
|
try {
|
|
252
313
|
// ADR-051: Route task to optimal model tier BEFORE execution
|
|
@@ -270,21 +331,10 @@ export async function handleTaskOrchestrate(params) {
|
|
|
270
331
|
},
|
|
271
332
|
});
|
|
272
333
|
// INTEGRATION FIX: Get ReasoningBank guidance for the task
|
|
273
|
-
const
|
|
274
|
-
const experienceGuidance = await reasoningBankService.getExperienceGuidance(params.task, params.context?.project);
|
|
275
|
-
// Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
|
|
276
|
-
// (experienceGuidance). Without this, only past trajectories influenced
|
|
277
|
-
// routing — the catalog of consolidated long-term patterns was never
|
|
278
|
-
// consulted for new tasks. Fail-soft: empty array on error.
|
|
279
|
-
const patternHintMatches = await reasoningBankService
|
|
280
|
-
.searchPatternMatches(params.task, {
|
|
281
|
-
limit: 5,
|
|
282
|
-
domain: params.context?.project ?? inferredDomain,
|
|
283
|
-
})
|
|
284
|
-
.catch(() => []);
|
|
334
|
+
const { experienceGuidance, patternHintMatches, learning } = await getOrchestrateLearningContext(params.task, params.context?.project, params.context?.project ?? inferredDomain);
|
|
285
335
|
// Parse task description to determine task type
|
|
286
336
|
const taskType = inferTaskType(params.task);
|
|
287
|
-
const priority = mapPriority(params.priority
|
|
337
|
+
const priority = mapPriority(params.priority ?? 'medium') ?? 'p2';
|
|
288
338
|
// Issue #206: Check if this task type has an associated workflow
|
|
289
339
|
const workflowId = TASK_WORKFLOW_MAP[taskType];
|
|
290
340
|
if (workflowId && workflowOrchestrator) {
|
|
@@ -355,6 +405,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
355
405
|
rationale: routingResult.decision.rationale,
|
|
356
406
|
decisionTimeMs: routingResult.decision.metadata.decisionTimeMs,
|
|
357
407
|
},
|
|
408
|
+
learning,
|
|
358
409
|
},
|
|
359
410
|
};
|
|
360
411
|
}
|
|
@@ -368,6 +419,9 @@ export async function handleTaskOrchestrate(params) {
|
|
|
368
419
|
}
|
|
369
420
|
const submitType = route.kind === 'route' ? route.type : taskType;
|
|
370
421
|
const targetDomains = route.kind === 'route' ? [route.domain] : [];
|
|
422
|
+
// #1200: a caller-owned task runs through the MCP task executor, as the
|
|
423
|
+
// domain's own tool does; the Queen does not dispatch it.
|
|
424
|
+
const callerExecutor = route.kind === 'route' && route.executionOwner === 'caller' ? getTaskExecutor() : null;
|
|
371
425
|
// #1081: the type must have a domain handler. Otherwise the Queen can
|
|
372
426
|
// only fail the task at dispatch, so reject it here with the reason.
|
|
373
427
|
const executable = queen.validateTaskExecutable(submitType, targetDomains);
|
|
@@ -401,6 +455,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
401
455
|
Object.assign(taskPayload, route.payload);
|
|
402
456
|
const result = await queen.submitTask({
|
|
403
457
|
type: submitType,
|
|
458
|
+
...(callerExecutor ? { executionOwner: 'caller' } : {}),
|
|
404
459
|
priority,
|
|
405
460
|
targetDomains,
|
|
406
461
|
payload: {
|
|
@@ -446,13 +501,23 @@ export async function handleTaskOrchestrate(params) {
|
|
|
446
501
|
}
|
|
447
502
|
// INTEGRATION FIX: Start trajectory tracking for learning
|
|
448
503
|
const taskId = result.value;
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
504
|
+
if (learning.patternSearch !== 'unavailable') {
|
|
505
|
+
await startTaskTrajectory(taskId, params.task, {
|
|
506
|
+
agent: 'queen-coordinator',
|
|
507
|
+
domain: params.context?.project,
|
|
508
|
+
});
|
|
509
|
+
}
|
|
453
510
|
// Issue N1: Trajectory auto-close is handled by subscribeTrajectoryEvents(),
|
|
454
511
|
// which listens for TaskCompleted/TaskFailed on the event router.
|
|
455
512
|
// No per-task polling needed.
|
|
513
|
+
// #1200: run a caller-owned task after its trajectory started, without
|
|
514
|
+
// waiting: the executor's TaskCompleted / TaskFailed settle it for task_status.
|
|
515
|
+
const execution = callerExecutor ? queen.getTaskStatus(taskId) : undefined;
|
|
516
|
+
if (callerExecutor && execution) {
|
|
517
|
+
void callerExecutor.execute(execution.task).catch(error => {
|
|
518
|
+
console.error(`[TaskOrchestrate] Task ${taskId} failed to execute: ${toErrorMessage(error)}`);
|
|
519
|
+
});
|
|
520
|
+
}
|
|
456
521
|
// Trajectory judge: opt-in LLM scoring of recent unscored trajectories.
|
|
457
522
|
// Hook-created rows in qe_trajectories never receive feedback unless
|
|
458
523
|
// something goes back and judges them. This catches up by scoring ≤5
|
|
@@ -485,6 +550,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
485
550
|
rationale: routingResult.decision.rationale,
|
|
486
551
|
decisionTimeMs: routingResult.decision.metadata.decisionTimeMs,
|
|
487
552
|
},
|
|
553
|
+
learning,
|
|
488
554
|
},
|
|
489
555
|
};
|
|
490
556
|
}
|
|
@@ -742,7 +808,9 @@ function inferTaskType(description) {
|
|
|
742
808
|
return 'generate-tests';
|
|
743
809
|
}
|
|
744
810
|
/**
|
|
745
|
-
* Map priority
|
|
811
|
+
* Map a task_orchestrate priority to the canonical Priority type.
|
|
812
|
+
* Accepts the named levels and the canonical p0-p3 values; returns
|
|
813
|
+
* undefined for anything else so the caller can reject it (#1117).
|
|
746
814
|
*/
|
|
747
815
|
function mapPriority(priority) {
|
|
748
816
|
switch (priority) {
|
|
@@ -755,9 +823,12 @@ function mapPriority(priority) {
|
|
|
755
823
|
case 'low':
|
|
756
824
|
return 'p3';
|
|
757
825
|
default:
|
|
758
|
-
return
|
|
826
|
+
return isPriority(priority) ? priority : undefined;
|
|
759
827
|
}
|
|
760
828
|
}
|
|
829
|
+
function invalidOrchestratePriorityMessage(value) {
|
|
830
|
+
return `${invalidPriorityMessage(value)} (or critical, high, medium, low)`;
|
|
831
|
+
}
|
|
761
832
|
/**
|
|
762
833
|
* Record a task outcome for ReasoningBank learning
|
|
763
834
|
* ADR-051: Enables cross-session learning from task execution
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Exposes the structured 13-step requirements validation pipeline
|
|
5
5
|
* as an MCP tool that users can invoke directly.
|
|
6
6
|
*/
|
|
7
|
-
import { readFileSync, existsSync } from 'fs';
|
|
8
7
|
import { runPipeline, formatPipelineReport } from '../../validation/pipeline.js';
|
|
9
8
|
import { createRequirementsPipeline, REQUIREMENTS_VALIDATION_STEPS } from '../../validation/steps/requirements.js';
|
|
10
9
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
11
10
|
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../shared/io/payload-path-guard.js';
|
|
11
|
+
import { ConfinedReadError, readConfinedText } from '../../shared/io/confined-read.js';
|
|
12
12
|
/**
|
|
13
13
|
* Run the structured validation pipeline on a document.
|
|
14
14
|
*/
|
|
@@ -23,17 +23,17 @@ export async function handleValidationPipeline(params) {
|
|
|
23
23
|
const confined = await requirePayloadPath('validation_pipeline', 'filePath', params.filePath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
24
24
|
if (!confined.success)
|
|
25
25
|
return { success: false, error: confined.error.message };
|
|
26
|
-
|
|
27
|
-
if (!existsSync(absPath)) {
|
|
28
|
-
return {
|
|
29
|
-
success: false,
|
|
30
|
-
error: `File not found: ${params.filePath}`,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
26
|
+
// #1161: read from the validated descriptor, not the name checked above.
|
|
33
27
|
try {
|
|
34
|
-
content =
|
|
28
|
+
content = await readConfinedText(confined.value, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
35
29
|
}
|
|
36
30
|
catch (readErr) {
|
|
31
|
+
if (readErr instanceof ConfinedReadError && readErr.reason === 'not-found') {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: `File not found: ${params.filePath}`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
37
|
return {
|
|
38
38
|
success: false,
|
|
39
39
|
error: `Failed to read file: ${toErrorMessage(readErr)}`,
|
|
@@ -627,7 +627,7 @@ export class MCPProtocolServer {
|
|
|
627
627
|
parameters: [
|
|
628
628
|
{ name: 'topology', type: 'string', description: 'Swarm topology type', enum: ['hierarchical', 'mesh', 'ring', 'adaptive'] },
|
|
629
629
|
{ name: 'maxAgents', type: 'number', description: 'Maximum number of agents', default: 15 },
|
|
630
|
-
{ name: 'enabledDomains', type: 'array', description: 'Domains to enable' },
|
|
630
|
+
{ name: 'enabledDomains', type: 'array', description: 'Domains to enable', items: { type: 'string' } },
|
|
631
631
|
{ name: 'lazyLoading', type: 'boolean', description: 'Enable lazy loading', default: true },
|
|
632
632
|
],
|
|
633
633
|
},
|
|
@@ -669,7 +669,7 @@ export class MCPProtocolServer {
|
|
|
669
669
|
parameters: [
|
|
670
670
|
{ name: 'type', type: 'string', description: 'Task type', required: true },
|
|
671
671
|
{ name: 'priority', type: 'string', description: 'Task priority', enum: ['p0', 'p1', 'p2', 'p3'], default: 'p1' },
|
|
672
|
-
{ name: 'targetDomains', type: 'array', description: 'Target domains (e.g. ["coverage-analysis"]); unknown domains are rejected' },
|
|
672
|
+
{ name: 'targetDomains', type: 'array', description: 'Target domains (e.g. ["coverage-analysis"]); unknown domains are rejected', items: { type: 'string' } },
|
|
673
673
|
{ name: 'payload', type: 'object', description: 'Task payload data' },
|
|
674
674
|
],
|
|
675
675
|
},
|
|
@@ -684,6 +684,8 @@ export class MCPProtocolServer {
|
|
|
684
684
|
isCacheable: false,
|
|
685
685
|
parameters: [
|
|
686
686
|
{ name: 'status', type: 'string', description: 'Filter by status' },
|
|
687
|
+
{ name: 'priority', type: 'string', description: 'Filter by priority', enum: ['p0', 'p1', 'p2', 'p3'] },
|
|
688
|
+
{ name: 'domain', type: 'string', description: 'Filter by assigned domain' },
|
|
687
689
|
{ name: 'limit', type: 'number', description: 'Maximum results', default: 50 },
|
|
688
690
|
],
|
|
689
691
|
},
|
|
@@ -722,6 +724,7 @@ export class MCPProtocolServer {
|
|
|
722
724
|
{ name: 'task', type: 'string', description: 'Task description', required: true },
|
|
723
725
|
{ name: 'strategy', type: 'string', description: 'Execution strategy', enum: ['parallel', 'sequential', 'adaptive'] },
|
|
724
726
|
{ name: 'filePaths', type: 'array', description: 'Project files the task works on. A security scan or quality assessment runs on these files and is refused without them.', items: { type: 'string' } },
|
|
727
|
+
{ name: 'priority', type: 'string', description: 'Task priority (default: medium/p2)', enum: ['p0', 'p1', 'p2', 'p3', 'critical', 'high', 'medium', 'low'] },
|
|
725
728
|
],
|
|
726
729
|
},
|
|
727
730
|
handler: (params) => handleTaskOrchestrate(params),
|
|
@@ -882,7 +885,7 @@ export class MCPProtocolServer {
|
|
|
882
885
|
description: `Execute test files in parallel with automatic retry on flaky failures. ${SAVE_RESULTS_HINT} Example: test_execute_parallel({ testFiles: ["tests/auth.test.ts"], parallel: true })`,
|
|
883
886
|
category: 'domain',
|
|
884
887
|
parameters: [
|
|
885
|
-
{ name: 'testFiles', type: 'array', description: 'Nonempty list of concrete test file paths (relative to the project working directory or absolute). Expand glob patterns before calling; glob patterns are rejected.' },
|
|
888
|
+
{ name: 'testFiles', type: 'array', description: 'Nonempty list of concrete test file paths (relative to the project working directory or absolute). Expand glob patterns before calling; glob patterns are rejected.', items: { type: 'string' } },
|
|
886
889
|
{ name: 'parallel', type: 'boolean', description: 'Enable parallel execution', default: true },
|
|
887
890
|
saveResultsParameter('test_execute_parallel'),
|
|
888
891
|
],
|
|
@@ -1110,7 +1113,7 @@ export class MCPProtocolServer {
|
|
|
1110
1113
|
category: 'memory',
|
|
1111
1114
|
parameters: [
|
|
1112
1115
|
{ name: 'sourceAgentId', type: 'string', description: 'Source agent ID', required: true },
|
|
1113
|
-
{ name: 'targetAgentIds', type: 'array', description: 'Target agent IDs', required: true },
|
|
1116
|
+
{ name: 'targetAgentIds', type: 'array', description: 'Target agent IDs', required: true, items: { type: 'string' } },
|
|
1114
1117
|
{ name: 'knowledgeDomain', type: 'string', description: 'Knowledge domain', required: true },
|
|
1115
1118
|
],
|
|
1116
1119
|
},
|
|
@@ -1127,7 +1130,7 @@ export class MCPProtocolServer {
|
|
|
1127
1130
|
parameters: [
|
|
1128
1131
|
{ name: 'task', type: 'string', description: 'Task description to analyze', required: true },
|
|
1129
1132
|
{ name: 'codeContext', type: 'string', description: 'Optional code context for complexity analysis' },
|
|
1130
|
-
{ name: 'filePaths', type: 'array', description: 'Optional file paths involved' },
|
|
1133
|
+
{ name: 'filePaths', type: 'array', description: 'Optional file paths involved', items: { type: 'string' } },
|
|
1131
1134
|
{ name: 'manualTier', type: 'number', description: 'Manual tier override (0-4)' },
|
|
1132
1135
|
{ name: 'isCritical', type: 'boolean', description: 'Mark as critical task (allows budget overrides)' },
|
|
1133
1136
|
{ name: 'agentType', type: 'string', description: 'Agent type making the request' },
|
|
@@ -1194,7 +1197,7 @@ export class MCPProtocolServer {
|
|
|
1194
1197
|
description: 'Trigger infrastructure recovery for detected failures and optionally re-run affected tests. Example: infra_healing_recover({ services: ["postgres"], rerunTests: true })',
|
|
1195
1198
|
category: 'infra-healing',
|
|
1196
1199
|
parameters: [
|
|
1197
|
-
{ name: 'services', type: 'array', description: 'Specific services to recover (empty = all failing)' },
|
|
1200
|
+
{ name: 'services', type: 'array', description: 'Specific services to recover (empty = all failing)', items: { type: 'string' } },
|
|
1198
1201
|
{ name: 'rerunTests', type: 'boolean', description: 'Re-run affected tests after recovery', default: true },
|
|
1199
1202
|
],
|
|
1200
1203
|
},
|
|
@@ -1283,7 +1286,7 @@ export class MCPProtocolServer {
|
|
|
1283
1286
|
category: 'cross-phase',
|
|
1284
1287
|
isConcurrencySafe: true,
|
|
1285
1288
|
parameters: [
|
|
1286
|
-
{ name: 'signals', type: 'array', description: 'Signals to format', required: true },
|
|
1289
|
+
{ name: 'signals', type: 'array', description: 'Signals to format', required: true, items: { type: 'object' } },
|
|
1287
1290
|
],
|
|
1288
1291
|
},
|
|
1289
1292
|
handler: (params) => handleFormatSignals(params),
|
|
@@ -1309,7 +1312,7 @@ export class MCPProtocolServer {
|
|
|
1309
1312
|
{ name: 'filePath', type: 'string', description: 'Path to the document to validate' },
|
|
1310
1313
|
{ name: 'content', type: 'string', description: 'Inline content to validate (alternative to filePath)' },
|
|
1311
1314
|
{ name: 'pipeline', type: 'string', description: 'Pipeline type (default: requirements)', default: 'requirements' },
|
|
1312
|
-
{ name: 'steps', type: 'array', description: 'Specific step IDs to run (default: all 13)' },
|
|
1315
|
+
{ name: 'steps', type: 'array', description: 'Specific step IDs to run (default: all 13)', items: { type: 'string' } },
|
|
1313
1316
|
{ name: 'continueOnFailure', type: 'boolean', description: 'Continue past blocking failures', default: false },
|
|
1314
1317
|
{ name: 'format', type: 'string', description: 'Output format: markdown or json', default: 'json' },
|
|
1315
1318
|
],
|
|
@@ -46,6 +46,9 @@ function schemaToParameters(tool) {
|
|
|
46
46
|
required: requiredSet.has(name) || undefined,
|
|
47
47
|
default: prop.default,
|
|
48
48
|
enum: prop.enum,
|
|
49
|
+
// #1185: keep the element schema; clients such as VS Code Copilot
|
|
50
|
+
// reject a tool whose array parameter has no items.
|
|
51
|
+
items: prop.items,
|
|
49
52
|
});
|
|
50
53
|
}
|
|
51
54
|
return params;
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* - Pattern evolution and consolidation
|
|
12
12
|
* - Synchronous learning (no fire-and-forget)
|
|
13
13
|
*/
|
|
14
|
-
import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
|
|
15
|
-
import { type RealQERoutingRequest, type RealQERoutingResult, type RealQEReasoningBankStats, type RealQEPatternSearchResult } from '../../learning/real-qe-reasoning-bank.js';
|
|
14
|
+
import { type Trajectory, type TrajectoryStep as TrackerTrajectoryStep, type TrajectoryOptions, type ExperienceGuidance, type ExperienceGuidanceStatus, type EnhancedReasoningBankAdapterStats } from '../../integrations/agentic-flow/reasoning-bank/index.js';
|
|
15
|
+
import { type RealQERoutingRequest, type RealQERoutingResult, type RealQEReasoningBankStats, type PatternSearchStatus, type RealQEPatternSearchResult } from '../../learning/real-qe-reasoning-bank.js';
|
|
16
16
|
import type { QEPattern, QEDomain } from '../../learning/qe-patterns.js';
|
|
17
17
|
/**
|
|
18
18
|
* Task outcome record for learning
|
|
@@ -208,6 +208,13 @@ export declare class ReasoningBankService {
|
|
|
208
208
|
limit?: number;
|
|
209
209
|
domain?: QEDomain;
|
|
210
210
|
}): Promise<RealQEPatternSearchResult[]>;
|
|
211
|
+
/** #1022: whether pattern search uses vectors or text matching only. */
|
|
212
|
+
getPatternSearchStatus(): PatternSearchStatus;
|
|
213
|
+
/**
|
|
214
|
+
* #1204: whether similar-experience guidance can use vectors; null when
|
|
215
|
+
* experience replay is disabled or the service is disposed.
|
|
216
|
+
*/
|
|
217
|
+
getExperienceGuidanceStatus(): ExperienceGuidanceStatus | null;
|
|
211
218
|
/**
|
|
212
219
|
* Get service statistics
|
|
213
220
|
*/
|
|
@@ -515,6 +515,19 @@ export class ReasoningBankService {
|
|
|
515
515
|
return [];
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
|
+
/** #1022: whether pattern search uses vectors or text matching only. */
|
|
519
|
+
getPatternSearchStatus() {
|
|
520
|
+
return this.enhancedAdapter.getPatternSearchStatus();
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* #1204: whether similar-experience guidance can use vectors; null when
|
|
524
|
+
* experience replay is disabled or the service is disposed.
|
|
525
|
+
*/
|
|
526
|
+
getExperienceGuidanceStatus() {
|
|
527
|
+
if (!this.config.enableExperienceReplay || this.disposed)
|
|
528
|
+
return null;
|
|
529
|
+
return this.enhancedAdapter.getExperienceGuidanceStatus();
|
|
530
|
+
}
|
|
518
531
|
/**
|
|
519
532
|
* Get service statistics
|
|
520
533
|
*/
|
|
@@ -58,7 +58,10 @@ function conservativeDisposition() {
|
|
|
58
58
|
export const BUILT_IN_TOOL_SAFETY_INVENTORY = Object.freeze(Object.fromEntries(BUILT_IN_TOOL_NAMES.map((name) => [name, conservativeDisposition()])));
|
|
59
59
|
/** Resolve explicit metadata over inventory metadata over conservative defaults. */
|
|
60
60
|
export function resolveToolAnnotations(name, annotations) {
|
|
61
|
-
|
|
61
|
+
// #1157: own entries only; a tool named `constructor` is not in the inventory.
|
|
62
|
+
const reviewedDisposition = Object.hasOwn(BUILT_IN_TOOL_SAFETY_INVENTORY, name)
|
|
63
|
+
? BUILT_IN_TOOL_SAFETY_INVENTORY[name]
|
|
64
|
+
: undefined;
|
|
62
65
|
return Object.freeze({
|
|
63
66
|
...(reviewedDisposition?.annotations ?? CONSERVATIVE_TOOL_ANNOTATIONS),
|
|
64
67
|
// Dynamic and plugin-supplied names cannot self-assert optimistic hints.
|
|
@@ -19,6 +19,7 @@ const COHERENCE_CHECK_SCHEMA = {
|
|
|
19
19
|
nodes: {
|
|
20
20
|
type: 'array',
|
|
21
21
|
description: 'Array of nodes to check for coherence. Each node must have an id and embedding vector.',
|
|
22
|
+
items: { type: 'object', description: 'Node with id, embedding vector, optional weight and metadata' },
|
|
22
23
|
},
|
|
23
24
|
energyThreshold: {
|
|
24
25
|
type: 'number',
|
|
@@ -54,11 +54,13 @@ const COHERENCE_CONSENSUS_SCHEMA = {
|
|
|
54
54
|
agentId: { type: 'string', description: 'Agent identifier', minLength: 1 },
|
|
55
55
|
agentType: { type: 'string', description: 'Agent type (default: worker)' },
|
|
56
56
|
// `verdict` may be a string, number, or boolean, which this schema
|
|
57
|
-
// type cannot express
|
|
57
|
+
// type cannot express. It is required, but checked in execute():
|
|
58
|
+
// listing it in `required` without a property is invalid in strict
|
|
59
|
+
// JSON Schema (#1185).
|
|
58
60
|
confidence: { type: 'number', description: 'Confidence in the verdict', minimum: 0, maximum: 1 },
|
|
59
61
|
reasoning: { type: 'string', description: 'Optional reasoning text' },
|
|
60
62
|
},
|
|
61
|
-
required: ['agentId', '
|
|
63
|
+
required: ['agentId', 'confidence'],
|
|
62
64
|
},
|
|
63
65
|
},
|
|
64
66
|
confidenceThreshold: {
|
|
@@ -318,6 +318,7 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
318
318
|
// Not enough data - recommend default strategy
|
|
319
319
|
const contextForRecommendation = {
|
|
320
320
|
tags: [targetDomain, objective.metric],
|
|
321
|
+
objective: { metric: objective.metric, direction: objective.direction },
|
|
321
322
|
};
|
|
322
323
|
const recommendResult = await metricsOptimizer.recommendStrategy(contextForRecommendation);
|
|
323
324
|
if (!recommendResult.success)
|
|
@@ -362,7 +363,6 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
362
363
|
let sourcePatterns = 0;
|
|
363
364
|
let transferredPatterns = 0;
|
|
364
365
|
let adaptedPatterns = 0;
|
|
365
|
-
let totalRelevance = 0;
|
|
366
366
|
if (queryResult.success) {
|
|
367
367
|
sourcePatterns = queryResult.value.length;
|
|
368
368
|
// Transfer each piece of knowledge to target domain
|
|
@@ -370,7 +370,6 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
370
370
|
const transferResult = await transferSpecialist.transferKnowledge(knowledge, targetDomain);
|
|
371
371
|
if (transferResult.success) {
|
|
372
372
|
transferredPatterns++;
|
|
373
|
-
totalRelevance += transferResult.value.relevanceScore;
|
|
374
373
|
// Count as adapted if relevance changed significantly
|
|
375
374
|
if (Math.abs(transferResult.value.relevanceScore - knowledge.relevanceScore) > 0.1) {
|
|
376
375
|
adaptedPatterns++;
|
|
@@ -39,10 +39,12 @@ export class MinCutHealthTool extends MCPToolBase {
|
|
|
39
39
|
agents: {
|
|
40
40
|
type: 'array',
|
|
41
41
|
description: 'Agent vertices to add to the graph before analysis',
|
|
42
|
+
items: { type: 'object', description: 'Agent vertex { id, domain, weight? }' },
|
|
42
43
|
},
|
|
43
44
|
edges: {
|
|
44
45
|
type: 'array',
|
|
45
46
|
description: 'Edges to add between agents',
|
|
47
|
+
items: { type: 'object', description: 'Edge { source, target, weight? }' },
|
|
46
48
|
},
|
|
47
49
|
includeWeakVertices: {
|
|
48
50
|
type: 'boolean',
|
|
@@ -210,6 +212,7 @@ export class MinCutStrengthenTool extends MCPToolBase {
|
|
|
210
212
|
targetVertices: {
|
|
211
213
|
type: 'array',
|
|
212
214
|
description: 'Specific vertices to strengthen',
|
|
215
|
+
items: { type: 'string', description: 'Vertex ID' },
|
|
213
216
|
},
|
|
214
217
|
apply: {
|
|
215
218
|
type: 'boolean',
|
|
@@ -13,6 +13,8 @@ import { MCPToolBase } from '../base.js';
|
|
|
13
13
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
14
14
|
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
|
|
15
15
|
import { findProjectRoot } from '../../../kernel/project-root.js';
|
|
16
|
+
import { readConfinedText } from '../../../shared/io/confined-read.js';
|
|
17
|
+
import { parseAnchorSet } from '../../../validation/anchor-set.js';
|
|
16
18
|
import { getLLMRouter } from '../base.js';
|
|
17
19
|
import { runQualityGate, } from '../../../validation/quality-gate-runner.js';
|
|
18
20
|
import { createRouterFrontierJudge, createUnavailableJudge, } from '../../../validation/frontier-judge.js';
|
|
@@ -37,11 +39,15 @@ export class QualityGateTool extends MCPToolBase {
|
|
|
37
39
|
// #1126: a caller-named anchor must be a regular file inside the project
|
|
38
40
|
// (relative paths resolve against the project root, as the runner does).
|
|
39
41
|
let anchorPath;
|
|
42
|
+
let anchor;
|
|
40
43
|
if (params.anchorPath !== undefined) {
|
|
41
44
|
const confined = await requirePayloadPath('qe/quality/gate', 'anchorPath', params.anchorPath, { basePath: findProjectRoot(), maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
42
45
|
if (!confined.success)
|
|
43
46
|
return { success: false, error: confined.error.message };
|
|
44
47
|
anchorPath = confined.value;
|
|
48
|
+
// #1161: the runner gets the anchor read from the validated descriptor,
|
|
49
|
+
// so a file swapped after the check is never read by name.
|
|
50
|
+
anchor = parseAnchorSet(await readConfinedText(anchorPath, { maxBytes: MAX_PAYLOAD_FILE_BYTES }), params.anchorPath);
|
|
45
51
|
}
|
|
46
52
|
const router = await getLLMRouter(context);
|
|
47
53
|
const judge = router
|
|
@@ -59,6 +65,7 @@ export class QualityGateTool extends MCPToolBase {
|
|
|
59
65
|
checklistId: params.checklistId,
|
|
60
66
|
judge,
|
|
61
67
|
anchorPath,
|
|
68
|
+
anchor,
|
|
62
69
|
verificationManifest: params.verificationManifest,
|
|
63
70
|
});
|
|
64
71
|
return { success: true, data: result };
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { MCPToolBase } from '../base.js';
|
|
15
15
|
import { createQualityCriteriaService, HTSM_CATEGORIES, NEVER_OMIT_CATEGORIES, } from '../../../domains/requirements-validation/index.js';
|
|
16
|
-
import { existsSync, readFileSync } from 'fs';
|
|
17
16
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
18
17
|
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
|
|
18
|
+
import { ConfinedReadError, readConfinedText } from '../../../shared/io/confined-read.js';
|
|
19
19
|
// ============================================================================
|
|
20
20
|
// Tool Implementation
|
|
21
21
|
// ============================================================================
|
|
@@ -128,8 +128,15 @@ export class QualityCriteriaTool extends MCPToolBase {
|
|
|
128
128
|
const confined = await requirePayloadPath('quality-criteria', 'epicPath', epicPath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
129
129
|
if (!confined.success)
|
|
130
130
|
return { success: false, error: confined.error.message };
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
// #1161: read from the validated descriptor; a missing file stays empty.
|
|
132
|
+
try {
|
|
133
|
+
content = await readConfinedText(confined.value, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
134
|
+
}
|
|
135
|
+
catch (readErr) {
|
|
136
|
+
if (!(readErr instanceof ConfinedReadError) || readErr.reason !== 'not-found') {
|
|
137
|
+
return { success: false, error: toErrorMessage(readErr) };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
133
140
|
}
|
|
134
141
|
if (!content && !epicPath) {
|
|
135
142
|
return {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { MCPToolBase, getMemoryBackend } from '../base.js';
|
|
11
11
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
12
12
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
13
|
+
import { getOwn } from '../../../shared/utils/safe-record.js';
|
|
13
14
|
import { ALL_SECURITY_PATTERNS, SECRET_PATTERNS, } from '../../../domains/security-compliance/services/scanners/security-patterns.js';
|
|
14
15
|
import { writeQualityEvidence } from '../../../domains/quality-assessment/quality-evidence.js';
|
|
15
16
|
// ============================================================================
|
|
@@ -460,7 +461,8 @@ const KNOWN_VULNERABLE_NPM = {
|
|
|
460
461
|
function checkKnownVulnerableDeps(deps, manifest) {
|
|
461
462
|
const vulns = [];
|
|
462
463
|
for (const [name, version] of Object.entries(deps)) {
|
|
463
|
-
|
|
464
|
+
// #1157: a dependency named `constructor` is a package, not a table entry.
|
|
465
|
+
const known = getOwn(KNOWN_VULNERABLE_NPM, name);
|
|
464
466
|
if (known) {
|
|
465
467
|
const cleanVersion = version.replace(/^[\^~>=<]+/, '');
|
|
466
468
|
if (compareVersions(cleanVersion, known.maxSafe) < 0) {
|
|
@@ -512,7 +514,7 @@ function extractRequirementsTxtDeps(content) {
|
|
|
512
514
|
function checkKnownVulnerablePythonDeps(deps, manifest) {
|
|
513
515
|
const vulns = [];
|
|
514
516
|
for (const dep of deps) {
|
|
515
|
-
const known = KNOWN_VULNERABLE_PYTHON
|
|
517
|
+
const known = getOwn(KNOWN_VULNERABLE_PYTHON, dep);
|
|
516
518
|
if (known) {
|
|
517
519
|
vulns.push({
|
|
518
520
|
id: `DEP-py-${dep}-${known.cve}`,
|
|
@@ -130,7 +130,7 @@ const E2E_EXECUTE_SCHEMA = {
|
|
|
130
130
|
name: { type: 'string', description: 'Test case name' },
|
|
131
131
|
description: { type: 'string', description: 'Test case description' },
|
|
132
132
|
baseUrl: { type: 'string', description: 'Base URL for the test' },
|
|
133
|
-
steps: { type: 'array', description: 'Test steps to execute' },
|
|
133
|
+
steps: { type: 'array', description: 'Test steps to execute', items: { type: 'object', description: 'Test step' } },
|
|
134
134
|
viewport: {
|
|
135
135
|
type: 'object',
|
|
136
136
|
description: 'Browser viewport configuration',
|
|
@@ -149,7 +149,7 @@ const E2E_EXECUTE_SCHEMA = {
|
|
|
149
149
|
id: { type: 'string', description: 'Test suite ID' },
|
|
150
150
|
name: { type: 'string', description: 'Test suite name' },
|
|
151
151
|
description: { type: 'string', description: 'Test suite description' },
|
|
152
|
-
testCases: { type: 'array', description: 'Test cases in the suite' },
|
|
152
|
+
testCases: { type: 'array', description: 'Test cases in the suite', items: { type: 'object', description: 'Test case' } },
|
|
153
153
|
parallel: { type: 'boolean', description: 'Run tests in parallel' },
|
|
154
154
|
maxWorkers: { type: 'number', description: 'Maximum parallel workers' },
|
|
155
155
|
},
|