agentic-qe 3.15.9 → 3.15.10
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 +251 -0
- package/assets/skills/skills-manifest.json +1 -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/audit/witness-chain.d.ts +1 -1
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-TR5SLAZC.js +2 -0
- package/dist/cli/chunks/agent-booster-wasm-H7ANGXW4.js +2 -0
- package/dist/cli/chunks/{agent-handler-RIYHTHVZ.js → agent-handler-SVXSHEET.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-WSUCUHOO.js → agent-memory-branch-WKQH36XL.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DXWKCHY2.js +2 -0
- package/dist/cli/chunks/{arena-KRIBMIXX.js → arena-EKOOFVST.js} +2 -2
- package/dist/cli/chunks/{arena-YAJZX6MC.js → arena-OPS36NFZ.js} +4 -4
- package/dist/cli/chunks/{audit-7ZNOXWP3.js → audit-AO5NDZRI.js} +3 -3
- package/dist/cli/chunks/base-GTB6POYE.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-ZQAT4I6H.js → better-sqlite3-TFLVEMMY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-452WCPZC.js → brain-handler-ADBBJPYW.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-IJFXJRPN.js → branch-enumerator-HGHUYYL5.js} +2 -2
- package/dist/cli/chunks/browser-5LU6P4SZ.js +4 -0
- package/dist/cli/chunks/browser-workflow-MSBOLYUY.js +2 -0
- package/dist/cli/chunks/{chunk-UOJBR4J3.js → chunk-2SXBBUM6.js} +2 -2
- package/dist/cli/chunks/{chunk-7JKB3Q7O.js → chunk-2T7RRL6G.js} +1 -1
- package/dist/cli/chunks/{chunk-HCYQHWI2.js → chunk-2XGVTYVX.js} +2 -2
- package/dist/cli/chunks/{chunk-3LYU7BLY.js → chunk-2ZI5FKSF.js} +2 -2
- package/dist/cli/chunks/chunk-2ZMF4NCF.js +4 -0
- package/dist/cli/chunks/{chunk-F3PQZX44.js → chunk-37OWRCUN.js} +1 -1
- package/dist/cli/chunks/{chunk-YRBBBUJX.js → chunk-3P34JFQH.js} +4 -4
- package/dist/cli/chunks/{chunk-ICP2ORGI.js → chunk-3Y7SPD72.js} +2 -2
- package/dist/cli/chunks/{chunk-WGDR2KIR.js → chunk-4G63WT4F.js} +2 -2
- package/dist/cli/chunks/chunk-4SJYIX54.js +3 -0
- package/dist/cli/chunks/chunk-5E6GHSTY.js +3 -0
- package/dist/cli/chunks/{chunk-OXTFSIGN.js → chunk-5LPYV3TK.js} +1 -1
- package/dist/cli/chunks/{chunk-XWIUFYM3.js → chunk-62OAY5KJ.js} +1 -1
- package/dist/cli/chunks/{chunk-VCMINU7K.js → chunk-6C3II5OM.js} +2 -2
- package/dist/cli/chunks/{chunk-EFBLP43U.js → chunk-6GP6W46M.js} +2 -2
- package/dist/cli/chunks/{chunk-4JCY45KV.js → chunk-6KIL6CMD.js} +2 -2
- package/dist/cli/chunks/{chunk-CTZJUV5I.js → chunk-6MVVSSID.js} +1 -1
- package/dist/cli/chunks/{chunk-JEP4ULR6.js → chunk-6P7424AO.js} +2 -2
- package/dist/cli/chunks/{chunk-SVHUYVUR.js → chunk-6PX4OXQO.js} +2 -2
- package/dist/cli/chunks/{chunk-LEAKYZ37.js → chunk-6S3WJGUV.js} +2 -2
- package/dist/cli/chunks/{chunk-7X2Y727E.js → chunk-6TB6YOCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-VU2EL424.js → chunk-6X5DHU6Q.js} +1 -1
- package/dist/cli/chunks/{chunk-DDPPSSHW.js → chunk-6XCMKIZN.js} +1 -1
- package/dist/cli/chunks/{chunk-ZANDSVCK.js → chunk-7LFZ4CHM.js} +2 -2
- package/dist/cli/chunks/{chunk-UYLYMWV5.js → chunk-7OZVZIBE.js} +2 -2
- package/dist/cli/chunks/{chunk-32UTLDNY.js → chunk-7PJIR4ST.js} +2 -2
- package/dist/cli/chunks/{chunk-DINZR5CF.js → chunk-7TB6FK4B.js} +1 -1
- package/dist/cli/chunks/{chunk-KVBEGOJE.js → chunk-7ZCDZHDB.js} +2 -2
- package/dist/cli/chunks/{chunk-55HRSNGN.js → chunk-A55QKKT2.js} +2 -2
- package/dist/cli/chunks/{chunk-LCJTEUDC.js → chunk-ABFFWZPC.js} +428 -433
- package/dist/cli/chunks/{chunk-PVIA2FPD.js → chunk-ACWFKES2.js} +2 -2
- package/dist/cli/chunks/{chunk-2BA45H64.js → chunk-AH3ZD3NJ.js} +2 -2
- package/dist/cli/chunks/{chunk-OG2UI6A3.js → chunk-AI4VYSFS.js} +2 -2
- package/dist/cli/chunks/chunk-APSRPR4W.js +2 -0
- package/dist/cli/chunks/chunk-ATHWDAXB.js +3 -0
- package/dist/cli/chunks/{chunk-TSYQDRNK.js → chunk-B6LTH6YV.js} +2 -2
- package/dist/cli/chunks/chunk-BQUAE3CP.js +3 -0
- package/dist/cli/chunks/{chunk-OCESWNAZ.js → chunk-C522H7XR.js} +54 -33
- package/dist/cli/chunks/{chunk-TUYJ53V4.js → chunk-CESIR27V.js} +2 -2
- package/dist/cli/chunks/{chunk-PBZI2ZPV.js → chunk-CFBEBXLO.js} +3 -3
- package/dist/cli/chunks/{chunk-FJ4VTLLK.js → chunk-CMBLM26R.js} +2 -2
- package/dist/cli/chunks/{chunk-YZYDTABJ.js → chunk-CZ2IF6MC.js} +1 -1
- package/dist/cli/chunks/{chunk-GKPQ2GRR.js → chunk-CZGOSJQ4.js} +2 -2
- package/dist/cli/chunks/{chunk-FL3OYGCS.js → chunk-D6DA2KFD.js} +2 -2
- package/dist/cli/chunks/{chunk-37BIGMJI.js → chunk-DBMNJSBV.js} +1 -1
- package/dist/cli/chunks/{chunk-BHKXMIWX.js → chunk-DE4YJQJF.js} +2 -2
- package/dist/cli/chunks/{chunk-3CJCROMW.js → chunk-DEF34AFL.js} +2 -2
- package/dist/cli/chunks/chunk-DKAC3E3B.js +3 -0
- package/dist/cli/chunks/{chunk-AOFO4N32.js → chunk-DMFTELBS.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGYIEJK.js → chunk-DNRWGATA.js} +10 -10
- package/dist/cli/chunks/{chunk-JWGRWMZP.js → chunk-DT7SIJOA.js} +2 -2
- package/dist/cli/chunks/{chunk-6PXA2BQJ.js → chunk-DURHK377.js} +67 -67
- package/dist/cli/chunks/{chunk-HAROIAJE.js → chunk-EAU5KDFO.js} +1 -1
- package/dist/cli/chunks/{chunk-L42JPFCC.js → chunk-EDLFX4ZB.js} +2 -2
- package/dist/cli/chunks/{chunk-6OOYIO3W.js → chunk-EN2QSKFF.js} +2 -2
- package/dist/cli/chunks/{chunk-UNUTC6TX.js → chunk-ERQKYIP7.js} +2 -2
- package/dist/cli/chunks/{chunk-KFUUIAR4.js → chunk-ESUO3GTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-4V27J6YN.js → chunk-EWFECZ2U.js} +2 -2
- package/dist/cli/chunks/{chunk-4W4DYVSH.js → chunk-FAUCT5KR.js} +3 -3
- package/dist/cli/chunks/{chunk-IFEIY3NQ.js → chunk-FB6TI3BH.js} +2 -2
- package/dist/cli/chunks/{chunk-2TDIS6YK.js → chunk-FBXTQNRH.js} +2 -2
- package/dist/cli/chunks/{chunk-XOLDMK23.js → chunk-FESZBPUB.js} +2 -2
- package/dist/cli/chunks/chunk-FFTPAWM6.js +141 -0
- package/dist/cli/chunks/{chunk-A6YIH4C4.js → chunk-FKL3R5JQ.js} +2 -2
- package/dist/cli/chunks/{chunk-N5PDFGCQ.js → chunk-FPUDRSFJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7QGYJ5OY.js → chunk-FZOWULMH.js} +1 -1
- package/dist/cli/chunks/{chunk-AVB5QY2Q.js → chunk-G3CZCUPM.js} +2 -2
- package/dist/cli/chunks/{chunk-FV3NHVC7.js → chunk-G5I6KGMW.js} +3 -3
- package/dist/cli/chunks/{chunk-N3KEY4XJ.js → chunk-GHBNRMSJ.js} +2 -2
- package/dist/cli/chunks/{chunk-2YH62JCN.js → chunk-GJHWY3ZX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZXBCCO2H.js → chunk-GJMLK5UT.js} +2 -2
- package/dist/cli/chunks/{chunk-NHZIWIQZ.js → chunk-GRCIBCJ2.js} +2 -2
- package/dist/cli/chunks/{chunk-J3DTDJDT.js → chunk-GWZZ7DAO.js} +2 -2
- package/dist/cli/chunks/{chunk-4SUOVLJ6.js → chunk-GZLZCZ42.js} +2 -2
- package/dist/cli/chunks/{chunk-MZS32SYS.js → chunk-H2PYU7MN.js} +1 -1
- package/dist/cli/chunks/{chunk-ABFDB4X3.js → chunk-H32EPIR2.js} +1 -1
- package/dist/cli/chunks/{chunk-KIXYKUCI.js → chunk-H74Q7TJN.js} +1 -1
- package/dist/cli/chunks/chunk-HOZUDE4C.js +2 -0
- package/dist/cli/chunks/{chunk-PMCRCEW5.js → chunk-I33O4BRQ.js} +2 -2
- package/dist/cli/chunks/{chunk-N3NP6PTT.js → chunk-IKISCIGH.js} +2 -2
- package/dist/cli/chunks/{chunk-Q3JVJRVJ.js → chunk-IPJ7Q3AJ.js} +1 -1
- package/dist/cli/chunks/{chunk-WRRCQ2UE.js → chunk-IU2IV4NE.js} +1 -1
- package/dist/cli/chunks/{chunk-QQ5SZH4D.js → chunk-JHIY4VCC.js} +2 -2
- package/dist/cli/chunks/{chunk-W32YU3VI.js → chunk-KG336OV3.js} +2 -2
- package/dist/cli/chunks/{chunk-W5VJRDDG.js → chunk-KI73QCR5.js} +2 -2
- package/dist/cli/chunks/{chunk-HGTWAZWU.js → chunk-KNQ2ERFX.js} +2 -2
- package/dist/cli/chunks/{chunk-SNBYYO6F.js → chunk-KOBVYY6H.js} +2 -2
- package/dist/cli/chunks/{chunk-VQHVHVSF.js → chunk-KSIWGGJI.js} +8 -8
- package/dist/cli/chunks/{chunk-REUFWGMA.js → chunk-LMS3Y7JD.js} +2 -2
- package/dist/cli/chunks/{chunk-LMU5DUDK.js → chunk-LQEURY7C.js} +1 -1
- package/dist/cli/chunks/{chunk-AJ4YDSOI.js → chunk-LRZY4KS2.js} +2 -2
- package/dist/cli/chunks/{chunk-KIKWJM6J.js → chunk-M2QV7PT7.js} +2 -2
- package/dist/cli/chunks/{chunk-TNMQVG4A.js → chunk-MA7JIQ6U.js} +2 -2
- package/dist/cli/chunks/{chunk-I6S35FRO.js → chunk-MG27QY4D.js} +2 -2
- package/dist/cli/chunks/chunk-MNN5J4GU.js +12 -0
- package/dist/cli/chunks/chunk-N6PIIK6G.js +3 -0
- package/dist/cli/chunks/chunk-NAXGWDVM.js +12 -0
- package/dist/cli/chunks/{chunk-XOVNZT7F.js → chunk-NGKNYIQZ.js} +1 -1
- package/dist/cli/chunks/chunk-NNFZUTDH.js +2 -0
- package/dist/cli/chunks/{chunk-ZVSLCEVC.js → chunk-NPPHWFA2.js} +3 -3
- package/dist/cli/chunks/{chunk-JNNZK7KH.js → chunk-NSHU347M.js} +1 -1
- package/dist/cli/chunks/{chunk-PX2B5TS2.js → chunk-NVYIZCSR.js} +2 -2
- package/dist/cli/chunks/{chunk-5NS3USRW.js → chunk-NW5JUCCG.js} +1 -1
- package/dist/cli/chunks/{chunk-KR3M44CF.js → chunk-NZYLNXT6.js} +3 -3
- package/dist/cli/chunks/{chunk-5D2I7JUP.js → chunk-OBAREPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-F4JYIRW2.js → chunk-ODJNUMV3.js} +2 -2
- package/dist/cli/chunks/{chunk-K5DJXMAA.js → chunk-OEKP73MC.js} +2 -2
- package/dist/cli/chunks/{chunk-2URBI52G.js → chunk-OPFGRS5S.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ5NC6U5.js → chunk-OY2AHLSF.js} +1 -1
- package/dist/cli/chunks/{chunk-GII5WVAK.js → chunk-OY3NJNP2.js} +1 -1
- package/dist/cli/chunks/{chunk-P73W2K7T.js → chunk-PCEW6Q2C.js} +1 -1
- package/dist/cli/chunks/{chunk-7QTB5VJZ.js → chunk-PFG6VQ5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-7KII4CQG.js → chunk-PGYMKGOE.js} +2 -2
- package/dist/cli/chunks/{chunk-BXO536GT.js → chunk-PPSAMXYN.js} +3 -3
- package/dist/cli/chunks/chunk-RK73HB2F.js +2 -0
- package/dist/cli/chunks/{chunk-ZBDRLF43.js → chunk-RPHY2DU6.js} +2 -2
- package/dist/cli/chunks/{chunk-XDBD4GXO.js → chunk-RWWOHCMG.js} +25 -20
- package/dist/cli/chunks/{chunk-J5KNRVXR.js → chunk-S75EYIJG.js} +1 -1
- package/dist/cli/chunks/{chunk-ETG7O5E5.js → chunk-SKQUUE4F.js} +5 -5
- package/dist/cli/chunks/chunk-SO45NA4D.js +180 -0
- package/dist/cli/chunks/{chunk-47V7FQGX.js → chunk-SU5H66SD.js} +2 -2
- package/dist/cli/chunks/{chunk-NTAD5UX4.js → chunk-SY2IB442.js} +2 -2
- package/dist/cli/chunks/{chunk-D6XVGFTI.js → chunk-TBLI254A.js} +2 -2
- package/dist/cli/chunks/{chunk-47TYABPD.js → chunk-TNMBRDCA.js} +3 -3
- package/dist/cli/chunks/{chunk-P2CXVNKK.js → chunk-TYFZXDGZ.js} +2 -2
- package/dist/cli/chunks/{chunk-2XITOPYV.js → chunk-U4OICXV2.js} +2 -2
- package/dist/cli/chunks/{chunk-JAV5WPSY.js → chunk-U53ZB4IX.js} +2 -2
- package/dist/cli/chunks/chunk-UARKIZAS.js +2 -0
- package/dist/cli/chunks/{chunk-2HL3UM5P.js → chunk-UCJMVXO4.js} +2 -2
- package/dist/cli/chunks/{chunk-HWK5L7IJ.js → chunk-UHTTW3IT.js} +2 -2
- package/dist/cli/chunks/{chunk-OXZLKP6C.js → chunk-V2M2XCR5.js} +1 -1
- package/dist/cli/chunks/{chunk-YZGSJG34.js → chunk-V2RSNVMW.js} +1 -1
- package/dist/cli/chunks/{chunk-5JWGCIQW.js → chunk-V6JBOIMX.js} +1 -1
- package/dist/cli/chunks/{chunk-JUVHZG7I.js → chunk-VFKF2XO7.js} +1 -1
- package/dist/cli/chunks/{chunk-XQ3DDY7X.js → chunk-VFSYMOAL.js} +2 -2
- package/dist/cli/chunks/{chunk-V5PXQSFS.js → chunk-VJQYDYAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-A4RU67VX.js → chunk-VKRTTFB6.js} +2 -2
- package/dist/cli/chunks/{chunk-H3KBIWTO.js → chunk-VWNFAW2M.js} +2 -2
- package/dist/cli/chunks/{chunk-72AMFDC7.js → chunk-WBM6N6IM.js} +1 -1
- package/dist/cli/chunks/{chunk-XUIA5KMS.js → chunk-WDQ7IEZY.js} +2 -2
- package/dist/cli/chunks/{chunk-FLASM2XB.js → chunk-WDVRE6GN.js} +2 -2
- package/dist/cli/chunks/{chunk-FV7VAG74.js → chunk-WQ4PYWSW.js} +1 -1
- package/dist/cli/chunks/{chunk-DGTLJNJH.js → chunk-WSF24I3D.js} +2 -2
- package/dist/cli/chunks/{chunk-6YL6JOQB.js → chunk-XBVUVFJK.js} +2 -2
- package/dist/cli/chunks/{chunk-VRGCKBF7.js → chunk-XEB3NLJR.js} +2 -2
- package/dist/cli/chunks/{chunk-XYCKHYBM.js → chunk-XFVTGAAJ.js} +2 -2
- package/dist/cli/chunks/{chunk-2I2UPJS7.js → chunk-XLZYRTNO.js} +2 -2
- package/dist/cli/chunks/{chunk-AR2E4B7K.js → chunk-XUZDBQ5X.js} +5 -5
- package/dist/cli/chunks/{chunk-AQTVVLNP.js → chunk-Y76IAYQD.js} +1 -1
- package/dist/cli/chunks/{chunk-UOWHE77F.js → chunk-YAKGBHO4.js} +2 -2
- package/dist/cli/chunks/{chunk-JK2ME6IT.js → chunk-YBSBABOS.js} +2 -2
- package/dist/cli/chunks/{chunk-NDKLQW6N.js → chunk-YCGP5VFP.js} +2 -2
- package/dist/cli/chunks/{chunk-GBUIG3FS.js → chunk-YDAQK5UF.js} +1 -1
- package/dist/cli/chunks/{chunk-HTZJSQ3C.js → chunk-YK3BVZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-GCWSX2NY.js → chunk-YK7JN5N7.js} +4 -4
- package/dist/cli/chunks/{chunk-C6RTMTEH.js → chunk-YKMU4LBV.js} +1 -1
- package/dist/cli/chunks/{chunk-JP4P3P3D.js → chunk-YYTGXD3R.js} +2 -2
- package/dist/cli/chunks/{chunk-763SUL4B.js → chunk-Z2O2YJAF.js} +2 -2
- package/dist/cli/chunks/{chunk-QTVWUQTB.js → chunk-Z7IYW5U7.js} +1 -1
- package/dist/cli/chunks/{chunk-XZJ2O3VC.js → chunk-ZG5666GJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6EPHNJTL.js → chunk-ZXPY654C.js} +1 -1
- package/dist/cli/chunks/{ci-7SGRCFPS.js → ci-MSKMVH5X.js} +2 -2
- package/dist/cli/chunks/{ci-config-MX3URPZA.js → ci-config-7ODMNAUM.js} +2 -2
- package/dist/cli/chunks/{ci-output-M47NJY6D.js → ci-output-FXZ7ZZW3.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5GAK45SW.js → circuit-breaker-4VOUEPOX.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-YXYSRH4Y.js → claude-flow-setup-7D4SGLM4.js} +2 -2
- package/dist/cli/chunks/client-POSVREVS.js +2 -0
- package/dist/cli/chunks/{cline-installer-DLJ5QD5N.js → cline-installer-WRRT7BGQ.js} +2 -2
- package/dist/cli/chunks/{code-ONKLMVQ2.js → code-ZDJRIL3S.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-2232LGZN.js → code-index-extractor-4S4SHM56.js} +2 -2
- package/dist/cli/chunks/{codex-installer-UOWLYCMH.js → codex-installer-YTRHNDWR.js} +2 -2
- package/dist/cli/chunks/{completions-MHX7GCC7.js → completions-6N64JUXJ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-43ZUJKZU.js → complexity-analyzer-I4A26VCJ.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-6Q5JR4FF.js → continuedev-installer-IIDR66LB.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-CZUMVHSI.js → copilot-installer-SVVFY3S2.js} +2 -2
- package/dist/cli/chunks/core-handlers-V243GY7X.js +2 -0
- package/dist/cli/chunks/{cost-tracker-VS5ZW3XN.js → cost-tracker-VGFS6IBX.js} +2 -2
- package/dist/cli/chunks/{coverage-VWKTWZ6D.js → coverage-B7MCGNTE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-N3AIEM3B.js +2 -0
- package/dist/cli/chunks/{cursor-installer-YIFEMORH.js → cursor-installer-UPETT57E.js} +2 -2
- package/dist/cli/chunks/daemon-7BDJHEIJ.js +18 -0
- package/dist/cli/chunks/{daemon-SHWJSJW5.js → daemon-CQFNZLXU.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-TCC2WM46.js → dag-attention-scheduler-PJVABHON.js} +2 -2
- package/dist/cli/chunks/{detect-IGTWSQMA.js → detect-56SKAGWX.js} +2 -2
- package/dist/cli/chunks/{dist-node-TCOTJVQX.js → dist-node-UYTYUMLN.js} +2 -2
- package/dist/cli/chunks/{domain-handler-55ZVYODR.js → domain-handler-YOYLBYJE.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-GJRWOHQP.js → domain-plugins-7TARX2XF.js} +2 -2
- package/dist/cli/chunks/domain-transfer-AKVSBD6E.js +2 -0
- package/dist/cli/chunks/dream-UA7MKOPQ.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-XAMNIKQL.js → embed-and-insert-pattern-IS6HSR66.js} +2 -2
- package/dist/cli/chunks/{eval-GO22R4OZ.js → eval-GNB574IM.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F2BRMJ3Y.js → experience-capture-middleware-RCAOCKM7.js} +3 -3
- package/dist/cli/chunks/{fast-paths-6RGPYALD.js → fast-paths-KTZ5SF54.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZGS3KLPH.js → feature-flags-ITX5LQ57.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MIWQIOHU.js → feature-flags-KFHSR5YF.js} +2 -2
- package/dist/cli/chunks/file-discovery-YCMNKZAK.js +2 -0
- package/dist/cli/chunks/fleet-2Y3ZE6CE.js +46 -0
- package/dist/cli/chunks/{gnn-wrapper-ALBJVW6T.js → gnn-wrapper-RLFW3GSX.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-ZMM53NDY.js → heartbeat-handler-EM2URCYZ.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-QH5V6G2P.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-OJNFAGJS.js +2 -0
- package/dist/cli/chunks/hnsw-index-DFUNARVD.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-RYUJPA7B.js → hnsw-legacy-bridge-JMHEOIBH.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-XM6XF3YV.js → hnswlib-node-CBP73QHY.js} +2 -2
- package/dist/cli/chunks/{hooks-X62O7TJO.js → hooks-IP7XE34Z.js} +34 -34
- package/dist/cli/chunks/hybrid-backend-SSGQQEQ2.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ZBWUPTVD.js → hypergraph-engine-ONAYHU25.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DUMF6SJV.js → hypergraph-handler-VINJRAID.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-CRGCA7ZD.js +2 -0
- package/dist/cli/chunks/{init-guard-S4I2R46S.js → init-guard-RYVV5R3Z.js} +2 -2
- package/dist/cli/chunks/{init-handler-L4KJHVWS.js → init-handler-MPRGWMOE.js} +6 -6
- package/dist/cli/chunks/init-wizard-NIMZ4J55.js +2 -0
- package/dist/cli/chunks/kernel-JQK7PRAI.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-GNNB5FCZ.js → kilocode-installer-OPD7JBRL.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-HR6ZAH7T.js → kiro-installer-M4OPUNK2.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-YPVVIKEU.js +2 -0
- package/dist/cli/chunks/{learning-4IEEOHJS.js → learning-4UWTQLMF.js} +24 -24
- package/dist/cli/chunks/{llm-router-ZFMORP36.js → llm-router-SQ56FF6Z.js} +4 -4
- package/dist/cli/chunks/llm-router-service-5OGAUOXF.js +2 -0
- package/dist/cli/chunks/{load-ZM43WGDO.js → load-HPHKDGGL.js} +2 -2
- package/dist/cli/chunks/load-test-UKNV5MWW.js +2 -0
- package/dist/cli/chunks/mcp-TELMAC7Z.js +2 -0
- package/dist/cli/chunks/{memory-W5FZGVAD.js → memory-PFQ3KPVJ.js} +5 -5
- package/dist/cli/chunks/memory-backend-ZW4BTRNK.js +2 -0
- package/dist/cli/chunks/memory-handlers-FCXN437E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-SXXGAQ2G.js → multi-model-executor-3VDRX6TZ.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-PIRBUAB5.js → opencode-installer-PJ576R63.js} +2 -2
- package/dist/cli/chunks/{orchestrator-H5SQCQTB.js → orchestrator-72QP4UU7.js} +63 -19
- package/dist/cli/chunks/pattern-null-store-4DUV6MQC.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XZTWDI2T.js → pattern-usage-recorder-754YQW7C.js} +2 -2
- package/dist/cli/chunks/pipeline-AVXY4MVB.js +19 -0
- package/dist/cli/chunks/{platform-KJDABL5C.js → platform-3E3DXLYB.js} +2 -2
- package/dist/cli/chunks/{plugin-V4KSBVVM.js → plugin-7FUQAKRE.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-JDHTKQAT.js → prime-radiant-advanced-wasm-NIB4F5NV.js} +2 -2
- package/dist/cli/chunks/project-root-JCAUNL6O.js +2 -0
- package/dist/cli/chunks/protocol-executor-RNZNZP3A.js +2 -0
- package/dist/cli/chunks/{protocol-handler-BNRONTQV.js → protocol-handler-BQRYMUTG.js} +2 -2
- package/dist/cli/chunks/{prove-ELLL6XMX.js → prove-H52QGC6B.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-WK6TQOG2.js +2 -0
- package/dist/cli/chunks/{quality-NH2QA4D4.js → quality-QO4XPAUM.js} +2 -2
- package/dist/cli/chunks/{quality-gate-JTKLF7GW.js → quality-gate-FBKE5E6F.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-4452SXZQ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-J3KCKLPB.js → real-embeddings-RWGOVOXO.js} +2 -2
- package/dist/cli/chunks/{ref-validation-HNXQRP4F.js → ref-validation-LF76ZOBD.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-COJ6CX6S.js → roocode-installer-3BYEBTQ7.js} +2 -2
- package/dist/cli/chunks/router-3DIS5X4R.js +2 -0
- package/dist/cli/chunks/routing-feedback-OPXRCXM7.js +2 -0
- package/dist/cli/chunks/{routing-handler-WM33ZILE.js → routing-handler-DST7BVCU.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-BBLXEA7A.js → ruvector-commands-XE32PGKC.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JL6T727I.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-V7IBDUCS.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-P7H6HCAG.js → rvf-migration-coordinator-VP32XC75.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-O3UQTEBK.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-R5SPVRFP.js → rvf-store-integrity-SH2AMVI7.js} +2 -2
- package/dist/cli/chunks/safe-db-EVB4ZC7T.js +2 -0
- package/dist/cli/chunks/schedule-ORDDXXY4.js +2 -0
- package/dist/cli/chunks/scheduler-XFLJSFIU.js +2 -0
- package/dist/cli/chunks/{security-AUDTRX3I.js → security-VSPNKCDS.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-PVDGBGI2.js → shared-rvf-adapter-HX6AHL3P.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LZ2GMSS2.js → shared-rvf-dual-writer-MX4FC2JE.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-Y7B42CJ3.js +2 -0
- package/dist/cli/chunks/{standalone-memory-XNOAI4G4.js → standalone-memory-O4QUTK6L.js} +2 -2
- package/dist/cli/chunks/{status-handler-K72XZE4T.js → status-handler-Z2BP6EOG.js} +2 -2
- package/dist/cli/chunks/{structural-health-NF3YY7U5.js → structural-health-R36WNLQG.js} +2 -2
- package/dist/cli/chunks/sync-2ELWUFQU.js +2 -0
- package/dist/cli/chunks/{sync-VBD5Y3E2.js → sync-QF5Y3EMZ.js} +2 -2
- package/dist/cli/chunks/{task-handler-24S3WFVJ.js → task-handler-43PYE75J.js} +2 -2
- package/dist/cli/chunks/task-handlers-KPWAEMKH.js +9 -0
- package/dist/cli/chunks/{test-XFSGQELD.js → test-UWA377D4.js} +16 -16
- package/dist/cli/chunks/test-runner-process-3XZUYST2.js +2 -0
- package/dist/cli/chunks/{test-scheduling-VYUQ4CDE.js → test-scheduling-YQZPJRRN.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-F7C6UKTC.js +2 -0
- package/dist/cli/chunks/{token-usage-VLQ6WO2L.js → token-usage-DO6WLMXP.js} +2 -2
- package/dist/cli/chunks/{transformers-TOFMWWNM.js → transformers-H5RGFKVO.js} +2 -2
- package/dist/cli/chunks/tree-sitter-wasm-parser-YTBCBHUO.js +2 -0
- package/dist/cli/chunks/{types-JTWLBAZJ.js → types-PJS2FGPF.js} +2 -2
- package/dist/cli/chunks/unified-memory-EHD4VNFW.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-ZODGM4UK.js +2 -0
- package/dist/cli/chunks/unified-persistence-MHSI7ABK.js +2 -0
- package/dist/cli/chunks/{upgrade-4ABM72T4.js → upgrade-4IC4F6AB.js} +2 -2
- package/dist/cli/chunks/{validate-UDJCWKXI.js → validate-DHUWW7PF.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-TODOUWNN.js → validate-swarm-OERQNOX5.js} +2 -2
- package/dist/cli/chunks/visual-security-54MLFKWY.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-WBMAJPM5.js → web-tree-sitter-TV7DMKES.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-BTT53TUL.js → windsurf-installer-QZPWSH37.js} +2 -2
- package/dist/cli/chunks/witness-chain-LC6Q2W27.js +2 -0
- package/dist/cli/chunks/witness-chain-QUIBAF3W.js +2 -0
- package/dist/cli/chunks/witness-chain-repair-RUXIOE7F.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-FRY3LMGH.js → witness-chain-verifier-YXENHB42.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-X7QHQQWL.js → witness-key-manager-HL26AGFO.js} +2 -2
- package/dist/cli/chunks/{workflow-QMZPAWQW.js → workflow-EOVVCN2E.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-UKHEJVSK.js +2 -0
- package/dist/cli/chunks/wrappers-AGODHBOO.js +2 -0
- package/dist/cli/commands/fleet.js +19 -12
- 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/learning.js +5 -3
- package/dist/cli/commands/ruvector-commands.js +2 -1
- package/dist/cli/commands/test.js +6 -0
- package/dist/cli/utils/ci-output.d.ts +9 -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/context/sources/git-source.js +6 -2
- package/dist/coordination/handlers/code-intelligence-handlers.js +60 -5
- package/dist/coordination/handlers/coverage-handlers.js +10 -1
- package/dist/coordination/handlers/requirements-handlers.js +16 -2
- package/dist/coordination/handlers/security-handlers.js +11 -1
- 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 +19 -7
- 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/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/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/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 +6 -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 +45 -58
- 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/scanner-orchestrator.js +4 -1
- package/dist/domains/test-execution/coordinator.d.ts +5 -0
- package/dist/domains/test-execution/coordinator.js +35 -20
- package/dist/domains/test-execution/interfaces.d.ts +25 -0
- 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/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/plugin.js +7 -2
- package/dist/domains/test-generation/services/test-data-generator.js +3 -1
- package/dist/domains/visual-accessibility/services/axe-core-audit.js +1 -1
- package/dist/hooks/cross-phase-hooks.js +2 -1
- package/dist/init/phases/10-workers.js +50 -6
- 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/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/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/qe-reasoning-bank-types.d.ts +17 -2
- package/dist/learning/qe-reasoning-bank.js +22 -11
- 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 +607 -580
- package/dist/mcp/handlers/core-handlers.js +11 -0
- package/dist/mcp/handlers/domain-handler-configs.d.ts +5 -0
- package/dist/mcp/handlers/domain-handler-configs.js +11 -3
- 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 +3 -0
- package/dist/mcp/handlers/task-handlers.js +35 -8
- package/dist/mcp/handlers/validation-pipeline-handler.js +6 -2
- package/dist/mcp/protocol-server.js +2 -0
- package/dist/mcp/security/schema-validator.js +3 -2
- package/dist/mcp/tools/code-intelligence/c4.js +11 -1
- 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 +58 -10
- package/dist/mcp/tools/quality-assessment/gate.js +12 -1
- package/dist/mcp/tools/requirements-validation/quality-criteria.js +9 -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/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/payload-path-guard.d.ts +75 -0
- package/dist/shared/io/payload-path-guard.js +190 -0
- package/dist/shared/llm/router/agent-router-config.js +2 -1
- package/dist/shared/llm/translation/tool-translator.js +2 -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/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/validation/gate-reexecute.js +7 -4
- 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-4URT6JO2.js +0 -2
- package/dist/cli/chunks/chunk-5LAAZLUC.js +0 -4
- package/dist/cli/chunks/chunk-7DMA5NYL.js +0 -4
- package/dist/cli/chunks/chunk-F2SQPP6U.js +0 -4
- 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-KHSRIPBP.js +0 -180
- package/dist/cli/chunks/chunk-KTSLTZSG.js +0 -2
- package/dist/cli/chunks/chunk-O3JLOVZX.js +0 -4
- package/dist/cli/chunks/chunk-THAY7WHO.js +0 -12
- package/dist/cli/chunks/chunk-VXZJOKOX.js +0 -2
- package/dist/cli/chunks/chunk-VYLM2YV5.js +0 -12
- 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
|
@@ -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.
|
|
@@ -360,14 +399,15 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
360
399
|
// Get pattern statistics from the real service
|
|
361
400
|
const statsResult = await learningCoordinator.getPatternStats(domain);
|
|
362
401
|
if (!statsResult.success) {
|
|
363
|
-
//
|
|
402
|
+
// Stats could not be read: nothing is measured, so no averages (#1121).
|
|
364
403
|
return {
|
|
365
404
|
totalPatterns: 0,
|
|
366
405
|
byType: {},
|
|
367
406
|
byDomain: {},
|
|
368
407
|
topPatterns: [],
|
|
369
|
-
avgConfidence:
|
|
370
|
-
avgSuccessRate:
|
|
408
|
+
avgConfidence: null,
|
|
409
|
+
avgSuccessRate: null,
|
|
410
|
+
evidenceStatus: 'insufficient-evidence',
|
|
371
411
|
sona,
|
|
372
412
|
};
|
|
373
413
|
}
|
|
@@ -382,13 +422,17 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
382
422
|
usageCount: p.usageCount,
|
|
383
423
|
successRate: p.successRate,
|
|
384
424
|
}));
|
|
425
|
+
const measured = stats.totalPatterns > 0;
|
|
385
426
|
return {
|
|
386
427
|
totalPatterns: stats.totalPatterns,
|
|
387
428
|
byType: stats.byType,
|
|
388
429
|
byDomain: stats.byDomain,
|
|
389
430
|
topPatterns,
|
|
390
|
-
avgConfidence: stats.avgConfidence,
|
|
391
|
-
avgSuccessRate: stats.avgSuccessRate,
|
|
431
|
+
avgConfidence: measured ? stats.avgConfidence : null,
|
|
432
|
+
avgSuccessRate: measured ? stats.avgSuccessRate : null,
|
|
433
|
+
...(stats.assignedPatternsExcluded ? { assignedPatternsExcluded: stats.assignedPatternsExcluded } : {}),
|
|
434
|
+
...(stats.legacyPatternsExcluded ? { legacyPatternsExcluded: stats.legacyPatternsExcluded } : {}),
|
|
435
|
+
...(measured ? {} : { evidenceStatus: 'insufficient-evidence' }),
|
|
392
436
|
sona,
|
|
393
437
|
};
|
|
394
438
|
}
|
|
@@ -438,6 +482,9 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
438
482
|
const assignedPatternsExcluded = statsResult.success
|
|
439
483
|
? statsResult.value.assignedPatternsExcluded ?? 0
|
|
440
484
|
: 0;
|
|
485
|
+
const legacyPatternsExcluded = statsResult.success
|
|
486
|
+
? statsResult.value.legacyPatternsExcluded ?? 0
|
|
487
|
+
: 0;
|
|
441
488
|
const avgSuccessRate = totalPatterns > 0 && statsResult.success
|
|
442
489
|
? statsResult.value.avgSuccessRate
|
|
443
490
|
: null;
|
|
@@ -491,6 +538,7 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
491
538
|
experiencesLast24h,
|
|
492
539
|
...(assignedRewardsExcluded > 0 ? { assignedRewardsExcluded } : {}),
|
|
493
540
|
...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
|
|
541
|
+
...(legacyPatternsExcluded > 0 ? { legacyPatternsExcluded } : {}),
|
|
494
542
|
topPerformingDomains,
|
|
495
543
|
...(unmeasured.length > 0
|
|
496
544
|
? { evidenceStatus: 'insufficient-evidence', unmeasured }
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { MCPToolBase } from '../base.js';
|
|
13
13
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
14
|
+
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
|
|
15
|
+
import { findProjectRoot } from '../../../kernel/project-root.js';
|
|
14
16
|
import { getLLMRouter } from '../base.js';
|
|
15
17
|
import { runQualityGate, } from '../../../validation/quality-gate-runner.js';
|
|
16
18
|
import { createRouterFrontierJudge, createUnavailableJudge, } from '../../../validation/frontier-judge.js';
|
|
@@ -32,6 +34,15 @@ export class QualityGateTool extends MCPToolBase {
|
|
|
32
34
|
if (typeof params.artifact !== 'string' || params.artifact.length === 0) {
|
|
33
35
|
return { success: false, error: 'artifact (non-empty string) is required' };
|
|
34
36
|
}
|
|
37
|
+
// #1126: a caller-named anchor must be a regular file inside the project
|
|
38
|
+
// (relative paths resolve against the project root, as the runner does).
|
|
39
|
+
let anchorPath;
|
|
40
|
+
if (params.anchorPath !== undefined) {
|
|
41
|
+
const confined = await requirePayloadPath('qe/quality/gate', 'anchorPath', params.anchorPath, { basePath: findProjectRoot(), maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
42
|
+
if (!confined.success)
|
|
43
|
+
return { success: false, error: confined.error.message };
|
|
44
|
+
anchorPath = confined.value;
|
|
45
|
+
}
|
|
35
46
|
const router = await getLLMRouter(context);
|
|
36
47
|
const judge = router
|
|
37
48
|
? createRouterFrontierJudge(router, {
|
|
@@ -47,7 +58,7 @@ export class QualityGateTool extends MCPToolBase {
|
|
|
47
58
|
artifact: params.artifact,
|
|
48
59
|
checklistId: params.checklistId,
|
|
49
60
|
judge,
|
|
50
|
-
anchorPath
|
|
61
|
+
anchorPath,
|
|
51
62
|
verificationManifest: params.verificationManifest,
|
|
52
63
|
});
|
|
53
64
|
return { success: true, data: result };
|
|
@@ -15,6 +15,7 @@ import { MCPToolBase } from '../base.js';
|
|
|
15
15
|
import { createQualityCriteriaService, HTSM_CATEGORIES, NEVER_OMIT_CATEGORIES, } from '../../../domains/requirements-validation/index.js';
|
|
16
16
|
import { existsSync, readFileSync } from 'fs';
|
|
17
17
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
18
|
+
import { MAX_PAYLOAD_FILE_BYTES, requirePayloadPath } from '../../../shared/io/payload-path-guard.js';
|
|
18
19
|
// ============================================================================
|
|
19
20
|
// Tool Implementation
|
|
20
21
|
// ============================================================================
|
|
@@ -121,8 +122,14 @@ export class QualityCriteriaTool extends MCPToolBase {
|
|
|
121
122
|
});
|
|
122
123
|
// Load epic content
|
|
123
124
|
let content = epicContent || '';
|
|
124
|
-
|
|
125
|
-
|
|
125
|
+
// #1126: the epic is returned verbatim in the agent prompt, so read it
|
|
126
|
+
// only from a regular file inside the project.
|
|
127
|
+
if (epicPath) {
|
|
128
|
+
const confined = await requirePayloadPath('quality-criteria', 'epicPath', epicPath, { allowMissing: true, maxBytes: MAX_PAYLOAD_FILE_BYTES });
|
|
129
|
+
if (!confined.success)
|
|
130
|
+
return { success: false, error: confined.error.message };
|
|
131
|
+
if (existsSync(confined.value))
|
|
132
|
+
content = readFileSync(confined.value, 'utf-8');
|
|
126
133
|
}
|
|
127
134
|
if (!content && !epicPath) {
|
|
128
135
|
return {
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @module migration/agent-compat
|
|
8
8
|
* @see docs/adr/adr-048-agent-naming-conventions.md
|
|
9
9
|
*/
|
|
10
|
+
import { getOwn } from '../shared/utils/safe-record.js';
|
|
10
11
|
/**
|
|
11
12
|
* Complete mapping of deprecated V2 agent names to their V3 equivalents with domain info.
|
|
12
13
|
*
|
|
@@ -127,7 +128,8 @@ export const v2AgentMapping = Object.fromEntries(Object.entries(v2AgentMappingWi
|
|
|
127
128
|
* ```
|
|
128
129
|
*/
|
|
129
130
|
export function resolveAgentName(name) {
|
|
130
|
-
|
|
131
|
+
// #1136: own entries only; `constructor` is not a V2 agent name.
|
|
132
|
+
return getOwn(v2AgentMapping, name) ?? name;
|
|
131
133
|
}
|
|
132
134
|
/**
|
|
133
135
|
* Checks if an agent name is a deprecated V2 agent.
|
|
@@ -146,7 +148,7 @@ export function resolveAgentName(name) {
|
|
|
146
148
|
* ```
|
|
147
149
|
*/
|
|
148
150
|
export function isDeprecatedAgent(name) {
|
|
149
|
-
return name
|
|
151
|
+
return Object.hasOwn(v2AgentMapping, name);
|
|
150
152
|
}
|
|
151
153
|
/**
|
|
152
154
|
* Generates a deprecation warning message for a V2 agent name.
|
|
@@ -170,7 +172,7 @@ export function isDeprecatedAgent(name) {
|
|
|
170
172
|
* ```
|
|
171
173
|
*/
|
|
172
174
|
export function getDeprecationWarning(v2Name) {
|
|
173
|
-
const v3Name = v2AgentMapping
|
|
175
|
+
const v3Name = getOwn(v2AgentMapping, v2Name);
|
|
174
176
|
if (!v3Name) {
|
|
175
177
|
return '';
|
|
176
178
|
}
|
|
@@ -211,7 +213,7 @@ export const v3Agents = [
|
|
|
211
213
|
*/
|
|
212
214
|
export function getAgentDomain(agentName) {
|
|
213
215
|
// Check V2 mapping
|
|
214
|
-
const v2Entry = v2AgentMappingWithDomain
|
|
216
|
+
const v2Entry = getOwn(v2AgentMappingWithDomain, agentName);
|
|
215
217
|
if (v2Entry) {
|
|
216
218
|
return v2Entry.domain;
|
|
217
219
|
}
|
|
@@ -261,7 +263,7 @@ export function generateMigrationReport(usedAgents) {
|
|
|
261
263
|
const alreadyV3 = [];
|
|
262
264
|
const unknown = [];
|
|
263
265
|
for (const agent of usedAgents) {
|
|
264
|
-
const v2Entry = v2AgentMappingWithDomain
|
|
266
|
+
const v2Entry = getOwn(v2AgentMappingWithDomain, agent);
|
|
265
267
|
if (v2Entry) {
|
|
266
268
|
needsMigration.push({
|
|
267
269
|
v2Name: agent,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Dream insights archive table (#1066, #1116)
|
|
3
|
+
*
|
|
4
|
+
* The dream_insights retention sweep copies each stale insight here before it
|
|
5
|
+
* deletes it (#1066). Until #1116 the sweep created the table lazily on its
|
|
6
|
+
* first run, outside the versioned schema; it is now created by the v14
|
|
7
|
+
* migration.
|
|
8
|
+
*
|
|
9
|
+
* Additive and idempotent: `CREATE ... IF NOT EXISTS` only, so a database where
|
|
10
|
+
* an earlier sweep already created the table (with its rows) is left as it
|
|
11
|
+
* is, and an older AQE that still creates it lazily with the same statement
|
|
12
|
+
* keeps working on a migrated database.
|
|
13
|
+
*
|
|
14
|
+
* Same columns as dream_insights plus archive_id and archived_at. `id` is not
|
|
15
|
+
* unique here: an insight that comes back (for example from a brain import)
|
|
16
|
+
* and is swept again gets a second row instead of replacing the first. No
|
|
17
|
+
* foreign key, so deleting a dream cycle does not cascade into the archive.
|
|
18
|
+
*/
|
|
19
|
+
import type { Database as DatabaseType } from 'better-sqlite3';
|
|
20
|
+
export declare const MIGRATION_VERSION = "20261018_add_dream_insights_archive";
|
|
21
|
+
export declare const DREAM_INSIGHTS_ARCHIVE_TABLE = "dream_insights_archive";
|
|
22
|
+
/** The table, exactly as the 3.15.9 sweep created it lazily. */
|
|
23
|
+
export declare const DREAM_INSIGHTS_ARCHIVE_TABLE_SQL = "\n CREATE TABLE IF NOT EXISTS dream_insights_archive (\n archive_id INTEGER PRIMARY KEY AUTOINCREMENT,\n id TEXT NOT NULL,\n cycle_id TEXT,\n insight_type TEXT,\n source_concepts TEXT,\n description TEXT,\n novelty_score REAL,\n confidence_score REAL,\n actionable INTEGER,\n applied INTEGER,\n suggested_action TEXT,\n pattern_id TEXT,\n created_at TEXT,\n archived_at TEXT NOT NULL DEFAULT (datetime('now'))\n )\n";
|
|
24
|
+
export declare const DREAM_INSIGHTS_ARCHIVE_SCHEMA = "\n \n CREATE TABLE IF NOT EXISTS dream_insights_archive (\n archive_id INTEGER PRIMARY KEY AUTOINCREMENT,\n id TEXT NOT NULL,\n cycle_id TEXT,\n insight_type TEXT,\n source_concepts TEXT,\n description TEXT,\n novelty_score REAL,\n confidence_score REAL,\n actionable INTEGER,\n applied INTEGER,\n suggested_action TEXT,\n pattern_id TEXT,\n created_at TEXT,\n archived_at TEXT NOT NULL DEFAULT (datetime('now'))\n )\n;\n -- The sweep's read-back looks copies up by insight id.\n CREATE INDEX IF NOT EXISTS idx_dream_insights_archive_id ON dream_insights_archive(id);\n";
|
|
25
|
+
export declare function applyMigration(db: DatabaseType): void;
|
|
26
|
+
export declare function isMigrationApplied(db: DatabaseType): boolean;
|
|
27
|
+
//# sourceMappingURL=20261018_add_dream_insights_archive.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Dream insights archive table (#1066, #1116)
|
|
3
|
+
*
|
|
4
|
+
* The dream_insights retention sweep copies each stale insight here before it
|
|
5
|
+
* deletes it (#1066). Until #1116 the sweep created the table lazily on its
|
|
6
|
+
* first run, outside the versioned schema; it is now created by the v14
|
|
7
|
+
* migration.
|
|
8
|
+
*
|
|
9
|
+
* Additive and idempotent: `CREATE ... IF NOT EXISTS` only, so a database where
|
|
10
|
+
* an earlier sweep already created the table (with its rows) is left as it
|
|
11
|
+
* is, and an older AQE that still creates it lazily with the same statement
|
|
12
|
+
* keeps working on a migrated database.
|
|
13
|
+
*
|
|
14
|
+
* Same columns as dream_insights plus archive_id and archived_at. `id` is not
|
|
15
|
+
* unique here: an insight that comes back (for example from a brain import)
|
|
16
|
+
* and is swept again gets a second row instead of replacing the first. No
|
|
17
|
+
* foreign key, so deleting a dream cycle does not cascade into the archive.
|
|
18
|
+
*/
|
|
19
|
+
export const MIGRATION_VERSION = '20261018_add_dream_insights_archive';
|
|
20
|
+
export const DREAM_INSIGHTS_ARCHIVE_TABLE = 'dream_insights_archive';
|
|
21
|
+
/** The table, exactly as the 3.15.9 sweep created it lazily. */
|
|
22
|
+
export const DREAM_INSIGHTS_ARCHIVE_TABLE_SQL = `
|
|
23
|
+
CREATE TABLE IF NOT EXISTS ${DREAM_INSIGHTS_ARCHIVE_TABLE} (
|
|
24
|
+
archive_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
25
|
+
id TEXT NOT NULL,
|
|
26
|
+
cycle_id TEXT,
|
|
27
|
+
insight_type TEXT,
|
|
28
|
+
source_concepts TEXT,
|
|
29
|
+
description TEXT,
|
|
30
|
+
novelty_score REAL,
|
|
31
|
+
confidence_score REAL,
|
|
32
|
+
actionable INTEGER,
|
|
33
|
+
applied INTEGER,
|
|
34
|
+
suggested_action TEXT,
|
|
35
|
+
pattern_id TEXT,
|
|
36
|
+
created_at TEXT,
|
|
37
|
+
archived_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
38
|
+
)
|
|
39
|
+
`;
|
|
40
|
+
export const DREAM_INSIGHTS_ARCHIVE_SCHEMA = `
|
|
41
|
+
${DREAM_INSIGHTS_ARCHIVE_TABLE_SQL};
|
|
42
|
+
-- The sweep's read-back looks copies up by insight id.
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_dream_insights_archive_id ON ${DREAM_INSIGHTS_ARCHIVE_TABLE}(id);
|
|
44
|
+
`;
|
|
45
|
+
export function applyMigration(db) {
|
|
46
|
+
db.exec(DREAM_INSIGHTS_ARCHIVE_SCHEMA);
|
|
47
|
+
}
|
|
48
|
+
export function isMigrationApplied(db) {
|
|
49
|
+
try {
|
|
50
|
+
const result = db.prepare(`SELECT COUNT(*) AS count FROM sqlite_master WHERE type = 'table' AND name = ?`).get(DREAM_INSIGHTS_ARCHIVE_TABLE);
|
|
51
|
+
return result.count === 1;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=20261018_add_dream_insights_archive.js.map
|
|
@@ -57,6 +57,10 @@ export interface GitAnalyzerConfig {
|
|
|
57
57
|
enableCache?: boolean;
|
|
58
58
|
/** Cache TTL in milliseconds (default: 5 minutes) */
|
|
59
59
|
cacheTtl?: number;
|
|
60
|
+
/** Deadline in milliseconds shared by the git calls of one analysis (default: 30 seconds) */
|
|
61
|
+
gitTimeoutMs?: number;
|
|
62
|
+
/** Deadline in milliseconds for all analyses of one file inside withFileDeadline() (default: 60 seconds) */
|
|
63
|
+
fileTimeoutMs?: number;
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
62
66
|
* Git Analyzer for defect prediction metrics
|
|
@@ -65,11 +69,27 @@ export declare class GitAnalyzer {
|
|
|
65
69
|
private readonly config;
|
|
66
70
|
private readonly cache;
|
|
67
71
|
private isGitRepo;
|
|
72
|
+
/** After a rev-parse timeout, when to ask git again (until then: "timeout"). */
|
|
73
|
+
private repoRetryAt;
|
|
74
|
+
private readonly timedOutFiles;
|
|
75
|
+
/** Files inside withFileDeadline() and when their git time runs out. */
|
|
76
|
+
private readonly fileDeadlines;
|
|
68
77
|
constructor(config?: GitAnalyzerConfig);
|
|
69
78
|
/**
|
|
70
79
|
* Check if current directory is a git repository
|
|
71
80
|
*/
|
|
72
81
|
isGitRepository(): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* True when git timed out while analysing `filePath` since the last call, so
|
|
84
|
+
* the analysis returned its "git unavailable" default rather than a result.
|
|
85
|
+
*/
|
|
86
|
+
consumeTimeout(filePath: string): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Run `work`, during which every analysis of `filePath` also stops at one
|
|
89
|
+
* shared `fileTimeoutMs` deadline. One file's analyses then wait for git at
|
|
90
|
+
* most that long together, rather than `gitTimeoutMs` each (#1115).
|
|
91
|
+
*/
|
|
92
|
+
withFileDeadline<T>(filePath: string, work: () => Promise<T>): Promise<T>;
|
|
73
93
|
/**
|
|
74
94
|
* Get file change frequency (commits in last 90 days / 3)
|
|
75
95
|
* Returns normalized value 0-1
|
|
@@ -98,6 +118,7 @@ export declare class GitAnalyzer {
|
|
|
98
118
|
* Get files changed since a specific date
|
|
99
119
|
* @param since - Date to check changes from (default: 24 hours ago)
|
|
100
120
|
* @returns Array of changed file paths relative to repo root
|
|
121
|
+
* @throws GitTimeoutError when git does not answer within `gitTimeoutMs`
|
|
101
122
|
*/
|
|
102
123
|
getChangedFiles(since?: Date): Promise<string[]>;
|
|
103
124
|
/**
|
|
@@ -107,13 +128,41 @@ export declare class GitAnalyzer {
|
|
|
107
128
|
* @throws Error when `commitHash` is option-shaped (starts with "-") or otherwise
|
|
108
129
|
* not a safe revision argument; git would otherwise parse it as an option
|
|
109
130
|
* (e.g. `--output=<path>` writes an arbitrary file). See issue #960.
|
|
131
|
+
* @throws GitTimeoutError when git does not answer within `gitTimeoutMs`
|
|
110
132
|
*/
|
|
111
133
|
getCommitFiles(commitHash?: string): Promise<string[]>;
|
|
112
134
|
/**
|
|
113
135
|
* Get files with uncommitted changes (staged + unstaged)
|
|
114
136
|
* @returns Array of modified file paths relative to repo root
|
|
137
|
+
* @throws GitTimeoutError when git does not answer within `gitTimeoutMs`
|
|
115
138
|
*/
|
|
116
139
|
getUncommittedFiles(): Promise<string[]>;
|
|
140
|
+
/**
|
|
141
|
+
* Count commits whose message matches any bug keyword, in one `git log`
|
|
142
|
+
* (repeated --grep patterns are OR-ed). Keywords are sanitized arguments and
|
|
143
|
+
* never reach a shell.
|
|
144
|
+
*/
|
|
145
|
+
private countBugFixCommits;
|
|
146
|
+
/**
|
|
147
|
+
* Run one file's analysis with every git call sharing one `gitTimeoutMs`
|
|
148
|
+
* deadline (#1115). When git is unavailable or times out, the analysis
|
|
149
|
+
* returns its default, which callers treat as "no git data", and a timeout
|
|
150
|
+
* is recorded for consumeTimeout(). A timeout never yields a measured 0.
|
|
151
|
+
*/
|
|
152
|
+
private analyze;
|
|
153
|
+
/**
|
|
154
|
+
* Whether the repo root is a git work tree. A timeout is not an answer: it
|
|
155
|
+
* is remembered for `cacheTtl` so a hung git is not waited on for every
|
|
156
|
+
* file, and then git is asked again.
|
|
157
|
+
*/
|
|
158
|
+
private repoState;
|
|
159
|
+
/**
|
|
160
|
+
* Git queries in the repo root that share a deadline of `gitTimeoutMs` from
|
|
161
|
+
* now, or `fileDeadline` when that comes first. Git runs asynchronously in its own process group, so a slow or hung
|
|
162
|
+
* git (a network filesystem, a credential prompt) neither blocks the MCP
|
|
163
|
+
* server's event loop nor outlives its deadline (#1115).
|
|
164
|
+
*/
|
|
165
|
+
private query;
|
|
117
166
|
/**
|
|
118
167
|
* Get relative path from repo root
|
|
119
168
|
*/
|