agentic-qe 3.15.9 → 3.15.11
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/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +365 -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/a2ui/catalog/component-schemas.js +2 -1
- package/dist/adapters/a2ui/data/json-pointer-resolver.js +10 -5
- package/dist/adapters/a2ui/integration/agui-sync.js +10 -6
- package/dist/adapters/a2ui/integration/surface-state-bridge.js +9 -5
- package/dist/adapters/ag-ui/json-patch.js +10 -6
- 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/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-V4GSGOOK.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-TIDSQ3ZK.js +2 -0
- package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-G3EPBVA7.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-ARC5C7GW.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-6WQTM5YR.js +2 -0
- package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-36DTATJV.js} +4 -4
- package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-K4I4QDXB.js} +2 -2
- package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-WQSJSJZF.js} +3 -3
- package/dist/cli/chunks/base-AK7BXBX2.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-BB4K67MT.js} +2 -2
- package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-CU3GOIU3.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-NJQX7ZNB.js} +2 -2
- package/dist/cli/chunks/browser-6YJF4FQW.js +4 -0
- package/dist/cli/chunks/browser-workflow-VTDFBW7T.js +2 -0
- package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-25P77WA5.js} +1 -1
- package/dist/cli/chunks/chunk-2CW7VRPH.js +141 -0
- package/dist/cli/chunks/chunk-2DTX7YAZ.js +6 -0
- package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-2KFFEKSI.js} +2 -2
- package/dist/cli/chunks/chunk-2VLYUF7U.js +2 -0
- package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-325QCVDI.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-35M2X3C5.js} +2 -2
- package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-3RHOPP7A.js} +1 -1
- package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-4HJKQIX5.js} +2 -2
- package/dist/cli/chunks/chunk-4MUBW4RT.js +7 -0
- package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-4RAQ7PJA.js} +8 -8
- package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-4RH5I24Q.js} +2 -2
- package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-4UBVAJFO.js} +3 -3
- package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-4UX35V7P.js} +2 -2
- package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-4X4MWMHB.js} +2 -2
- package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-55CH76ZO.js} +3 -3
- package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-57LNKSW7.js} +2 -2
- package/dist/cli/chunks/chunk-5ERFHEEE.js +14 -0
- package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-5HQP4SLM.js} +2 -2
- package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-5MNASJOH.js} +2 -2
- package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-5MTWCCZJ.js} +2 -2
- package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-5N25I53C.js} +2 -2
- package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-5WYZHDIZ.js} +1 -1
- package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-5YLOLACR.js} +2 -2
- package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-672XOJDG.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-6NA3KZZT.js} +10 -10
- package/dist/cli/chunks/chunk-72ZBJD2E.js +3 -0
- package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-76SNL7GU.js} +2 -2
- package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-7HEMJHPP.js} +2 -2
- package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-7R5HC56U.js} +1 -1
- package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-AFFN6E6Q.js} +2 -2
- package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-AMZKAJLJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-AP3ADWDK.js} +2 -2
- package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-APPZATXA.js} +2 -2
- package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-AUUJBXWX.js} +25 -20
- package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-BTVWA35P.js} +2 -2
- package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-BZPE3LDO.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-CFWGGRE7.js} +1 -1
- package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-CIAL4YRY.js} +2 -2
- package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-CO3DX2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-DDEOZPWJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-DOBZPSKE.js} +1 -1
- package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-DOFREOPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-E44NNCEU.js} +2 -2
- package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-E6PF35JZ.js} +2 -2
- package/dist/cli/chunks/chunk-EBPJY4DI.js +3 -0
- package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EH2S6AOR.js} +2 -2
- package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-EIDJNT5C.js} +1 -1
- package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-EJPK7OTR.js} +2 -2
- package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EK5GMOSO.js} +1 -1
- package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ERN43HOX.js} +430 -433
- package/dist/cli/chunks/chunk-ETVAYGCB.js +180 -0
- package/dist/cli/chunks/chunk-EWPUQCN4.js +2 -0
- package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-FL32MTKT.js} +2 -2
- package/dist/cli/chunks/chunk-FLU5FDSC.js +742 -0
- package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-FUYOOKTH.js} +5 -5
- package/dist/cli/chunks/chunk-FWSGPE3V.js +12 -0
- package/dist/cli/chunks/chunk-FZHSG75I.js +3 -0
- package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-G2IJFNZS.js} +2 -2
- package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-G4CKPWF6.js} +1 -1
- package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-G4FAPO57.js} +5 -5
- package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-G77MLBDF.js} +2 -2
- package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-GBFUANTC.js} +1 -1
- package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-GVKVJJQX.js} +2 -2
- package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GWJWSLDA.js} +2 -2
- package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-H43AFUKL.js} +2 -2
- package/dist/cli/chunks/chunk-H7BLYMNU.js +59 -0
- package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-HDJUYAZG.js} +1 -1
- package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-HDNWSKHA.js} +2 -2
- package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-HFFPYC4G.js} +2 -2
- package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-HJ3XNTTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-HYXUN7BW.js} +1 -1
- package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-I36CRDHF.js} +2 -2
- package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-I4K2HTQU.js} +1 -1
- package/dist/cli/chunks/chunk-IENZSO3K.js +4 -0
- package/dist/cli/chunks/chunk-IO5537OM.js +2 -0
- package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-IOZRKXR5.js} +2 -2
- package/dist/cli/chunks/chunk-ITL3IN2E.js +3 -0
- package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-ITPGWGQS.js} +14 -14
- package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-IW6WDGHM.js} +1 -1
- package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-J4JMCZVA.js} +2 -2
- package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-JFLU7L3W.js} +2 -2
- package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-JGJXXAS6.js} +4 -4
- package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-JUMICXM6.js} +2 -2
- package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-K2HBNYAZ.js} +2 -2
- package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-K7V2WZNF.js} +1 -1
- package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-KDI5JOYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-KJCIMNHS.js} +1 -1
- package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-KKYO2NKV.js} +2 -2
- package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-KSE5TDM5.js} +2 -2
- package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-KSLLHFVY.js} +1 -1
- package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-KXS3Y2AX.js} +2 -2
- package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LBX7M4LW.js} +2 -2
- package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-LCVEEII4.js} +2 -2
- package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-LD5CFK53.js} +54 -33
- package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-LPU6PAJE.js} +2 -2
- package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-LQ4NUC6Q.js} +2 -2
- package/dist/cli/chunks/chunk-LRL56ZYL.js +21 -0
- package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-LXQ3B4RY.js} +2 -2
- package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-M5RQ6U3G.js} +2 -2
- package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-M5XYIQYZ.js} +2 -2
- package/dist/cli/chunks/chunk-M7XFBSIK.js +2 -0
- package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-MIK4RBEH.js} +1 -1
- package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-NC6K7SCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-NKTWKYHB.js} +2 -2
- package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-NPZOBSAN.js} +2 -2
- package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-NQZNMCZU.js} +2 -2
- package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-NT7JRHMH.js} +1 -1
- package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-NTB342NJ.js} +1 -1
- package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-O4JAKWWM.js} +13 -13
- package/dist/cli/chunks/chunk-OD5D4LSZ.js +2 -0
- package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-OH5V5EJW.js} +2 -2
- package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-OHR7C777.js} +2 -2
- package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-OURITHFV.js} +2 -2
- package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-OV5RPLKV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-OYJC3YON.js} +2 -2
- package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-QDESWOZP.js} +2 -2
- package/dist/cli/chunks/chunk-R5GRABPQ.js +2 -0
- package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-R5LGV6GZ.js} +2 -2
- package/dist/cli/chunks/chunk-RBZCA7SD.js +12 -0
- package/dist/cli/chunks/chunk-RQMCZQN2.js +2 -0
- package/dist/cli/chunks/chunk-RTFKTKSO.js +4 -0
- package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-RTY7VSZB.js} +2 -2
- package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-S6IYEBAI.js} +2 -2
- package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-SMVVAVN2.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-T5KHJ3J7.js} +5 -5
- package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-TCYSBC7Y.js} +1 -1
- package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-TFW7CCKS.js} +1 -1
- package/dist/cli/chunks/chunk-TL6OFMXF.js +6 -0
- package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-U3LJNNVJ.js} +5 -5
- package/dist/cli/chunks/chunk-UKKYMW3S.js +3 -0
- package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-UMVSWQNB.js} +2 -2
- package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-UTTSH4NH.js} +3 -3
- package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-V5AADCBC.js} +1 -1
- package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-V7DA4HAK.js} +1 -1
- package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-VBK2YAYY.js} +2 -2
- package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-VEEYL2CZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-VLD7Z2ED.js} +3 -3
- package/dist/cli/chunks/chunk-VO3DRK4P.js +3 -0
- package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-VWUZSNVC.js} +1 -1
- package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-VYTILW4R.js} +2 -2
- package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-WCAVIJ64.js} +1 -1
- package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-WCVCOT4E.js} +2 -2
- package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-WM3SRRA6.js} +2 -2
- package/dist/cli/chunks/chunk-X3PZCXWG.js +2 -0
- package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-X4J73KP3.js} +1 -1
- package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-XDI5X3FR.js} +1 -1
- package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-XGBU3KEM.js} +2 -2
- package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-XGPTZUKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-XJKZ7FTR.js} +2 -2
- package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-XNLIWQYE.js} +2 -2
- package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-XS2XF3YG.js} +6 -5
- package/dist/cli/chunks/chunk-Y7B5EUIJ.js +180 -0
- package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-YBBT3YYG.js} +1 -1
- package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-YNOCQ2SL.js} +1 -1
- package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-YOCULVHR.js} +1 -1
- package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-YPX2TV3M.js} +1 -1
- package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-Z2EA7A4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-ZMC543GI.js} +2 -2
- package/dist/cli/chunks/chunk-ZMHCMJ4J.js +2 -0
- package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-ZP75ASUU.js} +1 -1
- package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-ZQHDA4O7.js} +1 -1
- package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-6GUFAZMJ.js} +2 -2
- package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-J665XNOX.js} +2 -2
- package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-PEQQQWVD.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-HHB2JSKH.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-JKUJRWPN.js} +2 -2
- package/dist/cli/chunks/client-HL2COSFM.js +2 -0
- package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-Y77BWTAN.js} +2 -2
- package/dist/cli/chunks/{code-ONKLMVQ2.js → code-LV2HAGJY.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4GKKSETB.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-WMKBYE5Y.js} +2 -2
- package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-SBGFAOIJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-AQHFIJXC.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-26AYFS2E.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-4UD3DK55.js} +2 -2
- package/dist/cli/chunks/core-handlers-IX7ATLM6.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-TP4NZCG4.js} +2 -2
- package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B2KIXHAI.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-YYKLAPJO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-AVZEQZ4W.js} +2 -2
- package/dist/cli/chunks/daemon-P574WWBW.js +18 -0
- package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-XM2A7LQU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-MIWOZ6ET.js} +2 -2
- package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-TYR7HT23.js} +2 -2
- package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-2DGVQGLS.js} +2 -2
- package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-RRA4ZOMF.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-IVZEZ5RB.js} +2 -2
- package/dist/cli/chunks/domain-transfer-DOBI67K6.js +2 -0
- package/dist/cli/chunks/dream-T6EP7B3F.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-VNIEOVPO.js} +2 -2
- package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-QV4LVPUF.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-DAPKT763.js} +3 -3
- package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-WVRFPHX7.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-DEFTUIYT.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-O7ZXDDCD.js} +2 -2
- package/dist/cli/chunks/file-discovery-JYMVTDMU.js +2 -0
- package/dist/cli/chunks/fleet-FVAUMKUT.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-LS4LZJDR.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-RFTERD4K.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-4N5MUJ7S.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-ZPAJDSLR.js +2 -0
- package/dist/cli/chunks/hnsw-index-4CTH6RHB.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-GPKGFFHY.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-PHL3F2PR.js} +2 -2
- package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-GYJ6D4QM.js} +36 -36
- package/dist/cli/chunks/hybrid-backend-AW6UTXQS.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-YGEQPCKJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-ZIMM647V.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-MZK3JMSV.js +2 -0
- package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-VOMBXJXG.js} +2 -2
- package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-PSMUBWK5.js} +26 -25
- package/dist/cli/chunks/init-wizard-FUC7KDVX.js +2 -0
- package/dist/cli/chunks/kernel-ZCPMCVMW.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-2YNTFBWJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-XHJDPVAZ.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-NUJKEDNF.js +2 -0
- package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-GNSIDRNG.js} +24 -24
- package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-LQDM7IU2.js} +4 -4
- package/dist/cli/chunks/llm-router-service-B2BFBQ76.js +2 -0
- package/dist/cli/chunks/{load-ZM43WGDO.js → load-YATHI72E.js} +2 -2
- package/dist/cli/chunks/load-test-ZHQ2MUGO.js +2 -0
- package/dist/cli/chunks/mcp-4Y6GDLYK.js +2 -0
- package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-OUW3L7H2.js} +5 -5
- package/dist/cli/chunks/memory-backend-AAMQG6WH.js +2 -0
- package/dist/cli/chunks/memory-handlers-G3LFF53U.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-UBZJXAD2.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-AMMNWVH5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-Y44WDOER.js} +69 -25
- package/dist/cli/chunks/pattern-null-store-RFNVA46O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-ESR42RME.js} +2 -2
- package/dist/cli/chunks/pipeline-EDTS6OSC.js +19 -0
- package/dist/cli/chunks/{platform-KJDABL5C.js → platform-5WONJSUX.js} +2 -2
- package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-IJXPCLD4.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-5ECKGZK6.js} +2 -2
- package/dist/cli/chunks/project-root-7QL4KP5C.js +2 -0
- package/dist/cli/chunks/protocol-executor-2NW5BD4R.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-DRD3GVNW.js} +2 -2
- package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-KTGW2HMJ.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-G2JZOGKD.js +2 -0
- package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-DV2WPRRS.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-HFUAFVZC.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GRG5FT2A.js +2 -0
- package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RQRVOKVM.js} +2 -2
- package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-QWSKS5OY.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-RBAYRCHX.js} +2 -2
- package/dist/cli/chunks/router-LQB5SWAF.js +2 -0
- package/dist/cli/chunks/routing-feedback-OEEXA55N.js +2 -0
- package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-FMPP3XKO.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-KZZT4HWF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-BZK4M7BO.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-EZZUJL2E.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-7CHEV35N.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-6COXTQZ3.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-Q2TH52SN.js} +2 -2
- package/dist/cli/chunks/safe-db-PE6G3L55.js +2 -0
- package/dist/cli/chunks/schedule-OLKQ6QYW.js +2 -0
- package/dist/cli/chunks/scheduler-LSGBDFAT.js +2 -0
- package/dist/cli/chunks/{security-AUDTRX3I.js → security-CUEA3UIM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-DROMBRV2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-DBNABOP7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-HH4DNTYH.js +2 -0
- package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-IAHA3M6B.js} +2 -2
- package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-AFUCASTX.js} +2 -2
- package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-AQRV6JJ6.js} +2 -2
- package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-GX7FMJHL.js} +2 -2
- package/dist/cli/chunks/sync-XW5TLZ7M.js +2 -0
- package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-TFKVUTNF.js} +2 -2
- package/dist/cli/chunks/task-handlers-SS4ZDXNF.js +9 -0
- package/dist/cli/chunks/{test-XFSGQELD.js → test-D2XDJNDX.js} +17 -17
- package/dist/cli/chunks/test-runner-process-PSSBNNGR.js +2 -0
- package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-TS6I2PR7.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-HBBLPCZ3.js +2 -0
- package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-3MBUX4PR.js} +2 -2
- package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-ZWMQO3L2.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-TYRQRJ2W.js +2 -0
- package/dist/cli/chunks/{types-JTWLBAZJ.js → types-5YEMGPSQ.js} +2 -2
- package/dist/cli/chunks/unified-memory-AGDZQ5XD.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-X5TJ3JDE.js +2 -0
- package/dist/cli/chunks/unified-persistence-UCV7YETW.js +2 -0
- package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-2TPBKIHI.js} +2 -2
- package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-XRAXXFW6.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-IYSCS3BZ.js} +2 -2
- package/dist/cli/chunks/visual-security-ZLXRIQZV.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-PZQ3ZG2P.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-U6XWFRVT.js} +2 -2
- package/dist/cli/chunks/witness-chain-CVIWYTD2.js +2 -0
- package/dist/cli/chunks/witness-chain-VBKORKOX.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-K7YX2AO6.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-GUTC3W7N.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-YBNKMOP6.js} +2 -2
- package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-UAJUILFQ.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3ZN7MVCE.js +2 -0
- package/dist/cli/chunks/wrappers-AVZ3GPAL.js +2 -0
- package/dist/cli/commands/fleet.js +23 -13
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +9 -2
- package/dist/cli/commands/hooks-handlers/session-hooks.js +2 -2
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +3 -2
- package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +11 -6
- package/dist/cli/commands/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +11 -2
- package/dist/cli/handlers/init-handler.d.ts +12 -0
- package/dist/cli/handlers/init-handler.js +27 -12
- package/dist/cli/utils/ci-output.d.ts +11 -0
- package/dist/cli/utils/ci-output.js +2 -0
- package/dist/cli/utils/fleet-operation.d.ts +32 -0
- package/dist/cli/utils/fleet-operation.js +71 -0
- package/dist/cli/utils/fleet-result.d.ts +31 -0
- package/dist/cli/utils/fleet-result.js +124 -0
- package/dist/cli/utils/progress.d.ts +16 -2
- package/dist/cli/utils/progress.js +31 -14
- package/dist/context/sources/git-source.js +6 -2
- package/dist/coordination/consensus/consensus-engine.js +3 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +63 -7
- package/dist/coordination/handlers/coverage-collection.js +3 -1
- package/dist/coordination/handlers/coverage-handlers.js +10 -1
- package/dist/coordination/handlers/coverage-runner.d.ts +3 -8
- package/dist/coordination/handlers/coverage-runner.js +6 -22
- 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.js +6 -3
- package/dist/coordination/handlers/handler-utils.js +3 -1
- package/dist/coordination/handlers/requirements-handlers.js +18 -3
- package/dist/coordination/handlers/security-handlers.js +45 -21
- package/dist/coordination/handlers/test-execution-handlers.js +25 -7
- package/dist/coordination/mincut/queen-integration.d.ts +39 -1
- package/dist/coordination/mincut/queen-integration.js +83 -6
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +2 -6
- package/dist/coordination/protocols/learning-consolidation-archive.js +4 -27
- package/dist/coordination/protocols/learning-consolidation.d.ts +24 -0
- package/dist/coordination/protocols/learning-consolidation.js +71 -22
- package/dist/coordination/queen-coordinator.d.ts +1 -1
- package/dist/coordination/queen-coordinator.js +27 -10
- package/dist/coordination/queen-event-handlers.js +13 -0
- package/dist/coordination/queen-task-management.d.ts +18 -24
- package/dist/coordination/queen-task-management.js +62 -168
- package/dist/coordination/queen-task-queue.d.ts +41 -0
- package/dist/coordination/queen-task-queue.js +194 -0
- package/dist/coordination/queen-types.d.ts +1 -1
- package/dist/coordination/queen-work-stealing.d.ts +6 -1
- package/dist/coordination/queen-work-stealing.js +7 -4
- package/dist/coordination/result-saver-adapters.d.ts +15 -0
- package/dist/coordination/result-saver-adapters.js +57 -0
- package/dist/coordination/result-saver.d.ts +1 -1
- package/dist/coordination/result-saver.js +8 -5
- 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/coordination/yaml-pipeline-loader.js +5 -2
- package/dist/domains/code-intelligence/index-path-guard.d.ts +5 -2
- package/dist/domains/code-intelligence/index-path-guard.js +20 -50
- package/dist/domains/code-intelligence/plugin.js +5 -1
- package/dist/domains/code-intelligence/services/metric-collector/index.d.ts +2 -2
- package/dist/domains/code-intelligence/services/metric-collector/index.js +2 -3
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +11 -36
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.d.ts +1 -1
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +45 -103
- package/dist/domains/code-intelligence/services/product-factors-bridge.js +7 -4
- package/dist/domains/contract-testing/services/api-compatibility.js +7 -6
- package/dist/domains/contract-testing/services/contract-validator.js +6 -4
- package/dist/domains/contract-testing/services/schema-validator.js +8 -5
- package/dist/domains/coverage-analysis/services/coverage-parser.js +19 -10
- package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
- package/dist/domains/defect-intelligence/plugin.js +11 -2
- package/dist/domains/defect-intelligence/prediction-history.d.ts +27 -0
- package/dist/domains/defect-intelligence/prediction-history.js +68 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +25 -10
- package/dist/domains/enterprise-integration/services/message-broker-service.js +3 -2
- package/dist/domains/enterprise-integration/services/odata-service.js +2 -1
- package/dist/domains/enterprise-integration/services/sap-integration-service.js +3 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +2 -2
- package/dist/domains/learning-optimization/active-patterns.js +2 -2
- package/dist/domains/learning-optimization/coordinator.js +9 -5
- package/dist/domains/learning-optimization/interfaces.d.ts +8 -2
- package/dist/domains/learning-optimization/pattern-archive.d.ts +31 -0
- package/dist/domains/learning-optimization/pattern-archive.js +56 -0
- package/dist/domains/learning-optimization/pattern-consolidation.d.ts +12 -0
- package/dist/domains/learning-optimization/pattern-consolidation.js +41 -0
- package/dist/domains/learning-optimization/reward-source.d.ts +13 -0
- package/dist/domains/learning-optimization/reward-source.js +8 -1
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +5 -3
- package/dist/domains/learning-optimization/services/learning-coordinator.js +47 -59
- 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/plugin.js +17 -3
- package/dist/domains/security-compliance/sast-path-guard.d.ts +9 -0
- package/dist/domains/security-compliance/sast-path-guard.js +17 -0
- package/dist/domains/security-compliance/services/scanners/dast-auth-testing.js +46 -56
- package/dist/domains/security-compliance/services/scanners/dast-helpers.js +76 -91
- package/dist/domains/security-compliance/services/scanners/dast-injection-testing.js +52 -62
- package/dist/domains/security-compliance/services/scanners/dast-scanner.d.ts +21 -1
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +29 -24
- 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/scanners/scanner-orchestrator.js +4 -1
- 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 +6 -0
- package/dist/domains/test-execution/coordinator.js +28 -22
- package/dist/domains/test-execution/interfaces.d.ts +36 -1
- package/dist/domains/test-execution/plugin.js +19 -4
- package/dist/domains/test-execution/services/flaky-detector.js +9 -7
- package/dist/domains/test-execution/services/retry-handler.js +46 -7
- 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-execution/services/runner-test-cases.d.ts +11 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +20 -2
- package/dist/domains/test-execution/services/test-executor.js +8 -8
- package/dist/domains/test-generation/coordinator.js +2 -2
- package/dist/domains/test-generation/plugin.js +7 -2
- package/dist/domains/test-generation/services/pattern-matcher.js +4 -4
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/test-generation/services/test-generator.js +2 -2
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/governance/evolution-pipeline-integration.js +3 -1
- package/dist/hooks/cross-phase-hooks.js +5 -2
- 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 +50 -6
- 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 +7 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +31 -2
- package/dist/integrations/agentic-flow/reasoning-bank/index.d.ts +3 -1
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +5 -0
- package/dist/integrations/browser/agent-browser/client.js +37 -52
- package/dist/integrations/browser/agent-browser/command-executor.d.ts +33 -27
- package/dist/integrations/browser/agent-browser/command-executor.js +53 -54
- package/dist/integrations/browser/agent-browser/session-manager.d.ts +1 -1
- package/dist/integrations/browser/agent-browser/session-manager.js +8 -9
- package/dist/integrations/browser/web-content-fetcher.js +9 -3
- package/dist/integrations/ruvector/filter-adapter.js +2 -1
- package/dist/integrations/vibium/client.js +2 -2
- package/dist/integrations/vibium/runtime.d.ts +1 -1
- package/dist/integrations/vibium/runtime.js +14 -11
- package/dist/kernel/unified-memory-schemas.d.ts +3 -2
- package/dist/kernel/unified-memory-schemas.js +3 -2
- package/dist/kernel/unified-memory.js +25 -6
- package/dist/learning/dream/dream-commit.d.ts +65 -0
- package/dist/learning/dream/dream-commit.js +104 -0
- package/dist/learning/dream/dream-engine.d.ts +81 -31
- package/dist/learning/dream/dream-engine.js +225 -168
- package/dist/learning/dream/dream-insights-pruner.d.ts +9 -3
- package/dist/learning/dream/dream-insights-pruner.js +16 -30
- package/dist/learning/dream/index.d.ts +3 -2
- package/dist/learning/dream/index.js +3 -1
- package/dist/learning/dream/insight-generator.js +5 -4
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -1
- package/dist/learning/dream/rvcow-branch-manager.js +8 -1
- package/dist/learning/dream/speculative-dreamer.d.ts +50 -74
- package/dist/learning/dream/speculative-dreamer.js +64 -111
- package/dist/learning/dream/spreading-activation.d.ts +2 -1
- package/dist/learning/dream/spreading-activation.js +15 -6
- package/dist/learning/experience-capture.d.ts +9 -0
- package/dist/learning/experience-capture.js +18 -4
- 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 +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- package/dist/learning/real-qe-reasoning-bank.d.ts +19 -0
- package/dist/learning/real-qe-reasoning-bank.js +70 -38
- package/dist/learning/sqlite-persistence.d.ts +6 -0
- package/dist/learning/sqlite-persistence.js +16 -2
- package/dist/learning/usage-outcome.d.ts +68 -0
- package/dist/learning/usage-outcome.js +84 -0
- package/dist/mcp/background-workers.d.ts +13 -1
- package/dist/mcp/background-workers.js +17 -3
- package/dist/mcp/bundle.js +612 -580
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +7 -0
- package/dist/mcp/handlers/domain-handler-configs.js +19 -5
- package/dist/mcp/handlers/handler-factory.d.ts +2 -1
- package/dist/mcp/handlers/handler-factory.js +36 -15
- package/dist/mcp/handlers/orchestrate-routes.d.ts +36 -0
- package/dist/mcp/handlers/orchestrate-routes.js +88 -0
- package/dist/mcp/handlers/task-handlers.d.ts +16 -0
- package/dist/mcp/handlers/task-handlers.js +77 -24
- package/dist/mcp/handlers/validation-pipeline-handler.js +14 -10
- package/dist/mcp/protocol-server.js +10 -8
- package/dist/mcp/qe-tool-bridge.js +3 -0
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/services/reasoning-bank-service.d.ts +3 -1
- package/dist/mcp/services/reasoning-bank-service.js +4 -0
- package/dist/mcp/tool-annotations.js +4 -1
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- package/dist/mcp/tools/coherence/check.js +1 -0
- package/dist/mcp/tools/coherence/consensus.js +4 -2
- package/dist/mcp/tools/coverage-analysis/index.js +31 -2
- package/dist/mcp/tools/learning-optimization/dream.d.ts +8 -8
- package/dist/mcp/tools/learning-optimization/dream.js +38 -34
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +18 -2
- package/dist/mcp/tools/learning-optimization/optimize.js +59 -12
- package/dist/mcp/tools/mincut/index.js +3 -0
- package/dist/mcp/tools/quality-assessment/gate.js +19 -1
- package/dist/mcp/tools/qx-analysis/analyze.js +1 -0
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +17 -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/memory/crdt/crdt-store.js +5 -0
- package/dist/memory/crdt/lww-register.js +12 -2
- package/dist/migration/agent-compat.js +7 -5
- package/dist/migrations/20261018_add_dream_insights_archive.d.ts +27 -0
- package/dist/migrations/20261018_add_dream_insights_archive.js +57 -0
- 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/shared/git/git-analyzer.d.ts +49 -0
- package/dist/shared/git/git-analyzer.js +159 -319
- package/dist/shared/git/git-process.d.ts +22 -0
- package/dist/shared/git/git-process.js +37 -0
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- 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/io/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/providers/claude-code.js +4 -1
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -1
- 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/test-runner-args.d.ts +5 -0
- package/dist/shared/test-runner-args.js +6 -1
- package/dist/shared/test-runner-process.d.ts +6 -0
- package/dist/shared/test-runner-process.js +14 -0
- package/dist/shared/test-runner-verdict.d.ts +9 -1
- package/dist/shared/test-runner-verdict.js +15 -4
- package/dist/shared/types/test-frameworks.js +2 -2
- package/dist/shared/utils/namespaced-search.d.ts +14 -0
- package/dist/shared/utils/namespaced-search.js +19 -1
- package/dist/shared/utils/safe-expression-evaluator.js +4 -3
- package/dist/strange-loop/infra-healing/recovery-playbook.js +13 -3
- 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/gate-reexecute.js +7 -4
- package/dist/validation/quality-gate-runner.d.ts +7 -1
- package/dist/validation/quality-gate-runner.js +3 -3
- package/dist/workers/daemon.js +13 -1
- package/dist/workers/quality-daemon/git-watcher.js +9 -9
- package/dist/workers/workers/defect-predictor.d.ts +8 -3
- package/dist/workers/workers/defect-predictor.js +48 -49
- package/dist/workers/workers/learning-consolidation.d.ts +2 -0
- package/dist/workers/workers/learning-consolidation.js +12 -1
- package/dist/workflows/browser/workflow-loader.js +8 -5
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-R2Q4QGXQ.js +0 -2
- package/dist/cli/chunks/agent-booster-wasm-427FRKWG.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +0 -2
- package/dist/cli/chunks/base-67DXSAYM.js +0 -2
- package/dist/cli/chunks/browser-CT3MTV6G.js +0 -4
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +0 -2
- package/dist/cli/chunks/chunk-2XITOPYV.js +0 -6
- package/dist/cli/chunks/chunk-4URT6JO2.js +0 -2
- package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
- package/dist/cli/chunks/chunk-6PXA2BQJ.js +0 -742
- package/dist/cli/chunks/chunk-6YL6JOQB.js +0 -4
- package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
- package/dist/cli/chunks/chunk-AR2E4B7K.js +0 -6
- package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
- package/dist/cli/chunks/chunk-FJ4VTLLK.js +0 -2
- package/dist/cli/chunks/chunk-FV3NHVC7.js +0 -59
- package/dist/cli/chunks/chunk-G3BKZNFL.js +0 -120
- package/dist/cli/chunks/chunk-GR3JYE5A.js +0 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +0 -2
- package/dist/cli/chunks/chunk-JEP4ULR6.js +0 -21
- package/dist/cli/chunks/chunk-JK2ME6IT.js +0 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +0 -180
- package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
- package/dist/cli/chunks/chunk-N5PDFGCQ.js +0 -180
- package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
- package/dist/cli/chunks/chunk-P2CXVNKK.js +0 -4
- package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
- package/dist/cli/chunks/chunk-VU2EL424.js +0 -14
- package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
- package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
- package/dist/cli/chunks/chunk-XZJ2O3VC.js +0 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +0 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +0 -2
- package/dist/cli/chunks/daemon-YIFT46FH.js +0 -34
- package/dist/cli/chunks/domain-transfer-6EF75EKU.js +0 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +0 -2
- package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +0 -2
- package/dist/cli/chunks/fleet-ADL57COA.js +0 -44
- package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +0 -2
- package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +0 -2
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +0 -2
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +0 -2
- package/dist/cli/chunks/init-wizard-422UZYQ5.js +0 -2
- package/dist/cli/chunks/kernel-N7PJ6FCE.js +0 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +0 -2
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +0 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +0 -2
- package/dist/cli/chunks/mcp-CRZKZE37.js +0 -2
- package/dist/cli/chunks/memory-backend-4P6AHSOY.js +0 -2
- package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +0 -2
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +0 -2
- package/dist/cli/chunks/pipeline-5LMLBIJ7.js +0 -19
- package/dist/cli/chunks/project-root-X72FSM2F.js +0 -2
- package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +0 -2
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +0 -2
- package/dist/cli/chunks/router-CXZKOOTR.js +0 -2
- package/dist/cli/chunks/routing-feedback-IYFANYY5.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +0 -2
- package/dist/cli/chunks/safe-db-WFODRGVZ.js +0 -2
- package/dist/cli/chunks/schedule-RO55OQXG.js +0 -2
- package/dist/cli/chunks/scheduler-XXMJCH24.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +0 -2
- package/dist/cli/chunks/sync-UVXA6CT2.js +0 -2
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +0 -9
- package/dist/cli/chunks/token-bootstrap-EDK6FNQ3.js +0 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-MI3NZKUD.js +0 -2
- package/dist/cli/chunks/unified-memory-6JWHV6EF.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +0 -2
- package/dist/cli/chunks/unified-persistence-KGGNA46H.js +0 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +0 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +0 -2
- package/dist/cli/chunks/witness-chain-TATPXQRK.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-2HGJGE7O.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +0 -2
- package/dist/cli/chunks/wrappers-ZD5NBHYI.js +0 -2
|
@@ -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
|
},
|
|
@@ -655,6 +655,7 @@ export class MCPProtocolServer {
|
|
|
655
655
|
isCacheable: false,
|
|
656
656
|
parameters: [
|
|
657
657
|
{ name: 'domain', type: 'string', description: 'Specific domain to check' },
|
|
658
|
+
{ name: 'detailed', type: 'boolean', description: 'Include per-domain health, issues and the MinCut reading (raw minCut status/value, and the fleet reading without task-scoped agents that decides status)', default: false },
|
|
658
659
|
],
|
|
659
660
|
},
|
|
660
661
|
handler: (params) => handleFleetHealth(params),
|
|
@@ -668,7 +669,7 @@ export class MCPProtocolServer {
|
|
|
668
669
|
parameters: [
|
|
669
670
|
{ name: 'type', type: 'string', description: 'Task type', required: true },
|
|
670
671
|
{ name: 'priority', type: 'string', description: 'Task priority', enum: ['p0', 'p1', 'p2', 'p3'], default: 'p1' },
|
|
671
|
-
{ 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' } },
|
|
672
673
|
{ name: 'payload', type: 'object', description: 'Task payload data' },
|
|
673
674
|
],
|
|
674
675
|
},
|
|
@@ -720,6 +721,7 @@ export class MCPProtocolServer {
|
|
|
720
721
|
parameters: [
|
|
721
722
|
{ name: 'task', type: 'string', description: 'Task description', required: true },
|
|
722
723
|
{ name: 'strategy', type: 'string', description: 'Execution strategy', enum: ['parallel', 'sequential', 'adaptive'] },
|
|
724
|
+
{ 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' } },
|
|
723
725
|
],
|
|
724
726
|
},
|
|
725
727
|
handler: (params) => handleTaskOrchestrate(params),
|
|
@@ -880,7 +882,7 @@ export class MCPProtocolServer {
|
|
|
880
882
|
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 })`,
|
|
881
883
|
category: 'domain',
|
|
882
884
|
parameters: [
|
|
883
|
-
{ 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.' },
|
|
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.', items: { type: 'string' } },
|
|
884
886
|
{ name: 'parallel', type: 'boolean', description: 'Enable parallel execution', default: true },
|
|
885
887
|
saveResultsParameter('test_execute_parallel'),
|
|
886
888
|
],
|
|
@@ -1108,7 +1110,7 @@ export class MCPProtocolServer {
|
|
|
1108
1110
|
category: 'memory',
|
|
1109
1111
|
parameters: [
|
|
1110
1112
|
{ name: 'sourceAgentId', type: 'string', description: 'Source agent ID', required: true },
|
|
1111
|
-
{ name: 'targetAgentIds', type: 'array', description: 'Target agent IDs', required: true },
|
|
1113
|
+
{ name: 'targetAgentIds', type: 'array', description: 'Target agent IDs', required: true, items: { type: 'string' } },
|
|
1112
1114
|
{ name: 'knowledgeDomain', type: 'string', description: 'Knowledge domain', required: true },
|
|
1113
1115
|
],
|
|
1114
1116
|
},
|
|
@@ -1125,7 +1127,7 @@ export class MCPProtocolServer {
|
|
|
1125
1127
|
parameters: [
|
|
1126
1128
|
{ name: 'task', type: 'string', description: 'Task description to analyze', required: true },
|
|
1127
1129
|
{ name: 'codeContext', type: 'string', description: 'Optional code context for complexity analysis' },
|
|
1128
|
-
{ name: 'filePaths', type: 'array', description: 'Optional file paths involved' },
|
|
1130
|
+
{ name: 'filePaths', type: 'array', description: 'Optional file paths involved', items: { type: 'string' } },
|
|
1129
1131
|
{ name: 'manualTier', type: 'number', description: 'Manual tier override (0-4)' },
|
|
1130
1132
|
{ name: 'isCritical', type: 'boolean', description: 'Mark as critical task (allows budget overrides)' },
|
|
1131
1133
|
{ name: 'agentType', type: 'string', description: 'Agent type making the request' },
|
|
@@ -1192,7 +1194,7 @@ export class MCPProtocolServer {
|
|
|
1192
1194
|
description: 'Trigger infrastructure recovery for detected failures and optionally re-run affected tests. Example: infra_healing_recover({ services: ["postgres"], rerunTests: true })',
|
|
1193
1195
|
category: 'infra-healing',
|
|
1194
1196
|
parameters: [
|
|
1195
|
-
{ name: 'services', type: 'array', description: 'Specific services to recover (empty = all failing)' },
|
|
1197
|
+
{ name: 'services', type: 'array', description: 'Specific services to recover (empty = all failing)', items: { type: 'string' } },
|
|
1196
1198
|
{ name: 'rerunTests', type: 'boolean', description: 'Re-run affected tests after recovery', default: true },
|
|
1197
1199
|
],
|
|
1198
1200
|
},
|
|
@@ -1281,7 +1283,7 @@ export class MCPProtocolServer {
|
|
|
1281
1283
|
category: 'cross-phase',
|
|
1282
1284
|
isConcurrencySafe: true,
|
|
1283
1285
|
parameters: [
|
|
1284
|
-
{ name: 'signals', type: 'array', description: 'Signals to format', required: true },
|
|
1286
|
+
{ name: 'signals', type: 'array', description: 'Signals to format', required: true, items: { type: 'object' } },
|
|
1285
1287
|
],
|
|
1286
1288
|
},
|
|
1287
1289
|
handler: (params) => handleFormatSignals(params),
|
|
@@ -1307,7 +1309,7 @@ export class MCPProtocolServer {
|
|
|
1307
1309
|
{ name: 'filePath', type: 'string', description: 'Path to the document to validate' },
|
|
1308
1310
|
{ name: 'content', type: 'string', description: 'Inline content to validate (alternative to filePath)' },
|
|
1309
1311
|
{ name: 'pipeline', type: 'string', description: 'Pipeline type (default: requirements)', default: 'requirements' },
|
|
1310
|
-
{ name: 'steps', type: 'array', description: 'Specific step IDs to run (default: all 13)' },
|
|
1312
|
+
{ name: 'steps', type: 'array', description: 'Specific step IDs to run (default: all 13)', items: { type: 'string' } },
|
|
1311
1313
|
{ name: 'continueOnFailure', type: 'boolean', description: 'Continue past blocking failures', default: false },
|
|
1312
1314
|
{ name: 'format', type: 'string', description: 'Output format: markdown or json', default: 'json' },
|
|
1313
1315
|
],
|
|
@@ -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;
|
|
@@ -451,7 +451,8 @@ export class SchemaValidator {
|
|
|
451
451
|
// Check required properties
|
|
452
452
|
if (schema.required) {
|
|
453
453
|
for (const required of schema.required) {
|
|
454
|
-
|
|
454
|
+
// #1136: own properties only; an inherited `constructor` is not present.
|
|
455
|
+
if (!Object.hasOwn(data, required)) {
|
|
455
456
|
errors.push({
|
|
456
457
|
path: path ? `${path}.${required}` : required,
|
|
457
458
|
message: `Required property '${required}' is missing`,
|
|
@@ -464,7 +465,7 @@ export class SchemaValidator {
|
|
|
464
465
|
// Validate properties
|
|
465
466
|
if (schema.properties) {
|
|
466
467
|
for (const [key, propSchema] of Object.entries(schema.properties)) {
|
|
467
|
-
if (key
|
|
468
|
+
if (Object.hasOwn(data, key)) {
|
|
468
469
|
this.validateValue(data[key], propSchema, path ? `${path}.${key}` : key, `${schemaPath}/properties/${key}`, errors);
|
|
469
470
|
}
|
|
470
471
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - Synchronous learning (no fire-and-forget)
|
|
13
13
|
*/
|
|
14
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';
|
|
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,8 @@ 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;
|
|
211
213
|
/**
|
|
212
214
|
* Get service statistics
|
|
213
215
|
*/
|
|
@@ -515,6 +515,10 @@ 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
|
+
}
|
|
518
522
|
/**
|
|
519
523
|
* Get service statistics
|
|
520
524
|
*/
|
|
@@ -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.
|
|
@@ -15,6 +15,7 @@ import { KnowledgeGraphService } from '../../../domains/code-intelligence/servic
|
|
|
15
15
|
import { createKnowledgeGraphRelationshipResolver } from '../../../domains/code-intelligence/services/c4-model/kg-relationships.js';
|
|
16
16
|
import { InMemoryEventBus } from '../../../kernel/event-bus.js';
|
|
17
17
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
18
|
+
import { requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
|
|
18
19
|
const want = (level, l) => level === 'all' || level === l;
|
|
19
20
|
// ============================================================================
|
|
20
21
|
// Tool Implementation
|
|
@@ -53,7 +54,16 @@ export class CodeC4Tool extends MCPToolBase {
|
|
|
53
54
|
return this.searchService;
|
|
54
55
|
}
|
|
55
56
|
async execute(params, context) {
|
|
56
|
-
const { action, projectPath = '.', level = 'all', query, limit = 10 } = params;
|
|
57
|
+
const { action, projectPath: requestedPath = '.', level = 'all', query, limit = 10 } = params;
|
|
58
|
+
// #1126: analyse (and report package names from) only a directory inside
|
|
59
|
+
// the project.
|
|
60
|
+
let projectPath = requestedPath;
|
|
61
|
+
if (requestedPath !== '.') {
|
|
62
|
+
const confined = await requirePayloadPath('qe/code/c4', 'projectPath', requestedPath, { allowDirectory: true });
|
|
63
|
+
if (!confined.success)
|
|
64
|
+
return { success: false, error: confined.error.message };
|
|
65
|
+
projectPath = confined.value;
|
|
66
|
+
}
|
|
57
67
|
try {
|
|
58
68
|
if (this.isAborted(context)) {
|
|
59
69
|
return { success: false, error: 'Operation aborted' };
|
|
@@ -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: {
|
|
@@ -12,6 +12,27 @@ import { CoverageAnalyzerService } from '../../../domains/coverage-analysis/serv
|
|
|
12
12
|
import { GapDetectorService } from '../../../domains/coverage-analysis/services/gap-detector.js';
|
|
13
13
|
import { findAndParseCoverage, parseCoverage, } from '../../../domains/coverage-analysis/services/coverage-parser.js';
|
|
14
14
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
15
|
+
import { requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
|
|
16
|
+
/**
|
|
17
|
+
* #1126: a caller-named coverage report must be a regular file inside the
|
|
18
|
+
* project (never /dev/zero or /proc/self/environ), and a target a directory
|
|
19
|
+
* inside it. Returns the real paths to read, or an error naming the refusal.
|
|
20
|
+
*/
|
|
21
|
+
async function confineCoverageInputs(tool, target, coverageFile) {
|
|
22
|
+
let confinedTarget = target;
|
|
23
|
+
if (target !== '.') {
|
|
24
|
+
const t = await requirePayloadPath(tool, 'target', target, { allowDirectory: true, allowMissing: true });
|
|
25
|
+
if (!t.success)
|
|
26
|
+
return { error: t.error.message };
|
|
27
|
+
confinedTarget = t.value;
|
|
28
|
+
}
|
|
29
|
+
if (coverageFile === undefined)
|
|
30
|
+
return { target: confinedTarget };
|
|
31
|
+
const f = await requirePayloadPath(tool, 'coverageFile', coverageFile);
|
|
32
|
+
if (!f.success)
|
|
33
|
+
return { error: f.error.message };
|
|
34
|
+
return { target: confinedTarget, coverageFile: f.value };
|
|
35
|
+
}
|
|
15
36
|
// ============================================================================
|
|
16
37
|
// Helper: Calculate Coverage Summary from Files
|
|
17
38
|
// ============================================================================
|
|
@@ -93,8 +114,12 @@ export class CoverageAnalyzeTool extends MCPToolBase {
|
|
|
93
114
|
return this.analyzerService;
|
|
94
115
|
}
|
|
95
116
|
async execute(params, context) {
|
|
96
|
-
const { target = '.', coverageFile, thresholds = { lines: 80, branches: 70, functions: 80, statements: 80 }, includeRisk = false, includeRiskScoring = false, dryRun = false, coverageFormat, language, } = params;
|
|
117
|
+
const { target: requestedTarget = '.', coverageFile: requestedCoverageFile, thresholds = { lines: 80, branches: 70, functions: 80, statements: 80 }, includeRisk = false, includeRiskScoring = false, dryRun = false, coverageFormat, language, } = params;
|
|
97
118
|
const shouldIncludeRisk = includeRisk || includeRiskScoring;
|
|
119
|
+
const confined = await confineCoverageInputs('qe/coverage/analyze', requestedTarget, requestedCoverageFile);
|
|
120
|
+
if ('error' in confined)
|
|
121
|
+
return { success: false, error: confined.error };
|
|
122
|
+
const { target, coverageFile } = confined;
|
|
98
123
|
try {
|
|
99
124
|
this.emitStream(context, {
|
|
100
125
|
status: 'analyzing',
|
|
@@ -309,7 +334,11 @@ export class CoverageGapsTool extends MCPToolBase {
|
|
|
309
334
|
return this.gapService;
|
|
310
335
|
}
|
|
311
336
|
async execute(params, context) {
|
|
312
|
-
const { target = '.', coverageFile, minRisk = 0.3, limit = 20, prioritization = 'complexity', coverageFormat, language, } = params;
|
|
337
|
+
const { target: requestedTarget = '.', coverageFile: requestedCoverageFile, minRisk = 0.3, limit = 20, prioritization = 'complexity', coverageFormat, language, } = params;
|
|
338
|
+
const confined = await confineCoverageInputs('qe/coverage/gaps', requestedTarget, requestedCoverageFile);
|
|
339
|
+
if ('error' in confined)
|
|
340
|
+
return { success: false, error: confined.error };
|
|
341
|
+
const { target, coverageFile } = confined;
|
|
313
342
|
try {
|
|
314
343
|
this.emitStream(context, {
|
|
315
344
|
status: 'detecting',
|
|
@@ -52,6 +52,8 @@ export interface DreamResultSummary {
|
|
|
52
52
|
nodesActivated: number;
|
|
53
53
|
};
|
|
54
54
|
patternsCreated: number;
|
|
55
|
+
/** #1060: how long the dream's single commit transaction held the write lock, in ms */
|
|
56
|
+
commitDurationMs?: number;
|
|
55
57
|
}
|
|
56
58
|
export interface InsightSummary {
|
|
57
59
|
id: string;
|
|
@@ -91,19 +93,17 @@ export interface DreamStatusResult {
|
|
|
91
93
|
export declare class DreamCycleTool extends MCPToolBase<DreamCycleParams, DreamCycleToolResult> {
|
|
92
94
|
readonly config: MCPToolConfig;
|
|
93
95
|
private engine;
|
|
94
|
-
|
|
96
|
+
/** #1060: the one in-flight engine creation, so concurrent calls share it. */
|
|
97
|
+
private enginePending;
|
|
95
98
|
/**
|
|
96
99
|
* Get or create the DreamEngine instance.
|
|
97
100
|
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
+
* #1060: one engine for the tool's lifetime. Duration and the minimum
|
|
102
|
+
* concept count are passed per call to dream(), so a call with different
|
|
103
|
+
* values no longer closes and recreates the engine (which interrupted a
|
|
104
|
+
* dream still running on it).
|
|
101
105
|
*/
|
|
102
106
|
private getEngine;
|
|
103
|
-
/**
|
|
104
|
-
* Compare two configs for equality (shallow comparison of relevant fields)
|
|
105
|
-
*/
|
|
106
|
-
private configsEqual;
|
|
107
107
|
/**
|
|
108
108
|
* Load patterns from ReasoningBank into the DreamEngine
|
|
109
109
|
*
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { MCPToolBase, getSharedMemoryBackend } from '../base.js';
|
|
15
15
|
import { createDreamEngine, } from '../../../learning/dream/index.js';
|
|
16
|
+
import { DreamAlreadyRunningError } from '../../../learning/dream/dream-engine.js';
|
|
16
17
|
import { createQEReasoningBank } from '../../../learning/qe-reasoning-bank.js';
|
|
17
18
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
18
19
|
// ============================================================================
|
|
@@ -66,39 +67,37 @@ export class DreamCycleTool extends MCPToolBase {
|
|
|
66
67
|
timeout: 120000, // 2 minutes max (dream cycle + overhead)
|
|
67
68
|
};
|
|
68
69
|
engine = null;
|
|
69
|
-
|
|
70
|
+
/** #1060: the one in-flight engine creation, so concurrent calls share it. */
|
|
71
|
+
enginePending = null;
|
|
70
72
|
/**
|
|
71
73
|
* Get or create the DreamEngine instance.
|
|
72
74
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
75
|
+
* #1060: one engine for the tool's lifetime. Duration and the minimum
|
|
76
|
+
* concept count are passed per call to dream(), so a call with different
|
|
77
|
+
* values no longer closes and recreates the engine (which interrupted a
|
|
78
|
+
* dream still running on it).
|
|
76
79
|
*/
|
|
77
|
-
async getEngine(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
80
|
+
async getEngine() {
|
|
81
|
+
if (this.engine)
|
|
82
|
+
return this.engine;
|
|
83
|
+
if (!this.enginePending) {
|
|
84
|
+
const create = async () => {
|
|
85
|
+
const engine = createDreamEngine();
|
|
86
|
+
await engine.initialize();
|
|
87
|
+
// A reset while initializing dropped this engine; don't resurrect it.
|
|
88
|
+
if (this.enginePending === pending)
|
|
89
|
+
this.engine = engine;
|
|
90
|
+
else
|
|
91
|
+
engine.close().catch(() => { });
|
|
92
|
+
return engine;
|
|
93
|
+
};
|
|
94
|
+
const pending = create();
|
|
95
|
+
this.enginePending = pending;
|
|
96
|
+
const settle = () => { if (this.enginePending === pending)
|
|
97
|
+
this.enginePending = null; };
|
|
98
|
+
pending.then(settle, settle);
|
|
89
99
|
}
|
|
90
|
-
return this.
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Compare two configs for equality (shallow comparison of relevant fields)
|
|
94
|
-
*/
|
|
95
|
-
configsEqual(a, b) {
|
|
96
|
-
if (a === b)
|
|
97
|
-
return true;
|
|
98
|
-
if (!a || !b)
|
|
99
|
-
return false;
|
|
100
|
-
return (a.maxDurationMs === b.maxDurationMs &&
|
|
101
|
-
a.minConceptsRequired === b.minConceptsRequired);
|
|
100
|
+
return this.enginePending;
|
|
102
101
|
}
|
|
103
102
|
/**
|
|
104
103
|
* Load patterns from ReasoningBank into the DreamEngine
|
|
@@ -142,7 +141,8 @@ export class DreamCycleTool extends MCPToolBase {
|
|
|
142
141
|
domain: result.pattern.qeDomain || 'learning-optimization',
|
|
143
142
|
patternType: result.pattern.patternType,
|
|
144
143
|
confidence: result.pattern.confidence,
|
|
145
|
-
|
|
144
|
+
// A real 0% stays 0%; a pattern never used has no rate (#1142 review).
|
|
145
|
+
successRate: result.pattern.usageCount > 0 ? result.pattern.successRate : undefined,
|
|
146
146
|
}));
|
|
147
147
|
const loaded = await engine.loadPatternsAsConcepts(importPatterns);
|
|
148
148
|
this.logger.info(`Loaded ${loaded} patterns as concepts from ReasoningBank`);
|
|
@@ -195,17 +195,19 @@ export class DreamCycleTool extends MCPToolBase {
|
|
|
195
195
|
const minPatterns = params.minPatterns || 10;
|
|
196
196
|
const loadFromRB = params.loadFromReasoningBank !== false;
|
|
197
197
|
this.logger.info(`Starting dream cycle (${durationMs}ms, min: ${minPatterns} patterns)`);
|
|
198
|
-
const engine = await this.getEngine(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
198
|
+
const engine = await this.getEngine();
|
|
199
|
+
// #1060: a concurrent dream is refused with a clear error, not queued.
|
|
200
|
+
const running = engine.getCurrentCycle();
|
|
201
|
+
if (running) {
|
|
202
|
+
throw new DreamAlreadyRunningError(running.id);
|
|
203
|
+
}
|
|
202
204
|
// Load patterns from ReasoningBank if requested
|
|
203
205
|
if (loadFromRB) {
|
|
204
206
|
const loaded = await this.loadPatternsFromReasoningBank(engine);
|
|
205
207
|
this.logger.info(`Loaded ${loaded} patterns from ReasoningBank`);
|
|
206
208
|
}
|
|
207
209
|
// Run the dream cycle
|
|
208
|
-
const result = await engine.dream(durationMs);
|
|
210
|
+
const result = await engine.dream(durationMs, { minConceptsRequired: minPatterns });
|
|
209
211
|
const dreamResult = {
|
|
210
212
|
cycleId: result.cycle.id,
|
|
211
213
|
status: result.cycle.status,
|
|
@@ -215,6 +217,7 @@ export class DreamCycleTool extends MCPToolBase {
|
|
|
215
217
|
insightsGenerated: result.cycle.insightsGenerated,
|
|
216
218
|
activationStats: result.activationStats,
|
|
217
219
|
patternsCreated: result.patternsCreated,
|
|
220
|
+
commitDurationMs: result.commitDurationMs,
|
|
218
221
|
};
|
|
219
222
|
const insights = result.insights.map((i) => ({
|
|
220
223
|
id: i.id,
|
|
@@ -392,6 +395,7 @@ export class DreamCycleTool extends MCPToolBase {
|
|
|
392
395
|
* Reset instance cache (for fleet dispose)
|
|
393
396
|
*/
|
|
394
397
|
resetInstanceCache() {
|
|
398
|
+
this.enginePending = null;
|
|
395
399
|
if (this.engine) {
|
|
396
400
|
this.engine.close().catch(console.error);
|
|
397
401
|
this.engine = null;
|
|
@@ -44,6 +44,8 @@ export interface LearnResult {
|
|
|
44
44
|
measuredExperiences?: number;
|
|
45
45
|
/** #1109: experiences recorded with an assigned reward, excluded from every rate. */
|
|
46
46
|
assignedRewardsExcluded?: number;
|
|
47
|
+
/** #1121: requested experience IDs with no stored experience; not processed. */
|
|
48
|
+
experienceIdsNotFound?: number;
|
|
47
49
|
evidenceStatus?: 'insufficient-evidence';
|
|
48
50
|
patternsLearned: number;
|
|
49
51
|
newPatterns: LearnedPattern[];
|
|
@@ -103,8 +105,14 @@ export interface PatternResult {
|
|
|
103
105
|
byType: Record<string, number>;
|
|
104
106
|
byDomain: Record<string, number>;
|
|
105
107
|
topPatterns: LearnedPattern[];
|
|
106
|
-
|
|
107
|
-
|
|
108
|
+
/** Null when no pattern has a measured rate (#1121); not a 0 that reads as measured. */
|
|
109
|
+
avgConfidence: number | null;
|
|
110
|
+
avgSuccessRate: number | null;
|
|
111
|
+
/** #1109: patterns learned from assigned rewards, left out of every figure. */
|
|
112
|
+
assignedPatternsExcluded?: number;
|
|
113
|
+
/** #1121: untagged patterns mined before #1120, left out of every figure. */
|
|
114
|
+
legacyPatternsExcluded?: number;
|
|
115
|
+
evidenceStatus?: 'insufficient-evidence';
|
|
108
116
|
/** Read-only persisted SONA visibility when an initialized fleet is available. */
|
|
109
117
|
sona?: SONASnapshot;
|
|
110
118
|
}
|
|
@@ -118,6 +126,8 @@ export interface DashboardResult {
|
|
|
118
126
|
assignedRewardsExcluded?: number;
|
|
119
127
|
/** #1109: stored patterns excluded because they were learned from assigned rewards. */
|
|
120
128
|
assignedPatternsExcluded?: number;
|
|
129
|
+
/** #1121: untagged patterns mined before #1120 (rate selected over successes), excluded likewise. */
|
|
130
|
+
legacyPatternsExcluded?: number;
|
|
121
131
|
/** Ranked by measured success rate; empty when no domain has a measured outcome. */
|
|
122
132
|
topPerformingDomains: DomainName[];
|
|
123
133
|
evidenceStatus?: 'insufficient-evidence';
|
|
@@ -150,6 +160,12 @@ export declare class LearningOptimizeTool extends MCPToolBase<LearningOptimizePa
|
|
|
150
160
|
private getServices;
|
|
151
161
|
execute(params: LearningOptimizeParams, context: MCPToolContext): Promise<ToolResult<LearningOptimizeResult>>;
|
|
152
162
|
private executeLearn;
|
|
163
|
+
/**
|
|
164
|
+
* #1121: learn from explicitly requested experiences. experiencesProcessed
|
|
165
|
+
* is the number actually read; IDs with no stored experience are counted in
|
|
166
|
+
* experienceIdsNotFound instead of being reported as processed.
|
|
167
|
+
*/
|
|
168
|
+
private learnFromExperienceIds;
|
|
153
169
|
/**
|
|
154
170
|
* Return demo learn results when no real data available.
|
|
155
171
|
* Only used when demoMode is explicitly requested or as fallback with warning.
|
|
@@ -80,6 +80,9 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
80
80
|
break;
|
|
81
81
|
case 'patterns':
|
|
82
82
|
result.patternResult = await this.executePatterns(domain, context);
|
|
83
|
+
if (result.patternResult.evidenceStatus === 'insufficient-evidence') {
|
|
84
|
+
result.evidenceStatus = 'insufficient-evidence';
|
|
85
|
+
}
|
|
83
86
|
break;
|
|
84
87
|
case 'dashboard':
|
|
85
88
|
result.dashboardResult = await this.executeDashboard(context);
|
|
@@ -116,7 +119,11 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
116
119
|
status: 'learning',
|
|
117
120
|
message: `Learning from ${experienceIds?.length || 'recent'} experiences`,
|
|
118
121
|
});
|
|
119
|
-
//
|
|
122
|
+
// #1121: learn from the requested experiences; count only those read.
|
|
123
|
+
if (experienceIds && experienceIds.length > 0) {
|
|
124
|
+
return this.learnFromExperienceIds(learningCoordinator, experienceIds);
|
|
125
|
+
}
|
|
126
|
+
// Mine recent experiences
|
|
120
127
|
const timeRange = TimeRange.lastNDays(7);
|
|
121
128
|
const mineResult = await learningCoordinator.mineExperiences(targetDomain, timeRange);
|
|
122
129
|
const newPatterns = [];
|
|
@@ -143,10 +150,6 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
143
150
|
});
|
|
144
151
|
}
|
|
145
152
|
}
|
|
146
|
-
// If specific experience IDs provided, record them
|
|
147
|
-
if (experienceIds && experienceIds.length > 0) {
|
|
148
|
-
experiencesProcessed = experienceIds.length;
|
|
149
|
-
}
|
|
150
153
|
// If no patterns were learned, return empty result (not fake data)
|
|
151
154
|
// This is a valid state - no patterns discovered yet
|
|
152
155
|
// #1109: there is no recorded baseline, so improvement is never computed
|
|
@@ -161,6 +164,42 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
161
164
|
unmeasured: ['improvement'],
|
|
162
165
|
};
|
|
163
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* #1121: learn from explicitly requested experiences. experiencesProcessed
|
|
169
|
+
* is the number actually read; IDs with no stored experience are counted in
|
|
170
|
+
* experienceIdsNotFound instead of being reported as processed.
|
|
171
|
+
*/
|
|
172
|
+
async learnFromExperienceIds(learningCoordinator, experienceIds) {
|
|
173
|
+
const readResult = await learningCoordinator.getExperiencesByIds(experienceIds);
|
|
174
|
+
if (!readResult.success)
|
|
175
|
+
throw readResult.error;
|
|
176
|
+
const read = readResult.value;
|
|
177
|
+
const { measured, assignedExcluded } = partitionByRewardSource(read);
|
|
178
|
+
const learned = measured.length > 0 ? await learningCoordinator.learnPattern(read) : null;
|
|
179
|
+
const newPatterns = learned?.success
|
|
180
|
+
? [{
|
|
181
|
+
id: learned.value.id,
|
|
182
|
+
type: learned.value.type,
|
|
183
|
+
name: learned.value.name,
|
|
184
|
+
description: learned.value.description,
|
|
185
|
+
confidence: learned.value.confidence,
|
|
186
|
+
usageCount: learned.value.usageCount,
|
|
187
|
+
successRate: learned.value.successRate,
|
|
188
|
+
}]
|
|
189
|
+
: [];
|
|
190
|
+
this.markAsRealData();
|
|
191
|
+
return {
|
|
192
|
+
experiencesProcessed: read.length,
|
|
193
|
+
experienceIdsNotFound: new Set(experienceIds).size - read.length,
|
|
194
|
+
measuredExperiences: measured.length,
|
|
195
|
+
assignedRewardsExcluded: assignedExcluded,
|
|
196
|
+
...(measured.length === 0 ? { evidenceStatus: 'insufficient-evidence' } : {}),
|
|
197
|
+
patternsLearned: newPatterns.length,
|
|
198
|
+
newPatterns,
|
|
199
|
+
improvement: null,
|
|
200
|
+
unmeasured: ['improvement'],
|
|
201
|
+
};
|
|
202
|
+
}
|
|
164
203
|
/**
|
|
165
204
|
* Return demo learn results when no real data available.
|
|
166
205
|
* Only used when demoMode is explicitly requested or as fallback with warning.
|
|
@@ -279,6 +318,7 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
279
318
|
// Not enough data - recommend default strategy
|
|
280
319
|
const contextForRecommendation = {
|
|
281
320
|
tags: [targetDomain, objective.metric],
|
|
321
|
+
objective: { metric: objective.metric, direction: objective.direction },
|
|
282
322
|
};
|
|
283
323
|
const recommendResult = await metricsOptimizer.recommendStrategy(contextForRecommendation);
|
|
284
324
|
if (!recommendResult.success)
|
|
@@ -323,7 +363,6 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
323
363
|
let sourcePatterns = 0;
|
|
324
364
|
let transferredPatterns = 0;
|
|
325
365
|
let adaptedPatterns = 0;
|
|
326
|
-
let totalRelevance = 0;
|
|
327
366
|
if (queryResult.success) {
|
|
328
367
|
sourcePatterns = queryResult.value.length;
|
|
329
368
|
// Transfer each piece of knowledge to target domain
|
|
@@ -331,7 +370,6 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
331
370
|
const transferResult = await transferSpecialist.transferKnowledge(knowledge, targetDomain);
|
|
332
371
|
if (transferResult.success) {
|
|
333
372
|
transferredPatterns++;
|
|
334
|
-
totalRelevance += transferResult.value.relevanceScore;
|
|
335
373
|
// Count as adapted if relevance changed significantly
|
|
336
374
|
if (Math.abs(transferResult.value.relevanceScore - knowledge.relevanceScore) > 0.1) {
|
|
337
375
|
adaptedPatterns++;
|
|
@@ -360,14 +398,15 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
360
398
|
// Get pattern statistics from the real service
|
|
361
399
|
const statsResult = await learningCoordinator.getPatternStats(domain);
|
|
362
400
|
if (!statsResult.success) {
|
|
363
|
-
//
|
|
401
|
+
// Stats could not be read: nothing is measured, so no averages (#1121).
|
|
364
402
|
return {
|
|
365
403
|
totalPatterns: 0,
|
|
366
404
|
byType: {},
|
|
367
405
|
byDomain: {},
|
|
368
406
|
topPatterns: [],
|
|
369
|
-
avgConfidence:
|
|
370
|
-
avgSuccessRate:
|
|
407
|
+
avgConfidence: null,
|
|
408
|
+
avgSuccessRate: null,
|
|
409
|
+
evidenceStatus: 'insufficient-evidence',
|
|
371
410
|
sona,
|
|
372
411
|
};
|
|
373
412
|
}
|
|
@@ -382,13 +421,17 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
382
421
|
usageCount: p.usageCount,
|
|
383
422
|
successRate: p.successRate,
|
|
384
423
|
}));
|
|
424
|
+
const measured = stats.totalPatterns > 0;
|
|
385
425
|
return {
|
|
386
426
|
totalPatterns: stats.totalPatterns,
|
|
387
427
|
byType: stats.byType,
|
|
388
428
|
byDomain: stats.byDomain,
|
|
389
429
|
topPatterns,
|
|
390
|
-
avgConfidence: stats.avgConfidence,
|
|
391
|
-
avgSuccessRate: stats.avgSuccessRate,
|
|
430
|
+
avgConfidence: measured ? stats.avgConfidence : null,
|
|
431
|
+
avgSuccessRate: measured ? stats.avgSuccessRate : null,
|
|
432
|
+
...(stats.assignedPatternsExcluded ? { assignedPatternsExcluded: stats.assignedPatternsExcluded } : {}),
|
|
433
|
+
...(stats.legacyPatternsExcluded ? { legacyPatternsExcluded: stats.legacyPatternsExcluded } : {}),
|
|
434
|
+
...(measured ? {} : { evidenceStatus: 'insufficient-evidence' }),
|
|
392
435
|
sona,
|
|
393
436
|
};
|
|
394
437
|
}
|
|
@@ -438,6 +481,9 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
438
481
|
const assignedPatternsExcluded = statsResult.success
|
|
439
482
|
? statsResult.value.assignedPatternsExcluded ?? 0
|
|
440
483
|
: 0;
|
|
484
|
+
const legacyPatternsExcluded = statsResult.success
|
|
485
|
+
? statsResult.value.legacyPatternsExcluded ?? 0
|
|
486
|
+
: 0;
|
|
441
487
|
const avgSuccessRate = totalPatterns > 0 && statsResult.success
|
|
442
488
|
? statsResult.value.avgSuccessRate
|
|
443
489
|
: null;
|
|
@@ -491,6 +537,7 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
491
537
|
experiencesLast24h,
|
|
492
538
|
...(assignedRewardsExcluded > 0 ? { assignedRewardsExcluded } : {}),
|
|
493
539
|
...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
|
|
540
|
+
...(legacyPatternsExcluded > 0 ? { legacyPatternsExcluded } : {}),
|
|
494
541
|
topPerformingDomains,
|
|
495
542
|
...(unmeasured.length > 0
|
|
496
543
|
? { evidenceStatus: 'insufficient-evidence', unmeasured }
|