agentic-qe 3.15.7 → 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 +305 -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-OS5G7KMQ.js → agent-booster-wasm-427FRKWG.js} +2 -2
- package/dist/cli/chunks/{agent-handler-PI4I7PME.js → agent-handler-RIYHTHVZ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-J7TXHX4U.js → agent-memory-branch-WSUCUHOO.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
- package/dist/cli/chunks/{arena-OWUGXKNT.js → arena-KRIBMIXX.js} +2 -2
- package/dist/cli/chunks/{arena-FXESDCFR.js → arena-YAJZX6MC.js} +4 -4
- package/dist/cli/chunks/{audit-EPAWLYIZ.js → audit-7ZNOXWP3.js} +3 -3
- package/dist/cli/chunks/base-67DXSAYM.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-IYVR5EQY.js → better-sqlite3-ZQAT4I6H.js} +2 -2
- package/dist/cli/chunks/{brain-handler-3W2E6TC6.js → brain-handler-452WCPZC.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HU7VACJ4.js → branch-enumerator-IJFXJRPN.js} +2 -2
- package/dist/cli/chunks/{browser-72XOR6E2.js → browser-CT3MTV6G.js} +2 -2
- package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
- package/dist/cli/chunks/{chunk-WXI2STKQ.js → chunk-2BA45H64.js} +2 -2
- package/dist/cli/chunks/{chunk-DGK6GQMO.js → chunk-2HL3UM5P.js} +2 -2
- package/dist/cli/chunks/{chunk-LGBN7TKC.js → chunk-2I2UPJS7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZRLNACPY.js → chunk-2TDIS6YK.js} +2 -2
- package/dist/cli/chunks/{chunk-34JLY3U6.js → chunk-2URBI52G.js} +2 -2
- package/dist/cli/chunks/{chunk-K7W55B7Q.js → chunk-2XITOPYV.js} +2 -2
- package/dist/cli/chunks/{chunk-I7H4IP7T.js → chunk-2YH62JCN.js} +2 -2
- package/dist/cli/chunks/{chunk-HPG7354V.js → chunk-32UTLDNY.js} +2 -2
- package/dist/cli/chunks/{chunk-C2CUPJGR.js → chunk-37BIGMJI.js} +1 -1
- package/dist/cli/chunks/{chunk-2RJYA6WK.js → chunk-3CJCROMW.js} +2 -2
- package/dist/cli/chunks/{chunk-CWPRU7ZI.js → chunk-3LYU7BLY.js} +2 -2
- package/dist/cli/chunks/{chunk-24CENUT4.js → chunk-47TYABPD.js} +3 -3
- package/dist/cli/chunks/{chunk-WUV5RZUI.js → chunk-47V7FQGX.js} +2 -2
- package/dist/cli/chunks/{chunk-IWQQIXHO.js → chunk-4JCY45KV.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTMZFF25.js → chunk-4SUOVLJ6.js} +2 -2
- package/dist/cli/chunks/{chunk-CIFWOMNX.js → chunk-4URT6JO2.js} +1 -1
- package/dist/cli/chunks/{chunk-5Q22XPTH.js → chunk-4V27J6YN.js} +2 -2
- package/dist/cli/chunks/{chunk-SX2YSHE7.js → chunk-4W4DYVSH.js} +1 -1
- package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
- package/dist/cli/chunks/{chunk-F62EKVVC.js → chunk-5D2I7JUP.js} +2 -2
- package/dist/cli/chunks/{chunk-XXAVQACL.js → chunk-5JWGCIQW.js} +1 -1
- package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
- package/dist/cli/chunks/{chunk-EDU72RTW.js → chunk-5NS3USRW.js} +1 -1
- package/dist/cli/chunks/{chunk-BTYKGVJ5.js → chunk-6EPHNJTL.js} +1 -1
- package/dist/cli/chunks/{chunk-JVYPXW6Y.js → chunk-6OOYIO3W.js} +2 -2
- package/dist/cli/chunks/{chunk-PG64YV6C.js → chunk-6PXA2BQJ.js} +58 -58
- package/dist/cli/chunks/{chunk-IARSGAG7.js → chunk-6YL6JOQB.js} +2 -2
- package/dist/cli/chunks/{chunk-LDXQRNTT.js → chunk-72AMFDC7.js} +1 -1
- package/dist/cli/chunks/{chunk-Z3VJLWRR.js → chunk-763SUL4B.js} +2 -2
- package/dist/cli/chunks/{chunk-EL75G2A3.js → chunk-7DMA5NYL.js} +1 -1
- package/dist/cli/chunks/{chunk-J43DV3ME.js → chunk-7JKB3Q7O.js} +1 -1
- package/dist/cli/chunks/{chunk-ONVALAZN.js → chunk-7KII4CQG.js} +2 -2
- package/dist/cli/chunks/{chunk-AAA4SHEG.js → chunk-7QGYJ5OY.js} +1 -1
- package/dist/cli/chunks/{chunk-MMXG3LL6.js → chunk-7QTB5VJZ.js} +2 -2
- package/dist/cli/chunks/{chunk-BB7OLQKO.js → chunk-7X2Y727E.js} +1 -1
- package/dist/cli/chunks/{chunk-VNW5Q2CX.js → chunk-A4RU67VX.js} +2 -2
- package/dist/cli/chunks/{chunk-YFOBQSOW.js → chunk-A6YIH4C4.js} +2 -2
- package/dist/cli/chunks/{chunk-MJJC6HUK.js → chunk-ABFDB4X3.js} +1 -1
- package/dist/cli/chunks/{chunk-MHZPC4HJ.js → chunk-AJ4YDSOI.js} +2 -2
- package/dist/cli/chunks/{chunk-OA4GR3EZ.js → chunk-AOFO4N32.js} +2 -2
- package/dist/cli/chunks/{chunk-EB2PP6X2.js → chunk-AQTVVLNP.js} +1 -1
- package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
- package/dist/cli/chunks/{chunk-N4PMPSJJ.js → chunk-AVB5QY2Q.js} +2 -2
- package/dist/cli/chunks/{chunk-HLZATDD2.js → chunk-BHKXMIWX.js} +2 -2
- package/dist/cli/chunks/{chunk-C2MDBBFF.js → chunk-BXO536GT.js} +3 -3
- package/dist/cli/chunks/{chunk-WTLIEBDH.js → chunk-C6RTMTEH.js} +1 -1
- package/dist/cli/chunks/{chunk-MNZFEIE5.js → chunk-CTZJUV5I.js} +1 -1
- package/dist/cli/chunks/{chunk-XEWXYGJI.js → chunk-D6XVGFTI.js} +2 -2
- package/dist/cli/chunks/{chunk-Y4SAWE45.js → chunk-DDPPSSHW.js} +1 -1
- package/dist/cli/chunks/{chunk-KPOPBUUJ.js → chunk-DGTLJNJH.js} +2 -2
- package/dist/cli/chunks/{chunk-6JT73S5B.js → chunk-DINZR5CF.js} +1 -1
- package/dist/cli/chunks/{chunk-HTWIGQL4.js → chunk-EFBLP43U.js} +2 -2
- package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
- package/dist/cli/chunks/{chunk-2AYBYXOA.js → chunk-F2SQPP6U.js} +2 -2
- package/dist/cli/chunks/{chunk-V2SAEMZY.js → chunk-F3PQZX44.js} +1 -1
- package/dist/cli/chunks/{chunk-JPHDMHFG.js → chunk-F4JYIRW2.js} +2 -2
- package/dist/cli/chunks/{chunk-REEIFA6A.js → chunk-FJ4VTLLK.js} +2 -2
- package/dist/cli/chunks/{chunk-PTK66HEY.js → chunk-FL3OYGCS.js} +2 -2
- package/dist/cli/chunks/{chunk-PEKDSJBC.js → chunk-FLASM2XB.js} +2 -2
- package/dist/cli/chunks/{chunk-G762PEFO.js → chunk-FV3NHVC7.js} +22 -22
- package/dist/cli/chunks/{chunk-FTTFJ7SJ.js → chunk-FV7VAG74.js} +1 -1
- package/dist/cli/chunks/{chunk-2YVJ5OUL.js → chunk-G3BKZNFL.js} +8 -8
- package/dist/cli/chunks/{chunk-MDC4G323.js → chunk-GBUIG3FS.js} +1 -1
- package/dist/cli/chunks/{chunk-DCJW2DPL.js → chunk-GCWSX2NY.js} +4 -4
- package/dist/cli/chunks/{chunk-VCA6YYII.js → chunk-GII5WVAK.js} +1 -1
- package/dist/cli/chunks/{chunk-HXBAQKMH.js → chunk-GKPQ2GRR.js} +2 -2
- package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
- package/dist/cli/chunks/{chunk-ZUMDDMDE.js → chunk-H3KBIWTO.js} +2 -2
- package/dist/cli/chunks/{chunk-ECSLJJOQ.js → chunk-HAROIAJE.js} +1 -1
- package/dist/cli/chunks/{chunk-ICPALF4Q.js → chunk-HCYQHWI2.js} +2 -2
- package/dist/cli/chunks/{chunk-V5NGBQAQ.js → chunk-HGTWAZWU.js} +2 -2
- package/dist/cli/chunks/{chunk-YK3NOC2R.js → chunk-HTZJSQ3C.js} +2 -2
- package/dist/cli/chunks/{chunk-IYQ7XNE5.js → chunk-HWK5L7IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-HSDOOFV7.js → chunk-HZ5NC6U5.js} +1 -1
- package/dist/cli/chunks/{chunk-M63QB466.js → chunk-I6S35FRO.js} +2 -2
- package/dist/cli/chunks/{chunk-LMEU64TR.js → chunk-ICP2ORGI.js} +2 -2
- package/dist/cli/chunks/{chunk-PXZKPUW6.js → chunk-IFEIY3NQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OJEZNLB6.js → chunk-J3DTDJDT.js} +2 -2
- package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
- package/dist/cli/chunks/{chunk-SQHLC6I5.js → chunk-J5KNRVXR.js} +1 -1
- package/dist/cli/chunks/{chunk-RORZ5O5Z.js → chunk-JAV5WPSY.js} +2 -2
- package/dist/cli/chunks/{chunk-SSP2B2WR.js → chunk-JEP4ULR6.js} +2 -2
- package/dist/cli/chunks/{chunk-6FEQ73BF.js → chunk-JK2ME6IT.js} +2 -2
- package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
- package/dist/cli/chunks/{chunk-RXAFLK34.js → chunk-JP4P3P3D.js} +2 -2
- package/dist/cli/chunks/{chunk-JY4AIEZ7.js → chunk-JUVHZG7I.js} +1 -1
- package/dist/cli/chunks/{chunk-UBYCR3O4.js → chunk-JWGRWMZP.js} +2 -2
- package/dist/cli/chunks/{chunk-6BO3WCK7.js → chunk-K5DJXMAA.js} +2 -2
- package/dist/cli/chunks/{chunk-MKFQNCXI.js → chunk-KFUUIAR4.js} +2 -2
- package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
- package/dist/cli/chunks/{chunk-UY3REQOK.js → chunk-KIKWJM6J.js} +2 -2
- package/dist/cli/chunks/{chunk-YUC7RJGR.js → chunk-KIXYKUCI.js} +1 -1
- package/dist/cli/chunks/{chunk-IC2WSSD5.js → chunk-KLGYIEJK.js} +3 -3
- package/dist/cli/chunks/{chunk-DVPGBDBP.js → chunk-KR3M44CF.js} +3 -3
- package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
- package/dist/cli/chunks/{chunk-Y6A46M3B.js → chunk-KVBEGOJE.js} +2 -2
- package/dist/cli/chunks/{chunk-PZG3542B.js → chunk-L42JPFCC.js} +2 -2
- package/dist/cli/chunks/{chunk-J26GADQE.js → chunk-LCJTEUDC.js} +181 -181
- package/dist/cli/chunks/{chunk-3JD2USUH.js → chunk-LEAKYZ37.js} +2 -2
- package/dist/cli/chunks/{chunk-UCLN6AME.js → chunk-LMU5DUDK.js} +1 -1
- package/dist/cli/chunks/{chunk-EV2BYY6T.js → chunk-MZS32SYS.js} +1 -1
- package/dist/cli/chunks/{chunk-LVEX4GID.js → chunk-N3KEY4XJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XNSQZ3O7.js → chunk-N3NP6PTT.js} +2 -2
- package/dist/cli/chunks/{chunk-QVG4ZDXX.js → chunk-N5PDFGCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-6PKCQXEW.js → chunk-NDKLQW6N.js} +2 -2
- package/dist/cli/chunks/{chunk-6AYRAOCA.js → chunk-NHZIWIQZ.js} +2 -2
- package/dist/cli/chunks/{chunk-H4WHDFB5.js → chunk-NTAD5UX4.js} +2 -2
- package/dist/cli/chunks/{chunk-JYXOFN3E.js → chunk-O3JLOVZX.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLVQSEZK.js → chunk-OCESWNAZ.js} +3 -3
- package/dist/cli/chunks/{chunk-7EX4DEQR.js → chunk-OG2UI6A3.js} +2 -2
- package/dist/cli/chunks/{chunk-3RM46XFP.js → chunk-OXTFSIGN.js} +1 -1
- package/dist/cli/chunks/{chunk-44DPYNPE.js → chunk-OXZLKP6C.js} +1 -1
- package/dist/cli/chunks/{chunk-TU4LIIOP.js → chunk-P2CXVNKK.js} +2 -2
- package/dist/cli/chunks/{chunk-LDZWIV2O.js → chunk-P73W2K7T.js} +1 -1
- package/dist/cli/chunks/{chunk-56ZKQYZY.js → chunk-PBZI2ZPV.js} +3 -3
- package/dist/cli/chunks/{chunk-MNCF643K.js → chunk-PMCRCEW5.js} +2 -2
- package/dist/cli/chunks/{chunk-4G2VNW4C.js → chunk-PVIA2FPD.js} +2 -2
- package/dist/cli/chunks/{chunk-MRHM4COP.js → chunk-PX2B5TS2.js} +2 -2
- package/dist/cli/chunks/{chunk-HZFT3P5B.js → chunk-Q3JVJRVJ.js} +1 -1
- package/dist/cli/chunks/{chunk-GY2SAIXP.js → chunk-QQ5SZH4D.js} +2 -2
- package/dist/cli/chunks/{chunk-LP4AS2E4.js → chunk-QTVWUQTB.js} +1 -1
- package/dist/cli/chunks/{chunk-W4X2VTIY.js → chunk-REUFWGMA.js} +2 -2
- package/dist/cli/chunks/{chunk-FVBFASOD.js → chunk-SNBYYO6F.js} +2 -2
- package/dist/cli/chunks/{chunk-RNYX4CPI.js → chunk-SVHUYVUR.js} +2 -2
- package/dist/cli/chunks/{chunk-AXO7OOOA.js → chunk-THAY7WHO.js} +2 -2
- package/dist/cli/chunks/{chunk-QWLTHFZW.js → chunk-TNMQVG4A.js} +2 -2
- package/dist/cli/chunks/{chunk-JFPXCQNP.js → chunk-TSYQDRNK.js} +1 -1
- package/dist/cli/chunks/{chunk-JK6B3ULP.js → chunk-TUYJ53V4.js} +2 -2
- package/dist/cli/chunks/{chunk-PUECC4WI.js → chunk-UNUTC6TX.js} +2 -2
- package/dist/cli/chunks/{chunk-ED32XJ5R.js → chunk-UOJBR4J3.js} +2 -2
- package/dist/cli/chunks/{chunk-CXTJ47QS.js → chunk-UOWHE77F.js} +2 -2
- package/dist/cli/chunks/{chunk-5KCBX225.js → chunk-UYLYMWV5.js} +2 -2
- package/dist/cli/chunks/{chunk-QNQSM2OG.js → chunk-V5PXQSFS.js} +2 -2
- package/dist/cli/chunks/{chunk-VKPKYMCT.js → chunk-VCMINU7K.js} +2 -2
- package/dist/cli/chunks/{chunk-QQT6QENQ.js → chunk-VQHVHVSF.js} +2 -2
- package/dist/cli/chunks/{chunk-634D2ENF.js → chunk-VRGCKBF7.js} +2 -2
- package/dist/cli/chunks/{chunk-T6W5APYP.js → chunk-VU2EL424.js} +1 -1
- package/dist/cli/chunks/{chunk-JY4WLN3K.js → chunk-VXZJOKOX.js} +2 -2
- package/dist/cli/chunks/{chunk-NZQPP533.js → chunk-VYLM2YV5.js} +3 -3
- package/dist/cli/chunks/{chunk-PQV7E7XH.js → chunk-W32YU3VI.js} +2 -2
- package/dist/cli/chunks/{chunk-RRPYWBFX.js → chunk-W5VJRDDG.js} +2 -2
- package/dist/cli/chunks/{chunk-7UCVYYWL.js → chunk-WGDR2KIR.js} +2 -2
- package/dist/cli/chunks/{chunk-2423JAA5.js → chunk-WRRCQ2UE.js} +1 -1
- package/dist/cli/chunks/{chunk-RCYLCA7E.js → chunk-XDBD4GXO.js} +2 -2
- package/dist/cli/chunks/{chunk-PYHYOKYT.js → chunk-XOLDMK23.js} +2 -2
- package/dist/cli/chunks/{chunk-5KS7HA37.js → chunk-XOVNZT7F.js} +1 -1
- package/dist/cli/chunks/{chunk-5PBRBS7D.js → chunk-XQ3DDY7X.js} +2 -2
- package/dist/cli/chunks/{chunk-4DIZ5BT6.js → chunk-XUIA5KMS.js} +2 -2
- package/dist/cli/chunks/{chunk-G7YTZTGU.js → chunk-XWIUFYM3.js} +1 -1
- package/dist/cli/chunks/{chunk-B7M323VL.js → chunk-XYCKHYBM.js} +2 -2
- package/dist/cli/chunks/{chunk-6OS7HREG.js → chunk-XZJ2O3VC.js} +1 -1
- package/dist/cli/chunks/{chunk-BTIBXGVQ.js → chunk-YRBBBUJX.js} +5 -5
- package/dist/cli/chunks/{chunk-MQ6OF6DU.js → chunk-YZGSJG34.js} +1 -1
- package/dist/cli/chunks/{chunk-XTJMY3KS.js → chunk-YZYDTABJ.js} +1 -1
- package/dist/cli/chunks/{chunk-LQOVA4YX.js → chunk-ZANDSVCK.js} +2 -2
- package/dist/cli/chunks/{chunk-2E3XWKEU.js → chunk-ZBDRLF43.js} +2 -2
- package/dist/cli/chunks/{chunk-UUHIEM2M.js → chunk-ZVSLCEVC.js} +3 -3
- package/dist/cli/chunks/{chunk-Q2T5FXEA.js → chunk-ZXBCCO2H.js} +2 -2
- package/dist/cli/chunks/{ci-5HEXJZ2C.js → ci-7SGRCFPS.js} +2 -2
- package/dist/cli/chunks/{ci-config-WU4NPDAM.js → ci-config-MX3URPZA.js} +2 -2
- package/dist/cli/chunks/{ci-output-BJQVXX5E.js → ci-output-M47NJY6D.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-3BMGTQCB.js → circuit-breaker-5GAK45SW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-GVDGJWMU.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
- package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
- package/dist/cli/chunks/{cline-installer-V4MRGWVA.js → cline-installer-DLJ5QD5N.js} +2 -2
- package/dist/cli/chunks/{code-A3TGQPEO.js → code-ONKLMVQ2.js} +25 -24
- package/dist/cli/chunks/{code-index-extractor-YJQSYWD3.js → code-index-extractor-2232LGZN.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7N7UQPAH.js → codex-installer-UOWLYCMH.js} +2 -2
- package/dist/cli/chunks/{completions-PPGVYLZS.js → completions-MHX7GCC7.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-XZTFLYV5.js → complexity-analyzer-43ZUJKZU.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-Z5I57RAH.js → continuedev-installer-6Q5JR4FF.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-F5YZ6BHB.js → copilot-installer-CZUMVHSI.js} +2 -2
- package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
- package/dist/cli/chunks/{cost-tracker-GO33ZQAP.js → cost-tracker-VS5ZW3XN.js} +2 -2
- package/dist/cli/chunks/{coverage-GSHKLY74.js → coverage-VWKTWZ6D.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
- package/dist/cli/chunks/{cursor-installer-JJ7IVJZB.js → cursor-installer-YIFEMORH.js} +2 -2
- package/dist/cli/chunks/{daemon-IRL7QRNE.js → daemon-SHWJSJW5.js} +7 -7
- package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
- package/dist/cli/chunks/{dag-attention-scheduler-ORXSUHPA.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
- package/dist/cli/chunks/{detect-RHU62KRI.js → detect-IGTWSQMA.js} +2 -2
- package/dist/cli/chunks/{dist-node-3VKV4Z6C.js → dist-node-TCOTJVQX.js} +2 -2
- package/dist/cli/chunks/{domain-handler-SFIML4FK.js → domain-handler-55ZVYODR.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-CJ4FA3OC.js → domain-plugins-GJRWOHQP.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-BCRKPCAA.js → domain-transfer-6EF75EKU.js} +2 -2
- package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-VL3HFLPV.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
- package/dist/cli/chunks/{eval-GGKRI4P5.js → eval-GO22R4OZ.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-F72TIRQY.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
- package/dist/cli/chunks/{fast-paths-7KOOF3MA.js → fast-paths-6RGPYALD.js} +2 -2
- package/dist/cli/chunks/{feature-flags-FNHBTHBH.js → feature-flags-MIWQIOHU.js} +2 -2
- package/dist/cli/chunks/{feature-flags-IOZEWWFU.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-OH2DOQP7.js → gnn-wrapper-ALBJVW6T.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-W67NXTNE.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-6MLLOGOE.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-4UDISJ3G.js → hnswlib-node-XM6XF3YV.js} +2 -2
- package/dist/cli/chunks/{hooks-NOQJWQ4P.js → hooks-X62O7TJO.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-2OD3APVP.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-5AZGMBUM.js → hypergraph-handler-DUMF6SJV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
- package/dist/cli/chunks/{init-guard-SMGJ45PW.js → init-guard-S4I2R46S.js} +2 -2
- package/dist/cli/chunks/{init-handler-5T4MP2NM.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-RLZYLVQJ.js → kilocode-installer-GNNB5FCZ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-LFZOC7VD.js → kiro-installer-HR6ZAH7T.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
- package/dist/cli/chunks/{learning-XRPGLUWR.js → learning-4IEEOHJS.js} +3 -3
- package/dist/cli/chunks/{llm-router-OMK5HYPH.js → llm-router-ZFMORP36.js} +4 -4
- package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
- package/dist/cli/chunks/{load-XADC7KCU.js → load-ZM43WGDO.js} +2 -2
- package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
- package/dist/cli/chunks/{mcp-PIBKSSVU.js → mcp-CRZKZE37.js} +2 -2
- package/dist/cli/chunks/{memory-AP7EZERS.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-7JJ2FZ33.js → multi-model-executor-SXXGAQ2G.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-ZZZ6EBYJ.js → opencode-installer-PIRBUAB5.js} +2 -2
- package/dist/cli/chunks/{orchestrator-2H2YKSGJ.js → orchestrator-H5SQCQTB.js} +11 -10
- package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-7MJJWC2Z.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
- package/dist/cli/chunks/{pipeline-LIE5BWQY.js → pipeline-5LMLBIJ7.js} +2 -2
- package/dist/cli/chunks/{platform-SMYUNLGX.js → platform-KJDABL5C.js} +2 -2
- package/dist/cli/chunks/{plugin-LJDIXQNT.js → plugin-V4KSBVVM.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-RIDNE5D2.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-YVM66DLI.js → protocol-handler-BNRONTQV.js} +2 -2
- package/dist/cli/chunks/{prove-ZBDT52GD.js → prove-ELLL6XMX.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
- package/dist/cli/chunks/{quality-DUKXGDDO.js → quality-NH2QA4D4.js} +2 -2
- package/dist/cli/chunks/{quality-gate-SM3RXF4V.js → quality-gate-JTKLF7GW.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
- package/dist/cli/chunks/{real-embeddings-4QLQZDB5.js → real-embeddings-J3KCKLPB.js} +2 -2
- package/dist/cli/chunks/{ref-validation-M3EO32YQ.js → ref-validation-HNXQRP4F.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-S6Q5OLV5.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-55FMUACP.js → routing-handler-WM33ZILE.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-QATKAAPK.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-RFXFU6JD.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-PKDVXQAW.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-CMRB6WA3.js → security-AUDTRX3I.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-YHLLNFHF.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-4BGDVPQ7.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-LUHKQAGM.js → standalone-memory-XNOAI4G4.js} +2 -2
- package/dist/cli/chunks/{status-handler-S6S5PNR7.js → status-handler-K72XZE4T.js} +2 -2
- package/dist/cli/chunks/{structural-health-PQ7NZAJ4.js → structural-health-NF3YY7U5.js} +2 -2
- package/dist/cli/chunks/{sync-S744AEJC.js → sync-UVXA6CT2.js} +2 -2
- package/dist/cli/chunks/{sync-Q6KRQXU6.js → sync-VBD5Y3E2.js} +2 -2
- package/dist/cli/chunks/{task-handler-GAMGEHUW.js → task-handler-24S3WFVJ.js} +13 -7
- package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
- package/dist/cli/chunks/{test-FNH67DBK.js → test-XFSGQELD.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-NZA5SHK6.js → test-scheduling-VYUQ4CDE.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-CXKG55JD.js → token-bootstrap-EDK6FNQ3.js} +2 -2
- package/dist/cli/chunks/{token-usage-M7WWEDJX.js → token-usage-VLQ6WO2L.js} +2 -2
- package/dist/cli/chunks/{transformers-2IFMCK6A.js → transformers-TOFMWWNM.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-NMNA6RJC.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
- package/dist/cli/chunks/{types-N7FWTOLD.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-KDB5RGL7.js → upgrade-4ABM72T4.js} +2 -2
- package/dist/cli/chunks/{validate-KMUV5FUA.js → validate-UDJCWKXI.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-ANZWRCJU.js → validate-swarm-TODOUWNN.js} +2 -2
- package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-SXXC4NMS.js → web-tree-sitter-WBMAJPM5.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-2LWSKMBU.js → windsurf-installer-BTT53TUL.js} +2 -2
- package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
- package/dist/cli/chunks/{witness-chain-JJMSJFZP.js → witness-chain-TATPXQRK.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-OX7VFW6T.js → witness-chain-repair-2HGJGE7O.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-QLSMXHAZ.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-3DS4L7LE.js → witness-key-manager-X7QHQQWL.js} +2 -2
- package/dist/cli/chunks/{workflow-ARWAMHD3.js → workflow-QMZPAWQW.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
- package/dist/cli/chunks/{wrappers-J6KGTUSJ.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 +130 -58
- 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/coverage-analysis/collected-metrics.js +2 -1
- package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
- package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
- package/dist/domains/learning-optimization/active-patterns.js +80 -0
- 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 +50 -106
- 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 +68 -34
- 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/retry-handler.js +18 -2
- 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-engine.d.ts +27 -1
- package/dist/learning/dream/dream-engine.js +56 -2
- package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
- package/dist/learning/dream/dream-insights-pruner.js +99 -11
- package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
- package/dist/learning/dream/rvcow-branch-manager.js +8 -0
- package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
- package/dist/learning/dream/speculative-dreamer.js +8 -0
- package/dist/learning/skill-validation-learner.d.ts +2 -0
- package/dist/learning/skill-validation-learner.js +29 -21
- package/dist/mcp/background-workers.d.ts +15 -0
- package/dist/mcp/background-workers.js +77 -0
- package/dist/mcp/bundle.js +511 -484
- package/dist/mcp/entry.js +4 -49
- 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 +7 -0
- package/dist/workers/daemon.js +21 -2
- 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 +53 -0
- package/dist/workers/worker-env.js +89 -0
- package/dist/workers/worker-manager.js +4 -0
- package/dist/workers/workers/learning-consolidation.d.ts +20 -0
- package/dist/workers/workers/learning-consolidation.js +57 -23
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-PEOUNYXJ.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +0 -2
- package/dist/cli/chunks/base-QZWK3D5P.js +0 -2
- package/dist/cli/chunks/browser-workflow-ITPX72RX.js +0 -2
- package/dist/cli/chunks/chunk-CG5DZCOZ.js +0 -2
- package/dist/cli/chunks/chunk-QJE6ZW2X.js +0 -6
- package/dist/cli/chunks/chunk-T3ZDVU6F.js +0 -5
- package/dist/cli/chunks/chunk-UIYKR2SA.js +0 -2
- package/dist/cli/chunks/chunk-VJRZFWR5.js +0 -2
- package/dist/cli/chunks/chunk-VUFRTGML.js +0 -3
- package/dist/cli/chunks/chunk-YDZJWDR6.js +0 -180
- package/dist/cli/chunks/client-S7GNYTZ5.js +0 -2
- package/dist/cli/chunks/core-handlers-CUEPOQIO.js +0 -2
- package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +0 -2
- package/dist/cli/chunks/daemon-3DQCKRYO.js +0 -10
- package/dist/cli/chunks/dream-5AUNJW24.js +0 -2
- package/dist/cli/chunks/file-discovery-AYWF357I.js +0 -2
- package/dist/cli/chunks/fleet-QX5KXTRC.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +0 -2
- package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +0 -2
- package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +0 -2
- package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +0 -2
- package/dist/cli/chunks/init-wizard-MK2325JJ.js +0 -2
- package/dist/cli/chunks/kernel-2NJQQ2KT.js +0 -2
- package/dist/cli/chunks/knowledge-graph-SDISHO62.js +0 -2
- package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +0 -2
- package/dist/cli/chunks/load-test-RPKHLBCC.js +0 -2
- package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +0 -2
- package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +0 -2
- package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +0 -2
- package/dist/cli/chunks/project-root-NBIQF63D.js +0 -2
- package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +0 -2
- package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +0 -2
- package/dist/cli/chunks/router-H5YSIRH2.js +0 -2
- package/dist/cli/chunks/routing-feedback-5R36TJDH.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +0 -2
- package/dist/cli/chunks/safe-db-MSTD2GDH.js +0 -2
- package/dist/cli/chunks/schedule-KST6KIFD.js +0 -2
- package/dist/cli/chunks/scheduler-FTQS6YK3.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +0 -2
- package/dist/cli/chunks/task-handlers-6CRDEELN.js +0 -9
- package/dist/cli/chunks/unified-memory-2Z2F446J.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +0 -2
- package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +0 -2
- package/dist/cli/chunks/visual-security-GXYZV7KR.js +0 -2
- package/dist/cli/chunks/witness-chain-52PEIEGK.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.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
|
@@ -15,6 +15,11 @@ export interface DaemonConfig {
|
|
|
15
15
|
autoStart?: boolean;
|
|
16
16
|
/** Workers to enable (defaults to all) */
|
|
17
17
|
enabledWorkers?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Workers to skip even when enabled (#1061). Defaults to the comma list in
|
|
20
|
+
* `AQE_DISABLED_WORKERS`.
|
|
21
|
+
*/
|
|
22
|
+
disabledWorkers?: string[];
|
|
18
23
|
/** Log level */
|
|
19
24
|
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
20
25
|
/** Health check interval (ms) */
|
|
@@ -30,6 +35,8 @@ export declare class QEDaemon implements IDaemon {
|
|
|
30
35
|
private workerManager;
|
|
31
36
|
private config;
|
|
32
37
|
private _qualityDaemon?;
|
|
38
|
+
/** #1066: `AQE_DISABLED_WORKERS` ids that match no worker. */
|
|
39
|
+
private unknownDisabledIds;
|
|
33
40
|
constructor(config?: DaemonConfig);
|
|
34
41
|
get running(): boolean;
|
|
35
42
|
get uptime(): number;
|
package/dist/workers/daemon.js
CHANGED
|
@@ -9,12 +9,14 @@ import { WorkerManagerImpl } from './worker-manager.js';
|
|
|
9
9
|
// Import all QE workers (ADR-014)
|
|
10
10
|
import { TestHealthWorker, CoverageTrackerWorker, FlakyDetectorWorker, SecurityScanWorker, QualityGateWorker, LearningConsolidationWorker, DefectPredictorWorker, RegressionMonitorWorker, PerformanceBaselineWorker, ComplianceCheckerWorker, HeartbeatSchedulerWorker, } from './workers/index.js';
|
|
11
11
|
import { QualityDaemon } from './quality-daemon/index.js';
|
|
12
|
+
import { parseDisabledWorkers } from './worker-env.js';
|
|
12
13
|
/**
|
|
13
14
|
* Default daemon configuration
|
|
14
15
|
*/
|
|
15
16
|
const DEFAULT_CONFIG = {
|
|
16
17
|
autoStart: true,
|
|
17
18
|
enabledWorkers: [],
|
|
19
|
+
disabledWorkers: [],
|
|
18
20
|
logLevel: 'info',
|
|
19
21
|
healthCheckIntervalMs: 60000,
|
|
20
22
|
};
|
|
@@ -28,8 +30,15 @@ export class QEDaemon {
|
|
|
28
30
|
workerManager;
|
|
29
31
|
config;
|
|
30
32
|
_qualityDaemon;
|
|
33
|
+
/** #1066: `AQE_DISABLED_WORKERS` ids that match no worker. */
|
|
34
|
+
unknownDisabledIds = [];
|
|
31
35
|
constructor(config) {
|
|
32
|
-
this.config = {
|
|
36
|
+
this.config = {
|
|
37
|
+
...DEFAULT_CONFIG,
|
|
38
|
+
...config,
|
|
39
|
+
// #1066: ids are matched without regard to case.
|
|
40
|
+
disabledWorkers: (config?.disabledWorkers ?? parseDisabledWorkers()).map((id) => id.toLowerCase()),
|
|
41
|
+
};
|
|
33
42
|
this.workerManager = new WorkerManagerImpl();
|
|
34
43
|
this.registerWorkers();
|
|
35
44
|
}
|
|
@@ -50,6 +59,11 @@ export class QEDaemon {
|
|
|
50
59
|
return;
|
|
51
60
|
}
|
|
52
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
|
+
}
|
|
53
67
|
this._running = true;
|
|
54
68
|
this._startedAt = new Date();
|
|
55
69
|
// Start health check timer
|
|
@@ -158,12 +172,17 @@ export class QEDaemon {
|
|
|
158
172
|
new HeartbeatSchedulerWorker(), // 30 min - Token-free heartbeat
|
|
159
173
|
];
|
|
160
174
|
for (const worker of allWorkers) {
|
|
161
|
-
// Check if worker is enabled
|
|
175
|
+
// Check if worker is enabled and not explicitly disabled (#1061)
|
|
176
|
+
if (this.config.disabledWorkers.includes(worker.config.id)) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
162
179
|
if (this.config.enabledWorkers.length === 0 ||
|
|
163
180
|
this.config.enabledWorkers.includes(worker.config.id)) {
|
|
164
181
|
this.workerManager.register(worker);
|
|
165
182
|
}
|
|
166
183
|
}
|
|
184
|
+
const knownIds = new Set(allWorkers.map((worker) => worker.config.id));
|
|
185
|
+
this.unknownDisabledIds = this.config.disabledWorkers.filter((id) => !knownIds.has(id));
|
|
167
186
|
}
|
|
168
187
|
performHealthCheck() {
|
|
169
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
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Background worker environment switches (#1061)
|
|
3
|
+
*
|
|
4
|
+
* Parses the environment variables that control the background worker
|
|
5
|
+
* daemon hosted by the MCP server:
|
|
6
|
+
*
|
|
7
|
+
* - `AQE_WORKERS_ENABLED`: `false` / `0` / `off` / `no` disables the whole
|
|
8
|
+
* worker daemon, including the QualityDaemon. Unset, empty or any other
|
|
9
|
+
* value keeps the default behaviour (workers on). `aqe init` writes `true`
|
|
10
|
+
* for normal installs and `false` for `--no-database` installs (#533).
|
|
11
|
+
* - `AQE_DISABLED_WORKERS`: comma-separated worker ids that are not
|
|
12
|
+
* registered (for example `learning-consolidation`). Matched without
|
|
13
|
+
* regard to case (#1066).
|
|
14
|
+
* - `AQE_DREAM_INSIGHTS_RETENTION_DAYS`: retention window for unapplied
|
|
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).
|
|
19
|
+
*/
|
|
20
|
+
export type WorkerEnv = Readonly<Record<string, string | undefined>>;
|
|
21
|
+
/** Default retention window for unapplied dream insights (days). */
|
|
22
|
+
export declare const DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS = 30;
|
|
23
|
+
/**
|
|
24
|
+
* Whether background workers should start. Only an explicit falsy value
|
|
25
|
+
* disables them, so existing installs keep today's behaviour.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isWorkersEnabled(env?: WorkerEnv): boolean;
|
|
28
|
+
/**
|
|
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).
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseDisabledWorkers(env?: WorkerEnv): string[];
|
|
34
|
+
export interface DreamInsightsRetention {
|
|
35
|
+
/** Retention window in days, or `null` when the sweep is disabled. */
|
|
36
|
+
retentionDays: number | null;
|
|
37
|
+
/** Set when the configured value was rejected (default applied). */
|
|
38
|
+
warning?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Resolve `AQE_DREAM_INSIGHTS_RETENTION_DAYS`.
|
|
42
|
+
*
|
|
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`)
|
|
47
|
+
* - a whole number from 1 to 36500: that many days
|
|
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).
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveDreamInsightsRetention(env?: WorkerEnv): DreamInsightsRetention;
|
|
53
|
+
//# sourceMappingURL=worker-env.d.ts.map
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Background worker environment switches (#1061)
|
|
3
|
+
*
|
|
4
|
+
* Parses the environment variables that control the background worker
|
|
5
|
+
* daemon hosted by the MCP server:
|
|
6
|
+
*
|
|
7
|
+
* - `AQE_WORKERS_ENABLED`: `false` / `0` / `off` / `no` disables the whole
|
|
8
|
+
* worker daemon, including the QualityDaemon. Unset, empty or any other
|
|
9
|
+
* value keeps the default behaviour (workers on). `aqe init` writes `true`
|
|
10
|
+
* for normal installs and `false` for `--no-database` installs (#533).
|
|
11
|
+
* - `AQE_DISABLED_WORKERS`: comma-separated worker ids that are not
|
|
12
|
+
* registered (for example `learning-consolidation`). Matched without
|
|
13
|
+
* regard to case (#1066).
|
|
14
|
+
* - `AQE_DREAM_INSIGHTS_RETENTION_DAYS`: retention window for unapplied
|
|
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).
|
|
19
|
+
*/
|
|
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']);
|
|
26
|
+
/** Default retention window for unapplied dream insights (days). */
|
|
27
|
+
export const DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS = 30;
|
|
28
|
+
/** Upper bound accepted for the retention window (100 years). */
|
|
29
|
+
const MAX_DREAM_INSIGHTS_RETENTION_DAYS = 36500;
|
|
30
|
+
/**
|
|
31
|
+
* Whether background workers should start. Only an explicit falsy value
|
|
32
|
+
* disables them, so existing installs keep today's behaviour.
|
|
33
|
+
*/
|
|
34
|
+
export function isWorkersEnabled(env = process.env) {
|
|
35
|
+
const raw = env.AQE_WORKERS_ENABLED;
|
|
36
|
+
if (raw === undefined)
|
|
37
|
+
return true;
|
|
38
|
+
return !FALSY_VALUES.has(raw.trim().toLowerCase());
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
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).
|
|
44
|
+
*/
|
|
45
|
+
export function parseDisabledWorkers(env = process.env) {
|
|
46
|
+
const raw = env.AQE_DISABLED_WORKERS;
|
|
47
|
+
if (!raw)
|
|
48
|
+
return [];
|
|
49
|
+
const ids = raw
|
|
50
|
+
.split(',')
|
|
51
|
+
.map((id) => id.trim().toLowerCase())
|
|
52
|
+
.filter((id) => id.length > 0);
|
|
53
|
+
return Array.from(new Set(ids));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve `AQE_DREAM_INSIGHTS_RETENTION_DAYS`.
|
|
57
|
+
*
|
|
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`)
|
|
62
|
+
* - a whole number from 1 to 36500: that many days
|
|
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).
|
|
66
|
+
*/
|
|
67
|
+
export function resolveDreamInsightsRetention(env = process.env) {
|
|
68
|
+
const raw = env.AQE_DREAM_INSIGHTS_RETENTION_DAYS;
|
|
69
|
+
if (raw === undefined || raw.trim() === '') {
|
|
70
|
+
return { retentionDays: DEFAULT_DREAM_INSIGHTS_RETENTION_DAYS };
|
|
71
|
+
}
|
|
72
|
+
const value = raw.trim().toLowerCase();
|
|
73
|
+
if (RETENTION_OFF_VALUES.has(value)) {
|
|
74
|
+
return { retentionDays: null };
|
|
75
|
+
}
|
|
76
|
+
if (/^\d+$/.test(value)) {
|
|
77
|
+
const days = Number(value);
|
|
78
|
+
if (days >= 1 && days <= MAX_DREAM_INSIGHTS_RETENTION_DAYS) {
|
|
79
|
+
return { retentionDays: days };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
retentionDays: null,
|
|
84
|
+
warning: `Invalid AQE_DREAM_INSIGHTS_RETENTION_DAYS=${JSON.stringify(raw)}; ` +
|
|
85
|
+
`expected a whole number of days (1-${MAX_DREAM_INSIGHTS_RETENTION_DAYS}), ` +
|
|
86
|
+
`0 or "off". The dream_insights retention sweep is off until this is fixed; nothing is deleted.`,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
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
|
}
|
|
@@ -14,15 +14,35 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { BaseWorker } from '../base-worker';
|
|
16
16
|
import { WorkerContext, WorkerResult } from '../interfaces';
|
|
17
|
+
/**
|
|
18
|
+
* #488 C.2: retention window for `applied = 0` dream insights comes from
|
|
19
|
+
* `AQE_DREAM_INSIGHTS_RETENTION_DAYS` (default 30, `0`/`off` disables the
|
|
20
|
+
* sweep). See `resolveDreamInsightsRetention` in `../worker-env.ts`.
|
|
21
|
+
*
|
|
22
|
+
* #1061: the sweep never runs on the first tick after the worker is created.
|
|
23
|
+
* The worker manager runs every worker immediately on startup, so without this
|
|
24
|
+
* guard every short MCP session deleted rows within seconds of starting.
|
|
25
|
+
* Retries of the first tick (30 s apart) fall inside the same window.
|
|
26
|
+
*/
|
|
17
27
|
export declare class LearningConsolidationWorker extends BaseWorker {
|
|
18
28
|
private lifecycleManager;
|
|
19
29
|
private lastRunTimestamp;
|
|
30
|
+
/** #1061: the dream_insights sweep waits one full interval after creation. */
|
|
31
|
+
private readonly dreamInsightsPruneNotBefore;
|
|
32
|
+
/** #1061: an invalid retention value is reported once per process. */
|
|
33
|
+
private retentionWarningLogged;
|
|
20
34
|
constructor();
|
|
21
35
|
/**
|
|
22
36
|
* Initialize or get the pattern lifecycle manager
|
|
23
37
|
*/
|
|
24
38
|
private getLifecycleManager;
|
|
25
39
|
protected doExecute(context: WorkerContext): Promise<WorkerResult>;
|
|
40
|
+
/**
|
|
41
|
+
* #488 C.2 / #1061: run the dream_insights retention sweep when it is
|
|
42
|
+
* enabled and the first tick after startup has passed. Returns the number
|
|
43
|
+
* of rows moved to the archive table.
|
|
44
|
+
*/
|
|
45
|
+
private pruneDreamInsights;
|
|
26
46
|
/**
|
|
27
47
|
* Phase 7: Run the continuous learning loop
|
|
28
48
|
*
|
|
@@ -21,7 +21,8 @@ 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
|
+
import { resolveDreamInsightsRetention } from '../worker-env.js';
|
|
25
26
|
import { createLearningMetricsTracker } from '../../learning/metrics-tracker.js';
|
|
26
27
|
const CONFIG = {
|
|
27
28
|
id: 'learning-consolidation',
|
|
@@ -44,13 +45,22 @@ const CONFIG = {
|
|
|
44
45
|
const CONSOLIDATION_CURSOR_PREFIX = 'learning:consolidation-cursor:';
|
|
45
46
|
const DEFAULT_LOOKBACK_DAYS = 1;
|
|
46
47
|
/**
|
|
47
|
-
* #488 C.2: retention window for `applied = 0` dream insights
|
|
48
|
-
* `
|
|
48
|
+
* #488 C.2: retention window for `applied = 0` dream insights comes from
|
|
49
|
+
* `AQE_DREAM_INSIGHTS_RETENTION_DAYS` (default 30, `0`/`off` disables the
|
|
50
|
+
* sweep). See `resolveDreamInsightsRetention` in `../worker-env.ts`.
|
|
51
|
+
*
|
|
52
|
+
* #1061: the sweep never runs on the first tick after the worker is created.
|
|
53
|
+
* The worker manager runs every worker immediately on startup, so without this
|
|
54
|
+
* guard every short MCP session deleted rows within seconds of starting.
|
|
55
|
+
* Retries of the first tick (30 s apart) fall inside the same window.
|
|
49
56
|
*/
|
|
50
|
-
const DREAM_INSIGHTS_RETENTION_DAYS = 30;
|
|
51
57
|
export class LearningConsolidationWorker extends BaseWorker {
|
|
52
58
|
lifecycleManager = null;
|
|
53
59
|
lastRunTimestamp = 0;
|
|
60
|
+
/** #1061: the dream_insights sweep waits one full interval after creation. */
|
|
61
|
+
dreamInsightsPruneNotBefore = Date.now() + CONFIG.intervalMs;
|
|
62
|
+
/** #1061: an invalid retention value is reported once per process. */
|
|
63
|
+
retentionWarningLogged = false;
|
|
54
64
|
constructor() {
|
|
55
65
|
super(CONFIG);
|
|
56
66
|
}
|
|
@@ -224,6 +234,46 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
224
234
|
}
|
|
225
235
|
}
|
|
226
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* #488 C.2 / #1061: run the dream_insights retention sweep when it is
|
|
239
|
+
* enabled and the first tick after startup has passed. Returns the number
|
|
240
|
+
* of rows moved to the archive table.
|
|
241
|
+
*/
|
|
242
|
+
pruneDreamInsights(findings) {
|
|
243
|
+
const retention = resolveDreamInsightsRetention();
|
|
244
|
+
if (retention.warning && !this.retentionWarningLogged) {
|
|
245
|
+
this.retentionWarningLogged = true;
|
|
246
|
+
process.stderr.write(`[AQE] WARN ${retention.warning}\n`);
|
|
247
|
+
}
|
|
248
|
+
const retentionDays = retention.retentionDays;
|
|
249
|
+
if (retentionDays === null)
|
|
250
|
+
return 0;
|
|
251
|
+
if (Date.now() < this.dreamInsightsPruneNotBefore)
|
|
252
|
+
return 0;
|
|
253
|
+
const db = getUnifiedMemory().getDatabase();
|
|
254
|
+
// #1066: rows are copied to dream_insights_archive and verified first.
|
|
255
|
+
const { pruned, archived } = pruneStaleDreamInsights(db, { retentionDays });
|
|
256
|
+
if (pruned > 0) {
|
|
257
|
+
// Default log level, stderr only: MCP stdout carries JSON-RPC.
|
|
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`);
|
|
261
|
+
findings.push({
|
|
262
|
+
type: 'dream-insights-pruned',
|
|
263
|
+
severity: 'info',
|
|
264
|
+
domain: 'learning-optimization',
|
|
265
|
+
title: 'Stale Dream Insights Archived',
|
|
266
|
+
description: `${pruned} unapplied dream insights older than ${retentionDays} days ` +
|
|
267
|
+
`moved to ${DREAM_INSIGHTS_ARCHIVE_TABLE}`,
|
|
268
|
+
context: {
|
|
269
|
+
pruned,
|
|
270
|
+
archived,
|
|
271
|
+
retentionDays,
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
return pruned;
|
|
276
|
+
}
|
|
227
277
|
/**
|
|
228
278
|
* Phase 7: Run the continuous learning loop
|
|
229
279
|
*
|
|
@@ -367,26 +417,10 @@ export class LearningConsolidationWorker extends BaseWorker {
|
|
|
367
417
|
// Step 8 (#488 C.2): prune stale unapplied dream_insights so the
|
|
368
418
|
// table doesn't grow unbounded. Applied insights are part of the
|
|
369
419
|
// pattern-change audit trail and stay forever.
|
|
420
|
+
// #1061: configurable, skipped on the first tick, logged to stderr.
|
|
421
|
+
// Follow-up: archive rows instead of hard-deleting them.
|
|
370
422
|
try {
|
|
371
|
-
|
|
372
|
-
const db = unifiedMemory.getDatabase();
|
|
373
|
-
const pruneResult = pruneStaleDreamInsights(db, {
|
|
374
|
-
retentionDays: DREAM_INSIGHTS_RETENTION_DAYS,
|
|
375
|
-
});
|
|
376
|
-
dreamInsightsPruned = pruneResult.pruned;
|
|
377
|
-
if (dreamInsightsPruned > 0) {
|
|
378
|
-
findings.push({
|
|
379
|
-
type: 'dream-insights-pruned',
|
|
380
|
-
severity: 'info',
|
|
381
|
-
domain: 'learning-optimization',
|
|
382
|
-
title: 'Stale Dream Insights Pruned',
|
|
383
|
-
description: `${dreamInsightsPruned} unapplied dream insights older than ${DREAM_INSIGHTS_RETENTION_DAYS} days deleted`,
|
|
384
|
-
context: {
|
|
385
|
-
pruned: dreamInsightsPruned,
|
|
386
|
-
retentionDays: DREAM_INSIGHTS_RETENTION_DAYS,
|
|
387
|
-
},
|
|
388
|
-
});
|
|
389
|
-
}
|
|
423
|
+
dreamInsightsPruned = this.pruneDreamInsights(findings);
|
|
390
424
|
}
|
|
391
425
|
catch (pruneError) {
|
|
392
426
|
context.logger.warn('Dream insights pruning failed', {
|
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.7");process.exit(0)}
|
|
2
|
-
import{a,b,c}from"./chunk-56ZKQYZY.js";import"./chunk-YFOBQSOW.js";import"./chunk-YUC7RJGR.js";import"./chunk-4G2VNW4C.js";import"./chunk-LVEX4GID.js";import"./chunk-HSDOOFV7.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.7");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f}from"./chunk-NZQPP533.js";import"./chunk-CWPRU7ZI.js";import"./chunk-IC2WSSD5.js";import"./chunk-EV2BYY6T.js";import"./chunk-DCJW2DPL.js";import"./chunk-ZRLNACPY.js";import"./chunk-V2SAEMZY.js";import"./chunk-G7YTZTGU.js";import"./chunk-Y4SAWE45.js";import"./chunk-XEWXYGJI.js";import"./chunk-634D2ENF.js";import"./chunk-J43DV3ME.js";import"./chunk-5KCBX225.js";import"./chunk-RCYLCA7E.js";import"./chunk-BB7OLQKO.js";import"./chunk-N4PMPSJJ.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-C2MDBBFF.js";import"./chunk-RNYX4CPI.js";import"./chunk-FTTFJ7SJ.js";import"./chunk-CG5DZCOZ.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-MRHM4COP.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-44DPYNPE.js";import"./chunk-FVBFASOD.js";import"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.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.7");process.exit(0)}
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-6FEQ73BF.js";import"./chunk-PXZKPUW6.js";import"./chunk-2RJYA6WK.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-RNYX4CPI.js";import"./chunk-FTTFJ7SJ.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.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.7");process.exit(0)}
|
|
2
|
-
import{a}from"./chunk-Z3VJLWRR.js";import"./chunk-6FEQ73BF.js";import"./chunk-PXZKPUW6.js";import"./chunk-2RJYA6WK.js";import"./chunk-ZLVQSEZK.js";import"./chunk-LMEU64TR.js";import"./chunk-4G2VNW4C.js";import"./chunk-7EX4DEQR.js";import"./chunk-QNQSM2OG.js";import"./chunk-F62EKVVC.js";import"./chunk-HTWIGQL4.js";import"./chunk-ONVALAZN.js";import"./chunk-ZTMZFF25.js";import"./chunk-Q2T5FXEA.js";import"./chunk-RNYX4CPI.js";import"./chunk-FTTFJ7SJ.js";import"./chunk-WXI2STKQ.js";import"./chunk-VJRZFWR5.js";import"./chunk-JYXOFN3E.js";import"./chunk-KPOPBUUJ.js";import"./chunk-LVEX4GID.js";import"./chunk-LGBN7TKC.js";import"./chunk-5Q22XPTH.js";import"./chunk-ZUMDDMDE.js";import"./chunk-IARSGAG7.js";import"./chunk-JVYPXW6Y.js";import"./chunk-HSDOOFV7.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.7");process.exit(0)}
|
|
2
|
-
var n=["test-generation","test-execution","coverage-analysis","quality-assessment","defect-intelligence","requirements-validation","code-intelligence","security-compliance","contract-testing","visual-accessibility","chaos-resilience","learning-optimization","enterprise-integration","coordination"];function t(e){return typeof e=="string"&&n.includes(e)}function r(e){return{success:!0,value:e}}function i(e){return{success:!1,error:e}}export{n as a,t as b,r as c,i as d};
|