agentic-qe 3.15.8 → 3.15.9
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 +183 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
- package/dist/bridge/captured-experience-bridge.js +12 -13
- package/dist/cli/bundle.js +6 -6
- package/dist/cli/chunks/adapter-R2Q4QGXQ.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-W3V5P7LE.js → agent-booster-wasm-427FRKWG.js} +2 -2
- package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-RIYHTHVZ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WSUCUHOO.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
- package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-KRIBMIXX.js} +2 -2
- package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-YAJZX6MC.js} +4 -4
- package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-7ZNOXWP3.js} +3 -3
- package/dist/cli/chunks/base-67DXSAYM.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-ZQAT4I6H.js} +2 -2
- package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-452WCPZC.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-IJFXJRPN.js} +2 -2
- package/dist/cli/chunks/{browser-ZL7OLKJQ.js → browser-CT3MTV6G.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
- package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-2BA45H64.js} +2 -2
- package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-2HL3UM5P.js} +2 -2
- package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-2I2UPJS7.js} +2 -2
- package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-2TDIS6YK.js} +2 -2
- package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-2URBI52G.js} +2 -2
- package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-2XITOPYV.js} +2 -2
- package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-2YH62JCN.js} +2 -2
- package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-32UTLDNY.js} +2 -2
- package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-37BIGMJI.js} +1 -1
- package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-3CJCROMW.js} +2 -2
- package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-3LYU7BLY.js} +2 -2
- package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-47TYABPD.js} +3 -3
- package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-47V7FQGX.js} +2 -2
- package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-4JCY45KV.js} +2 -2
- package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-4SUOVLJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-J7RCI25Q.js → chunk-4URT6JO2.js} +1 -1
- package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-4V27J6YN.js} +2 -2
- package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-4W4DYVSH.js} +1 -1
- package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
- package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-5D2I7JUP.js} +2 -2
- package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-5JWGCIQW.js} +1 -1
- package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
- package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-5NS3USRW.js} +1 -1
- package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-6EPHNJTL.js} +1 -1
- package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-6OOYIO3W.js} +2 -2
- package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-6PXA2BQJ.js} +58 -58
- package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-6YL6JOQB.js} +2 -2
- package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-72AMFDC7.js} +1 -1
- package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-763SUL4B.js} +2 -2
- package/dist/cli/chunks/{chunk-4GYFONJB.js → chunk-7DMA5NYL.js} +1 -1
- package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-7JKB3Q7O.js} +1 -1
- package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-7KII4CQG.js} +2 -2
- package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-7QGYJ5OY.js} +1 -1
- package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-7QTB5VJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-7X2Y727E.js} +1 -1
- package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-A4RU67VX.js} +2 -2
- package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-A6YIH4C4.js} +2 -2
- package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-ABFDB4X3.js} +1 -1
- package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-AJ4YDSOI.js} +2 -2
- package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-AOFO4N32.js} +2 -2
- package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-AQTVVLNP.js} +1 -1
- package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
- package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-AVB5QY2Q.js} +2 -2
- package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-BHKXMIWX.js} +2 -2
- package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-BXO536GT.js} +3 -3
- package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-C6RTMTEH.js} +1 -1
- package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-CTZJUV5I.js} +1 -1
- package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-D6XVGFTI.js} +2 -2
- package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-DDPPSSHW.js} +1 -1
- package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-DGTLJNJH.js} +2 -2
- package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-DINZR5CF.js} +1 -1
- package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-EFBLP43U.js} +2 -2
- package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
- package/dist/cli/chunks/{chunk-KNHLOANK.js → chunk-F2SQPP6U.js} +2 -2
- package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-F3PQZX44.js} +1 -1
- package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-F4JYIRW2.js} +2 -2
- package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-FJ4VTLLK.js} +2 -2
- package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-FL3OYGCS.js} +2 -2
- package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-FLASM2XB.js} +2 -2
- package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-FV3NHVC7.js} +22 -22
- package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-FV7VAG74.js} +1 -1
- package/dist/cli/chunks/{chunk-PWA6XBW4.js → chunk-G3BKZNFL.js} +5 -5
- package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-GBUIG3FS.js} +1 -1
- package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-GCWSX2NY.js} +4 -4
- package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-GII5WVAK.js} +1 -1
- package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-GKPQ2GRR.js} +2 -2
- package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
- package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-H3KBIWTO.js} +2 -2
- package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-HAROIAJE.js} +1 -1
- package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-HCYQHWI2.js} +2 -2
- package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-HGTWAZWU.js} +2 -2
- package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-HTZJSQ3C.js} +2 -2
- package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-HWK5L7IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-HZ5NC6U5.js} +1 -1
- package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-I6S35FRO.js} +2 -2
- package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-ICP2ORGI.js} +2 -2
- package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-IFEIY3NQ.js} +2 -2
- package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-J3DTDJDT.js} +2 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
- package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-J5KNRVXR.js} +1 -1
- package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-JAV5WPSY.js} +2 -2
- package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-JEP4ULR6.js} +2 -2
- package/dist/cli/chunks/{chunk-TC52M542.js → chunk-JK2ME6IT.js} +2 -2
- package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
- package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-JP4P3P3D.js} +2 -2
- package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-JUVHZG7I.js} +1 -1
- package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-JWGRWMZP.js} +2 -2
- package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-K5DJXMAA.js} +2 -2
- package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-KFUUIAR4.js} +2 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
- package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-KIKWJM6J.js} +2 -2
- package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-KIXYKUCI.js} +1 -1
- package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-KLGYIEJK.js} +3 -3
- package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-KR3M44CF.js} +3 -3
- package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
- package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-KVBEGOJE.js} +2 -2
- package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-L42JPFCC.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-LCJTEUDC.js} +370 -370
- package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-LEAKYZ37.js} +2 -2
- package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LMU5DUDK.js} +1 -1
- package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-MZS32SYS.js} +1 -1
- package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-N3KEY4XJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-N3NP6PTT.js} +2 -2
- package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-N5PDFGCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-NDKLQW6N.js} +2 -2
- package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-NHZIWIQZ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-NTAD5UX4.js} +2 -2
- package/dist/cli/chunks/{chunk-7H3GNRNA.js → chunk-O3JLOVZX.js} +2 -2
- package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-OCESWNAZ.js} +3 -3
- package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-OG2UI6A3.js} +2 -2
- package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-OXTFSIGN.js} +1 -1
- package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-OXZLKP6C.js} +1 -1
- package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-P2CXVNKK.js} +2 -2
- package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-P73W2K7T.js} +1 -1
- package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-PBZI2ZPV.js} +3 -3
- package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-PMCRCEW5.js} +2 -2
- package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-PVIA2FPD.js} +2 -2
- package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-PX2B5TS2.js} +2 -2
- package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-Q3JVJRVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-QQ5SZH4D.js} +2 -2
- package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-QTVWUQTB.js} +1 -1
- package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-REUFWGMA.js} +2 -2
- package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-SNBYYO6F.js} +2 -2
- package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-SVHUYVUR.js} +2 -2
- package/dist/cli/chunks/{chunk-PIEKGKW6.js → chunk-THAY7WHO.js} +2 -2
- package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-TNMQVG4A.js} +2 -2
- package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-TSYQDRNK.js} +1 -1
- package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-TUYJ53V4.js} +2 -2
- package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-UNUTC6TX.js} +2 -2
- package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-UOJBR4J3.js} +2 -2
- package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-UOWHE77F.js} +2 -2
- package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-UYLYMWV5.js} +2 -2
- package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-V5PXQSFS.js} +2 -2
- package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-VCMINU7K.js} +2 -2
- package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-VQHVHVSF.js} +2 -2
- package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-VRGCKBF7.js} +2 -2
- package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-VU2EL424.js} +1 -1
- package/dist/cli/chunks/{chunk-KNQUHGNY.js → chunk-VXZJOKOX.js} +2 -2
- package/dist/cli/chunks/{chunk-EUVSSIGR.js → chunk-VYLM2YV5.js} +3 -3
- package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-W32YU3VI.js} +2 -2
- package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-W5VJRDDG.js} +2 -2
- package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-WGDR2KIR.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-WRRCQ2UE.js} +1 -1
- package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-XDBD4GXO.js} +2 -2
- package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-XOLDMK23.js} +2 -2
- package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-XOVNZT7F.js} +1 -1
- package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-XQ3DDY7X.js} +2 -2
- package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-XUIA5KMS.js} +2 -2
- package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-XWIUFYM3.js} +1 -1
- package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XYCKHYBM.js} +2 -2
- package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-XZJ2O3VC.js} +1 -1
- package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-YRBBBUJX.js} +5 -5
- package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-YZGSJG34.js} +1 -1
- package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-YZYDTABJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-ZANDSVCK.js} +2 -2
- package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-ZBDRLF43.js} +2 -2
- package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-ZVSLCEVC.js} +3 -3
- package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-ZXBCCO2H.js} +2 -2
- package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-7SGRCFPS.js} +2 -2
- package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-MX3URPZA.js} +2 -2
- package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-M47NJY6D.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-5GAK45SW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
- package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-DLJ5QD5N.js} +2 -2
- package/dist/cli/chunks/{code-OMT4UEZI.js → code-ONKLMVQ2.js} +25 -24
- package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-2232LGZN.js} +2 -2
- package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-UOWLYCMH.js} +2 -2
- package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-MHX7GCC7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-43ZUJKZU.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-6Q5JR4FF.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-CZUMVHSI.js} +2 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
- package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VS5ZW3XN.js} +2 -2
- package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-VWKTWZ6D.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
- package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-YIFEMORH.js} +2 -2
- package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-SHWJSJW5.js} +7 -7
- package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
- package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
- package/dist/cli/chunks/{detect-5QTCRB32.js → detect-IGTWSQMA.js} +2 -2
- package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-TCOTJVQX.js} +2 -2
- package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-55ZVYODR.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-GJRWOHQP.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-NF7UJW7B.js → domain-transfer-6EF75EKU.js} +2 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
- package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GO22R4OZ.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
- package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-6RGPYALD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-MIWQIOHU.js} +2 -2
- package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ZGS3KLPH.js} +2 -2
- package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +2 -0
- package/dist/cli/chunks/fleet-ADL57COA.js +44 -0
- package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-ALBJVW6T.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-ZMM53NDY.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +2 -0
- package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-XM6XF3YV.js} +2 -2
- package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-X62O7TJO.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-DUMF6SJV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
- package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-S4I2R46S.js} +2 -2
- package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-L4KJHVWS.js} +6 -6
- package/dist/cli/chunks/init-wizard-422UZYQ5.js +2 -0
- package/dist/cli/chunks/kernel-N7PJ6FCE.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-GNNB5FCZ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-HR6ZAH7T.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
- package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4IEEOHJS.js} +3 -3
- package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-ZFMORP36.js} +4 -4
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
- package/dist/cli/chunks/{load-UYMZPEY6.js → load-ZM43WGDO.js} +2 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
- package/dist/cli/chunks/{mcp-NOTDZBW5.js → mcp-CRZKZE37.js} +2 -2
- package/dist/cli/chunks/{memory-QL53YIHP.js → memory-W5FZGVAD.js} +5 -5
- package/dist/cli/chunks/memory-backend-4P6AHSOY.js +2 -0
- package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-SXXGAQ2G.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PIRBUAB5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-H5SQCQTB.js} +11 -10
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
- package/dist/cli/chunks/{pipeline-7ATPA6LU.js → pipeline-5LMLBIJ7.js} +2 -2
- package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-KJDABL5C.js} +2 -2
- package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-V4KSBVVM.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-JDHTKQAT.js} +2 -2
- package/dist/cli/chunks/project-root-X72FSM2F.js +2 -0
- package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +2 -0
- package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BNRONTQV.js} +2 -2
- package/dist/cli/chunks/{prove-2NAUROGF.js → prove-ELLL6XMX.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
- package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-NH2QA4D4.js} +2 -2
- package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-JTKLF7GW.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
- package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-J3KCKLPB.js} +2 -2
- package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-HNXQRP4F.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-COJ6CX6S.js} +2 -2
- package/dist/cli/chunks/router-CXZKOOTR.js +2 -0
- package/dist/cli/chunks/routing-feedback-IYFANYY5.js +2 -0
- package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-WM33ZILE.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-BBLXEA7A.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-P7H6HCAG.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-R5SPVRFP.js} +2 -2
- package/dist/cli/chunks/safe-db-WFODRGVZ.js +2 -0
- package/dist/cli/chunks/schedule-RO55OQXG.js +2 -0
- package/dist/cli/chunks/scheduler-XXMJCH24.js +2 -0
- package/dist/cli/chunks/{security-EHXSW22U.js → security-AUDTRX3I.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-LZ2GMSS2.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +2 -0
- package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-XNOAI4G4.js} +2 -2
- package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-K72XZE4T.js} +2 -2
- package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-NF3YY7U5.js} +2 -2
- package/dist/cli/chunks/{sync-4IMMQEPT.js → sync-UVXA6CT2.js} +2 -2
- package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-VBD5Y3E2.js} +2 -2
- package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-24S3WFVJ.js} +13 -7
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
- package/dist/cli/chunks/{test-GPKT3CKZ.js → test-XFSGQELD.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-VYUQ4CDE.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-HMM3AHXM.js → token-bootstrap-EDK6FNQ3.js} +2 -2
- package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-VLQ6WO2L.js} +2 -2
- package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-TOFMWWNM.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-56GDQCMR.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
- package/dist/cli/chunks/{types-J4J6QV3I.js → types-JTWLBAZJ.js} +2 -2
- package/dist/cli/chunks/unified-memory-6JWHV6EF.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +2 -0
- package/dist/cli/chunks/unified-persistence-KGGNA46H.js +2 -0
- package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4ABM72T4.js} +2 -2
- package/dist/cli/chunks/{validate-B57HA4YK.js → validate-UDJCWKXI.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-TODOUWNN.js} +2 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-WBMAJPM5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-BTT53TUL.js} +2 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
- package/dist/cli/chunks/{witness-chain-LFASSMZK.js → witness-chain-TATPXQRK.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-TPHN4DXN.js → witness-chain-repair-2HGJGE7O.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-X7QHQQWL.js} +2 -2
- package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-QMZPAWQW.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
- package/dist/cli/chunks/{wrappers-WCAYIQUX.js → wrappers-ZD5NBHYI.js} +2 -2
- package/dist/cli/commands/code.js +8 -0
- package/dist/cli/commands/daemon.js +8 -0
- package/dist/cli/commands/fleet.js +14 -9
- package/dist/cli/handlers/task-handler.js +21 -1
- package/dist/coordination/handlers/code-intelligence-handlers.js +14 -2
- package/dist/coordination/handlers/coverage-collection.js +9 -10
- package/dist/coordination/handlers/coverage-handlers.js +21 -3
- package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
- package/dist/coordination/handlers/coverage-runner.js +9 -2
- package/dist/coordination/handlers/coverage-target.d.ts +13 -3
- package/dist/coordination/handlers/coverage-target.js +224 -7
- package/dist/coordination/handlers/handler-types.d.ts +2 -0
- package/dist/coordination/handlers/test-execution-handlers.js +32 -5
- package/dist/coordination/index.d.ts +2 -2
- package/dist/coordination/index.js +1 -1
- package/dist/coordination/protocols/learning-consolidation-archive.d.ts +39 -0
- package/dist/coordination/protocols/learning-consolidation-archive.js +57 -0
- package/dist/coordination/protocols/learning-consolidation.d.ts +38 -3
- package/dist/coordination/protocols/learning-consolidation.js +128 -50
- package/dist/coordination/queen-coordinator.d.ts +12 -1
- package/dist/coordination/queen-coordinator.js +24 -1
- package/dist/coordination/queen-event-handlers.js +2 -1
- package/dist/coordination/queen-lifecycle.js +9 -0
- package/dist/coordination/queen-task-management.js +113 -40
- package/dist/coordination/queen-types.d.ts +10 -0
- package/dist/coordination/queen-types.js +8 -0
- package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
- package/dist/coordination/task-dag/dag-algorithms.js +162 -0
- package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
- package/dist/coordination/task-dag/dag-obligations.js +83 -0
- package/dist/coordination/task-dag/dag.d.ts +69 -19
- package/dist/coordination/task-dag/dag.js +215 -269
- package/dist/coordination/task-dag/index.d.ts +12 -4
- package/dist/coordination/task-dag/index.js +11 -3
- package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
- package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
- package/dist/coordination/task-dag/scheduler.d.ts +19 -9
- package/dist/coordination/task-dag/scheduler.js +36 -12
- package/dist/coordination/task-dag/types.d.ts +160 -1
- package/dist/coordination/task-dag/types.js +2 -1
- package/dist/coordination/task-executability.d.ts +18 -0
- package/dist/coordination/task-executability.js +31 -0
- package/dist/coordination/task-executor.d.ts +1 -0
- package/dist/coordination/task-executor.js +5 -0
- package/dist/domains/code-intelligence/coordinator.js +35 -9
- package/dist/domains/code-intelligence/index-path-guard.d.ts +49 -0
- package/dist/domains/code-intelligence/index-path-guard.js +125 -0
- package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
- package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
- package/dist/domains/contract-testing/coordinator.js +3 -1
- package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +12 -12
- package/dist/domains/learning-optimization/active-patterns.js +15 -12
- package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
- package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
- package/dist/domains/learning-optimization/coordinator.js +43 -102
- package/dist/domains/learning-optimization/index.d.ts +1 -1
- package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
- package/dist/domains/learning-optimization/plugin.js +11 -1
- package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
- package/dist/domains/learning-optimization/reward-source.js +58 -0
- package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
- package/dist/domains/learning-optimization/services/learning-coordinator.js +59 -23
- package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
- package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
- package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
- package/dist/domains/test-execution/interfaces.d.ts +16 -0
- package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
- package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
- package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.js +24 -2
- package/dist/init/fleet-integration.js +2 -0
- package/dist/init/init-wizard-steps.js +2 -0
- package/dist/init/phases/06-code-intelligence.js +2 -0
- package/dist/init/phases/10-workers.js +2 -1
- package/dist/kernel/anti-drift-middleware.d.ts +44 -5
- package/dist/kernel/anti-drift-middleware.js +147 -11
- package/dist/kernel/interfaces.d.ts +5 -0
- package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
- package/dist/learning/dream/dream-insights-pruner.js +99 -11
- package/dist/learning/skill-validation-learner.d.ts +2 -0
- package/dist/learning/skill-validation-learner.js +29 -21
- package/dist/mcp/background-workers.js +8 -2
- package/dist/mcp/bundle.js +507 -483
- package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
- package/dist/mcp/handlers/domain-handler-configs.js +68 -30
- package/dist/mcp/handlers/handler-factory.js +1 -0
- package/dist/mcp/handlers/task-handlers.js +37 -1
- package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
- package/dist/mcp/metrics/metrics-collector.js +13 -26
- package/dist/mcp/protocol-server.js +8 -3
- package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
- package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
- package/dist/memory/crdt/lww-register.js +11 -1
- package/dist/routing/calibration/ema-calibrator.js +3 -1
- package/dist/shared/base-domain-plugin.d.ts +4 -0
- package/dist/shared/base-domain-plugin.js +6 -0
- package/dist/shared/llm/cache.js +4 -1
- package/dist/shared/security/compliance-patterns.js +3 -1
- package/dist/shared/test-runner-process.d.ts +26 -0
- package/dist/shared/test-runner-process.js +91 -0
- package/dist/shared/types/index.d.ts +9 -0
- package/dist/shared/types/index.js +13 -0
- package/dist/shared/utils/namespaced-search.d.ts +42 -0
- package/dist/shared/utils/namespaced-search.js +53 -0
- package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
- package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
- package/dist/workers/daemon.d.ts +2 -0
- package/dist/workers/daemon.js +10 -5
- package/dist/workers/namespaced-keys.d.ts +4 -7
- package/dist/workers/namespaced-keys.js +4 -15
- package/dist/workers/quality-daemon/ci-monitor.js +9 -5
- package/dist/workers/worker-env.d.ts +16 -8
- package/dist/workers/worker-env.js +25 -12
- package/dist/workers/worker-manager.js +4 -0
- package/dist/workers/workers/learning-consolidation.d.ts +1 -1
- package/dist/workers/workers/learning-consolidation.js +11 -8
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
- package/dist/cli/chunks/base-2XML4WH7.js +0 -2
- package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
- package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
- package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
- package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
- package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
- package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
- package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
- package/dist/cli/chunks/chunk-ZWMFKZEQ.js +0 -3
- package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
- package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
- package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
- package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
- package/dist/cli/chunks/dream-VALD726W.js +0 -2
- package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
- package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
- package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
- package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
- package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
- package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
- package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
- package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
- package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
- package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
- package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
- package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
- package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
- package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
- package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
- package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
- package/dist/cli/chunks/router-AUD4GATI.js +0 -2
- package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
- package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
- package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
- package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
- package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
- package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
- package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
- package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
- package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - namespaced kv key scans (#1049, #1071)
|
|
3
|
+
*
|
|
4
|
+
* Two problems with reading every key of a family through
|
|
5
|
+
* `MemoryBackend.search()`:
|
|
6
|
+
*
|
|
7
|
+
* 1. Kernel backends disagree on what a namespaced `search` returns: the
|
|
8
|
+
* hybrid (sqlite) backend returns bare keys, the in-memory backend returns
|
|
9
|
+
* `<namespace>:<key>`. A caller that passes a result straight back to
|
|
10
|
+
* `get(key, { namespace })` double-prefixes the key and reads nothing.
|
|
11
|
+
* 2. `search()` takes a row limit and has no offset or ordering, so a single
|
|
12
|
+
* call with a fixed cap silently drops every key past the cap.
|
|
13
|
+
*
|
|
14
|
+
* `searchAllKeys` addresses both: it returns every matching key, bare and in
|
|
15
|
+
* a stable order.
|
|
16
|
+
*/
|
|
17
|
+
function globToRegExp(pattern) {
|
|
18
|
+
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
19
|
+
return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 's');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The bare key for a key returned by `search(pattern, limit, { namespace })`.
|
|
23
|
+
* A result that already matches `pattern` is bare (keys may legitimately start
|
|
24
|
+
* with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
|
|
25
|
+
* leading `<namespace>:` is the backend's prefix and is removed.
|
|
26
|
+
*/
|
|
27
|
+
export function bareSearchKey(found, namespace, pattern) {
|
|
28
|
+
if (globToRegExp(pattern).test(found))
|
|
29
|
+
return found;
|
|
30
|
+
return found.startsWith(`${namespace}:`) ? found.slice(namespace.length + 1) : found;
|
|
31
|
+
}
|
|
32
|
+
/** First request size for `searchAllKeys`. Each further request doubles it. */
|
|
33
|
+
export const DEFAULT_KEY_SCAN_PAGE_SIZE = 10_000;
|
|
34
|
+
/**
|
|
35
|
+
* Every key matching `pattern`, bare (usable with `get(key, retrieve)`),
|
|
36
|
+
* de-duplicated and sorted.
|
|
37
|
+
*
|
|
38
|
+
* `search()` has no offset, so this widens the request until the backend
|
|
39
|
+
* returns fewer keys than were asked for. That is the only point at which the
|
|
40
|
+
* result is known to be complete; no cap ever truncates it.
|
|
41
|
+
*/
|
|
42
|
+
export async function searchAllKeys(memory, pattern, options = {}) {
|
|
43
|
+
let limit = Math.max(1, Math.floor(options.pageSize ?? DEFAULT_KEY_SCAN_PAGE_SIZE));
|
|
44
|
+
let found = await memory.search(pattern, limit, options.retrieve);
|
|
45
|
+
while (found.length >= limit) {
|
|
46
|
+
limit *= 2;
|
|
47
|
+
found = await memory.search(pattern, limit, options.retrieve);
|
|
48
|
+
}
|
|
49
|
+
const namespace = options.retrieve?.namespace;
|
|
50
|
+
const keys = namespace ? found.map((key) => bareSearchKey(key, namespace, pattern)) : found;
|
|
51
|
+
return [...new Set(keys)].sort();
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=namespaced-search.js.map
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* CompositeActionExecutor delegates to for infrastructure-specific actions.
|
|
10
10
|
*/
|
|
11
11
|
import { createEmptyStats } from './types.js';
|
|
12
|
+
import { getOwn, setOwn } from '../../shared/utils/safe-record.js';
|
|
12
13
|
// ============================================================================
|
|
13
14
|
// NoOp Command Runner (for testing)
|
|
14
15
|
// ============================================================================
|
|
@@ -242,10 +243,13 @@ export class InfraActionExecutor {
|
|
|
242
243
|
};
|
|
243
244
|
}
|
|
244
245
|
updateServiceStats(serviceName, field) {
|
|
245
|
-
|
|
246
|
-
|
|
246
|
+
// Service names come from the playbook: `constructor` must be just a name (#978).
|
|
247
|
+
let serviceStats = getOwn(this.stats.byService, serviceName);
|
|
248
|
+
if (!serviceStats) {
|
|
249
|
+
serviceStats = { failures: 0, recoveries: 0, successes: 0 };
|
|
250
|
+
setOwn(this.stats.byService, serviceName, serviceStats);
|
|
247
251
|
}
|
|
248
|
-
|
|
252
|
+
serviceStats[field]++;
|
|
249
253
|
}
|
|
250
254
|
sleep(ms) {
|
|
251
255
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { v4 as uuidv4 } from 'uuid';
|
|
15
15
|
import { DEFAULT_INFRA_HEALING_CONFIG, createEmptyStats } from './types.js';
|
|
16
|
+
import { getOwn, setOwn } from '../../shared/utils/safe-record.js';
|
|
16
17
|
import { createTestOutputObserver } from './test-output-observer.js';
|
|
17
18
|
import { createRecoveryPlaybook } from './recovery-playbook.js';
|
|
18
19
|
import { createCoordinationLock } from './coordination-lock.js';
|
|
@@ -59,10 +60,10 @@ export class InfraHealingOrchestrator {
|
|
|
59
60
|
// Update per-service failure counts
|
|
60
61
|
for (const failure of observation.infraFailures) {
|
|
61
62
|
if (failure.serviceName) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.stats.byService
|
|
63
|
+
const bucket = getOwn(this.stats.byService, failure.serviceName)
|
|
64
|
+
?? { failures: 0, recoveries: 0, successes: 0 };
|
|
65
|
+
bucket.failures++;
|
|
66
|
+
setOwn(this.stats.byService, failure.serviceName, bucket);
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -171,11 +172,11 @@ export class InfraHealingOrchestrator {
|
|
|
171
172
|
this.stats.recoveriesFailed = execStats.recoveriesFailed;
|
|
172
173
|
// Merge per-service recovery stats from executor
|
|
173
174
|
for (const [service, execServiceStats] of Object.entries(execStats.byService)) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
this.stats.byService
|
|
175
|
+
const bucket = getOwn(this.stats.byService, service)
|
|
176
|
+
?? { failures: 0, recoveries: 0, successes: 0 };
|
|
177
|
+
bucket.recoveries = execServiceStats.recoveries;
|
|
178
|
+
bucket.successes = execServiceStats.successes;
|
|
179
|
+
setOwn(this.stats.byService, service, bucket);
|
|
179
180
|
}
|
|
180
181
|
}
|
|
181
182
|
}
|
package/dist/workers/daemon.d.ts
CHANGED
|
@@ -35,6 +35,8 @@ export declare class QEDaemon implements IDaemon {
|
|
|
35
35
|
private workerManager;
|
|
36
36
|
private config;
|
|
37
37
|
private _qualityDaemon?;
|
|
38
|
+
/** #1066: `AQE_DISABLED_WORKERS` ids that match no worker. */
|
|
39
|
+
private unknownDisabledIds;
|
|
38
40
|
constructor(config?: DaemonConfig);
|
|
39
41
|
get running(): boolean;
|
|
40
42
|
get uptime(): number;
|
package/dist/workers/daemon.js
CHANGED
|
@@ -30,11 +30,14 @@ export class QEDaemon {
|
|
|
30
30
|
workerManager;
|
|
31
31
|
config;
|
|
32
32
|
_qualityDaemon;
|
|
33
|
+
/** #1066: `AQE_DISABLED_WORKERS` ids that match no worker. */
|
|
34
|
+
unknownDisabledIds = [];
|
|
33
35
|
constructor(config) {
|
|
34
36
|
this.config = {
|
|
35
37
|
...DEFAULT_CONFIG,
|
|
36
38
|
...config,
|
|
37
|
-
|
|
39
|
+
// #1066: ids are matched without regard to case.
|
|
40
|
+
disabledWorkers: (config?.disabledWorkers ?? parseDisabledWorkers()).map((id) => id.toLowerCase()),
|
|
38
41
|
};
|
|
39
42
|
this.workerManager = new WorkerManagerImpl();
|
|
40
43
|
this.registerWorkers();
|
|
@@ -56,6 +59,11 @@ export class QEDaemon {
|
|
|
56
59
|
return;
|
|
57
60
|
}
|
|
58
61
|
console.info('[Daemon] Starting QE Background Workers...');
|
|
62
|
+
// #1066: reported on start, not construction. fleet_init and shutdown
|
|
63
|
+
// construct the daemon even when AQE_WORKERS_ENABLED=false.
|
|
64
|
+
if (this.unknownDisabledIds.length > 0) {
|
|
65
|
+
console.warn(`[AQE] WARN AQE_DISABLED_WORKERS: unknown worker id(s) ignored: ${this.unknownDisabledIds.join(', ')}`);
|
|
66
|
+
}
|
|
59
67
|
this._running = true;
|
|
60
68
|
this._startedAt = new Date();
|
|
61
69
|
// Start health check timer
|
|
@@ -174,10 +182,7 @@ export class QEDaemon {
|
|
|
174
182
|
}
|
|
175
183
|
}
|
|
176
184
|
const knownIds = new Set(allWorkers.map((worker) => worker.config.id));
|
|
177
|
-
|
|
178
|
-
if (unknownIds.length > 0) {
|
|
179
|
-
console.warn(`[AQE] WARN AQE_DISABLED_WORKERS: unknown worker id(s) ignored: ${unknownIds.join(', ')}`);
|
|
180
|
-
}
|
|
185
|
+
this.unknownDisabledIds = this.config.disabledWorkers.filter((id) => !knownIds.has(id));
|
|
181
186
|
}
|
|
182
187
|
performHealthCheck() {
|
|
183
188
|
const health = this.workerManager.getHealth();
|
|
@@ -5,12 +5,9 @@
|
|
|
5
5
|
* hybrid (sqlite) backend returns bare keys, the in-memory backend returns
|
|
6
6
|
* `<namespace>:<key>`. A worker that passes a search result straight back to
|
|
7
7
|
* `get(key, { namespace })` then double-prefixes the key and reads nothing.
|
|
8
|
+
*
|
|
9
|
+
* The helper lives in `shared/utils/namespaced-search` so domain services can
|
|
10
|
+
* use it too (#1071); it is re-exported here for the workers.
|
|
8
11
|
*/
|
|
9
|
-
|
|
10
|
-
* The bare key for a key returned by `search(pattern, limit, { namespace })`.
|
|
11
|
-
* A result that already matches `pattern` is bare (keys may legitimately start
|
|
12
|
-
* with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
|
|
13
|
-
* leading `<namespace>:` is the backend's prefix and is removed.
|
|
14
|
-
*/
|
|
15
|
-
export declare function bareSearchKey(found: string, namespace: string, pattern: string): string;
|
|
12
|
+
export { bareSearchKey } from '../shared/utils/namespaced-search.js';
|
|
16
13
|
//# sourceMappingURL=namespaced-keys.d.ts.map
|
|
@@ -5,20 +5,9 @@
|
|
|
5
5
|
* hybrid (sqlite) backend returns bare keys, the in-memory backend returns
|
|
6
6
|
* `<namespace>:<key>`. A worker that passes a search result straight back to
|
|
7
7
|
* `get(key, { namespace })` then double-prefixes the key and reads nothing.
|
|
8
|
+
*
|
|
9
|
+
* The helper lives in `shared/utils/namespaced-search` so domain services can
|
|
10
|
+
* use it too (#1071); it is re-exported here for the workers.
|
|
8
11
|
*/
|
|
9
|
-
|
|
10
|
-
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
11
|
-
return new RegExp(`^${escaped.replace(/\*/g, '.*').replace(/\?/g, '.')}$`, 's');
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* The bare key for a key returned by `search(pattern, limit, { namespace })`.
|
|
15
|
-
* A result that already matches `pattern` is bare (keys may legitimately start
|
|
16
|
-
* with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
|
|
17
|
-
* leading `<namespace>:` is the backend's prefix and is removed.
|
|
18
|
-
*/
|
|
19
|
-
export function bareSearchKey(found, namespace, pattern) {
|
|
20
|
-
if (globToRegExp(pattern).test(found))
|
|
21
|
-
return found;
|
|
22
|
-
return found.startsWith(`${namespace}:`) ? found.slice(namespace.length + 1) : found;
|
|
23
|
-
}
|
|
12
|
+
export { bareSearchKey } from '../shared/utils/namespaced-search.js';
|
|
24
13
|
//# sourceMappingURL=namespaced-keys.js.map
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { execFile } from 'child_process';
|
|
9
9
|
import { promisify } from 'util';
|
|
10
|
+
import { createSafeRecord, getOwn, setOwn } from '../../shared/utils/safe-record.js';
|
|
10
11
|
const execFileAsync = promisify(execFile);
|
|
11
12
|
const DEFAULTS = {
|
|
12
13
|
runsPerWorkflow: 10,
|
|
@@ -95,16 +96,19 @@ export class CIMonitor {
|
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
groupByWorkflow(runs) {
|
|
98
|
-
|
|
99
|
+
// Workflow names come from GitHub: no prototype, so `constructor` is just a name (#978).
|
|
100
|
+
const grouped = createSafeRecord();
|
|
99
101
|
for (const run of runs) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
let bucket = getOwn(grouped, run.name);
|
|
103
|
+
if (!bucket) {
|
|
104
|
+
bucket = [];
|
|
105
|
+
setOwn(grouped, run.name, bucket);
|
|
102
106
|
}
|
|
103
|
-
|
|
107
|
+
bucket.push(run);
|
|
104
108
|
}
|
|
105
109
|
// Limit per workflow
|
|
106
110
|
for (const name of Object.keys(grouped)) {
|
|
107
|
-
grouped
|
|
111
|
+
setOwn(grouped, name, getOwn(grouped, name).slice(0, this.options.runsPerWorkflow));
|
|
108
112
|
}
|
|
109
113
|
return grouped;
|
|
110
114
|
}
|
|
@@ -9,10 +9,13 @@
|
|
|
9
9
|
* value keeps the default behaviour (workers on). `aqe init` writes `true`
|
|
10
10
|
* for normal installs and `false` for `--no-database` installs (#533).
|
|
11
11
|
* - `AQE_DISABLED_WORKERS`: comma-separated worker ids that are not
|
|
12
|
-
* registered (for example `learning-consolidation`).
|
|
12
|
+
* registered (for example `learning-consolidation`). Matched without
|
|
13
|
+
* regard to case (#1066).
|
|
13
14
|
* - `AQE_DREAM_INSIGHTS_RETENTION_DAYS`: retention window for unapplied
|
|
14
|
-
* `dream_insights` rows. Default 30. `0
|
|
15
|
-
*
|
|
15
|
+
* `dream_insights` rows. Default 30. `0`, `off`, `false`, `no`, `disabled`,
|
|
16
|
+
* `none` or `never` disables the sweep. Any other value that is not a whole
|
|
17
|
+
* number of days is rejected with a warning and also disables the sweep, so
|
|
18
|
+
* a typo never deletes anything (#1066).
|
|
16
19
|
*/
|
|
17
20
|
export type WorkerEnv = Readonly<Record<string, string | undefined>>;
|
|
18
21
|
/** Default retention window for unapplied dream insights (days). */
|
|
@@ -23,8 +26,9 @@ export declare const DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS = 30;
|
|
|
23
26
|
*/
|
|
24
27
|
export declare function isWorkersEnabled(env?: WorkerEnv): boolean;
|
|
25
28
|
/**
|
|
26
|
-
* Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed,
|
|
27
|
-
* with empty entries removed.
|
|
29
|
+
* Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed, lower-cased,
|
|
30
|
+
* de-duplicated and with empty entries removed. Worker ids are lower-case, so
|
|
31
|
+
* `Learning-Consolidation` disables `learning-consolidation` (#1066).
|
|
28
32
|
*/
|
|
29
33
|
export declare function parseDisabledWorkers(env?: WorkerEnv): string[];
|
|
30
34
|
export interface DreamInsightsRetention {
|
|
@@ -36,10 +40,14 @@ export interface DreamInsightsRetention {
|
|
|
36
40
|
/**
|
|
37
41
|
* Resolve `AQE_DREAM_INSIGHTS_RETENTION_DAYS`.
|
|
38
42
|
*
|
|
39
|
-
* - unset
|
|
40
|
-
*
|
|
43
|
+
* - unset, empty or whitespace only: default (30 days). Blanking the
|
|
44
|
+
* variable means "unset", not "off" (documented in configuration.md).
|
|
45
|
+
* - `0`, `off`, `false`, `no`, `disabled`, `none`, `never`: sweep disabled
|
|
46
|
+
* (`retentionDays: null`)
|
|
41
47
|
* - a whole number from 1 to 36500: that many days
|
|
42
|
-
* - anything else:
|
|
48
|
+
* - anything else: sweep disabled, with a warning describing the rejected
|
|
49
|
+
* value. The sweep deletes user data, so an unreadable setting fails safe
|
|
50
|
+
* (#1066).
|
|
43
51
|
*/
|
|
44
52
|
export declare function resolveDreamInsightsRetention(env?: WorkerEnv): DreamInsightsRetention;
|
|
45
53
|
//# sourceMappingURL=worker-env.d.ts.map
|
|
@@ -9,12 +9,20 @@
|
|
|
9
9
|
* value keeps the default behaviour (workers on). `aqe init` writes `true`
|
|
10
10
|
* for normal installs and `false` for `--no-database` installs (#533).
|
|
11
11
|
* - `AQE_DISABLED_WORKERS`: comma-separated worker ids that are not
|
|
12
|
-
* registered (for example `learning-consolidation`).
|
|
12
|
+
* registered (for example `learning-consolidation`). Matched without
|
|
13
|
+
* regard to case (#1066).
|
|
13
14
|
* - `AQE_DREAM_INSIGHTS_RETENTION_DAYS`: retention window for unapplied
|
|
14
|
-
* `dream_insights` rows. Default 30. `0
|
|
15
|
-
*
|
|
15
|
+
* `dream_insights` rows. Default 30. `0`, `off`, `false`, `no`, `disabled`,
|
|
16
|
+
* `none` or `never` disables the sweep. Any other value that is not a whole
|
|
17
|
+
* number of days is rejected with a warning and also disables the sweep, so
|
|
18
|
+
* a typo never deletes anything (#1066).
|
|
16
19
|
*/
|
|
17
20
|
const FALSY_VALUES = new Set(['false', '0', 'off', 'no']);
|
|
21
|
+
/**
|
|
22
|
+
* Values of `AQE_DREAM_INSIGHTS_RETENTION_DAYS` that turn the sweep off: the
|
|
23
|
+
* `AQE_WORKERS_ENABLED` falsy set plus a few spellings people use for "keep".
|
|
24
|
+
*/
|
|
25
|
+
const RETENTION_OFF_VALUES = new Set([...FALSY_VALUES, 'disabled', 'disable', 'none', 'never']);
|
|
18
26
|
/** Default retention window for unapplied dream insights (days). */
|
|
19
27
|
export const DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS = 30;
|
|
20
28
|
/** Upper bound accepted for the retention window (100 years). */
|
|
@@ -30,8 +38,9 @@ export function isWorkersEnabled(env = process.env) {
|
|
|
30
38
|
return !FALSY_VALUES.has(raw.trim().toLowerCase());
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
33
|
-
* Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed,
|
|
34
|
-
* with empty entries removed.
|
|
41
|
+
* Worker ids listed in `AQE_DISABLED_WORKERS`, trimmed, lower-cased,
|
|
42
|
+
* de-duplicated and with empty entries removed. Worker ids are lower-case, so
|
|
43
|
+
* `Learning-Consolidation` disables `learning-consolidation` (#1066).
|
|
35
44
|
*/
|
|
36
45
|
export function parseDisabledWorkers(env = process.env) {
|
|
37
46
|
const raw = env.AQE_DISABLED_WORKERS;
|
|
@@ -39,17 +48,21 @@ export function parseDisabledWorkers(env = process.env) {
|
|
|
39
48
|
return [];
|
|
40
49
|
const ids = raw
|
|
41
50
|
.split(',')
|
|
42
|
-
.map((id) => id.trim())
|
|
51
|
+
.map((id) => id.trim().toLowerCase())
|
|
43
52
|
.filter((id) => id.length > 0);
|
|
44
53
|
return Array.from(new Set(ids));
|
|
45
54
|
}
|
|
46
55
|
/**
|
|
47
56
|
* Resolve `AQE_DREAM_INSIGHTS_RETENTION_DAYS`.
|
|
48
57
|
*
|
|
49
|
-
* - unset
|
|
50
|
-
*
|
|
58
|
+
* - unset, empty or whitespace only: default (30 days). Blanking the
|
|
59
|
+
* variable means "unset", not "off" (documented in configuration.md).
|
|
60
|
+
* - `0`, `off`, `false`, `no`, `disabled`, `none`, `never`: sweep disabled
|
|
61
|
+
* (`retentionDays: null`)
|
|
51
62
|
* - a whole number from 1 to 36500: that many days
|
|
52
|
-
* - anything else:
|
|
63
|
+
* - anything else: sweep disabled, with a warning describing the rejected
|
|
64
|
+
* value. The sweep deletes user data, so an unreadable setting fails safe
|
|
65
|
+
* (#1066).
|
|
53
66
|
*/
|
|
54
67
|
export function resolveDreamInsightsRetention(env = process.env) {
|
|
55
68
|
const raw = env.AQE_DREAM_INSIGHTS_RETENTION_DAYS;
|
|
@@ -57,7 +70,7 @@ export function resolveDreamInsightsRetention(env = process.env) {
|
|
|
57
70
|
return { retentionDays: DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS };
|
|
58
71
|
}
|
|
59
72
|
const value = raw.trim().toLowerCase();
|
|
60
|
-
if (value
|
|
73
|
+
if (RETENTION_OFF_VALUES.has(value)) {
|
|
61
74
|
return { retentionDays: null };
|
|
62
75
|
}
|
|
63
76
|
if (/^\d+$/.test(value)) {
|
|
@@ -67,10 +80,10 @@ export function resolveDreamInsightsRetention(env = process.env) {
|
|
|
67
80
|
}
|
|
68
81
|
}
|
|
69
82
|
return {
|
|
70
|
-
retentionDays:
|
|
83
|
+
retentionDays: null,
|
|
71
84
|
warning: `Invalid AQE_DREAM_INSIGHTS_RETENTION_DAYS=${JSON.stringify(raw)}; ` +
|
|
72
85
|
`expected a whole number of days (1-${MAX_DREAM_INSIGHTS_RETENTION_DAYS}), ` +
|
|
73
|
-
`0 or "off".
|
|
86
|
+
`0 or "off". The dream_insights retention sweep is off until this is fixed; nothing is deleted.`,
|
|
74
87
|
};
|
|
75
88
|
}
|
|
76
89
|
//# sourceMappingURL=worker-env.js.map
|
|
@@ -236,6 +236,10 @@ export class WorkerManagerImpl {
|
|
|
236
236
|
async startAll() {
|
|
237
237
|
this.running = true;
|
|
238
238
|
for (const worker of Array.from(this.workers.values())) {
|
|
239
|
+
// #1066: startAll may run in the background (MCP startup), so a stop
|
|
240
|
+
// issued meanwhile must not be followed by more first runs.
|
|
241
|
+
if (!this.running)
|
|
242
|
+
break;
|
|
239
243
|
if (worker.config.enabled) {
|
|
240
244
|
await this.startWorker(worker);
|
|
241
245
|
}
|
|
@@ -40,7 +40,7 @@ export declare class LearningConsolidationWorker extends BaseWorker {
|
|
|
40
40
|
/**
|
|
41
41
|
* #488 C.2 / #1061: run the dream_insights retention sweep when it is
|
|
42
42
|
* enabled and the first tick after startup has passed. Returns the number
|
|
43
|
-
* of rows
|
|
43
|
+
* of rows moved to the archive table.
|
|
44
44
|
*/
|
|
45
45
|
private pruneDreamInsights;
|
|
46
46
|
/**
|
|
@@ -21,7 +21,7 @@ import { getUnifiedMemory, findProjectRoot } from '../../kernel/unified-memory.j
|
|
|
21
21
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
22
22
|
import { ExperienceConsolidator } from '../../learning/experience-consolidation.js';
|
|
23
23
|
import { recordLoopHealth } from '../../learning/loop-health.js';
|
|
24
|
-
import { pruneStaleDreamInsights } from '../../learning/dream/dream-insights-pruner.js';
|
|
24
|
+
import { pruneStaleDreamInsights, DREAM_INSIGHTS_ARCHIVE_TABLE, } from '../../learning/dream/dream-insights-pruner.js';
|
|
25
25
|
import { resolveDreamInsightsRetention } from '../worker-env.js';
|
|
26
26
|
import { createLearningMetricsTracker } from '../../learning/metrics-tracker.js';
|
|
27
27
|
const CONFIG = {
|
|
@@ -237,7 +237,7 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
237
237
|
/**
|
|
238
238
|
* #488 C.2 / #1061: run the dream_insights retention sweep when it is
|
|
239
239
|
* enabled and the first tick after startup has passed. Returns the number
|
|
240
|
-
* of rows
|
|
240
|
+
* of rows moved to the archive table.
|
|
241
241
|
*/
|
|
242
242
|
pruneDreamInsights(findings) {
|
|
243
243
|
const retention = resolveDreamInsightsRetention();
|
|
@@ -251,20 +251,23 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
251
251
|
if (Date.now() < this.dreamInsightsPruneNotBefore)
|
|
252
252
|
return 0;
|
|
253
253
|
const db = getUnifiedMemory().getDatabase();
|
|
254
|
-
|
|
254
|
+
// #1066: rows are copied to dream_insights_archive and verified first.
|
|
255
|
+
const { pruned, archived } = pruneStaleDreamInsights(db, { retentionDays });
|
|
255
256
|
if (pruned > 0) {
|
|
256
257
|
// Default log level, stderr only: MCP stdout carries JSON-RPC.
|
|
257
|
-
process.stderr.write(`[AQE] dream_insights retention:
|
|
258
|
-
`older than ${retentionDays} days ` +
|
|
259
|
-
`(set AQE_DREAM_INSIGHTS_RETENTION_DAYS=off to keep them)\n`);
|
|
258
|
+
process.stderr.write(`[AQE] dream_insights retention: moved ${pruned} unapplied insight(s) ` +
|
|
259
|
+
`older than ${retentionDays} days to ${DREAM_INSIGHTS_ARCHIVE_TABLE} ` +
|
|
260
|
+
`(set AQE_DREAM_INSIGHTS_RETENTION_DAYS=off to keep them in place)\n`);
|
|
260
261
|
findings.push({
|
|
261
262
|
type: 'dream-insights-pruned',
|
|
262
263
|
severity: 'info',
|
|
263
264
|
domain: 'learning-optimization',
|
|
264
|
-
title: 'Stale Dream Insights
|
|
265
|
-
description: `${pruned} unapplied dream insights older than ${retentionDays} days
|
|
265
|
+
title: 'Stale Dream Insights Archived',
|
|
266
|
+
description: `${pruned} unapplied dream insights older than ${retentionDays} days ` +
|
|
267
|
+
`moved to ${DREAM_INSIGHTS_ARCHIVE_TABLE}`,
|
|
266
268
|
context: {
|
|
267
269
|
pruned,
|
|
270
|
+
archived,
|
|
268
271
|
retentionDays,
|
|
269
272
|
},
|
|
270
273
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.9",
|
|
4
4
|
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.8");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-V7VZSNDK.js";import"./chunk-VWSGWYRB.js";import"./chunk-MUDBF2JC.js";import"./chunk-FWXNFPLS.js";import"./chunk-J7FLNP5L.js";import"./chunk-K5R3WUJP.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.8");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-EUVSSIGR.js";import"./chunk-LVHZK7GW.js";import"./chunk-P4UT4LBE.js";import"./chunk-FEN2DHFM.js";import"./chunk-QFYUZYRA.js";import"./chunk-22DOS3PM.js";import"./chunk-62T7U25U.js";import"./chunk-YUP3APSN.js";import"./chunk-5YOO5QSE.js";import"./chunk-MV4S3TEC.js";import"./chunk-J6LL25QJ.js";import"./chunk-4GUVVGJX.js";import"./chunk-O4RRVTXN.js";import"./chunk-7C6FMLQR.js";import"./chunk-GSOK4M6V.js";import"./chunk-HXCGV5UJ.js";import"./chunk-7XGM7Q2N.js";import"./chunk-UDCYQLTD.js";import"./chunk-FWXNFPLS.js";import"./chunk-7SLEUVPZ.js";import"./chunk-D4O3TJI7.js";import"./chunk-R2NHGESM.js";import"./chunk-RG42LDOB.js";import"./chunk-DN3AKAPY.js";import"./chunk-D4IBIMWI.js";import"./chunk-DKFSCJEF.js";import"./chunk-BEVWCF3Q.js";import"./chunk-A2UGPKCS.js";import"./chunk-PICEGWGB.js";import"./chunk-YTYS2XSY.js";import"./chunk-IJSFZO7P.js";import"./chunk-X6VYQVUM.js";import"./chunk-7H3GNRNA.js";import"./chunk-NHOMVBCI.js";import"./chunk-J7FLNP5L.js";import"./chunk-KVMKYUOE.js";import"./chunk-NF63NHJH.js";import"./chunk-SHEVM5PF.js";import"./chunk-CQ5G64EA.js";import"./chunk-2QRGIEQV.js";import"./chunk-CQ3SBRDP.js";import"./chunk-LPSMVBB3.js";import"./chunk-ZBI7PJFX.js";import"./chunk-K5R3WUJP.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.8");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-TC52M542.js";import"./chunk-KMVFBYJO.js";import"./chunk-767SR7WH.js";import"./chunk-7XGM7Q2N.js";import"./chunk-UDCYQLTD.js";import"./chunk-FWXNFPLS.js";import"./chunk-7SLEUVPZ.js";import"./chunk-D4O3TJI7.js";import"./chunk-R2NHGESM.js";import"./chunk-RG42LDOB.js";import"./chunk-DN3AKAPY.js";import"./chunk-D4IBIMWI.js";import"./chunk-DKFSCJEF.js";import"./chunk-A2UGPKCS.js";import"./chunk-PICEGWGB.js";import"./chunk-IJSFZO7P.js";import"./chunk-X6VYQVUM.js";import"./chunk-7H3GNRNA.js";import"./chunk-NHOMVBCI.js";import"./chunk-J7FLNP5L.js";import"./chunk-KVMKYUOE.js";import"./chunk-SHEVM5PF.js";import"./chunk-CQ5G64EA.js";import"./chunk-LPSMVBB3.js";import"./chunk-ZBI7PJFX.js";import"./chunk-K5R3WUJP.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.8");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-OWBFVAEH.js";import"./chunk-TC52M542.js";import"./chunk-KMVFBYJO.js";import"./chunk-767SR7WH.js";import"./chunk-7XGM7Q2N.js";import"./chunk-UDCYQLTD.js";import"./chunk-FWXNFPLS.js";import"./chunk-7SLEUVPZ.js";import"./chunk-D4O3TJI7.js";import"./chunk-R2NHGESM.js";import"./chunk-RG42LDOB.js";import"./chunk-DN3AKAPY.js";import"./chunk-D4IBIMWI.js";import"./chunk-DKFSCJEF.js";import"./chunk-A2UGPKCS.js";import"./chunk-PICEGWGB.js";import"./chunk-IJSFZO7P.js";import"./chunk-X6VYQVUM.js";import"./chunk-7H3GNRNA.js";import"./chunk-NHOMVBCI.js";import"./chunk-J7FLNP5L.js";import"./chunk-KVMKYUOE.js";import"./chunk-SHEVM5PF.js";import"./chunk-CQ5G64EA.js";import"./chunk-LPSMVBB3.js";import"./chunk-ZBI7PJFX.js";import"./chunk-K5R3WUJP.js";export{a as BrowserWorkflowTool};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.8");process.exit(0)}
|
|
2
|
-
import{b as p,d as C}from"./chunk-FWXNFPLS.js";import{a as b}from"./chunk-X6VYQVUM.js";import{e as k}from"./chunk-7H3GNRNA.js";C();b();var m=k.create("skill-validation-learner"),v=class{constructor(e){this.reasoningBank=e}reasoningBank;memoryNamespace="skill-validation";feedbackLoop=null;connectFeedbackLoop(e){this.feedbackLoop=e}async recordValidationOutcome(e){await this.reasoningBank.storeQEPattern({patternType:"test-template",name:`${e.skillName}-validation-${e.validationLevel}`,description:`Validation outcome for ${e.skillName} at level ${e.validationLevel}`,context:{tags:["skill-validation",e.skillName,e.model,e.validationLevel],testType:"integration"},template:{type:"config",content:JSON.stringify({outcome:{skillName:e.skillName,trustTier:e.trustTier,validationLevel:e.validationLevel,model:e.model,passed:e.passed,score:e.score,testCaseCount:e.testCaseResults.length,passedTests:e.testCaseResults.filter(s=>s.passed).length,avgReasoningQuality:this.calculateAvgReasoningQuality(e.testCaseResults),timestamp:e.timestamp.toISOString(),runId:e.runId,metadata:e.metadata}}),variables:[]}}),await this.updateSkillConfidence(e),e.validationLevel==="eval"&&await this.trackCrossModelBehavior(e),this.feedbackLoop&&e.runId&&await this.recordToFeedbackLoop(e)}async updateSkillConfidence(e){let s=`skill-confidence-${e.skillName}`,n=await this.reasoningBank.searchQEPatterns(s,{limit:1}),t;if(n.success&&n.value.length>0)try{let r=n.value[0].pattern.template?.content;if(r){let i=p(r);i&&typeof i=="object"&&Array.isArray(i.outcomes)?t=i:t=this.createEmptyConfidence(e.skillName)}else t=this.createEmptyConfidence(e.skillName)}catch(a){m.debug("Confidence history parse failed",{skill:e.skillName,error:a instanceof Error?a.message:String(a)}),t=this.createEmptyConfidence(e.skillName)}else t=this.createEmptyConfidence(e.skillName);t.outcomes.push({score:e.score,timestamp:e.timestamp,model:e.model,validationLevel:e.validationLevel,passed:e.passed}),t.outcomes.length>100&&(t.outcomes=t.outcomes.slice(-100)),t.avgScore=t.outcomes.reduce((a,r)=>a+r.score,0)/t.outcomes.length,t.lastUpdated=new Date,t.trend=this.calculateTrend(t.outcomes),t.byLevel=this.calculateConfidenceByLevel(t.outcomes),await this.reasoningBank.storeQEPattern({patternType:"test-template",name:s,description:`Skill confidence tracking for ${e.skillName}`,context:{tags:["skill-confidence",e.skillName]},template:{type:"config",content:JSON.stringify(t),variables:[]}})}async trackCrossModelBehavior(e){let s=`cross-model-${e.skillName}`,n=await this.reasoningBank.searchQEPatterns(s,{limit:1}),t;if(n.success&&n.value.length>0)try{let c=n.value[0].pattern.template?.content;if(c){let l=p(c);l&&typeof l=="object"&&typeof l.models=="object"?t=l:t=this.createEmptyCrossModelAnalysis()}else t=this.createEmptyCrossModelAnalysis()}catch(o){m.debug("Cross-model analysis parse failed",{error:o instanceof Error?o.message:String(o)}),t=this.createEmptyCrossModelAnalysis()}else t=this.createEmptyCrossModelAnalysis();t.models||(t.models={}),t.models[e.model]||(t.models[e.model]={scores:[],passRate:0,avgReasoningQuality:0,sampleCount:0});let a=t.models[e.model];a.scores.push(e.score),a.sampleCount++,a.scores.length>50&&(a.scores=a.scores.slice(-50));let r=this.calculateAvgReasoningQuality(e.testCaseResults);a.passRate=a.scores.filter(o=>o>=.9).length/a.scores.length,a.avgReasoningQuality=(a.avgReasoningQuality*(a.sampleCount-1)+r)/a.sampleCount;let i=Object.values(t.models).map(o=>o.passRate);if(i.length>1){let o=i.reduce((l,d)=>l+d,0)/i.length,c=i.reduce((l,d)=>l+Math.pow(d-o,2),0)/i.length;t.variance=c,t.hasAnomalies=c>.04,t.anomalies=[];for(let[l,d]of Object.entries(t.models))Math.abs(d.passRate-o)>.2&&t.anomalies.push({model:l,type:d.passRate<o?"low_performance":"high_variance",description:`Model ${l} has ${((d.passRate-o)*100).toFixed(1)}% difference from average`})}t.lastUpdated=new Date,await this.reasoningBank.storeQEPattern({patternType:"test-template",name:s,description:`Cross-model behavior tracking for ${e.skillName}`,context:{tags:["cross-model",e.skillName]},template:{type:"config",content:JSON.stringify(t),variables:[]}})}async recordToFeedbackLoop(e){if(!this.feedbackLoop)return;let s={taskId:e.runId,taskDescription:`Skill validation: ${e.skillName} (${e.validationLevel})`,recommendedAgent:"skill-validator",usedAgent:"skill-validator",followedRecommendation:!0,success:e.passed,qualityScore:e.score,durationMs:e.metadata?.duration||0,timestamp:e.timestamp};await this.feedbackLoop.recordRoutingOutcome(s)}async getSkillConfidence(e){let s=`skill-confidence-${e}`,n=await this.reasoningBank.searchQEPatterns(s,{limit:1});if(n.success&&n.value.length>0)try{let t=n.value[0].pattern.template?.content;if(t)return p(t)}catch(t){m.debug("Skill confidence pattern content invalid",{skill:e,error:t instanceof Error?t.message:String(t)})}return null}async getCrossModelAnalysis(e){let s=`cross-model-${e}`,n=await this.reasoningBank.searchQEPatterns(s,{limit:1});if(n.success&&n.value.length>0)try{let t=n.value[0].pattern.template?.content;if(t)return p(t)}catch(t){m.debug("Cross-model pattern content invalid",{skill:e,error:t instanceof Error?t.message:String(t)})}return null}async queryValidationPatterns(e,s=10){let n=await this.reasoningBank.searchQEPatterns(`${e} validation`,{limit:s});return n.success?n.value.filter(t=>t.pattern.context?.tags?.includes("skill-validation")).map(t=>t.pattern):[]}async getValidationTrends(e){let s=await this.getSkillConfidence(e),n=await this.getCrossModelAnalysis(e);if(!s)return null;let t={};if(n)for(let i of Object.keys(n.models)){let o=s.outcomes.filter(c=>c.model===i).map(c=>({score:c.score}));t[i]=this.calculateTrend(o)}let a=s.outcomes.slice(-20),r=a.filter(i=>i.passed).length/a.length;return{overall:s.trend||"stable",byModel:t,recentPassRate:r}}async extractLearnedPatterns(e){let s=await this.queryValidationPatterns(e,50),n=[],t=new Map;for(let a of s)try{let i=p(a.template?.content||"{}").outcome?.metadata?.category||"general";t.has(i)||t.set(i,[]),t.get(i).push(a)}catch(r){m.debug("Invalid pattern during category grouping",{error:r instanceof Error?r.message:String(r)})}for(let[a,r]of Array.from(t.entries())){let i=new Set,o=new Set,c=new Set,l=0;for(let d of r)try{let f=p(d.template?.content||"{}").outcome;if(!f)continue;c.add(f.model),l+=f.score;let h=d.context?.tags||[];f.passed?h.filter(g=>!["skill-validation",e].includes(g)).forEach(g=>i.add(g)):h.filter(g=>!["skill-validation",e].includes(g)).forEach(g=>o.add(g))}catch(u){m.debug("Invalid pattern during category extraction",{error:u instanceof Error?u.message:String(u)})}r.length>0&&n.push({id:`${e}-${a}`,skillName:e,category:a,successIndicators:Array.from(i),failureIndicators:Array.from(o),models:Array.from(c),confidence:l/r.length,observationCount:r.length})}return n}createEmptyConfidence(e){return{skillName:e,avgScore:0,outcomes:[],lastUpdated:new Date}}createEmptyCrossModelAnalysis(){return{models:{},variance:0,hasAnomalies:!1,lastUpdated:new Date}}calculateAvgReasoningQuality(e){return e.length===0?0:e.reduce((s,n)=>s+n.reasoningQuality,0)/e.length}calculateTrend(e){if(e.length<5)return"stable";let s=e.slice(-10),n=e.slice(-20,-10);if(n.length===0)return"stable";let t=s.reduce((i,o)=>i+o.score,0)/s.length,a=n.reduce((i,o)=>i+o.score,0)/n.length,r=t-a;return r>.05?"improving":r<-.05?"declining":"stable"}calculateConfidenceByLevel(e){let s={schema:[],validator:[],eval:[]};for(let t of e)t.validationLevel&&s[t.validationLevel].push(t.score);let n={};for(let[t,a]of Object.entries(s))a.length>0&&(n[t]=a.reduce((r,i)=>r+i,0)/a.length);return n}};function L(y){return new v(y)}export{L as a};
|