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
|
@@ -14,10 +14,18 @@
|
|
|
14
14
|
* `getPendingInsights` target and vector embeddings (if attached) grow
|
|
15
15
|
* unbounded.
|
|
16
16
|
*
|
|
17
|
-
* Strategy:
|
|
17
|
+
* Strategy: move out of `dream_insights` only insights that:
|
|
18
18
|
* - have never been applied (`applied = 0`), AND
|
|
19
19
|
* - are older than the retention window (default 30 days)
|
|
20
20
|
*
|
|
21
|
+
* #1066: rows are archived, not lost. In one write transaction (BEGIN
|
|
22
|
+
* IMMEDIATE, so it waits on busy_timeout instead of failing on lock upgrade)
|
|
23
|
+
* each qualifying row is copied to `dream_insights_archive`, the copies are
|
|
24
|
+
* read back, and only rows whose copy is present are deleted. If the
|
|
25
|
+
* read-back does not match, the transaction rolls back and nothing is
|
|
26
|
+
* deleted. The archive has its own key, so an insight swept twice keeps both
|
|
27
|
+
* copies.
|
|
28
|
+
*
|
|
21
29
|
* Applied insights stay forever — they're part of the audit trail for
|
|
22
30
|
* pattern changes. Recently-created insights stay regardless of applied
|
|
23
31
|
* state — they might still be picked up by a future `applyInsight` pass.
|
|
@@ -38,12 +46,18 @@ export interface PruneStaleDreamInsightsOptions {
|
|
|
38
46
|
export interface PruneResult {
|
|
39
47
|
/** Number of rows deleted. Zero if the table is empty or no rows qualify. */
|
|
40
48
|
pruned: number;
|
|
49
|
+
/** Number of rows copied to `dream_insights_archive` before the delete. */
|
|
50
|
+
archived: number;
|
|
41
51
|
}
|
|
52
|
+
/** Table that keeps every insight the sweep removes from `dream_insights`. */
|
|
53
|
+
export declare const DREAM_INSIGHTS_ARCHIVE_TABLE = "dream_insights_archive";
|
|
42
54
|
/**
|
|
43
|
-
*
|
|
55
|
+
* Archive, then delete, stale unapplied insights. Idempotent — safe to call
|
|
56
|
+
* on every tick.
|
|
44
57
|
*
|
|
45
|
-
* Returns `{ pruned: 0 }` if the table doesn't exist (init hasn't
|
|
46
|
-
* the dream schema yet) or if no rows qualify.
|
|
58
|
+
* Returns `{ pruned: 0, archived: 0 }` if the table doesn't exist (init hasn't
|
|
59
|
+
* created the dream schema yet) or if no rows qualify. Throws, with nothing
|
|
60
|
+
* deleted, if the archive copy cannot be verified.
|
|
47
61
|
*/
|
|
48
62
|
export declare function pruneStaleDreamInsights(db: DatabaseType, options?: PruneStaleDreamInsightsOptions): PruneResult;
|
|
49
63
|
//# sourceMappingURL=dream-insights-pruner.d.ts.map
|
|
@@ -14,10 +14,18 @@
|
|
|
14
14
|
* `getPendingInsights` target and vector embeddings (if attached) grow
|
|
15
15
|
* unbounded.
|
|
16
16
|
*
|
|
17
|
-
* Strategy:
|
|
17
|
+
* Strategy: move out of `dream_insights` only insights that:
|
|
18
18
|
* - have never been applied (`applied = 0`), AND
|
|
19
19
|
* - are older than the retention window (default 30 days)
|
|
20
20
|
*
|
|
21
|
+
* #1066: rows are archived, not lost. In one write transaction (BEGIN
|
|
22
|
+
* IMMEDIATE, so it waits on busy_timeout instead of failing on lock upgrade)
|
|
23
|
+
* each qualifying row is copied to `dream_insights_archive`, the copies are
|
|
24
|
+
* read back, and only rows whose copy is present are deleted. If the
|
|
25
|
+
* read-back does not match, the transaction rolls back and nothing is
|
|
26
|
+
* deleted. The archive has its own key, so an insight swept twice keeps both
|
|
27
|
+
* copies.
|
|
28
|
+
*
|
|
21
29
|
* Applied insights stay forever — they're part of the audit trail for
|
|
22
30
|
* pattern changes. Recently-created insights stay regardless of applied
|
|
23
31
|
* state — they might still be picked up by a future `applyInsight` pass.
|
|
@@ -27,11 +35,40 @@
|
|
|
27
35
|
* with the rest of its lifecycle work.
|
|
28
36
|
*/
|
|
29
37
|
const DEFAULT_RETENTION_DAYS = 30;
|
|
38
|
+
/** Table that keeps every insight the sweep removes from `dream_insights`. */
|
|
39
|
+
export const DREAM_INSIGHTS_ARCHIVE_TABLE = 'dream_insights_archive';
|
|
40
|
+
// Same columns as dream_insights plus archive_id and archived_at. `id` is not
|
|
41
|
+
// unique here: an insight that comes back (for example from a brain import)
|
|
42
|
+
// and is swept again gets a second row instead of replacing the first. No
|
|
43
|
+
// foreign key, so deleting a dream cycle does not cascade into the archive.
|
|
44
|
+
const CREATE_ARCHIVE_SQL = `
|
|
45
|
+
CREATE TABLE IF NOT EXISTS ${DREAM_INSIGHTS_ARCHIVE_TABLE} (
|
|
46
|
+
archive_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
47
|
+
id TEXT NOT NULL,
|
|
48
|
+
cycle_id TEXT,
|
|
49
|
+
insight_type TEXT,
|
|
50
|
+
source_concepts TEXT,
|
|
51
|
+
description TEXT,
|
|
52
|
+
novelty_score REAL,
|
|
53
|
+
confidence_score REAL,
|
|
54
|
+
actionable INTEGER,
|
|
55
|
+
applied INTEGER,
|
|
56
|
+
suggested_action TEXT,
|
|
57
|
+
pattern_id TEXT,
|
|
58
|
+
created_at TEXT,
|
|
59
|
+
archived_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
60
|
+
)
|
|
61
|
+
`;
|
|
62
|
+
function columnNames(db, table) {
|
|
63
|
+
return db.prepare(`PRAGMA table_info(${table})`).all().map((c) => c.name);
|
|
64
|
+
}
|
|
30
65
|
/**
|
|
31
|
-
*
|
|
66
|
+
* Archive, then delete, stale unapplied insights. Idempotent — safe to call
|
|
67
|
+
* on every tick.
|
|
32
68
|
*
|
|
33
|
-
* Returns `{ pruned: 0 }` if the table doesn't exist (init hasn't
|
|
34
|
-
* the dream schema yet) or if no rows qualify.
|
|
69
|
+
* Returns `{ pruned: 0, archived: 0 }` if the table doesn't exist (init hasn't
|
|
70
|
+
* created the dream schema yet) or if no rows qualify. Throws, with nothing
|
|
71
|
+
* deleted, if the archive copy cannot be verified.
|
|
35
72
|
*/
|
|
36
73
|
export function pruneStaleDreamInsights(db, options = {}) {
|
|
37
74
|
const retentionDays = options.retentionDays ?? DEFAULT_RETENTION_DAYS;
|
|
@@ -41,13 +78,64 @@ export function pruneStaleDreamInsights(db, options = {}) {
|
|
|
41
78
|
.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='dream_insights'")
|
|
42
79
|
.get();
|
|
43
80
|
if (!tableExists) {
|
|
44
|
-
return { pruned: 0 };
|
|
81
|
+
return { pruned: 0, archived: 0 };
|
|
45
82
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
|
|
83
|
+
// One cutoff for every statement below, so the copy, the check and the
|
|
84
|
+
// delete all see the same set of rows.
|
|
85
|
+
const { cutoff } = db
|
|
86
|
+
.prepare(`SELECT datetime('now', ?) AS cutoff`)
|
|
87
|
+
.get(`-${retentionDays} days`);
|
|
88
|
+
const stale = 'd.applied = 0 AND d.created_at < ?';
|
|
89
|
+
const sweep = db.transaction(() => {
|
|
90
|
+
const candidates = db
|
|
91
|
+
.prepare(`SELECT COUNT(*) AS n FROM dream_insights d WHERE ${stale}`)
|
|
92
|
+
.get(cutoff).n;
|
|
93
|
+
if (candidates === 0)
|
|
94
|
+
return { pruned: 0, archived: 0 };
|
|
95
|
+
db.exec(CREATE_ARCHIVE_SQL);
|
|
96
|
+
const archiveColumns = new Set(columnNames(db, DREAM_INSIGHTS_ARCHIVE_TABLE));
|
|
97
|
+
if (!archiveColumns.has('archive_id')) {
|
|
98
|
+
throw new Error(`${DREAM_INSIGHTS_ARCHIVE_TABLE} has no archive_id column; nothing deleted`);
|
|
99
|
+
}
|
|
100
|
+
// Copy the columns both tables have; older databases may lack some.
|
|
101
|
+
const shared = columnNames(db, 'dream_insights').filter((name) => name !== 'archived_at' && name !== 'archive_id' && archiveColumns.has(name));
|
|
102
|
+
const list = shared.map((name) => `"${name}"`).join(', ');
|
|
103
|
+
// Copies made by this sweep have archive_id above this mark.
|
|
104
|
+
const { mark } = db
|
|
105
|
+
.prepare(`SELECT COALESCE(MAX(archive_id), 0) AS mark FROM ${DREAM_INSIGHTS_ARCHIVE_TABLE}`)
|
|
106
|
+
.get();
|
|
107
|
+
const archived = db
|
|
108
|
+
.prepare(`INSERT INTO ${DREAM_INSIGHTS_ARCHIVE_TABLE} (${list}, archived_at)
|
|
109
|
+
SELECT ${shared.map((name) => `d."${name}"`).join(', ')}, datetime('now')
|
|
110
|
+
FROM dream_insights d WHERE ${stale}`)
|
|
111
|
+
.run(cutoff).changes;
|
|
112
|
+
// Read back: every row about to be deleted must have a copy from this sweep.
|
|
113
|
+
const copied = db
|
|
114
|
+
.prepare(`SELECT COUNT(*) AS n FROM dream_insights d
|
|
115
|
+
WHERE ${stale}
|
|
116
|
+
AND EXISTS (SELECT 1 FROM ${DREAM_INSIGHTS_ARCHIVE_TABLE} a
|
|
117
|
+
WHERE a.id = d.id AND a.archive_id > ?)`)
|
|
118
|
+
.get(cutoff, mark).n;
|
|
119
|
+
if (copied !== candidates) {
|
|
120
|
+
throw new Error(`dream_insights archive check failed: ${copied} of ${candidates} rows copied; nothing deleted`);
|
|
121
|
+
}
|
|
122
|
+
const pruned = db
|
|
123
|
+
.prepare(`DELETE FROM dream_insights
|
|
124
|
+
WHERE applied = 0 AND created_at < ?
|
|
125
|
+
AND id IN (SELECT id FROM ${DREAM_INSIGHTS_ARCHIVE_TABLE} WHERE archive_id > ?)`)
|
|
126
|
+
.run(cutoff, mark).changes;
|
|
127
|
+
// Read back: the stale rows are gone and none was deleted uncopied.
|
|
128
|
+
const left = db
|
|
129
|
+
.prepare(`SELECT COUNT(*) AS n FROM dream_insights d WHERE ${stale}`)
|
|
130
|
+
.get(cutoff).n;
|
|
131
|
+
if (pruned !== candidates || left !== 0) {
|
|
132
|
+
throw new Error(`dream_insights delete check failed: deleted ${pruned} of ${candidates}, ${left} left; rolled back`);
|
|
133
|
+
}
|
|
134
|
+
return { pruned, archived };
|
|
135
|
+
});
|
|
136
|
+
// #1066 review: IMMEDIATE takes the write lock up front, so a busy database
|
|
137
|
+
// makes the sweep wait on busy_timeout. A deferred transaction starts with
|
|
138
|
+
// a read and fails at once with SQLITE_BUSY when it upgrades to write.
|
|
139
|
+
return sweep.immediate();
|
|
52
140
|
}
|
|
53
141
|
//# sourceMappingURL=dream-insights-pruner.js.map
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
* - mergeBranch -> RELEASE SAVEPOINT
|
|
14
14
|
* - discardBranch -> ROLLBACK TO SAVEPOINT
|
|
15
15
|
*
|
|
16
|
+
* WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
|
|
17
|
+
* the dream's. Use an isolated connection, or keep the branch open only
|
|
18
|
+
* across synchronous work. If it stays open across `await`s on the
|
|
19
|
+
* process-wide shared connection, foreground writes made in the meantime
|
|
20
|
+
* (memory_store and other acknowledged writes) join the savepoint and are
|
|
21
|
+
* rolled back by a discard, or lost if the connection closes before
|
|
22
|
+
* RELEASE. DreamEngine therefore defaults `enableBranching` to false.
|
|
23
|
+
*
|
|
16
24
|
* @module learning/dream/rvcow-branch-manager
|
|
17
25
|
*/
|
|
18
26
|
import type { Database as DatabaseType } from 'better-sqlite3';
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
* - mergeBranch -> RELEASE SAVEPOINT
|
|
14
14
|
* - discardBranch -> ROLLBACK TO SAVEPOINT
|
|
15
15
|
*
|
|
16
|
+
* WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
|
|
17
|
+
* the dream's. Use an isolated connection, or keep the branch open only
|
|
18
|
+
* across synchronous work. If it stays open across `await`s on the
|
|
19
|
+
* process-wide shared connection, foreground writes made in the meantime
|
|
20
|
+
* (memory_store and other acknowledged writes) join the savepoint and are
|
|
21
|
+
* rolled back by a discard, or lost if the connection closes before
|
|
22
|
+
* RELEASE. DreamEngine therefore defaults `enableBranching` to false.
|
|
23
|
+
*
|
|
16
24
|
* @module learning/dream/rvcow-branch-manager
|
|
17
25
|
*/
|
|
18
26
|
import { existsSync, unlinkSync } from 'fs';
|
|
@@ -69,6 +69,14 @@ export declare const BUILT_IN_STRATEGIES: DreamStrategy[];
|
|
|
69
69
|
* are executed one at a time but each in its own savepoint. The branch manager
|
|
70
70
|
* ensures that failed strategies leave no trace in the database.
|
|
71
71
|
*
|
|
72
|
+
* WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
|
|
73
|
+
* the dream's. Use an isolated connection, or keep the branch open only
|
|
74
|
+
* across synchronous work. If it stays open across `await`s on the
|
|
75
|
+
* process-wide shared connection, foreground writes made in the meantime
|
|
76
|
+
* (memory_store and other acknowledged writes) join the savepoint and are
|
|
77
|
+
* rolled back by a discard, or lost if the connection closes before
|
|
78
|
+
* RELEASE. DreamEngine therefore defaults `enableBranching` to false.
|
|
79
|
+
*
|
|
72
80
|
* @example
|
|
73
81
|
* ```typescript
|
|
74
82
|
* const dreamer = new SpeculativeDreamer(db);
|
|
@@ -61,6 +61,14 @@ export const BUILT_IN_STRATEGIES = [
|
|
|
61
61
|
* are executed one at a time but each in its own savepoint. The branch manager
|
|
62
62
|
* ensures that failed strategies leave no trace in the database.
|
|
63
63
|
*
|
|
64
|
+
* WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
|
|
65
|
+
* the dream's. Use an isolated connection, or keep the branch open only
|
|
66
|
+
* across synchronous work. If it stays open across `await`s on the
|
|
67
|
+
* process-wide shared connection, foreground writes made in the meantime
|
|
68
|
+
* (memory_store and other acknowledged writes) join the savepoint and are
|
|
69
|
+
* rolled back by a discard, or lost if the connection closes before
|
|
70
|
+
* RELEASE. DreamEngine therefore defaults `enableBranching` to false.
|
|
71
|
+
*
|
|
64
72
|
* @example
|
|
65
73
|
* ```typescript
|
|
66
74
|
* const dreamer = new SpeculativeDreamer(db);
|
|
@@ -252,6 +252,8 @@ export declare class SkillValidationLearner {
|
|
|
252
252
|
*/
|
|
253
253
|
extractLearnedPatterns(skillName: string): Promise<ValidationPattern[]>;
|
|
254
254
|
private createEmptyConfidence;
|
|
255
|
+
/** Preserve data keys such as __proto__ without giving parsed records a prototype. */
|
|
256
|
+
private parseCrossModelAnalysis;
|
|
255
257
|
private createEmptyCrossModelAnalysis;
|
|
256
258
|
private calculateAvgReasoningQuality;
|
|
257
259
|
private calculateTrend;
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* @see .claude/skills/.validation/skill-validation-mcp-integration.md
|
|
25
25
|
*/
|
|
26
26
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
27
|
+
import { createSafeRecord, getOwn, setOwn } from '../shared/utils/safe-record.js';
|
|
27
28
|
import { LoggerFactory } from '../logging/index.js';
|
|
28
29
|
const logger = LoggerFactory.create('skill-validation-learner');
|
|
29
30
|
// ============================================================================
|
|
@@ -207,14 +208,8 @@ export class SkillValidationLearner {
|
|
|
207
208
|
const pattern = existingPatterns.value[0].pattern;
|
|
208
209
|
const templateContent = pattern.template?.content;
|
|
209
210
|
if (templateContent) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if (parsed && typeof parsed === 'object' && typeof parsed.models === 'object') {
|
|
213
|
-
crossModel = parsed;
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
crossModel = this.createEmptyCrossModelAnalysis();
|
|
217
|
-
}
|
|
211
|
+
crossModel = this.parseCrossModelAnalysis(templateContent)
|
|
212
|
+
?? this.createEmptyCrossModelAnalysis();
|
|
218
213
|
}
|
|
219
214
|
else {
|
|
220
215
|
crossModel = this.createEmptyCrossModelAnalysis();
|
|
@@ -230,18 +225,16 @@ export class SkillValidationLearner {
|
|
|
230
225
|
}
|
|
231
226
|
// Ensure models object exists (defensive)
|
|
232
227
|
if (!crossModel.models) {
|
|
233
|
-
crossModel.models =
|
|
228
|
+
crossModel.models = createSafeRecord();
|
|
234
229
|
}
|
|
235
230
|
// Initialize model data if needed
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
244
|
-
const modelData = crossModel.models[outcome.model];
|
|
231
|
+
const modelData = getOwn(crossModel.models, outcome.model) ?? {
|
|
232
|
+
scores: [],
|
|
233
|
+
passRate: 0,
|
|
234
|
+
avgReasoningQuality: 0,
|
|
235
|
+
sampleCount: 0,
|
|
236
|
+
};
|
|
237
|
+
setOwn(crossModel.models, outcome.model, modelData);
|
|
245
238
|
modelData.scores.push(outcome.score);
|
|
246
239
|
modelData.sampleCount++;
|
|
247
240
|
// Keep last 50 scores per model
|
|
@@ -336,7 +329,7 @@ export class SkillValidationLearner {
|
|
|
336
329
|
try {
|
|
337
330
|
const templateContent = patterns.value[0].pattern.template?.content;
|
|
338
331
|
if (templateContent) {
|
|
339
|
-
return
|
|
332
|
+
return this.parseCrossModelAnalysis(templateContent);
|
|
340
333
|
}
|
|
341
334
|
}
|
|
342
335
|
catch (e) {
|
|
@@ -367,7 +360,7 @@ export class SkillValidationLearner {
|
|
|
367
360
|
if (!confidence)
|
|
368
361
|
return null;
|
|
369
362
|
// Calculate by-model trends
|
|
370
|
-
const byModel =
|
|
363
|
+
const byModel = createSafeRecord();
|
|
371
364
|
if (crossModel) {
|
|
372
365
|
for (const model of Object.keys(crossModel.models)) {
|
|
373
366
|
const modelOutcomes = confidence.outcomes
|
|
@@ -466,9 +459,24 @@ export class SkillValidationLearner {
|
|
|
466
459
|
lastUpdated: new Date(),
|
|
467
460
|
};
|
|
468
461
|
}
|
|
462
|
+
/** Preserve data keys such as __proto__ without giving parsed records a prototype. */
|
|
463
|
+
parseCrossModelAnalysis(content) {
|
|
464
|
+
// The generic safe parser strips __proto__, which would discard a legitimate
|
|
465
|
+
// model's history. This reviver copies every record into a null-prototype
|
|
466
|
+
// dictionary instead, including nested records; it never invokes setters.
|
|
467
|
+
const parsed = JSON.parse(content, (_key, value) => {
|
|
468
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
469
|
+
return Object.assign(createSafeRecord(), value);
|
|
470
|
+
}
|
|
471
|
+
return value;
|
|
472
|
+
});
|
|
473
|
+
return parsed && typeof parsed === 'object' && parsed.models
|
|
474
|
+
&& typeof parsed.models === 'object' && !Array.isArray(parsed.models)
|
|
475
|
+
? parsed : null;
|
|
476
|
+
}
|
|
469
477
|
createEmptyCrossModelAnalysis() {
|
|
470
478
|
return {
|
|
471
|
-
models:
|
|
479
|
+
models: createSafeRecord(),
|
|
472
480
|
variance: 0,
|
|
473
481
|
hasAnomalies: false,
|
|
474
482
|
lastUpdated: new Date(),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - MCP background worker startup (IMP-10, #1061)
|
|
3
|
+
*
|
|
4
|
+
* Starts the worker daemon and the QualityDaemon for the MCP server, unless
|
|
5
|
+
* `AQE_WORKERS_ENABLED` is set to a falsy value (`false`, `0`, `off`, `no`).
|
|
6
|
+
* `aqe init --no-database` writes `AQE_WORKERS_ENABLED=false` (#533); before
|
|
7
|
+
* #1061 the variable was written but never read.
|
|
8
|
+
*
|
|
9
|
+
* All output goes through `log`, which the MCP entry binds to the original
|
|
10
|
+
* stderr writer so stdout stays reserved for JSON-RPC.
|
|
11
|
+
*/
|
|
12
|
+
import { type WorkerEnv } from '../workers/worker-env.js';
|
|
13
|
+
export type BackgroundWorkersOutcome = 'disabled' | 'started' | 'failed';
|
|
14
|
+
export declare function startBackgroundWorkers(log: (message: string) => void, env?: WorkerEnv): Promise<BackgroundWorkersOutcome>;
|
|
15
|
+
//# sourceMappingURL=background-workers.d.ts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - MCP background worker startup (IMP-10, #1061)
|
|
3
|
+
*
|
|
4
|
+
* Starts the worker daemon and the QualityDaemon for the MCP server, unless
|
|
5
|
+
* `AQE_WORKERS_ENABLED` is set to a falsy value (`false`, `0`, `off`, `no`).
|
|
6
|
+
* `aqe init --no-database` writes `AQE_WORKERS_ENABLED=false` (#533); before
|
|
7
|
+
* #1061 the variable was written but never read.
|
|
8
|
+
*
|
|
9
|
+
* All output goes through `log`, which the MCP entry binds to the original
|
|
10
|
+
* stderr writer so stdout stays reserved for JSON-RPC.
|
|
11
|
+
*/
|
|
12
|
+
import { isWorkersEnabled } from '../workers/worker-env.js';
|
|
13
|
+
export async function startBackgroundWorkers(log, env = process.env) {
|
|
14
|
+
if (!isWorkersEnabled(env)) {
|
|
15
|
+
log(`[MCP] Background workers disabled (AQE_WORKERS_ENABLED=${env.AQE_WORKERS_ENABLED}); ` +
|
|
16
|
+
'worker daemon and quality daemon not started\n');
|
|
17
|
+
return 'disabled';
|
|
18
|
+
}
|
|
19
|
+
// In database-free mode the workers run against the in-memory unified
|
|
20
|
+
// store, so they persist nothing to disk while keeping QualityDaemon/health
|
|
21
|
+
// functional.
|
|
22
|
+
try {
|
|
23
|
+
const { getDaemon } = await import('../workers/daemon.js');
|
|
24
|
+
// ADR-001 Bug A fix: use the canonical getDaemon() default. Passing
|
|
25
|
+
// `{ autoStart: false }` here would neuter workerManager.startAll() —
|
|
26
|
+
// the only call path that schedules per-worker setInterval timers, so
|
|
27
|
+
// workers would register but never tick. DEFAULT_CONFIG.autoStart=true
|
|
28
|
+
// (workers/daemon.ts) is the contracted default; matches the
|
|
29
|
+
// shutdownDaemon() call site in entry.ts.
|
|
30
|
+
const daemon = getDaemon();
|
|
31
|
+
// #1066: start() runs every worker's first tick one after another, which
|
|
32
|
+
// can take minutes. Let it finish in the background so the QualityDaemon
|
|
33
|
+
// (and the HTTP server after us) do not wait for it.
|
|
34
|
+
void daemon.start().catch((startError) => {
|
|
35
|
+
log(`[MCP] WARNING: Background workers failed to start: ${startError}\n`);
|
|
36
|
+
});
|
|
37
|
+
const status = daemon.getStatus();
|
|
38
|
+
log(`[MCP] Background workers started (${status.workerManager.totalWorkers} workers; ` +
|
|
39
|
+
'first runs continue in the background)\n');
|
|
40
|
+
// IMP-10: Start QualityDaemon with persistent memory (Finding 1 & 2 resolution)
|
|
41
|
+
try {
|
|
42
|
+
const { UnifiedMemoryManager } = await import('../kernel/unified-memory.js');
|
|
43
|
+
const { PersistentWorkerMemory } = await import('../workers/quality-daemon/persistent-memory.js');
|
|
44
|
+
const { isPrivateIp } = await import('../hooks/security/ssrf-guard.js');
|
|
45
|
+
const unifiedMemory = await UnifiedMemoryManager.getInstanceAsync();
|
|
46
|
+
const persistentMemory = new PersistentWorkerMemory(unifiedMemory);
|
|
47
|
+
const qualityDaemon = daemon.getQualityDaemon({
|
|
48
|
+
notifications: {
|
|
49
|
+
// IMP-07 SSRF guard: block private IPs in webhook URLs (Finding 5)
|
|
50
|
+
urlValidator: (url) => {
|
|
51
|
+
try {
|
|
52
|
+
const parsed = new URL(url);
|
|
53
|
+
const hostname = parsed.hostname.replace(/^\[|\]$/g, '');
|
|
54
|
+
return !isPrivateIp(hostname);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
await qualityDaemon.start(persistentMemory);
|
|
63
|
+
log(`[MCP] Quality daemon started\n`);
|
|
64
|
+
}
|
|
65
|
+
catch (qdError) {
|
|
66
|
+
log(`[MCP] WARNING: Quality daemon failed to start: ${qdError}\n`);
|
|
67
|
+
// Non-fatal — MCP continues without quality daemon
|
|
68
|
+
}
|
|
69
|
+
return 'started';
|
|
70
|
+
}
|
|
71
|
+
catch (daemonError) {
|
|
72
|
+
log(`[MCP] WARNING: Background workers failed to start: ${daemonError}\n`);
|
|
73
|
+
// Non-fatal — MCP server continues without background workers
|
|
74
|
+
return 'failed';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=background-workers.js.map
|