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
|
@@ -7,6 +7,8 @@ import { ok, err } from '../../../shared/types/index.js';
|
|
|
7
7
|
import { TypeScriptParser } from '../../../shared/parsers/index.js';
|
|
8
8
|
import { FileReader } from '../../../shared/io/index.js';
|
|
9
9
|
import { NomicEmbedder } from '../../../shared/embeddings/index.js';
|
|
10
|
+
import { findProjectRoot } from '../../../kernel/project-root.js';
|
|
11
|
+
import { confineIndexPaths } from '../index-path-guard.js';
|
|
10
12
|
import { toErrorMessage, toError } from '../../../shared/error-utils.js';
|
|
11
13
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
12
14
|
import { existsSync, statSync } from 'fs';
|
|
@@ -51,6 +53,7 @@ export class KnowledgeGraphService {
|
|
|
51
53
|
allEdgesCache;
|
|
52
54
|
tsParser;
|
|
53
55
|
fileReader;
|
|
56
|
+
projectRoot;
|
|
54
57
|
embedder;
|
|
55
58
|
/** ADR-051: Optional LLM router for AI-enhanced extraction */
|
|
56
59
|
llmRouter;
|
|
@@ -73,7 +76,13 @@ export class KnowledgeGraphService {
|
|
|
73
76
|
this.llmRouter = undefined;
|
|
74
77
|
}
|
|
75
78
|
this.tsParser = new TypeScriptParser();
|
|
76
|
-
|
|
79
|
+
// #1096: confine reads to the project root by realpath, so a symlink
|
|
80
|
+
// inside the project cannot pull an outside file into the graph.
|
|
81
|
+
this.projectRoot = this.config.projectRoot ?? this.config.basePath ?? findProjectRoot();
|
|
82
|
+
this.fileReader = new FileReader({
|
|
83
|
+
...(this.config.basePath ? { basePath: this.config.basePath } : {}),
|
|
84
|
+
projectRoot: this.projectRoot,
|
|
85
|
+
});
|
|
77
86
|
this.embedder = new NomicEmbedder({
|
|
78
87
|
enableFallback: true,
|
|
79
88
|
});
|
|
@@ -110,21 +119,35 @@ export class KnowledgeGraphService {
|
|
|
110
119
|
const unsupportedByExt = new Map();
|
|
111
120
|
try {
|
|
112
121
|
const { paths, incremental = false, includeTests = true, languages } = request;
|
|
122
|
+
// #1096: index only regular files whose realpath is inside the project
|
|
123
|
+
// root; everything else is reported in `skipped`, never counted.
|
|
124
|
+
const { accepted, skipped } = await confineIndexPaths(paths, this.projectRoot, this.config.basePath ?? process.cwd());
|
|
125
|
+
let filesIndexed = 0;
|
|
113
126
|
// Clear existing graph if not incremental
|
|
114
127
|
if (!incremental) {
|
|
115
128
|
await this.clear();
|
|
116
129
|
}
|
|
117
|
-
|
|
130
|
+
else {
|
|
131
|
+
// #511: a file deleted since the last index must not leave its old
|
|
132
|
+
// nodes/edges behind, even though it is no longer indexed.
|
|
133
|
+
for (const entry of skipped) {
|
|
134
|
+
if (entry.reason === 'not-found')
|
|
135
|
+
await this.removeFileFromGraph(entry.path);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
for (const path of accepted) {
|
|
118
139
|
try {
|
|
119
140
|
// Filter by language if specified
|
|
120
141
|
if (languages && languages.length > 0) {
|
|
121
142
|
const ext = this.getFileExtension(path);
|
|
122
143
|
if (!this.matchesLanguage(ext, languages)) {
|
|
144
|
+
skipped.push({ path, reason: 'excluded-by-language' });
|
|
123
145
|
continue;
|
|
124
146
|
}
|
|
125
147
|
}
|
|
126
148
|
// Skip test files if not included
|
|
127
149
|
if (!includeTests && this.isTestFile(path)) {
|
|
150
|
+
skipped.push({ path, reason: 'excluded-test-file' });
|
|
128
151
|
continue;
|
|
129
152
|
}
|
|
130
153
|
const ext = this.getFileExtension(path);
|
|
@@ -135,6 +158,7 @@ export class KnowledgeGraphService {
|
|
|
135
158
|
const result = await this.indexFile(path, incremental);
|
|
136
159
|
nodesCreated += result.nodes;
|
|
137
160
|
edgesCreated += result.edges;
|
|
161
|
+
filesIndexed++;
|
|
138
162
|
}
|
|
139
163
|
catch (fileError) {
|
|
140
164
|
errors.push({
|
|
@@ -159,19 +183,20 @@ export class KnowledgeGraphService {
|
|
|
159
183
|
}
|
|
160
184
|
// Store indexing metadata
|
|
161
185
|
await this.storeIndexMetadata({
|
|
162
|
-
filesIndexed
|
|
186
|
+
filesIndexed,
|
|
163
187
|
nodesCreated,
|
|
164
188
|
edgesCreated,
|
|
165
189
|
duration,
|
|
166
190
|
indexedAt: new Date().toISOString(),
|
|
167
191
|
});
|
|
168
192
|
return ok({
|
|
169
|
-
filesIndexed
|
|
193
|
+
filesIndexed,
|
|
170
194
|
nodesCreated,
|
|
171
195
|
edgesCreated,
|
|
172
196
|
duration,
|
|
173
197
|
errors,
|
|
174
198
|
warnings,
|
|
199
|
+
skipped,
|
|
175
200
|
});
|
|
176
201
|
}
|
|
177
202
|
catch (error) {
|
|
@@ -521,7 +546,19 @@ Return JSON: { "rankedIds": ["id1", "id2", ...], "insights": ["insight1", "insig
|
|
|
521
546
|
// STALE pre-edit text. Eviction guarantees fresh reads; the two reads within
|
|
522
547
|
// this method (entities + imports) still share one cache fill, so they stay
|
|
523
548
|
// mutually consistent.
|
|
524
|
-
|
|
549
|
+
try {
|
|
550
|
+
this.fileReader.invalidateCache(filePath);
|
|
551
|
+
}
|
|
552
|
+
catch {
|
|
553
|
+
// #1096: a path the reader's legacy validator rejects (e.g. a project
|
|
554
|
+
// root outside cwd) is never cached; the read below decides.
|
|
555
|
+
}
|
|
556
|
+
// #1096: a file that cannot be read (removed since it was confined, or
|
|
557
|
+
// blocked by the reader) is an error, not an indexed file node.
|
|
558
|
+
const readable = await this.fileReader.readFile(filePath);
|
|
559
|
+
if (!readable.success) {
|
|
560
|
+
throw readable.error;
|
|
561
|
+
}
|
|
525
562
|
// #511: on an incremental re-index, drop this file's prior nodes/edges
|
|
526
563
|
// first so renamed/removed entities and stale outgoing imports don't
|
|
527
564
|
// linger as phantom dependencies. (A full index already cleared everything.)
|
|
@@ -11,6 +11,7 @@ import { toError, toErrorMessage } from '../../shared/error-utils.js';
|
|
|
11
11
|
import { Version } from '../../shared/value-objects/index.js';
|
|
12
12
|
import { createHttpClient } from '../../shared/http/index.js';
|
|
13
13
|
import { FileReader } from '../../shared/io/index.js';
|
|
14
|
+
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
14
15
|
import { createEvent } from '../../shared/events/domain-events.js';
|
|
15
16
|
import { ContractValidatorService } from './services/contract-validator.js';
|
|
16
17
|
import { ApiCompatibilityService } from './services/api-compatibility.js';
|
|
@@ -80,7 +81,8 @@ export class ContractTestingCoordinator extends BaseDomainCoordinator {
|
|
|
80
81
|
this.contractValidator = new ContractValidatorService({ memory, llmRouter });
|
|
81
82
|
this.apiCompatibility = new ApiCompatibilityService(memory);
|
|
82
83
|
this.httpClient = createHttpClient();
|
|
83
|
-
|
|
84
|
+
// #1096: a symlink inside the project must not expose an outside file.
|
|
85
|
+
this.fileReader = new FileReader({ projectRoot: findProjectRoot() });
|
|
84
86
|
// Note: schemaValidator initialized when needed for schema operations
|
|
85
87
|
}
|
|
86
88
|
// ==========================================================================
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* null — never as 0% (a fake low figure) nor as istanbul's 0/0 = 100%.
|
|
8
8
|
*/
|
|
9
9
|
import * as path from 'path';
|
|
10
|
+
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
10
11
|
/**
|
|
11
12
|
* The ONE key form for per-file coverage records (#1027 N7): the absolute
|
|
12
13
|
* path. Reports write absolute (istanbul) or project-relative (lcov
|
|
@@ -14,7 +15,7 @@ import * as path from 'path';
|
|
|
14
15
|
* (or the cwd when none is known), so one file never has two records.
|
|
15
16
|
*/
|
|
16
17
|
export function fileCoverageKey(filePath, projectRoot) {
|
|
17
|
-
return path.isAbsolute(filePath) ? path.normalize(filePath) : path.resolve(projectRoot ??
|
|
18
|
+
return path.isAbsolute(filePath) ? path.normalize(filePath) : path.resolve(projectRoot ?? findProjectRoot(), filePath);
|
|
18
19
|
}
|
|
19
20
|
/** Read the canonical key first, then a measured legacy relative key if present. */
|
|
20
21
|
export function fileCoverageLookupKeys(filePath, projectRoot) {
|
|
@@ -10,6 +10,7 @@ import { LoggerFactory } from '../../../logging/index.js';
|
|
|
10
10
|
import { ok, err } from '../../../shared/types/index.js';
|
|
11
11
|
import { GitAnalyzer } from '../../../shared/git/index.js';
|
|
12
12
|
import { FileReader } from '../../../shared/io/index.js';
|
|
13
|
+
import { findProjectRoot } from '../../../kernel/project-root.js';
|
|
13
14
|
import { TypeScriptParser } from '../../../shared/parsers/index.js';
|
|
14
15
|
import { toError } from '../../../shared/error-utils.js';
|
|
15
16
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
@@ -79,7 +80,8 @@ export class DefectPredictorService {
|
|
|
79
80
|
// New signature: DefectPredictorDependencies
|
|
80
81
|
this.memory = memoryOrDeps.memory;
|
|
81
82
|
this.gitAnalyzer = memoryOrDeps.gitAnalyzer ?? new GitAnalyzer({ enableCache: true });
|
|
82
|
-
|
|
83
|
+
// #1096: a symlink inside the project must not expose an outside file.
|
|
84
|
+
this.fileReader = memoryOrDeps.fileReader ?? new FileReader({ projectRoot: findProjectRoot() });
|
|
83
85
|
this.tsParser = memoryOrDeps.tsParser ?? new TypeScriptParser();
|
|
84
86
|
this.llmRouter = memoryOrDeps.llmRouter;
|
|
85
87
|
}
|
|
@@ -87,7 +89,7 @@ export class DefectPredictorService {
|
|
|
87
89
|
// Old signature: memory, config, gitAnalyzer, fileReader, tsParser
|
|
88
90
|
this.memory = memoryOrDeps;
|
|
89
91
|
this.gitAnalyzer = gitAnalyzer ?? new GitAnalyzer({ enableCache: true });
|
|
90
|
-
this.fileReader = fileReader ?? new FileReader();
|
|
92
|
+
this.fileReader = fileReader ?? new FileReader({ projectRoot: findProjectRoot() });
|
|
91
93
|
this.tsParser = tsParser ?? new TypeScriptParser();
|
|
92
94
|
this.llmRouter = undefined;
|
|
93
95
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Active learned-pattern reads (#1055)
|
|
3
|
+
*
|
|
4
|
+
* Active learned patterns live at `learning:pattern:<id>`. The same prefix
|
|
5
|
+
* also holds records that are NOT active patterns:
|
|
6
|
+
*
|
|
7
|
+
* - `learning:pattern:creation:<id>`: creation provenance written by
|
|
8
|
+
* `LearningCoordinatorService.recordPatternCreation()` (no `context`)
|
|
9
|
+
* - `learning:pattern:archived:<id>`: archived patterns written by
|
|
10
|
+
* `LearningCoordinatorService.archivePattern()` and the
|
|
11
|
+
* learning-consolidation protocol (full pattern shape)
|
|
12
|
+
*
|
|
13
|
+
* Every reader of active patterns must go through this module so that
|
|
14
|
+
* provenance and archives are excluded before `get()`, and so that those rows
|
|
15
|
+
* cannot use up the search cap and push active patterns out. Records stay
|
|
16
|
+
* untouched; this is read-side classification only.
|
|
17
|
+
*/
|
|
18
|
+
import type { MemoryBackend, RetrieveOptions } from '../../kernel/interfaces.js';
|
|
19
|
+
import type { LearnedPattern } from './interfaces.js';
|
|
20
|
+
/**
|
|
21
|
+
* The kv namespace every learning-optimization writer uses (#491 Bug 2).
|
|
22
|
+
* A database identifier: never rename it.
|
|
23
|
+
*/
|
|
24
|
+
export declare const LEARNING_NAMESPACE = "learning-optimization";
|
|
25
|
+
/** Retrieve options for reads and deletes in `LEARNING_NAMESPACE` (#1071). */
|
|
26
|
+
export declare const LEARNING_NS: Readonly<RetrieveOptions>;
|
|
27
|
+
export declare const LEARNING_PATTERN_KEY_PREFIX = "learning:pattern:";
|
|
28
|
+
/** Sub-key families under the pattern prefix that are not active patterns. */
|
|
29
|
+
export declare const NON_ACTIVE_PATTERN_SEGMENTS: readonly string[];
|
|
30
|
+
/**
|
|
31
|
+
* True when the key is in the active pattern key family
|
|
32
|
+
* (`learning:pattern:<id>`), false for provenance, archives and any other
|
|
33
|
+
* non-active sub-key.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isActivePatternKey(key: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Shape guard for a record read from an active key: it must be an object
|
|
38
|
+
* whose own id maps back to that key, and it must carry a `context` object.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isActivePatternRecord(key: string, value: unknown): value is LearnedPattern;
|
|
41
|
+
export interface ReadActivePatternsOptions {
|
|
42
|
+
/** Namespace passed to `search()` and `get()`. Omit for the backend default. */
|
|
43
|
+
retrieve?: RetrieveOptions;
|
|
44
|
+
/** First key-scan request size (tests). The scan always reads every key. */
|
|
45
|
+
scanPageSize?: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read every active learned pattern: list every key (no cap, #1071), drop
|
|
49
|
+
* non-active key families before `get()`, then drop records that fail the
|
|
50
|
+
* shape guard. Patterns come back in key order. Date fields
|
|
51
|
+
* come back from kv as ISO strings and are rehydrated (#491 Bug 3), so
|
|
52
|
+
* `TimeRange.contains(pattern.createdAt)` works for every reader.
|
|
53
|
+
*/
|
|
54
|
+
export declare function readActivePatterns(memory: MemoryBackend, options?: ReadActivePatternsOptions): Promise<LearnedPattern[]>;
|
|
55
|
+
//# sourceMappingURL=active-patterns.d.ts.map
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Active learned-pattern reads (#1055)
|
|
3
|
+
*
|
|
4
|
+
* Active learned patterns live at `learning:pattern:<id>`. The same prefix
|
|
5
|
+
* also holds records that are NOT active patterns:
|
|
6
|
+
*
|
|
7
|
+
* - `learning:pattern:creation:<id>`: creation provenance written by
|
|
8
|
+
* `LearningCoordinatorService.recordPatternCreation()` (no `context`)
|
|
9
|
+
* - `learning:pattern:archived:<id>`: archived patterns written by
|
|
10
|
+
* `LearningCoordinatorService.archivePattern()` and the
|
|
11
|
+
* learning-consolidation protocol (full pattern shape)
|
|
12
|
+
*
|
|
13
|
+
* Every reader of active patterns must go through this module so that
|
|
14
|
+
* provenance and archives are excluded before `get()`, and so that those rows
|
|
15
|
+
* cannot use up the search cap and push active patterns out. Records stay
|
|
16
|
+
* untouched; this is read-side classification only.
|
|
17
|
+
*/
|
|
18
|
+
import { rehydrateDates } from '../../shared/utils/kv-date-rehydrate.js';
|
|
19
|
+
import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
|
|
20
|
+
/**
|
|
21
|
+
* The kv namespace every learning-optimization writer uses (#491 Bug 2).
|
|
22
|
+
* A database identifier: never rename it.
|
|
23
|
+
*/
|
|
24
|
+
export const LEARNING_NAMESPACE = 'learning-optimization';
|
|
25
|
+
/** Retrieve options for reads and deletes in `LEARNING_NAMESPACE` (#1071). */
|
|
26
|
+
export const LEARNING_NS = Object.freeze({ namespace: LEARNING_NAMESPACE });
|
|
27
|
+
export const LEARNING_PATTERN_KEY_PREFIX = 'learning:pattern:';
|
|
28
|
+
/** Sub-key families under the pattern prefix that are not active patterns. */
|
|
29
|
+
export const NON_ACTIVE_PATTERN_SEGMENTS = ['creation', 'archived'];
|
|
30
|
+
/**
|
|
31
|
+
* True when the key is in the active pattern key family
|
|
32
|
+
* (`learning:pattern:<id>`), false for provenance, archives and any other
|
|
33
|
+
* non-active sub-key.
|
|
34
|
+
*/
|
|
35
|
+
export function isActivePatternKey(key) {
|
|
36
|
+
if (!key.startsWith(LEARNING_PATTERN_KEY_PREFIX))
|
|
37
|
+
return false;
|
|
38
|
+
const rest = key.slice(LEARNING_PATTERN_KEY_PREFIX.length);
|
|
39
|
+
if (rest.length === 0)
|
|
40
|
+
return false;
|
|
41
|
+
const firstSegment = rest.split(':', 1)[0];
|
|
42
|
+
return !NON_ACTIVE_PATTERN_SEGMENTS.includes(firstSegment);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Shape guard for a record read from an active key: it must be an object
|
|
46
|
+
* whose own id maps back to that key, and it must carry a `context` object.
|
|
47
|
+
*/
|
|
48
|
+
export function isActivePatternRecord(key, value) {
|
|
49
|
+
if (!value || typeof value !== 'object')
|
|
50
|
+
return false;
|
|
51
|
+
const record = value;
|
|
52
|
+
if (typeof record.id !== 'string' || key !== `${LEARNING_PATTERN_KEY_PREFIX}${record.id}`) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return !!record.context && typeof record.context === 'object';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Read every active learned pattern: list every key (no cap, #1071), drop
|
|
59
|
+
* non-active key families before `get()`, then drop records that fail the
|
|
60
|
+
* shape guard. Patterns come back in key order. Date fields
|
|
61
|
+
* come back from kv as ISO strings and are rehydrated (#491 Bug 3), so
|
|
62
|
+
* `TimeRange.contains(pattern.createdAt)` works for every reader.
|
|
63
|
+
*/
|
|
64
|
+
export async function readActivePatterns(memory, options = {}) {
|
|
65
|
+
const keys = await searchAllKeys(memory, `${LEARNING_PATTERN_KEY_PREFIX}*`, {
|
|
66
|
+
retrieve: options.retrieve,
|
|
67
|
+
pageSize: options.scanPageSize,
|
|
68
|
+
});
|
|
69
|
+
const patterns = [];
|
|
70
|
+
for (const key of keys) {
|
|
71
|
+
if (!isActivePatternKey(key))
|
|
72
|
+
continue;
|
|
73
|
+
const value = await memory.get(key, options.retrieve);
|
|
74
|
+
if (isActivePatternRecord(key, value)) {
|
|
75
|
+
patterns.push(rehydrateDates(value, ['createdAt', 'lastUsedAt']));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return patterns;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=active-patterns.js.map
|
|
@@ -45,9 +45,8 @@ export async function getCurrentStrategy(memory, domain) {
|
|
|
45
45
|
retryCount: 3,
|
|
46
46
|
concurrency: 4,
|
|
47
47
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
48
|
+
// #1099: the default strategy has never run, so no outcome is expected.
|
|
49
|
+
expectedOutcome: {},
|
|
51
50
|
};
|
|
52
51
|
}
|
|
53
52
|
/**
|
|
@@ -276,9 +276,6 @@ export declare class LearningOptimizationCoordinator extends BaseDomainCoordinat
|
|
|
276
276
|
*/
|
|
277
277
|
importModels(modelExport: ModelExport): Promise<Result<ImportReport>>;
|
|
278
278
|
protected subscribeToEvents(): void;
|
|
279
|
-
private handleTestRunCompleted;
|
|
280
|
-
private handleCoverageGap;
|
|
281
|
-
private handleQualityGate;
|
|
282
279
|
/**
|
|
283
280
|
* Handle experience captured from ExperienceCaptureService
|
|
284
281
|
* This is the bridge between Phase 4 experience capture and the coordinator
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
* Orchestrates learning workflows across all QE domains
|
|
4
4
|
*/
|
|
5
5
|
import { LoggerFactory } from '../../logging/index.js';
|
|
6
|
+
import { readActivePatterns, LEARNING_NS } from './active-patterns.js';
|
|
7
|
+
import { partitionByRewardSource } from './reward-source.js';
|
|
8
|
+
import { searchAllKeys } from '../../shared/utils/namespaced-search.js';
|
|
6
9
|
import { v4 as uuidv4 } from 'uuid';
|
|
7
10
|
import { toError } from '../../shared/error-utils.js';
|
|
8
11
|
import { rehydrateDates } from '../../shared/utils/kv-date-rehydrate.js';
|
|
@@ -18,7 +21,6 @@ import { BaseDomainCoordinator, } from '../base-domain-coordinator.js';
|
|
|
18
21
|
// CQ-004: Extracted modules
|
|
19
22
|
import * as LearningHelpers from './coordinator-helpers.js';
|
|
20
23
|
import * as ConsensusHelpers from './coordinator-consensus.js';
|
|
21
|
-
import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
|
|
22
24
|
const DEFAULT_CONFIG = {
|
|
23
25
|
maxConcurrentWorkflows: 3,
|
|
24
26
|
defaultTimeout: 120000, // 2 minutes
|
|
@@ -199,7 +201,10 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
199
201
|
// Get experiences from the last cycle
|
|
200
202
|
const timeRange = TimeRange.lastNDays(1);
|
|
201
203
|
const experiencesResult = await this.getExperiencesForDomain(domain, timeRange);
|
|
202
|
-
|
|
204
|
+
// #1109: the reported `before` value and the optimizer use measured outcomes only.
|
|
205
|
+
const experiences = experiencesResult.success
|
|
206
|
+
? partitionByRewardSource(experiencesResult.value).measured
|
|
207
|
+
: [];
|
|
203
208
|
this.updateWorkflowProgress(workflowId, 20);
|
|
204
209
|
// Mine experiences for patterns
|
|
205
210
|
const insightsResult = await this.learningService.mineExperiences(domain, timeRange);
|
|
@@ -220,12 +225,19 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
220
225
|
const optimizationResult = await this.optimizerService.optimizeStrategy(currentStrategy, objective, experiences);
|
|
221
226
|
if (optimizationResult.success) {
|
|
222
227
|
strategiesOptimized = 1;
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
228
|
+
// #1099: `after` is the fitted expectation and `percentChange` the
|
|
229
|
+
// optimizer's estimate; neither was observed. Report no improvement
|
|
230
|
+
// rather than a 0 stand-in when the metric was never predicted.
|
|
231
|
+
const after = optimizationResult.value.optimizedStrategy.expectedOutcome[objective.metric];
|
|
232
|
+
if (typeof after === 'number') {
|
|
233
|
+
improvements.push({
|
|
234
|
+
metric: objective.metric,
|
|
235
|
+
before: this.calculateMetricValue(experiences, objective.metric),
|
|
236
|
+
after,
|
|
237
|
+
percentChange: optimizationResult.value.improvement * 100,
|
|
238
|
+
estimated: true,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
229
241
|
}
|
|
230
242
|
}
|
|
231
243
|
this.updateWorkflowProgress(workflowId, 80);
|
|
@@ -318,6 +330,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
318
330
|
domainsOptimized,
|
|
319
331
|
totalStrategies,
|
|
320
332
|
avgImprovement: totalStrategies > 0 ? totalImprovement / totalStrategies : 0,
|
|
333
|
+
improvementEstimated: true,
|
|
321
334
|
byDomain,
|
|
322
335
|
};
|
|
323
336
|
// Publish event
|
|
@@ -739,20 +752,21 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
739
752
|
const patterns = [];
|
|
740
753
|
const knowledge = [];
|
|
741
754
|
const strategies = [];
|
|
742
|
-
// Export patterns
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
755
|
+
// Export patterns (#1055: active patterns only — creation provenance
|
|
756
|
+
// and archives share the `learning:pattern:` prefix). One read covers
|
|
757
|
+
// every target domain; the previous per-domain loop exported each
|
|
758
|
+
// pattern once per target domain. #1071: every key is read, no cap.
|
|
759
|
+
const activePatterns = await readActivePatterns(this.memory, { retrieve: LEARNING_NS });
|
|
760
|
+
for (const pattern of activePatterns) {
|
|
761
|
+
if (targetDomains.includes(pattern.domain)) {
|
|
762
|
+
patterns.push(pattern);
|
|
750
763
|
}
|
|
751
|
-
this.updateWorkflowProgress(workflowId, Math.round((patterns.length / 100) * 30));
|
|
752
764
|
}
|
|
753
|
-
|
|
765
|
+
this.updateWorkflowProgress(workflowId, 30);
|
|
766
|
+
// Export knowledge. #1071: no result cap; queryKnowledge reads every
|
|
767
|
+
// shared item before filtering, so other domains cannot crowd these out.
|
|
754
768
|
const knowledgeResult = await this.transferService.queryKnowledge({
|
|
755
|
-
limit:
|
|
769
|
+
limit: Number.POSITIVE_INFINITY,
|
|
756
770
|
});
|
|
757
771
|
if (knowledgeResult.success) {
|
|
758
772
|
for (const item of knowledgeResult.value) {
|
|
@@ -762,10 +776,13 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
762
776
|
}
|
|
763
777
|
}
|
|
764
778
|
this.updateWorkflowProgress(workflowId, 60);
|
|
765
|
-
// Export strategies
|
|
766
|
-
|
|
779
|
+
// Export strategies from the namespace their writers use (#1071), every
|
|
780
|
+
// key, in key order.
|
|
781
|
+
const strategyKeys = await searchAllKeys(this.memory, 'learning:strategy:optimized:*', {
|
|
782
|
+
retrieve: LEARNING_NS,
|
|
783
|
+
});
|
|
767
784
|
for (const key of strategyKeys) {
|
|
768
|
-
const strategy = await this.memory.get(key);
|
|
785
|
+
const strategy = await this.memory.get(key, LEARNING_NS);
|
|
769
786
|
if (strategy && targetDomains.includes(strategy.domain)) {
|
|
770
787
|
strategies.push(strategy);
|
|
771
788
|
}
|
|
@@ -808,7 +825,7 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
808
825
|
const conflicts = [];
|
|
809
826
|
// Import patterns
|
|
810
827
|
for (const pattern of modelExport.patterns) {
|
|
811
|
-
const existing = await this.memory.get(`learning:pattern:${pattern.id}
|
|
828
|
+
const existing = await this.memory.get(`learning:pattern:${pattern.id}`, { namespace: 'learning-optimization' });
|
|
812
829
|
if (existing) {
|
|
813
830
|
if (existing.confidence < pattern.confidence) {
|
|
814
831
|
// Overwrite with better pattern
|
|
@@ -844,7 +861,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
844
861
|
}
|
|
845
862
|
// Import knowledge
|
|
846
863
|
for (const item of modelExport.knowledge) {
|
|
847
|
-
|
|
864
|
+
// #1071: compare against the record in the namespace written below.
|
|
865
|
+
const existing = await this.memory.get(`learning:knowledge:shared:${item.id}`, LEARNING_NS);
|
|
848
866
|
if (existing) {
|
|
849
867
|
if (item.version > existing.version) {
|
|
850
868
|
await this.memory.set(`learning:knowledge:shared:${item.id}`, item, {
|
|
@@ -879,7 +897,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
879
897
|
}
|
|
880
898
|
// Import strategies
|
|
881
899
|
for (const strategy of modelExport.strategies) {
|
|
882
|
-
|
|
900
|
+
// #1071: compare against the record in the namespace written below.
|
|
901
|
+
const existing = await this.memory.get(`learning:strategy:optimized:${strategy.id}`, LEARNING_NS);
|
|
883
902
|
if (existing) {
|
|
884
903
|
if (strategy.confidence > existing.confidence) {
|
|
885
904
|
await this.memory.set(`learning:strategy:optimized:${strategy.id}`, strategy, { namespace: 'learning-optimization', persist: true });
|
|
@@ -925,87 +944,13 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
925
944
|
// Event Handling
|
|
926
945
|
// ============================================================================
|
|
927
946
|
subscribeToEvents() {
|
|
928
|
-
//
|
|
929
|
-
|
|
930
|
-
//
|
|
931
|
-
|
|
932
|
-
// Subscribe to quality assessment events
|
|
933
|
-
this.eventBus.subscribe('quality-assessment.QualityGateEvaluated', this.handleQualityGate.bind(this));
|
|
947
|
+
// #1110: TestRunCompleted, CoverageGapDetected and QualityGateEvaluated are
|
|
948
|
+
// recorded by LearningOptimizationPlugin, which owns this coordinator and
|
|
949
|
+
// also records the test-run production metric. Subscribing here as well
|
|
950
|
+
// stored every such event twice.
|
|
934
951
|
// Subscribe to experience capture events (Phase 4 integration)
|
|
935
952
|
this.eventBus.subscribe('learning.ExperienceCaptured', this.handleExperienceCaptured.bind(this));
|
|
936
953
|
}
|
|
937
|
-
async handleTestRunCompleted(event) {
|
|
938
|
-
// Record experience from test run
|
|
939
|
-
const { runId, passed, failed, duration } = event.payload;
|
|
940
|
-
const successRate = (passed + failed) > 0 ? passed / (passed + failed) : 0;
|
|
941
|
-
await this.learningService.recordExperience({
|
|
942
|
-
agentId: {
|
|
943
|
-
value: 'test-execution',
|
|
944
|
-
domain: 'test-execution',
|
|
945
|
-
type: 'tester',
|
|
946
|
-
},
|
|
947
|
-
domain: 'test-execution',
|
|
948
|
-
action: 'test-run',
|
|
949
|
-
state: {
|
|
950
|
-
context: { runId },
|
|
951
|
-
metrics: { passed, failed, duration },
|
|
952
|
-
},
|
|
953
|
-
result: {
|
|
954
|
-
success: successRate > 0.8,
|
|
955
|
-
outcome: { success_rate: successRate, passed, failed },
|
|
956
|
-
duration,
|
|
957
|
-
},
|
|
958
|
-
reward: successRate,
|
|
959
|
-
});
|
|
960
|
-
}
|
|
961
|
-
async handleCoverageGap(event) {
|
|
962
|
-
// #1014: only a gap found in MEASURED coverage is acted on / learned from.
|
|
963
|
-
if (!isMeasuredGapPayload(event.payload))
|
|
964
|
-
return;
|
|
965
|
-
// Record as experience for learning
|
|
966
|
-
const { gapId, file, riskScore } = event.payload;
|
|
967
|
-
await this.learningService.recordExperience({
|
|
968
|
-
agentId: {
|
|
969
|
-
value: 'coverage-analysis',
|
|
970
|
-
domain: 'coverage-analysis',
|
|
971
|
-
type: 'analyzer',
|
|
972
|
-
},
|
|
973
|
-
domain: 'coverage-analysis',
|
|
974
|
-
action: 'gap-detection',
|
|
975
|
-
state: {
|
|
976
|
-
context: { gapId, file },
|
|
977
|
-
metrics: { riskScore },
|
|
978
|
-
},
|
|
979
|
-
result: {
|
|
980
|
-
success: true,
|
|
981
|
-
outcome: { risk_score: riskScore },
|
|
982
|
-
duration: 0,
|
|
983
|
-
},
|
|
984
|
-
reward: 1 - riskScore, // Lower risk = higher reward
|
|
985
|
-
});
|
|
986
|
-
}
|
|
987
|
-
async handleQualityGate(event) {
|
|
988
|
-
const { gateId, passed } = event.payload;
|
|
989
|
-
await this.learningService.recordExperience({
|
|
990
|
-
agentId: {
|
|
991
|
-
value: 'quality-assessment',
|
|
992
|
-
domain: 'quality-assessment',
|
|
993
|
-
type: 'validator',
|
|
994
|
-
},
|
|
995
|
-
domain: 'quality-assessment',
|
|
996
|
-
action: 'gate-evaluation',
|
|
997
|
-
state: {
|
|
998
|
-
context: { gateId },
|
|
999
|
-
metrics: { passed: passed ? 1 : 0 },
|
|
1000
|
-
},
|
|
1001
|
-
result: {
|
|
1002
|
-
success: passed,
|
|
1003
|
-
outcome: { gate_passed: passed ? 1 : 0 },
|
|
1004
|
-
duration: 0,
|
|
1005
|
-
},
|
|
1006
|
-
reward: passed ? 1 : 0,
|
|
1007
|
-
});
|
|
1008
|
-
}
|
|
1009
954
|
/**
|
|
1010
955
|
* Handle experience captured from ExperienceCaptureService
|
|
1011
956
|
* This is the bridge between Phase 4 experience capture and the coordinator
|
|
@@ -1229,9 +1174,8 @@ export class LearningOptimizationCoordinator extends BaseDomainCoordinator {
|
|
|
1229
1174
|
retryCount: 3,
|
|
1230
1175
|
concurrency: 4,
|
|
1231
1176
|
},
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
},
|
|
1177
|
+
// #1099: the default strategy has never run, so no outcome is expected.
|
|
1178
|
+
expectedOutcome: {},
|
|
1235
1179
|
};
|
|
1236
1180
|
}
|
|
1237
1181
|
async storeStrategy(domain, strategy) {
|
|
@@ -10,5 +10,5 @@ export { LearningCoordinatorService, type LearningCoordinatorConfig as LearningS
|
|
|
10
10
|
export { TransferSpecialistService, type TransferSpecialistConfig, type TransferResult, } from './services/transfer-specialist.js';
|
|
11
11
|
export { MetricsOptimizerService, type MetricsOptimizerConfig, type MetricsSnapshot, } from './services/metrics-optimizer.js';
|
|
12
12
|
export { ProductionIntelService, type ProductionIntelConfig, type ProductionMetric, type ProductionIncident, type ProductionHealth, } from './services/production-intel.js';
|
|
13
|
-
export type { ILearningOptimizationCoordinator, LearningCycleReport, OptimizationReport, CrossDomainSharingReport, LearningDashboard, ModelExport, ImportReport, ImportConflict, Improvement, DomainOptimizationResult, TrendPoint, Milestone, LearnedPattern, PatternType, PatternContext, PatternTemplate, TemplateVariable, PatternStats, IPatternLearningService, Experience, ExperienceResult, StateSnapshot, ResourceUsage, MinedInsights, ExperienceCluster, ExperienceAnomaly, IExperienceMiningService, Knowledge, KnowledgeType, KnowledgeContent, KnowledgeQuery, IKnowledgeSynthesisService, Strategy, OptimizedStrategy, OptimizationObjective, Constraint, ValidationResult, ABTestConfig, ABTestResult, StrategyEvaluation, IStrategyOptimizerService, IPatternRepository, IExperienceRepository, IKnowledgeRepository, IStrategyRepository, PatternLearnedEvent, KnowledgeSharedEvent, StrategyOptimizedEvent, ExperienceRecordedEvent, LearningMilestoneReachedEvent, } from './interfaces.js';
|
|
13
|
+
export type { ILearningOptimizationCoordinator, LearningCycleReport, OptimizationReport, CrossDomainSharingReport, LearningDashboard, ModelExport, ImportReport, ImportConflict, Improvement, DomainOptimizationResult, TrendPoint, Milestone, LearnedPattern, PatternType, PatternContext, PatternTemplate, TemplateVariable, PatternStats, IPatternLearningService, Experience, ExperienceResult, StateSnapshot, ResourceUsage, MinedInsights, ExperienceCluster, ExperienceAnomaly, IExperienceMiningService, Knowledge, KnowledgeType, KnowledgeContent, KnowledgeQuery, IKnowledgeSynthesisService, Strategy, OptimizedStrategy, OptimizationEvaluation, OptimizationObjective, Constraint, ValidationResult, ABTestConfig, ABTestResult, StrategyEvaluation, IStrategyOptimizerService, IPatternRepository, IExperienceRepository, IKnowledgeRepository, IStrategyRepository, PatternLearnedEvent, KnowledgeSharedEvent, StrategyOptimizedEvent, ExperienceRecordedEvent, LearningMilestoneReachedEvent, } from './interfaces.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|