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
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* ADR-051: LLM enhancement for AI-powered defect risk analysis
|
|
7
7
|
*/
|
|
8
8
|
import { v4 as uuidv4 } from 'uuid';
|
|
9
|
+
import { prunePredictionHistory } from '../prediction-history.js';
|
|
9
10
|
import { LoggerFactory } from '../../../logging/index.js';
|
|
10
11
|
import { ok, err } from '../../../shared/types/index.js';
|
|
11
12
|
import { GitAnalyzer } from '../../../shared/git/index.js';
|
|
@@ -54,6 +55,8 @@ const DEFAULT_FEATURES = [
|
|
|
54
55
|
* ADR-051: Added LLM enhancement for AI-powered defect risk analysis
|
|
55
56
|
*/
|
|
56
57
|
const logger = LoggerFactory.create('defect-intelligence/defect-predictor');
|
|
58
|
+
const GIT_TIMEOUT_WARNING = 'Git history timed out for this file: change frequency, developer experience, code age and bug history ' +
|
|
59
|
+
'use their "no git data" defaults, so this prediction is incomplete.';
|
|
57
60
|
export class DefectPredictorService {
|
|
58
61
|
config;
|
|
59
62
|
memory;
|
|
@@ -429,7 +432,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
|
|
|
429
432
|
// ============================================================================
|
|
430
433
|
async predictForFile(file, features, threshold) {
|
|
431
434
|
// Extract file metrics
|
|
432
|
-
const fileMetrics = await this.extractFileMetrics(file);
|
|
435
|
+
const { metrics: fileMetrics, gitTimedOut } = await this.extractFileMetrics(file);
|
|
433
436
|
// Calculate probability based on weighted features
|
|
434
437
|
const featureContributions = [];
|
|
435
438
|
let probability = 0;
|
|
@@ -448,33 +451,44 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
|
|
|
448
451
|
const riskLevel = this.probabilityToRisk(probability, threshold);
|
|
449
452
|
// Generate recommendations based on high-contributing factors
|
|
450
453
|
const recommendations = this.generateRecommendations(featureContributions, probability);
|
|
454
|
+
if (gitTimedOut)
|
|
455
|
+
recommendations.unshift(GIT_TIMEOUT_WARNING);
|
|
451
456
|
return {
|
|
452
457
|
file,
|
|
453
458
|
probability,
|
|
454
459
|
riskLevel,
|
|
455
460
|
factors: featureContributions.filter((f) => f.contribution > 0.05),
|
|
456
461
|
recommendations,
|
|
462
|
+
...(gitTimedOut ? { warnings: [GIT_TIMEOUT_WARNING] } : {}),
|
|
457
463
|
};
|
|
458
464
|
}
|
|
459
465
|
async extractFileMetrics(file) {
|
|
460
466
|
// Try to get cached metrics
|
|
461
467
|
const cachedMetrics = await this.memory.get(`${this.config.modelNamespace}:file-metrics:${file}`);
|
|
462
468
|
if (cachedMetrics) {
|
|
463
|
-
return cachedMetrics;
|
|
469
|
+
return { metrics: cachedMetrics, gitTimedOut: false };
|
|
464
470
|
}
|
|
465
471
|
// Calculate metrics using real code analysis and git history
|
|
466
|
-
const
|
|
472
|
+
const measure = async () => ({
|
|
467
473
|
codeComplexity: await this.calculateComplexity(file),
|
|
468
474
|
changeFrequency: await this.getChangeFrequency(file),
|
|
469
475
|
developerExperience: await this.getDeveloperExperience(file),
|
|
470
476
|
testCoverage: await this.getTestCoverage(file),
|
|
471
477
|
codeAge: await this.getCodeAge(file),
|
|
472
478
|
bugHistory: await this.getBugHistory(file),
|
|
473
|
-
};
|
|
474
|
-
//
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
479
|
+
});
|
|
480
|
+
// #1115: the git-based metrics of one file share one deadline.
|
|
481
|
+
const metrics = this.gitAnalyzer.withFileDeadline
|
|
482
|
+
? await this.gitAnalyzer.withFileDeadline(file, measure)
|
|
483
|
+
: await measure();
|
|
484
|
+
// #1115: a git timeout left defaults in the git-based metrics; do not
|
|
485
|
+
// cache them as this file's measured metrics.
|
|
486
|
+
const gitTimedOut = this.gitAnalyzer.consumeTimeout?.(file) === true;
|
|
487
|
+
if (!gitTimedOut) {
|
|
488
|
+
await this.memory.set(`${this.config.modelNamespace}:file-metrics:${file}`, metrics, { namespace: 'defect-intelligence', ttl: 3600 } // 1 hour cache
|
|
489
|
+
);
|
|
490
|
+
}
|
|
491
|
+
return { metrics, gitTimedOut };
|
|
478
492
|
}
|
|
479
493
|
/**
|
|
480
494
|
* Calculate code complexity using TypeScript AST analysis
|
|
@@ -730,7 +744,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
|
|
|
730
744
|
let risk = 0;
|
|
731
745
|
// Determine impacted areas based on file path
|
|
732
746
|
const area = this.categorizeFile(file);
|
|
733
|
-
const fileRisk = (await this.extractFileMetrics(file)).codeComplexity;
|
|
747
|
+
const fileRisk = (await this.extractFileMetrics(file)).metrics.codeComplexity;
|
|
734
748
|
areas.push({
|
|
735
749
|
area,
|
|
736
750
|
files: [file],
|
|
@@ -742,7 +756,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
|
|
|
742
756
|
if (depth === 'deep') {
|
|
743
757
|
const dependencies = await this.analyzeDependencies(file);
|
|
744
758
|
for (const dep of dependencies) {
|
|
745
|
-
const depRisk = (await this.extractFileMetrics(dep)).codeComplexity * 0.5;
|
|
759
|
+
const depRisk = (await this.extractFileMetrics(dep)).metrics.codeComplexity * 0.5;
|
|
746
760
|
areas.push({
|
|
747
761
|
area: this.categorizeFile(dep),
|
|
748
762
|
files: [dep],
|
|
@@ -905,6 +919,7 @@ Be specific and actionable. Focus on concrete issues, not generic advice.`,
|
|
|
905
919
|
timestamp: new Date().toISOString(),
|
|
906
920
|
}, { namespace: 'defect-intelligence', ttl: 86400 * 7 } // 7 days
|
|
907
921
|
);
|
|
922
|
+
await prunePredictionHistory(this.memory, this.config.modelNamespace);
|
|
908
923
|
}
|
|
909
924
|
async recalculateMetrics(feedback) {
|
|
910
925
|
// Simple online update of accuracy
|
|
@@ -375,7 +375,8 @@ export class MessageBrokerService {
|
|
|
375
375
|
// Check required properties
|
|
376
376
|
if (schemaDef.required && Array.isArray(schemaDef.required) && typeof data === 'object' && data !== null) {
|
|
377
377
|
for (const prop of schemaDef.required) {
|
|
378
|
-
|
|
378
|
+
// #1136: own properties only; an inherited `constructor` is not present.
|
|
379
|
+
if (!Object.hasOwn(data, prop)) {
|
|
379
380
|
errors.push(`Required property '${prop}' is missing`);
|
|
380
381
|
}
|
|
381
382
|
}
|
|
@@ -383,7 +384,7 @@ export class MessageBrokerService {
|
|
|
383
384
|
// Check properties if defined
|
|
384
385
|
if (schemaDef.properties && typeof data === 'object' && data !== null) {
|
|
385
386
|
for (const [prop, propSchema] of Object.entries(schemaDef.properties)) {
|
|
386
|
-
if (prop
|
|
387
|
+
if (Object.hasOwn(data, prop)) {
|
|
387
388
|
const propDef = propSchema;
|
|
388
389
|
if (propDef.type) {
|
|
389
390
|
const actualType = Array.isArray(data[prop]) ? 'array' : typeof data[prop];
|
|
@@ -164,7 +164,8 @@ export class ODataService {
|
|
|
164
164
|
const errors = [];
|
|
165
165
|
// Validate required parameters
|
|
166
166
|
for (const param of funcImport.parameters) {
|
|
167
|
-
|
|
167
|
+
// #1136: own properties only; an inherited `constructor` is not a parameter.
|
|
168
|
+
if (!param.nullable && !Object.hasOwn(parameters, param.name)) {
|
|
168
169
|
errors.push({
|
|
169
170
|
type: 'metadata',
|
|
170
171
|
path: `${functionName}/${param.name}`,
|
|
@@ -251,7 +251,8 @@ export class SapIntegrationService {
|
|
|
251
251
|
validateExportParams(expectedParams, exportValues) {
|
|
252
252
|
const errors = [];
|
|
253
253
|
for (const param of expectedParams) {
|
|
254
|
-
|
|
254
|
+
// #1136: own properties only; an inherited `constructor` is not a parameter.
|
|
255
|
+
if (!Object.hasOwn(exportValues, param)) {
|
|
255
256
|
errors.push(`Expected export parameter '${param}' not found in response`);
|
|
256
257
|
}
|
|
257
258
|
}
|
|
@@ -260,7 +261,7 @@ export class SapIntegrationService {
|
|
|
260
261
|
validateTableParams(expectedParams, tableData) {
|
|
261
262
|
const errors = [];
|
|
262
263
|
for (const param of expectedParams) {
|
|
263
|
-
if (!(param
|
|
264
|
+
if (!Object.hasOwn(tableData, param)) {
|
|
264
265
|
errors.push(`Expected table parameter '${param}' not found in response`);
|
|
265
266
|
}
|
|
266
267
|
}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* - `learning:pattern:creation:<id>`: creation provenance written by
|
|
8
8
|
* `LearningCoordinatorService.recordPatternCreation()` (no `context`)
|
|
9
9
|
* - `learning:pattern:archived:<id>`: archived patterns written by
|
|
10
|
-
* `
|
|
11
|
-
* learning-consolidation protocol (full pattern shape)
|
|
10
|
+
* `archiveSelectedPattern()` (pattern-archive.ts) for the merge path and
|
|
11
|
+
* the learning-consolidation protocol (full pattern shape)
|
|
12
12
|
*
|
|
13
13
|
* Every reader of active patterns must go through this module so that
|
|
14
14
|
* provenance and archives are excluded before `get()`, and so that those rows
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* - `learning:pattern:creation:<id>`: creation provenance written by
|
|
8
8
|
* `LearningCoordinatorService.recordPatternCreation()` (no `context`)
|
|
9
9
|
* - `learning:pattern:archived:<id>`: archived patterns written by
|
|
10
|
-
* `
|
|
11
|
-
* learning-consolidation protocol (full pattern shape)
|
|
10
|
+
* `archiveSelectedPattern()` (pattern-archive.ts) for the merge path and
|
|
11
|
+
* the learning-consolidation protocol (full pattern shape)
|
|
12
12
|
*
|
|
13
13
|
* Every reader of active patterns must go through this module so that
|
|
14
14
|
* provenance and archives are excluded before `get()`, and so that those rows
|
|
@@ -412,7 +412,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
412
412
|
const report = {
|
|
413
413
|
knowledgeShared,
|
|
414
414
|
domainsUpdated,
|
|
415
|
-
|
|
415
|
+
// #1121: with no transfer attempted there is no rate, not 100%.
|
|
416
|
+
transferSuccessRate: totalTransfers > 0 ? successfulTransfers / totalTransfers : null,
|
|
416
417
|
newPatternsCreated,
|
|
417
418
|
};
|
|
418
419
|
// Publish event
|
|
@@ -460,10 +461,12 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
460
461
|
const recentMilestones = milestonesResult.success
|
|
461
462
|
? milestonesResult.value
|
|
462
463
|
: [];
|
|
463
|
-
// Calculate overall learning rate
|
|
464
|
-
|
|
464
|
+
// Calculate overall learning rate. #1121: when pattern stats cannot be
|
|
465
|
+
// read, or no measured pattern exists, there is no rate to report; the
|
|
466
|
+
// former 0.5 fallback was an invented value.
|
|
467
|
+
const overallLearningRate = patternStats && patternStats.totalPatterns > 0
|
|
465
468
|
? patternStats.avgSuccessRate * 0.6 + (patternStats.avgConfidence * 0.4)
|
|
466
|
-
:
|
|
469
|
+
: null;
|
|
467
470
|
// Determine top performing domains
|
|
468
471
|
const topPerformingDomains = [];
|
|
469
472
|
if (patternStats) {
|
|
@@ -1062,7 +1065,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
1062
1065
|
sourceProject: 'current',
|
|
1063
1066
|
targetProject: 'current',
|
|
1064
1067
|
patternsTransferred: report.knowledgeShared,
|
|
1065
|
-
|
|
1068
|
+
// Published only after a transfer succeeded, so the rate is measured.
|
|
1069
|
+
successRate: report.transferSuccessRate ?? 0,
|
|
1066
1070
|
};
|
|
1067
1071
|
const event = createEvent(LearningOptimizationEvents.TransferCompleted, 'learning-optimization', payload);
|
|
1068
1072
|
await this.eventBus.publish(event);
|
|
@@ -235,6 +235,8 @@ export interface PatternStats {
|
|
|
235
235
|
readonly topPatterns: LearnedPattern[];
|
|
236
236
|
/** #1109: patterns left out of every figure because they were learned from assigned rewards. */
|
|
237
237
|
readonly assignedPatternsExcluded?: number;
|
|
238
|
+
/** #1121: untagged patterns mined before #1120 (rate selected over successes); left out likewise. */
|
|
239
|
+
readonly legacyPatternsExcluded?: number;
|
|
238
240
|
}
|
|
239
241
|
/**
|
|
240
242
|
* Experience Mining Service
|
|
@@ -486,11 +488,13 @@ export interface DomainOptimizationResult {
|
|
|
486
488
|
export interface CrossDomainSharingReport {
|
|
487
489
|
readonly knowledgeShared: number;
|
|
488
490
|
readonly domainsUpdated: DomainName[];
|
|
489
|
-
|
|
491
|
+
/** Null when no transfer was attempted (#1121). */
|
|
492
|
+
readonly transferSuccessRate: number | null;
|
|
490
493
|
readonly newPatternsCreated: number;
|
|
491
494
|
}
|
|
492
495
|
export interface LearningDashboard {
|
|
493
|
-
|
|
496
|
+
/** Null when pattern stats are unavailable or no measured pattern exists (#1121). */
|
|
497
|
+
readonly overallLearningRate: number | null;
|
|
494
498
|
readonly totalPatterns: number;
|
|
495
499
|
readonly totalKnowledge: number;
|
|
496
500
|
readonly experiencesLast24h: number;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Archiving one learned pattern (#1071, #1106)
|
|
3
|
+
*
|
|
4
|
+
* Archiving is a move inside the `learning-optimization` namespace:
|
|
5
|
+
*
|
|
6
|
+
* learning:pattern:<id> -> learning:pattern:archived:<id>
|
|
7
|
+
*
|
|
8
|
+
* Both callers use it: the consolidation protocol's trim path (#1071) and the
|
|
9
|
+
* merge path in `LearningCoordinatorService.consolidatePatterns` (#1106).
|
|
10
|
+
*
|
|
11
|
+
* Safety rules:
|
|
12
|
+
* - Only the active key of the given pattern is deleted.
|
|
13
|
+
* - The active record must still be that pattern (same id, and the same scores
|
|
14
|
+
* and last use) when the archive runs, or nothing is written or deleted.
|
|
15
|
+
* - The archive copy is read back before the active key is deleted, so a
|
|
16
|
+
* failed or partial write never loses the pattern.
|
|
17
|
+
*/
|
|
18
|
+
import type { MemoryBackend } from '../../kernel/interfaces.js';
|
|
19
|
+
import type { LearnedPattern } from './interfaces.js';
|
|
20
|
+
export type ArchiveOutcome = 'archived' | 'missing' | 'failed';
|
|
21
|
+
/**
|
|
22
|
+
* Write the archive copy of one pattern and read it back, without touching
|
|
23
|
+
* the active key. `copied` means the copy is verified and the active record
|
|
24
|
+
* is still the given pattern.
|
|
25
|
+
*/
|
|
26
|
+
export declare function copyPatternToArchive(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<'copied' | Exclude<ArchiveOutcome, 'archived'>>;
|
|
27
|
+
/** Remove the active key of a pattern whose archive copy was verified. */
|
|
28
|
+
export declare function removeArchivedPattern(memory: MemoryBackend, pattern: LearnedPattern): Promise<void>;
|
|
29
|
+
/** Move one pattern to its archive key in the learning namespace. */
|
|
30
|
+
export declare function archiveSelectedPattern(memory: MemoryBackend, pattern: LearnedPattern, archivedAt?: Date): Promise<ArchiveOutcome>;
|
|
31
|
+
//# sourceMappingURL=pattern-archive.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Archiving one learned pattern (#1071, #1106)
|
|
3
|
+
*
|
|
4
|
+
* Archiving is a move inside the `learning-optimization` namespace:
|
|
5
|
+
*
|
|
6
|
+
* learning:pattern:<id> -> learning:pattern:archived:<id>
|
|
7
|
+
*
|
|
8
|
+
* Both callers use it: the consolidation protocol's trim path (#1071) and the
|
|
9
|
+
* merge path in `LearningCoordinatorService.consolidatePatterns` (#1106).
|
|
10
|
+
*
|
|
11
|
+
* Safety rules:
|
|
12
|
+
* - Only the active key of the given pattern is deleted.
|
|
13
|
+
* - The active record must still be that pattern (same id, and the same scores
|
|
14
|
+
* and last use) when the archive runs, or nothing is written or deleted.
|
|
15
|
+
* - The archive copy is read back before the active key is deleted, so a
|
|
16
|
+
* failed or partial write never loses the pattern.
|
|
17
|
+
*/
|
|
18
|
+
import { LEARNING_NS, LEARNING_PATTERN_KEY_PREFIX, isActivePatternKey } from './active-patterns.js';
|
|
19
|
+
/**
|
|
20
|
+
* Write the archive copy of one pattern and read it back, without touching
|
|
21
|
+
* the active key. `copied` means the copy is verified and the active record
|
|
22
|
+
* is still the given pattern.
|
|
23
|
+
*/
|
|
24
|
+
export async function copyPatternToArchive(memory, pattern, archivedAt = new Date()) {
|
|
25
|
+
const activeKey = `${LEARNING_PATTERN_KEY_PREFIX}${pattern.id}`;
|
|
26
|
+
if (!isActivePatternKey(activeKey))
|
|
27
|
+
return 'missing';
|
|
28
|
+
const current = await memory.get(activeKey, LEARNING_NS);
|
|
29
|
+
if (!current || current.id !== pattern.id || changedSinceSelection(current, pattern))
|
|
30
|
+
return 'missing';
|
|
31
|
+
const archiveKey = `${LEARNING_PATTERN_KEY_PREFIX}archived:${pattern.id}`;
|
|
32
|
+
await memory.set(archiveKey, { ...pattern, archivedAt }, { ...LEARNING_NS, persist: true });
|
|
33
|
+
const copy = await memory.get(archiveKey, LEARNING_NS);
|
|
34
|
+
return copy && copy.id === pattern.id ? 'copied' : 'failed';
|
|
35
|
+
}
|
|
36
|
+
/** Remove the active key of a pattern whose archive copy was verified. */
|
|
37
|
+
export async function removeArchivedPattern(memory, pattern) {
|
|
38
|
+
await memory.delete(`${LEARNING_PATTERN_KEY_PREFIX}${pattern.id}`, LEARNING_NS);
|
|
39
|
+
}
|
|
40
|
+
/** Move one pattern to its archive key in the learning namespace. */
|
|
41
|
+
export async function archiveSelectedPattern(memory, pattern, archivedAt = new Date()) {
|
|
42
|
+
const copied = await copyPatternToArchive(memory, pattern, archivedAt);
|
|
43
|
+
if (copied !== 'copied')
|
|
44
|
+
return copied;
|
|
45
|
+
await removeArchivedPattern(memory, pattern);
|
|
46
|
+
return 'archived';
|
|
47
|
+
}
|
|
48
|
+
/** True when the stored record's scores or last use differ from the selected snapshot. */
|
|
49
|
+
function changedSinceSelection(current, selected) {
|
|
50
|
+
const time = (value) => new Date(value).getTime();
|
|
51
|
+
return (!Object.is(current.usageCount, selected.usageCount) ||
|
|
52
|
+
!Object.is(current.confidence, selected.confidence) ||
|
|
53
|
+
!Object.is(current.successRate, selected.successRate) ||
|
|
54
|
+
!Object.is(time(current.lastUsedAt), time(selected.lastUsedAt)));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=pattern-archive.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Building a consolidated pattern (#1106)
|
|
3
|
+
*
|
|
4
|
+
* Pure: no reads or writes. `LearningCoordinatorService.consolidatePatterns`
|
|
5
|
+
* stores what this returns, and the consolidation protocol's dry run uses it
|
|
6
|
+
* to predict the merged pattern, so a dry run selects the same trims as a
|
|
7
|
+
* real run.
|
|
8
|
+
*/
|
|
9
|
+
import type { LearnedPattern } from './interfaces.js';
|
|
10
|
+
/** Merge similar patterns: best template, combined contexts, weighted scores. */
|
|
11
|
+
export declare function buildConsolidatedPattern(patterns: readonly LearnedPattern[], id: string, now?: Date): LearnedPattern;
|
|
12
|
+
//# sourceMappingURL=pattern-consolidation.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Building a consolidated pattern (#1106)
|
|
3
|
+
*
|
|
4
|
+
* Pure: no reads or writes. `LearningCoordinatorService.consolidatePatterns`
|
|
5
|
+
* stores what this returns, and the consolidation protocol's dry run uses it
|
|
6
|
+
* to predict the merged pattern, so a dry run selects the same trims as a
|
|
7
|
+
* real run.
|
|
8
|
+
*/
|
|
9
|
+
import { isMeasuredPattern } from './reward-source.js';
|
|
10
|
+
/** Usage-weighted mean of one score (equal weights when nothing was used). */
|
|
11
|
+
function usageWeighted(patterns, score) {
|
|
12
|
+
const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
|
|
13
|
+
return patterns.reduce((sum, p) => sum + score(p) * (totalUsage > 0 ? p.usageCount / totalUsage : 1 / patterns.length), 0);
|
|
14
|
+
}
|
|
15
|
+
/** Merge similar patterns: best template, combined contexts, weighted scores. */
|
|
16
|
+
export function buildConsolidatedPattern(patterns, id, now = new Date()) {
|
|
17
|
+
const bestPattern = patterns.reduce((best, current) => current.successRate > best.successRate ? current : best);
|
|
18
|
+
const mergedContext = {
|
|
19
|
+
language: bestPattern.context.language,
|
|
20
|
+
framework: bestPattern.context.framework,
|
|
21
|
+
testType: bestPattern.context.testType,
|
|
22
|
+
codeContext: bestPattern.context.codeContext,
|
|
23
|
+
tags: [...new Set(patterns.flatMap((p) => p.context.tags))],
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
id,
|
|
27
|
+
type: bestPattern.type,
|
|
28
|
+
domain: bestPattern.domain,
|
|
29
|
+
name: `consolidated-${bestPattern.name}`,
|
|
30
|
+
description: `Consolidated from ${patterns.length} patterns`,
|
|
31
|
+
confidence: usageWeighted(patterns, (p) => p.confidence),
|
|
32
|
+
usageCount: patterns.reduce((sum, p) => sum + p.usageCount, 0),
|
|
33
|
+
successRate: usageWeighted(patterns, (p) => p.successRate),
|
|
34
|
+
context: mergedContext,
|
|
35
|
+
template: bestPattern.template,
|
|
36
|
+
createdAt: now,
|
|
37
|
+
lastUsedAt: now,
|
|
38
|
+
rewardSource: patterns.every(isMeasuredPattern) ? 'measured' : 'assigned',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=pattern-consolidation.js.map
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
* Patterns learned before the tag existed are read the same way: a pattern
|
|
20
20
|
* whose template lists only actions from those handlers, in the handler's own
|
|
21
21
|
* domain, was mined from assigned rewards (its 100% rate came from them).
|
|
22
|
+
* Every other untagged pattern predates #1120 and is not measured either
|
|
23
|
+
* (see patternEvidenceOf).
|
|
22
24
|
*/
|
|
23
25
|
import type { Experience, LearnedPattern } from './interfaces.js';
|
|
24
26
|
export type RewardSource = 'measured' | 'assigned';
|
|
@@ -32,6 +34,17 @@ export declare function partitionByRewardSource<T extends ProvenanceFields>(expe
|
|
|
32
34
|
};
|
|
33
35
|
type PatternProvenanceFields = Pick<LearnedPattern, 'domain' | 'template' | 'rewardSource'>;
|
|
34
36
|
export declare function patternRewardSourceOf(pattern: PatternProvenanceFields): RewardSource;
|
|
37
|
+
/**
|
|
38
|
+
* Where a stored pattern's success rate came from (#1121).
|
|
39
|
+
* - `measured` / `assigned`: tagged when the pattern was learned (#1109 on).
|
|
40
|
+
* - `pre-1120`: untagged and not mined from assigned rewards. Before #1120,
|
|
41
|
+
* mining dropped failed runs from each action group, so the rate of every
|
|
42
|
+
* untagged pattern started at 100% by selection, not by observation. Such
|
|
43
|
+
* patterns are kept, never rewritten, and never reported as measured; the
|
|
44
|
+
* next learn run mines a tagged replacement from the recorded outcomes.
|
|
45
|
+
*/
|
|
46
|
+
export type PatternEvidence = RewardSource | 'pre-1120';
|
|
47
|
+
export declare function patternEvidenceOf(pattern: PatternProvenanceFields): PatternEvidence;
|
|
35
48
|
export declare function isMeasuredPattern(pattern: PatternProvenanceFields): boolean;
|
|
36
49
|
export {};
|
|
37
50
|
//# sourceMappingURL=reward-source.d.ts.map
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
* Patterns learned before the tag existed are read the same way: a pattern
|
|
20
20
|
* whose template lists only actions from those handlers, in the handler's own
|
|
21
21
|
* domain, was mined from assigned rewards (its 100% rate came from them).
|
|
22
|
+
* Every other untagged pattern predates #1120 and is not measured either
|
|
23
|
+
* (see patternEvidenceOf).
|
|
22
24
|
*/
|
|
23
25
|
/** `agentId.value:action` pairs whose untagged rows carry an assigned reward. */
|
|
24
26
|
const LEGACY_ASSIGNED = new Set([
|
|
@@ -52,7 +54,12 @@ export function patternRewardSourceOf(pattern) {
|
|
|
52
54
|
&& actions.every((action) => LEGACY_ASSIGNED.has(`${pattern.domain}:${action}`));
|
|
53
55
|
return allAssigned ? 'assigned' : 'measured';
|
|
54
56
|
}
|
|
57
|
+
export function patternEvidenceOf(pattern) {
|
|
58
|
+
if (pattern.rewardSource)
|
|
59
|
+
return pattern.rewardSource;
|
|
60
|
+
return patternRewardSourceOf(pattern) === 'assigned' ? 'assigned' : 'pre-1120';
|
|
61
|
+
}
|
|
55
62
|
export function isMeasuredPattern(pattern) {
|
|
56
|
-
return
|
|
63
|
+
return patternEvidenceOf(pattern) === 'measured';
|
|
57
64
|
}
|
|
58
65
|
//# sourceMappingURL=reward-source.js.map
|
|
@@ -155,6 +155,11 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
|
|
|
155
155
|
private recordPatternNulls;
|
|
156
156
|
/** Read recorded input without the pattern-mining side effects. */
|
|
157
157
|
getExperiences(domain: DomainName, timeRange: TimeRange): Promise<Result<Experience[]>>;
|
|
158
|
+
/**
|
|
159
|
+
* Read recorded experiences by ID (#1121). IDs with no stored experience
|
|
160
|
+
* are skipped, so the result length is the number actually read.
|
|
161
|
+
*/
|
|
162
|
+
getExperiencesByIds(ids: readonly string[]): Promise<Result<Experience[]>>;
|
|
158
163
|
/** Mine experiences for insights. */
|
|
159
164
|
mineExperiences(domain: DomainName, timeRange: TimeRange): Promise<Result<MinedInsights>>;
|
|
160
165
|
/**
|
|
@@ -174,7 +179,6 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
|
|
|
174
179
|
*/
|
|
175
180
|
clusterExperiences(experiences: Experience[]): Promise<Result<ExperienceCluster[]>>;
|
|
176
181
|
private storePattern;
|
|
177
|
-
private archivePattern;
|
|
178
182
|
private updatePatternUsage;
|
|
179
183
|
private recordPatternCreation;
|
|
180
184
|
private indexExperience;
|
|
@@ -187,8 +191,6 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
|
|
|
187
191
|
private inferPatternType;
|
|
188
192
|
private generatePatternTemplate;
|
|
189
193
|
private extractPatternContext;
|
|
190
|
-
private calculateConsolidatedConfidence;
|
|
191
|
-
private calculateWeightedSuccessRate;
|
|
192
194
|
private detectAnomalies;
|
|
193
195
|
private calculateStdDev;
|
|
194
196
|
private generateRecommendations;
|
|
@@ -8,7 +8,9 @@ import { ok, err } from '../../../shared/types/index.js';
|
|
|
8
8
|
import { rehydrateDates } from '../../../shared/utils/kv-date-rehydrate.js';
|
|
9
9
|
import { toError } from '../../../shared/error-utils.js';
|
|
10
10
|
import { readActivePatterns } from '../active-patterns.js';
|
|
11
|
-
import { isMeasuredPattern, partitionByRewardSource } from '../reward-source.js';
|
|
11
|
+
import { isMeasuredPattern, partitionByRewardSource, patternEvidenceOf } from '../reward-source.js';
|
|
12
|
+
import { copyPatternToArchive, removeArchivedPattern } from '../pattern-archive.js';
|
|
13
|
+
import { buildConsolidatedPattern } from '../pattern-consolidation.js';
|
|
12
14
|
import { createQEFlashAttention, } from '../../../integrations/ruvector/wrappers.js';
|
|
13
15
|
import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
|
|
14
16
|
import { createSafeRecord } from '../../../shared/utils/safe-record.js';
|
|
@@ -354,34 +356,28 @@ Provide:
|
|
|
354
356
|
return err(new Error('Not enough valid patterns found'));
|
|
355
357
|
}
|
|
356
358
|
// Merge patterns - take best template, combine contexts
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
usageCount: patterns.reduce((sum, p) => sum + p.usageCount, 0),
|
|
373
|
-
successRate: this.calculateWeightedSuccessRate(patterns),
|
|
374
|
-
context: mergedContext,
|
|
375
|
-
template: bestPattern.template,
|
|
376
|
-
createdAt: new Date(),
|
|
377
|
-
lastUsedAt: new Date(),
|
|
378
|
-
rewardSource: patterns.every(isMeasuredPattern) ? 'measured' : 'assigned',
|
|
379
|
-
};
|
|
380
|
-
// Store consolidated pattern
|
|
359
|
+
const consolidatedPattern = buildConsolidatedPattern(patterns, uuidv4());
|
|
360
|
+
// #1106: all or nothing. Every source pattern's archive copy is written
|
|
361
|
+
// and read back first; then the consolidated pattern is stored and read
|
|
362
|
+
// back; only then are the source patterns removed from the active set.
|
|
363
|
+
// If any step fails, no source pattern is deleted.
|
|
364
|
+
const archivedAt = new Date();
|
|
365
|
+
let notCopied = 0;
|
|
366
|
+
for (const pattern of patterns) {
|
|
367
|
+
if (await copyPatternToArchive(this.memory, pattern, archivedAt) !== 'copied')
|
|
368
|
+
notCopied++;
|
|
369
|
+
}
|
|
370
|
+
if (notCopied > 0) {
|
|
371
|
+
return err(new Error(`${notCopied} of ${patterns.length} source patterns could not be archived (archive copy not verified); ` +
|
|
372
|
+
'nothing was merged and every source pattern was left active'));
|
|
373
|
+
}
|
|
381
374
|
await this.storePattern(consolidatedPattern);
|
|
382
|
-
|
|
375
|
+
const stored = await this.memory.get(`learning:pattern:${consolidatedPattern.id}`, LEARNING_NS);
|
|
376
|
+
if (!stored || stored.id !== consolidatedPattern.id) {
|
|
377
|
+
return err(new Error('Consolidated pattern could not be read back; nothing was merged and every source pattern was left active'));
|
|
378
|
+
}
|
|
383
379
|
for (const pattern of patterns) {
|
|
384
|
-
await this.
|
|
380
|
+
await removeArchivedPattern(this.memory, pattern);
|
|
385
381
|
}
|
|
386
382
|
return ok(consolidatedPattern);
|
|
387
383
|
}
|
|
@@ -395,9 +391,10 @@ Provide:
|
|
|
395
391
|
async getPatternStats(domain) {
|
|
396
392
|
try {
|
|
397
393
|
const inDomain = (await readActiveLearnedPatterns(this.memory)).filter((pattern) => !domain || pattern.domain === domain);
|
|
398
|
-
// #1109: every figure below describes patterns with measured rates only.
|
|
394
|
+
// #1109/#1121: every figure below describes patterns with measured rates only.
|
|
399
395
|
const patterns = inDomain.filter(isMeasuredPattern);
|
|
400
|
-
const
|
|
396
|
+
const legacyPatternsExcluded = inDomain.filter((p) => patternEvidenceOf(p) === 'pre-1120').length;
|
|
397
|
+
const assignedPatternsExcluded = inDomain.length - patterns.length - legacyPatternsExcluded;
|
|
401
398
|
const byType = {
|
|
402
399
|
'test-pattern': 0,
|
|
403
400
|
'fix-pattern': 0,
|
|
@@ -441,6 +438,7 @@ Provide:
|
|
|
441
438
|
avgSuccessRate: patterns.length > 0 ? totalSuccessRate / patterns.length : 0,
|
|
442
439
|
topPatterns,
|
|
443
440
|
...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
|
|
441
|
+
...(legacyPatternsExcluded > 0 ? { legacyPatternsExcluded } : {}),
|
|
444
442
|
});
|
|
445
443
|
}
|
|
446
444
|
catch (error) {
|
|
@@ -537,6 +535,24 @@ Provide:
|
|
|
537
535
|
return err(toError(error));
|
|
538
536
|
}
|
|
539
537
|
}
|
|
538
|
+
/**
|
|
539
|
+
* Read recorded experiences by ID (#1121). IDs with no stored experience
|
|
540
|
+
* are skipped, so the result length is the number actually read.
|
|
541
|
+
*/
|
|
542
|
+
async getExperiencesByIds(ids) {
|
|
543
|
+
try {
|
|
544
|
+
const experiences = [];
|
|
545
|
+
for (const id of new Set(ids)) {
|
|
546
|
+
const experience = await this.memory.get(`learning:experience:${id}`, LEARNING_NS);
|
|
547
|
+
if (experience)
|
|
548
|
+
experiences.push(experience);
|
|
549
|
+
}
|
|
550
|
+
return ok(experiences);
|
|
551
|
+
}
|
|
552
|
+
catch (error) {
|
|
553
|
+
return err(toError(error));
|
|
554
|
+
}
|
|
555
|
+
}
|
|
540
556
|
/** Mine experiences for insights. */
|
|
541
557
|
async mineExperiences(domain, timeRange) {
|
|
542
558
|
try {
|
|
@@ -695,17 +711,6 @@ Provide:
|
|
|
695
711
|
persist: true,
|
|
696
712
|
});
|
|
697
713
|
}
|
|
698
|
-
async archivePattern(patternId) {
|
|
699
|
-
const key = `learning:pattern:${patternId}`;
|
|
700
|
-
const pattern = await this.memory.get(key, LEARNING_NS);
|
|
701
|
-
if (pattern) {
|
|
702
|
-
await this.memory.set(`learning:pattern:archived:${patternId}`, pattern, {
|
|
703
|
-
namespace: 'learning-optimization',
|
|
704
|
-
persist: true,
|
|
705
|
-
});
|
|
706
|
-
await this.memory.delete(key, LEARNING_NS);
|
|
707
|
-
}
|
|
708
|
-
}
|
|
709
714
|
async updatePatternUsage(patternId) {
|
|
710
715
|
const key = `learning:pattern:${patternId}`;
|
|
711
716
|
const pattern = await this.memory.get(key, LEARNING_NS);
|
|
@@ -896,24 +901,6 @@ Provide:
|
|
|
896
901
|
tags: Array.from(tags),
|
|
897
902
|
};
|
|
898
903
|
}
|
|
899
|
-
calculateConsolidatedConfidence(patterns) {
|
|
900
|
-
const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
|
|
901
|
-
let weightedConfidence = 0;
|
|
902
|
-
for (const pattern of patterns) {
|
|
903
|
-
const weight = totalUsage > 0 ? pattern.usageCount / totalUsage : 1 / patterns.length;
|
|
904
|
-
weightedConfidence += pattern.confidence * weight;
|
|
905
|
-
}
|
|
906
|
-
return weightedConfidence;
|
|
907
|
-
}
|
|
908
|
-
calculateWeightedSuccessRate(patterns) {
|
|
909
|
-
const totalUsage = patterns.reduce((sum, p) => sum + p.usageCount, 0);
|
|
910
|
-
let weightedRate = 0;
|
|
911
|
-
for (const pattern of patterns) {
|
|
912
|
-
const weight = totalUsage > 0 ? pattern.usageCount / totalUsage : 1 / patterns.length;
|
|
913
|
-
weightedRate += pattern.successRate * weight;
|
|
914
|
-
}
|
|
915
|
-
return weightedRate;
|
|
916
|
-
}
|
|
917
904
|
detectAnomalies(experiences) {
|
|
918
905
|
const anomalies = [];
|
|
919
906
|
const avgReward = this.calculateAverageReward(experiences);
|