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
|
@@ -397,6 +397,17 @@ export async function handleFleetHealth(params) {
|
|
|
397
397
|
domain: issue.domain,
|
|
398
398
|
timestamp: issue.timestamp.toISOString(),
|
|
399
399
|
}));
|
|
400
|
+
// #1130: the raw MinCut and the fleet reading that decides `status`.
|
|
401
|
+
const minCut = health.minCut;
|
|
402
|
+
if (minCut) {
|
|
403
|
+
result.minCut = {
|
|
404
|
+
status: minCut.status,
|
|
405
|
+
minCutValue: minCut.minCutValue,
|
|
406
|
+
fleetStatus: minCut.fleetStatus,
|
|
407
|
+
fleetMinCutValue: minCut.fleetMinCutValue,
|
|
408
|
+
taskAgents: minCut.taskAgents,
|
|
409
|
+
};
|
|
410
|
+
}
|
|
400
411
|
}
|
|
401
412
|
// Enrich with structural health (mincut-lambda) if available
|
|
402
413
|
try {
|
|
@@ -21,6 +21,8 @@ export interface TestExecuteResult {
|
|
|
21
21
|
total: number;
|
|
22
22
|
passed: number;
|
|
23
23
|
failed: number;
|
|
24
|
+
/** #1170: tests that failed and then passed on a retry; counted in `passed`. */
|
|
25
|
+
flaky?: number;
|
|
24
26
|
duration: number;
|
|
25
27
|
/** Measured line coverage of the run, or null when none was collected (#1027 N5). */
|
|
26
28
|
coverage?: number | null;
|
|
@@ -177,6 +179,11 @@ export interface DefectPredictParams {
|
|
|
177
179
|
saveResults?: boolean;
|
|
178
180
|
}
|
|
179
181
|
export interface DefectPredictResult {
|
|
182
|
+
filesAnalyzed?: number;
|
|
183
|
+
filesSkipped?: number;
|
|
184
|
+
scanStatus?: 'partial' | 'complete';
|
|
185
|
+
predictionMethod?: 'static-code-indicators';
|
|
186
|
+
estimated?: boolean;
|
|
180
187
|
taskId: string;
|
|
181
188
|
status: string;
|
|
182
189
|
predictedDefects: Array<{
|
|
@@ -15,6 +15,7 @@ import { buildRiskDecisionFromQualityGate, validateRiskDecision, } from '../../c
|
|
|
15
15
|
import { INSUFFICIENT_EVIDENCE, } from '../../domains/quality-assessment/quality-evidence.js';
|
|
16
16
|
import { validateRequestedMetrics, } from '../../domains/quality-assessment/evidence-sufficiency.js';
|
|
17
17
|
import { validateBehaviorExamples } from '../../domains/test-generation/services/behavior-example-validation.js';
|
|
18
|
+
import { DEFAULT_TEST_RETRY_COUNT } from '../../domains/test-execution/services/retry-outcome.js';
|
|
18
19
|
const SUPPORTED_LANGUAGES = Object.keys(DEFAULT_FRAMEWORKS);
|
|
19
20
|
/**
|
|
20
21
|
* Normalize a language string from MCP input. Returns the canonical
|
|
@@ -67,7 +68,7 @@ export const testGenerateConfig = {
|
|
|
67
68
|
let framework;
|
|
68
69
|
if (params.framework) {
|
|
69
70
|
framework = params.framework;
|
|
70
|
-
const fwLang = FRAMEWORK_TO_LANGUAGE[framework];
|
|
71
|
+
const fwLang = Object.hasOwn(FRAMEWORK_TO_LANGUAGE, framework) ? FRAMEWORK_TO_LANGUAGE[framework] : undefined; // #1157
|
|
71
72
|
if (fwLang && fwLang !== language) {
|
|
72
73
|
// typescript<->javascript is a soft compatibility — JS frameworks
|
|
73
74
|
// can target both. Treat as same family.
|
|
@@ -190,7 +191,8 @@ export const testExecuteConfig = {
|
|
|
190
191
|
testSuites: params.testSuites || [],
|
|
191
192
|
parallel: params.parallel !== false,
|
|
192
193
|
parallelism: params.parallelism || 4,
|
|
193
|
-
|
|
194
|
+
// #1170: the same default as `aqe test execute`.
|
|
195
|
+
retryCount: params.retryCount ?? DEFAULT_TEST_RETRY_COUNT,
|
|
194
196
|
timeout: params.timeout || 60000,
|
|
195
197
|
collectCoverage: params.collectCoverage || false,
|
|
196
198
|
reportFormat: params.reportFormat || 'json',
|
|
@@ -203,6 +205,8 @@ export const testExecuteConfig = {
|
|
|
203
205
|
const total = data.total || 0;
|
|
204
206
|
const passed = data.passed || 0;
|
|
205
207
|
const failed = data.failed || 0;
|
|
208
|
+
// #1170: tests that passed on a retry; already counted in `passed`.
|
|
209
|
+
const flaky = typeof data.flaky === 'number' && data.flaky > 0 ? data.flaky : undefined;
|
|
206
210
|
// #1027 N5: no measured coverage → null, never a hardcoded 0.
|
|
207
211
|
const coverage = typeof data.coverage === 'number' && Number.isFinite(data.coverage) ? data.coverage : null;
|
|
208
212
|
// #1110: report only what was measured. A figure with no measurement is
|
|
@@ -254,12 +258,15 @@ export const testExecuteConfig = {
|
|
|
254
258
|
workerStats.loadBalance = loadBalance;
|
|
255
259
|
else
|
|
256
260
|
markUnmeasured('workerStats.loadBalance', noWorkerData);
|
|
261
|
+
// #1130: retryStats is this run's retry outcome as the domain measured
|
|
262
|
+
// it, in one shape. The metrics collector's retry counters cover every
|
|
263
|
+
// task in the process, not this run, so they are not reported here.
|
|
257
264
|
let retryStats;
|
|
258
|
-
if (
|
|
259
|
-
retryStats = { ...
|
|
265
|
+
if (data.retries && typeof data.retries === 'object') {
|
|
266
|
+
retryStats = { ...data.retries };
|
|
260
267
|
}
|
|
261
268
|
else {
|
|
262
|
-
markUnmeasured('retryStats',
|
|
269
|
+
markUnmeasured('retryStats', 'The run reported no retry outcome: no retries were requested, or the retry step failed.');
|
|
263
270
|
}
|
|
264
271
|
// No `learning` block: the run's experience is recorded asynchronously by
|
|
265
272
|
// the learning-optimization plugin from TestRunCompleted, so this response
|
|
@@ -272,6 +279,7 @@ export const testExecuteConfig = {
|
|
|
272
279
|
summary: {
|
|
273
280
|
totalTests: total,
|
|
274
281
|
passRate: total > 0 ? (passed / total) * 100 : 0,
|
|
282
|
+
...(flaky !== undefined ? { flaky } : {}),
|
|
275
283
|
...(avgTestDuration !== undefined ? { avgDuration: avgTestDuration } : {}),
|
|
276
284
|
...(efficiency !== null ? { parallelEfficiency: efficiency } : {}),
|
|
277
285
|
},
|
|
@@ -282,6 +290,7 @@ export const testExecuteConfig = {
|
|
|
282
290
|
total,
|
|
283
291
|
passed,
|
|
284
292
|
failed,
|
|
293
|
+
...(flaky !== undefined ? { flaky } : {}),
|
|
285
294
|
duration,
|
|
286
295
|
coverage,
|
|
287
296
|
savedFiles,
|
|
@@ -735,6 +744,11 @@ export const defectPredictConfig = {
|
|
|
735
744
|
mapToResult: (taskId, data, duration, savedFiles) => ({
|
|
736
745
|
taskId,
|
|
737
746
|
status: 'completed',
|
|
747
|
+
...(data.predictionMethod === 'static-code-indicators' ? {
|
|
748
|
+
predictionMethod: 'static-code-indicators', estimated: true,
|
|
749
|
+
filesAnalyzed: data.filesAnalyzed, filesSkipped: data.filesSkipped,
|
|
750
|
+
scanStatus: data.scanStatus,
|
|
751
|
+
} : {}),
|
|
738
752
|
predictedDefects: data.predictedDefects || [],
|
|
739
753
|
riskScore: data.riskScore || 0,
|
|
740
754
|
recommendations: data.recommendations || [],
|
|
@@ -14,6 +14,7 @@ import { ToolResult } from '../types';
|
|
|
14
14
|
import { DomainTaskExecutor } from '../../coordination/task-executor';
|
|
15
15
|
import { type TaskRoutingResult } from '../services/task-router';
|
|
16
16
|
import { Priority } from '../../shared/types';
|
|
17
|
+
import { type ToolOutcome } from '../../learning/usage-outcome.js';
|
|
17
18
|
/**
|
|
18
19
|
* Domain name type for handler configuration
|
|
19
20
|
*/
|
|
@@ -82,7 +83,7 @@ export declare function generateV2LearningFeedback(agentType: string): V2Learnin
|
|
|
82
83
|
*
|
|
83
84
|
* Fire-and-forget safe: callers can await or ignore the returned promise.
|
|
84
85
|
*/
|
|
85
|
-
export declare function captureExecutionLearning(agentType: string, toolName: string, params: Record<string, unknown>, result: unknown, durationMs: number): Promise<V2LearningFeedback>;
|
|
86
|
+
export declare function captureExecutionLearning(agentType: string, toolName: string, params: Record<string, unknown>, result: unknown, durationMs: number, outcome?: ToolOutcome, runId?: string): Promise<V2LearningFeedback>;
|
|
86
87
|
/**
|
|
87
88
|
* V2-compatible complexity analysis
|
|
88
89
|
*/
|
|
@@ -18,6 +18,8 @@ import { isCallerInputError, toErrorMessage } from '../../shared/error-utils.js'
|
|
|
18
18
|
import { describeSavedResults, readSaveResultsOption } from './save-results-option.js';
|
|
19
19
|
import { createInitializedFeedbackLoop, getQualityFeedbackLoop } from '../../feedback/feedback-loop.js';
|
|
20
20
|
import { isLearnableResult } from '../../learning/learnable-result.js';
|
|
21
|
+
import { measureToolOutcome, usageOutcomeMetrics, } from '../../learning/usage-outcome.js';
|
|
22
|
+
import { redactLogText } from '../../logging/redaction.js';
|
|
21
23
|
// ============================================================================
|
|
22
24
|
// Shared Utilities (exported for response mappers)
|
|
23
25
|
// ============================================================================
|
|
@@ -50,7 +52,7 @@ export function generateV2LearningFeedback(agentType) {
|
|
|
50
52
|
*
|
|
51
53
|
* Fire-and-forget safe: callers can await or ignore the returned promise.
|
|
52
54
|
*/
|
|
53
|
-
export async function captureExecutionLearning(agentType, toolName, params, result, durationMs) {
|
|
55
|
+
export async function captureExecutionLearning(agentType, toolName, params, result, durationMs, outcome = measureToolOutcome(toolName, result), runId) {
|
|
54
56
|
const agentId = generateAgentId(agentType);
|
|
55
57
|
try {
|
|
56
58
|
const { kernel } = getFleetState();
|
|
@@ -75,16 +77,24 @@ export async function captureExecutionLearning(agentType, toolName, params, resu
|
|
|
75
77
|
metadata: {
|
|
76
78
|
tool: toolName,
|
|
77
79
|
durationMs,
|
|
80
|
+
// #1129: rows from one run share it, so the rate counts runs.
|
|
81
|
+
...(runId ? { runId } : {}),
|
|
78
82
|
},
|
|
79
83
|
});
|
|
84
|
+
// #1129: success is the outcome read from the result (tests passed,
|
|
85
|
+
// files indexed). When the result has no such measure, the experience is
|
|
86
|
+
// kept but its pattern usage is tagged unmeasured, not counted a success.
|
|
87
|
+
const success = outcome.measured ? outcome.success === true : true;
|
|
88
|
+
const quality = success ? 0.7 : 0.3;
|
|
80
89
|
captureService.recordStep(experienceId, {
|
|
81
90
|
action: `execute-${toolName}`,
|
|
82
91
|
result: typeof result === 'object' ? JSON.stringify(result).slice(0, 500) : String(result).slice(0, 500),
|
|
83
|
-
quality
|
|
92
|
+
quality,
|
|
84
93
|
});
|
|
85
94
|
const captureResult = await captureService.completeCapture(experienceId, {
|
|
86
|
-
success
|
|
87
|
-
quality
|
|
95
|
+
success,
|
|
96
|
+
quality,
|
|
97
|
+
...(outcome.measured ? { outcomeBasis: outcome.basis } : {}),
|
|
88
98
|
});
|
|
89
99
|
if (captureResult.success) {
|
|
90
100
|
const experience = captureResult.value;
|
|
@@ -538,12 +548,16 @@ export function resetLearningEngine() {
|
|
|
538
548
|
* Non-critical — fire-and-forget, must not break handler execution.
|
|
539
549
|
* Uses only the already-cached engine to avoid heavy lazy initialization.
|
|
540
550
|
*/
|
|
541
|
-
async function recordPatternUsageAsync(patternHints,
|
|
551
|
+
async function recordPatternUsageAsync(patternHints, outcome, domain, durationMs, runId) {
|
|
542
552
|
if (!patternHints || patternHints.length === 0)
|
|
543
553
|
return;
|
|
554
|
+
// #1129: a completed call is not evidence the hinted pattern worked.
|
|
555
|
+
if (!outcome.measured)
|
|
556
|
+
return;
|
|
544
557
|
// Only use engine if already cached — don't trigger heavy init just for recording
|
|
545
558
|
if (!cachedLearningEngine)
|
|
546
559
|
return;
|
|
560
|
+
const success = outcome.success === true;
|
|
547
561
|
try {
|
|
548
562
|
for (const hint of patternHints) {
|
|
549
563
|
if (!hint.patternId)
|
|
@@ -553,8 +567,9 @@ async function recordPatternUsageAsync(patternHints, success, domain, durationMs
|
|
|
553
567
|
success,
|
|
554
568
|
metrics: {
|
|
555
569
|
executionTimeMs: durationMs,
|
|
570
|
+
...usageOutcomeMetrics(outcome, runId),
|
|
556
571
|
},
|
|
557
|
-
feedback: `Domain handler ${domain}
|
|
572
|
+
feedback: `Domain handler ${domain} outcome ${success ? 'succeeded' : 'failed'} (${outcome.basis})`,
|
|
558
573
|
});
|
|
559
574
|
}
|
|
560
575
|
}
|
|
@@ -646,9 +661,14 @@ export function createDomainHandler(config) {
|
|
|
646
661
|
}
|
|
647
662
|
const result = await executor.execute(task.task);
|
|
648
663
|
if (!result.success) {
|
|
664
|
+
// #1129: a task that errored produced no result to read an outcome
|
|
665
|
+
// from. Its error may be the caller's input (an empty or glob test
|
|
666
|
+
// list, a missing target) or the environment, so it is not recorded
|
|
667
|
+
// as a measured failure; routing_outcomes still records the failure.
|
|
668
|
+
// #1122: a domain error can quote runner output; strip credentials.
|
|
649
669
|
return {
|
|
650
670
|
success: false,
|
|
651
|
-
error: result.error
|
|
671
|
+
error: result.error ? redactLogText(result.error, Number.POSITIVE_INFINITY) : 'Task execution failed',
|
|
652
672
|
// #996: structured failure context (e.g. status + unmeasured metrics),
|
|
653
673
|
// only when the failing handler provided it. success stays false.
|
|
654
674
|
...(result.errorDetails ? { data: result.errorDetails } : {}),
|
|
@@ -664,10 +684,13 @@ export function createDomainHandler(config) {
|
|
|
664
684
|
// but is not recorded as successful learning anywhere below.
|
|
665
685
|
const learnable = isLearnableResult(domain, data) && isLearnableResult('', mappedResult);
|
|
666
686
|
if (learnable) {
|
|
667
|
-
//
|
|
668
|
-
|
|
687
|
+
// #1129: the outcome comes from the result the caller sees (tests
|
|
688
|
+
// passed, files indexed), not from the call having completed.
|
|
689
|
+
const outcome = measureToolOutcome(taskType, mappedResult);
|
|
690
|
+
// Step 5b: Record pattern usage (Phase 5.3 — fire-and-forget)
|
|
691
|
+
recordPatternUsageAsync(routingResult?.patternHints, outcome, domain, result.duration, submitResult.value);
|
|
669
692
|
// Step 5c: Capture real execution learning (fire-and-forget)
|
|
670
|
-
captureExecutionLearning(`qe-${domain}`, taskType, params, data, result.duration).catch(() => { }); // Swallow errors — learning is non-critical
|
|
693
|
+
captureExecutionLearning(`qe-${domain}`, taskType, params, data, result.duration, outcome, submitResult.value).catch(() => { }); // Swallow errors — learning is non-critical
|
|
671
694
|
// Step 5d: Record feedback for test_outcomes / coverage_sessions
|
|
672
695
|
try {
|
|
673
696
|
await recordDomainFeedback(domain, data, result.duration, params);
|
|
@@ -689,13 +712,11 @@ export function createDomainHandler(config) {
|
|
|
689
712
|
// failure: it is marked for the experience middleware and not recorded
|
|
690
713
|
// as a pattern-usage failure.
|
|
691
714
|
const callerError = isCallerInputError(error);
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
recordPatternUsageAsync(routingResult?.patternHints, false, domain, 0);
|
|
695
|
-
}
|
|
715
|
+
// #1129: a thrown error is not a measured outcome (see the failed-task
|
|
716
|
+
// branch above), so no pattern usage is recorded for it.
|
|
696
717
|
return {
|
|
697
718
|
success: false,
|
|
698
|
-
error: `Failed to ${taskType.replace(/-/g, ' ')}: ${errorMessage}`,
|
|
719
|
+
error: redactLogText(`Failed to ${taskType.replace(/-/g, ' ')}: ${errorMessage}`, Number.POSITIVE_INFINITY),
|
|
699
720
|
...(callerError ? { data: { callerError: true } } : {}),
|
|
700
721
|
};
|
|
701
722
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - task_orchestrate routes for inferred task types (#1125)
|
|
3
|
+
*
|
|
4
|
+
* task_orchestrate infers an abstract task type from a free-text description.
|
|
5
|
+
* Several of those types have no domain handler of their own; the domain runs
|
|
6
|
+
* a concrete handler type with its own payload instead. Each inferred type
|
|
7
|
+
* either maps to that handler with a payload built only from what the caller
|
|
8
|
+
* supplied, or is refused with the input it needs. A payload is never filled
|
|
9
|
+
* with values the request did not contain.
|
|
10
|
+
*/
|
|
11
|
+
import type { TaskType } from '../../coordination/queen-types.js';
|
|
12
|
+
import type { DomainName } from '../../shared/types/index.js';
|
|
13
|
+
export interface OrchestrateRequest {
|
|
14
|
+
task: string;
|
|
15
|
+
filePaths?: string[];
|
|
16
|
+
}
|
|
17
|
+
export type OrchestrateRoute =
|
|
18
|
+
/** Submit `type` to `domain` with `payload`. */
|
|
19
|
+
{
|
|
20
|
+
kind: 'route';
|
|
21
|
+
type: string;
|
|
22
|
+
domain: DomainName;
|
|
23
|
+
payload: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
/** The request lacks what the handler needs; `error` says what to supply. */
|
|
26
|
+
| {
|
|
27
|
+
kind: 'needs-input';
|
|
28
|
+
error: string;
|
|
29
|
+
}
|
|
30
|
+
/** The inferred type has its own handler; submit it as before. */
|
|
31
|
+
| {
|
|
32
|
+
kind: 'as-inferred';
|
|
33
|
+
};
|
|
34
|
+
/** Decide how task_orchestrate runs an inferred task type. */
|
|
35
|
+
export declare function routeInferredTask(type: TaskType, request: OrchestrateRequest): Promise<OrchestrateRoute>;
|
|
36
|
+
//# sourceMappingURL=orchestrate-routes.d.ts.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - task_orchestrate routes for inferred task types (#1125)
|
|
3
|
+
*
|
|
4
|
+
* task_orchestrate infers an abstract task type from a free-text description.
|
|
5
|
+
* Several of those types have no domain handler of their own; the domain runs
|
|
6
|
+
* a concrete handler type with its own payload instead. Each inferred type
|
|
7
|
+
* either maps to that handler with a payload built only from what the caller
|
|
8
|
+
* supplied, or is refused with the input it needs. A payload is never filled
|
|
9
|
+
* with values the request did not contain.
|
|
10
|
+
*/
|
|
11
|
+
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
12
|
+
import { confineIndexPaths } from '../../domains/code-intelligence/index-path-guard.js';
|
|
13
|
+
const needs = (type, what) => ({
|
|
14
|
+
kind: 'needs-input',
|
|
15
|
+
error: `task_orchestrate inferred '${type}' from the description, but ${what}`,
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Confine caller file paths to the project root (the #1096 rule for index
|
|
19
|
+
* paths). A path outside it, missing, or not a regular file is refused by name.
|
|
20
|
+
*/
|
|
21
|
+
async function projectFiles(type, filePaths) {
|
|
22
|
+
const { accepted, skipped } = await confineIndexPaths(filePaths, findProjectRoot());
|
|
23
|
+
if (skipped.length > 0) {
|
|
24
|
+
const list = skipped.map(s => `${s.path} (${s.reason})`).join(', ');
|
|
25
|
+
return needs(type, `these filePaths cannot be read: ${list}. Pass regular files inside the project.`);
|
|
26
|
+
}
|
|
27
|
+
return { files: accepted };
|
|
28
|
+
}
|
|
29
|
+
/** Decide how task_orchestrate runs an inferred task type. */
|
|
30
|
+
export async function routeInferredTask(type, request) {
|
|
31
|
+
const filePaths = request.filePaths ?? [];
|
|
32
|
+
switch (type) {
|
|
33
|
+
case 'scan-security': {
|
|
34
|
+
if (filePaths.length === 0) {
|
|
35
|
+
return needs(type, 'no files to scan were given. Pass filePaths with the source files to scan, ' +
|
|
36
|
+
'or use security_scan_comprehensive with a target.');
|
|
37
|
+
}
|
|
38
|
+
const confined = await projectFiles(type, filePaths);
|
|
39
|
+
if ('kind' in confined)
|
|
40
|
+
return confined;
|
|
41
|
+
return { kind: 'route', type: 'sast-scan', domain: 'security-compliance', payload: { files: confined.files } };
|
|
42
|
+
}
|
|
43
|
+
case 'index-code':
|
|
44
|
+
// #1134: indexing reads exactly the files it is given; without them the
|
|
45
|
+
// task could only fail after it was accepted. The indexer confines the
|
|
46
|
+
// paths to the project itself (#1096).
|
|
47
|
+
if (filePaths.length === 0) {
|
|
48
|
+
return needs(type, 'no files to index were given. Pass filePaths with the files to index, ' +
|
|
49
|
+
'or use code_index with a target.');
|
|
50
|
+
}
|
|
51
|
+
return { kind: 'as-inferred' };
|
|
52
|
+
case 'assess-quality': {
|
|
53
|
+
if (filePaths.length === 0) {
|
|
54
|
+
return needs(type, 'no source files were given. Pass filePaths with the source files to assess, ' +
|
|
55
|
+
'or use quality_assess.');
|
|
56
|
+
}
|
|
57
|
+
const confined = await projectFiles(type, filePaths);
|
|
58
|
+
if ('kind' in confined)
|
|
59
|
+
return confined;
|
|
60
|
+
return { kind: 'route', type: 'analyze-quality', domain: 'quality-assessment', payload: { sourceFiles: confined.files } };
|
|
61
|
+
}
|
|
62
|
+
case 'test-accessibility':
|
|
63
|
+
// run-accessibility-audit falls back to URL-pattern heuristics when no
|
|
64
|
+
// browser is available, which reports violations nobody measured.
|
|
65
|
+
return needs(type, 'an accessibility audit needs a browser run against the page (axe-core, pa11y or ' +
|
|
66
|
+
'Lighthouse), and the domain task handler cannot guarantee one. Use accessibility_test with the page URL.');
|
|
67
|
+
case 'optimize-learning':
|
|
68
|
+
// optimize-strategies overwrites the stored learned strategies
|
|
69
|
+
// (persist: true). Words like "improve" or "optimize" in a description
|
|
70
|
+
// must not change learning data as a side effect.
|
|
71
|
+
return needs(type, 'learning optimization overwrites the stored learned strategies, so it is not run from ' +
|
|
72
|
+
'a description. Use task_submit with type optimize-strategies in domain learning-optimization.');
|
|
73
|
+
case 'run-chaos':
|
|
74
|
+
return needs(type, 'a chaos run needs an experiment, or a fault type and target, which a description ' +
|
|
75
|
+
'does not provide. Use chaos_test, or task_submit with type run-experiment (experimentId) or ' +
|
|
76
|
+
'inject-fault (faultType, target) in domain chaos-resilience.');
|
|
77
|
+
case 'validate-contracts':
|
|
78
|
+
return needs(type, 'contract validation needs the API contract itself. Use contract_validate, or ' +
|
|
79
|
+
'task_submit with type validate-contract and payload.contract in domain contract-testing.');
|
|
80
|
+
case 'validate-requirements':
|
|
81
|
+
return needs(type, 'requirement validation needs a structured requirement (title, description, ' +
|
|
82
|
+
'acceptance criteria). Use requirements_validate, or task_submit with type validate and ' +
|
|
83
|
+
'payload.requirement in domain requirements-validation.');
|
|
84
|
+
default:
|
|
85
|
+
return { kind: 'as-inferred' };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=orchestrate-routes.js.map
|
|
@@ -35,9 +35,23 @@ export interface TaskOrchestrateParams {
|
|
|
35
35
|
requirements?: string[];
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* #1022: how learned patterns informed task_orchestrate.
|
|
40
|
+
* - 'vector': embedding similarity plus text matching
|
|
41
|
+
* - 'lexical-only': no embedding runtime; text matching only, no similarity
|
|
42
|
+
* scores, and experience guidance unavailable
|
|
43
|
+
* - 'unavailable': the ReasoningBank could not start; no learned guidance
|
|
44
|
+
*/
|
|
45
|
+
export interface OrchestrateLearningStatus {
|
|
46
|
+
patternSearch: 'vector' | 'lexical-only' | 'unavailable';
|
|
47
|
+
reason?: string;
|
|
48
|
+
}
|
|
38
49
|
export interface TaskOrchestrateResult {
|
|
39
50
|
taskId: string;
|
|
51
|
+
/** The task type submitted to the domain. */
|
|
40
52
|
type: TaskType;
|
|
53
|
+
/** #1125: the type inferred from the description, when another handler type runs it. */
|
|
54
|
+
inferredType?: TaskType;
|
|
41
55
|
priority: 'p0' | 'p1' | 'p2' | 'p3';
|
|
42
56
|
strategy: string;
|
|
43
57
|
status: string;
|
|
@@ -54,6 +68,8 @@ export interface TaskOrchestrateResult {
|
|
|
54
68
|
rationale: string;
|
|
55
69
|
decisionTimeMs: number;
|
|
56
70
|
};
|
|
71
|
+
/** #1022: how learned patterns informed this orchestration */
|
|
72
|
+
learning: OrchestrateLearningStatus;
|
|
57
73
|
}
|
|
58
74
|
export declare function handleTaskOrchestrate(params: TaskOrchestrateParams): Promise<ToolResult<TaskOrchestrateResult>>;
|
|
59
75
|
export interface ModelRouteParams {
|
|
@@ -12,6 +12,7 @@ import { scoreUnjudgedTrajectories } from './trajectory-judge.js';
|
|
|
12
12
|
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
|
+
import { routeInferredTask } from './orchestrate-routes.js';
|
|
15
16
|
// ============================================================================
|
|
16
17
|
// Task Type to Workflow Mapping (Issue #206)
|
|
17
18
|
// Maps TaskTypes to their associated workflow IDs for auto-execution
|
|
@@ -231,6 +232,39 @@ export async function handleTaskCancel(params) {
|
|
|
231
232
|
};
|
|
232
233
|
}
|
|
233
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* #1022: gather experience guidance and pattern hints for task_orchestrate.
|
|
237
|
+
* Learned guidance is optional: a missing embedder, or a ReasoningBank that
|
|
238
|
+
* cannot start, must not fail the orchestration. The returned status says
|
|
239
|
+
* which kind of matching produced the hints.
|
|
240
|
+
*/
|
|
241
|
+
async function getOrchestrateLearningContext(task, guidanceDomain, patternDomain) {
|
|
242
|
+
let service;
|
|
243
|
+
try {
|
|
244
|
+
service = await getReasoningBankService();
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
return {
|
|
248
|
+
experienceGuidance: null,
|
|
249
|
+
patternHintMatches: [],
|
|
250
|
+
learning: { patternSearch: 'unavailable', reason: toErrorMessage(error) },
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
const experienceGuidance = await service.getExperienceGuidance(task, guidanceDomain);
|
|
254
|
+
// Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
|
|
255
|
+
// (experienceGuidance). Without this, only past trajectories influenced
|
|
256
|
+
// routing — the catalog of consolidated long-term patterns was never
|
|
257
|
+
// consulted for new tasks. Fail-soft: empty array on error.
|
|
258
|
+
const patternHintMatches = await service
|
|
259
|
+
.searchPatternMatches(task, { limit: 5, domain: patternDomain })
|
|
260
|
+
.catch(() => []);
|
|
261
|
+
const status = service.getPatternSearchStatus();
|
|
262
|
+
return {
|
|
263
|
+
experienceGuidance,
|
|
264
|
+
patternHintMatches,
|
|
265
|
+
learning: { patternSearch: status.mode, ...(status.reason ? { reason: status.reason } : {}) },
|
|
266
|
+
};
|
|
267
|
+
}
|
|
234
268
|
export async function handleTaskOrchestrate(params) {
|
|
235
269
|
if (!isFleetInitialized()) {
|
|
236
270
|
return {
|
|
@@ -269,18 +303,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
269
303
|
},
|
|
270
304
|
});
|
|
271
305
|
// INTEGRATION FIX: Get ReasoningBank guidance for the task
|
|
272
|
-
const
|
|
273
|
-
const experienceGuidance = await reasoningBankService.getExperienceGuidance(params.task, params.context?.project);
|
|
274
|
-
// Bring HNSW A (qe_patterns) into the routing decision alongside HNSW C
|
|
275
|
-
// (experienceGuidance). Without this, only past trajectories influenced
|
|
276
|
-
// routing — the catalog of consolidated long-term patterns was never
|
|
277
|
-
// consulted for new tasks. Fail-soft: empty array on error.
|
|
278
|
-
const patternHintMatches = await reasoningBankService
|
|
279
|
-
.searchPatternMatches(params.task, {
|
|
280
|
-
limit: 5,
|
|
281
|
-
domain: params.context?.project ?? inferredDomain,
|
|
282
|
-
})
|
|
283
|
-
.catch(() => []);
|
|
306
|
+
const { experienceGuidance, patternHintMatches, learning } = await getOrchestrateLearningContext(params.task, params.context?.project, params.context?.project ?? inferredDomain);
|
|
284
307
|
// Parse task description to determine task type
|
|
285
308
|
const taskType = inferTaskType(params.task);
|
|
286
309
|
const priority = mapPriority(params.priority || 'medium');
|
|
@@ -354,13 +377,23 @@ export async function handleTaskOrchestrate(params) {
|
|
|
354
377
|
rationale: routingResult.decision.rationale,
|
|
355
378
|
decisionTimeMs: routingResult.decision.metadata.decisionTimeMs,
|
|
356
379
|
},
|
|
380
|
+
learning,
|
|
357
381
|
},
|
|
358
382
|
};
|
|
359
383
|
}
|
|
360
|
-
// No workflow - submit as a regular task
|
|
361
|
-
// #
|
|
362
|
-
//
|
|
363
|
-
|
|
384
|
+
// No workflow - submit as a regular task.
|
|
385
|
+
// #1125: an inferred type without a handler of its own runs the domain's
|
|
386
|
+
// concrete handler, with a payload built only from the request, or is
|
|
387
|
+
// refused with the input it needs.
|
|
388
|
+
const route = await routeInferredTask(taskType, params);
|
|
389
|
+
if (route.kind === 'needs-input') {
|
|
390
|
+
return { success: false, error: route.error };
|
|
391
|
+
}
|
|
392
|
+
const submitType = route.kind === 'route' ? route.type : taskType;
|
|
393
|
+
const targetDomains = route.kind === 'route' ? [route.domain] : [];
|
|
394
|
+
// #1081: the type must have a domain handler. Otherwise the Queen can
|
|
395
|
+
// only fail the task at dispatch, so reject it here with the reason.
|
|
396
|
+
const executable = queen.validateTaskExecutable(submitType, targetDomains);
|
|
364
397
|
if (!executable.success) {
|
|
365
398
|
return {
|
|
366
399
|
success: false,
|
|
@@ -384,10 +417,15 @@ export async function handleTaskOrchestrate(params) {
|
|
|
384
417
|
taskPayload.language = taskPayload.language || 'typescript';
|
|
385
418
|
taskPayload.testType = taskPayload.testType || 'unit';
|
|
386
419
|
}
|
|
420
|
+
if (taskType === 'index-code') {
|
|
421
|
+
taskPayload.paths = params.filePaths || [];
|
|
422
|
+
}
|
|
423
|
+
if (route.kind === 'route')
|
|
424
|
+
Object.assign(taskPayload, route.payload);
|
|
387
425
|
const result = await queen.submitTask({
|
|
388
|
-
type:
|
|
426
|
+
type: submitType,
|
|
389
427
|
priority,
|
|
390
|
-
targetDomains
|
|
428
|
+
targetDomains,
|
|
391
429
|
payload: {
|
|
392
430
|
...taskPayload,
|
|
393
431
|
// ADR-051: Include routing decision in payload for downstream processing
|
|
@@ -431,10 +469,12 @@ export async function handleTaskOrchestrate(params) {
|
|
|
431
469
|
}
|
|
432
470
|
// INTEGRATION FIX: Start trajectory tracking for learning
|
|
433
471
|
const taskId = result.value;
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
472
|
+
if (learning.patternSearch !== 'unavailable') {
|
|
473
|
+
await startTaskTrajectory(taskId, params.task, {
|
|
474
|
+
agent: 'queen-coordinator',
|
|
475
|
+
domain: params.context?.project,
|
|
476
|
+
});
|
|
477
|
+
}
|
|
438
478
|
// Issue N1: Trajectory auto-close is handled by subscribeTrajectoryEvents(),
|
|
439
479
|
// which listens for TaskCompleted/TaskFailed on the event router.
|
|
440
480
|
// No per-task polling needed.
|
|
@@ -452,7 +492,8 @@ export async function handleTaskOrchestrate(params) {
|
|
|
452
492
|
success: true,
|
|
453
493
|
data: {
|
|
454
494
|
taskId,
|
|
455
|
-
type:
|
|
495
|
+
type: submitType,
|
|
496
|
+
...(submitType !== taskType ? { inferredType: taskType } : {}),
|
|
456
497
|
priority,
|
|
457
498
|
strategy: params.strategy || 'adaptive',
|
|
458
499
|
status: 'submitted',
|
|
@@ -469,6 +510,7 @@ export async function handleTaskOrchestrate(params) {
|
|
|
469
510
|
rationale: routingResult.decision.rationale,
|
|
470
511
|
decisionTimeMs: routingResult.decision.metadata.decisionTimeMs,
|
|
471
512
|
},
|
|
513
|
+
learning,
|
|
472
514
|
},
|
|
473
515
|
};
|
|
474
516
|
}
|
|
@@ -658,6 +700,14 @@ function inferDomainFromDescription(description) {
|
|
|
658
700
|
/**
|
|
659
701
|
* Infer task type from description
|
|
660
702
|
*/
|
|
703
|
+
// #1130: chaos named as the activity of a test run. The lookaheads keep a
|
|
704
|
+
// path segment or file name (resilience tests/unit/…, src/fault-injection/…,
|
|
705
|
+
// fault-injection.ts) from counting, and "fault injector" names a component.
|
|
706
|
+
const CHAOS_ACTIVITY = new RegExp([
|
|
707
|
+
String.raw `\b(?:chaos|resilience)\s+(?:\w+\s+)?(?:tests?|testing|experiments?)\b(?![./\w])`,
|
|
708
|
+
String.raw `\bfault[\s-]?inject(?:ion|ing)\b(?![./\w])`,
|
|
709
|
+
String.raw `\binject(?:s|ing)?\s+(?:\w+\s+)?faults?\b(?![./\w])`,
|
|
710
|
+
].join('|'));
|
|
661
711
|
function inferTaskType(description) {
|
|
662
712
|
const lower = description.toLowerCase();
|
|
663
713
|
// Check execution first (more specific patterns)
|
|
@@ -665,7 +715,10 @@ function inferTaskType(description) {
|
|
|
665
715
|
/execute\s+(?:\w+\s+)*tests?/.test(lower) ||
|
|
666
716
|
lower.includes('run tests') ||
|
|
667
717
|
lower.includes('execute tests')) {
|
|
668
|
-
|
|
718
|
+
// #1130: "run chaos resilience testing" names a chaos run, not a test run.
|
|
719
|
+
// Only a run whose activity is chaos counts; every other description keeps
|
|
720
|
+
// the order below, where chaos wording is the last resort.
|
|
721
|
+
return CHAOS_ACTIVITY.test(lower) ? 'run-chaos' : 'execute-tests';
|
|
669
722
|
}
|
|
670
723
|
// Then check generation
|
|
671
724
|
if (lower.includes('generate test') || lower.includes('create test') || lower.includes('write test')) {
|
|
@@ -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
|
-
import { resolve } from 'path';
|
|
9
7
|
import { runPipeline, formatPipelineReport } from '../../validation/pipeline.js';
|
|
10
8
|
import { createRequirementsPipeline, REQUIREMENTS_VALIDATION_STEPS } from '../../validation/steps/requirements.js';
|
|
11
9
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
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
|
*/
|
|
@@ -19,17 +19,21 @@ export async function handleValidationPipeline(params) {
|
|
|
19
19
|
content = params.content;
|
|
20
20
|
}
|
|
21
21
|
else if (params.filePath) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
28
|
-
}
|
|
22
|
+
// #1126: read only a regular file inside the project, within the size limit.
|
|
23
|
+
const confined = await requirePayloadPath('validation_pipeline', 'filePath', params.filePath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
24
|
+
if (!confined.success)
|
|
25
|
+
return { success: false, error: confined.error.message };
|
|
26
|
+
// #1161: read from the validated descriptor, not the name checked above.
|
|
29
27
|
try {
|
|
30
|
-
content =
|
|
28
|
+
content = await readConfinedText(confined.value, { maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
31
29
|
}
|
|
32
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
|
+
}
|
|
33
37
|
return {
|
|
34
38
|
success: false,
|
|
35
39
|
error: `Failed to read file: ${toErrorMessage(readErr)}`,
|