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,7 +14,7 @@ import { LearningCoordinatorService } from '../../../domains/learning-optimizati
|
|
|
14
14
|
import { MetricsOptimizerService } from '../../../domains/learning-optimization/services/metrics-optimizer.js';
|
|
15
15
|
import { TransferSpecialistService } from '../../../domains/learning-optimization/services/transfer-specialist.js';
|
|
16
16
|
import { toErrorMessage } from '../../../shared/error-utils.js';
|
|
17
|
-
import {
|
|
17
|
+
import { partitionByRewardSource } from '../../../domains/learning-optimization/reward-source.js';
|
|
18
18
|
// ============================================================================
|
|
19
19
|
// Tool Implementation
|
|
20
20
|
// ============================================================================
|
|
@@ -59,12 +59,18 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
59
59
|
switch (action) {
|
|
60
60
|
case 'learn':
|
|
61
61
|
result.learnResult = await this.executeLearn(domain, experienceIds, context);
|
|
62
|
+
if (result.learnResult.evidenceStatus === 'insufficient-evidence') {
|
|
63
|
+
result.evidenceStatus = 'insufficient-evidence';
|
|
64
|
+
}
|
|
62
65
|
break;
|
|
63
66
|
case 'optimize':
|
|
64
67
|
if (!objective) {
|
|
65
68
|
return { success: false, error: 'Objective is required for optimize action' };
|
|
66
69
|
}
|
|
67
70
|
result.optimizeResult = await this.executeOptimize(domain, objective, context);
|
|
71
|
+
if (result.optimizeResult.evidenceStatus === 'insufficient-evidence') {
|
|
72
|
+
result.evidenceStatus = 'insufficient-evidence';
|
|
73
|
+
}
|
|
68
74
|
break;
|
|
69
75
|
case 'transfer':
|
|
70
76
|
if (!domain || !targetDomain) {
|
|
@@ -77,6 +83,9 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
77
83
|
break;
|
|
78
84
|
case 'dashboard':
|
|
79
85
|
result.dashboardResult = await this.executeDashboard(context);
|
|
86
|
+
if (result.dashboardResult.evidenceStatus === 'insufficient-evidence') {
|
|
87
|
+
result.evidenceStatus = 'insufficient-evidence';
|
|
88
|
+
}
|
|
80
89
|
break;
|
|
81
90
|
default:
|
|
82
91
|
return { success: false, error: `Unknown action: ${action}` };
|
|
@@ -112,9 +121,15 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
112
121
|
const mineResult = await learningCoordinator.mineExperiences(targetDomain, timeRange);
|
|
113
122
|
const newPatterns = [];
|
|
114
123
|
let experiencesProcessed = 0;
|
|
115
|
-
let
|
|
124
|
+
let evidence = {};
|
|
116
125
|
if (mineResult.success) {
|
|
117
126
|
experiencesProcessed = mineResult.value.experienceCount;
|
|
127
|
+
// #1109: patterns come from measured outcomes only; say how many were left out.
|
|
128
|
+
evidence = {
|
|
129
|
+
measuredExperiences: mineResult.value.measuredExperienceCount ?? experiencesProcessed,
|
|
130
|
+
assignedRewardsExcluded: mineResult.value.assignedRewardsExcluded ?? 0,
|
|
131
|
+
...(mineResult.value.evidenceStatus ? { evidenceStatus: mineResult.value.evidenceStatus } : {}),
|
|
132
|
+
};
|
|
118
133
|
// Convert mined patterns to result format
|
|
119
134
|
for (const pattern of mineResult.value.patterns) {
|
|
120
135
|
newPatterns.push({
|
|
@@ -127,10 +142,6 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
127
142
|
successRate: pattern.successRate,
|
|
128
143
|
});
|
|
129
144
|
}
|
|
130
|
-
// Calculate improvement based on success rate vs baseline
|
|
131
|
-
improvement = mineResult.value.successRate > 0.5
|
|
132
|
-
? (mineResult.value.successRate - 0.5) * 20 // Scale to percentage
|
|
133
|
-
: 0;
|
|
134
145
|
}
|
|
135
146
|
// If specific experience IDs provided, record them
|
|
136
147
|
if (experienceIds && experienceIds.length > 0) {
|
|
@@ -138,22 +149,16 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
138
149
|
}
|
|
139
150
|
// If no patterns were learned, return empty result (not fake data)
|
|
140
151
|
// This is a valid state - no patterns discovered yet
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return {
|
|
144
|
-
experiencesProcessed,
|
|
145
|
-
patternsLearned: 0,
|
|
146
|
-
newPatterns: [],
|
|
147
|
-
improvement: 0,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
// Mark as real data - we have actual learning results
|
|
152
|
+
// #1109: there is no recorded baseline, so improvement is never computed
|
|
153
|
+
// here. The former (successRate - 0.5) * 20 was an invented scale.
|
|
151
154
|
this.markAsRealData();
|
|
152
155
|
return {
|
|
153
156
|
experiencesProcessed,
|
|
157
|
+
...evidence,
|
|
154
158
|
patternsLearned: newPatterns.length,
|
|
155
159
|
newPatterns,
|
|
156
|
-
improvement,
|
|
160
|
+
improvement: null,
|
|
161
|
+
unmeasured: ['improvement'],
|
|
157
162
|
};
|
|
158
163
|
}
|
|
159
164
|
/**
|
|
@@ -205,30 +210,18 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
205
210
|
// Get recent experiences for optimization
|
|
206
211
|
const targetDomain = domain || 'learning-optimization';
|
|
207
212
|
const timeRange = TimeRange.lastNDays(30);
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
action: 'optimize',
|
|
221
|
-
state: { context: {}, metrics: {} },
|
|
222
|
-
result: {
|
|
223
|
-
success: secureRandom() > 0.3,
|
|
224
|
-
outcome: { [objective.metric]: secureRandomFloat(70, 100) },
|
|
225
|
-
duration: secureRandomFloat(1000, 6000),
|
|
226
|
-
},
|
|
227
|
-
reward: mineResult.value.avgReward,
|
|
228
|
-
timestamp: new Date(),
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
213
|
+
const recorded = await learningCoordinator.getExperiences(targetDomain, timeRange);
|
|
214
|
+
if (!recorded.success)
|
|
215
|
+
throw recorded.error;
|
|
216
|
+
// #1109: an assigned reward is not an observation; leave it out before the
|
|
217
|
+
// sample-count gate so it can neither pad the count nor fail the optimizer.
|
|
218
|
+
const { measured, assignedExcluded } = partitionByRewardSource(recorded.value);
|
|
219
|
+
// Missing objective values are absence of evidence, not zero or a random
|
|
220
|
+
// synthetic observation. Preserve eligible records (including failures).
|
|
221
|
+
const experiences = measured.filter(experience => {
|
|
222
|
+
const value = experience.result.outcome[objective.metric];
|
|
223
|
+
return typeof value === 'number' && Number.isFinite(value);
|
|
224
|
+
});
|
|
232
225
|
// Create current strategy
|
|
233
226
|
const currentStrategy = {
|
|
234
227
|
name: `${targetDomain}-current`,
|
|
@@ -237,7 +230,8 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
237
230
|
retryCount: 3,
|
|
238
231
|
timeout: 30000,
|
|
239
232
|
},
|
|
240
|
-
|
|
233
|
+
// #1099: the current strategy's outcome was never measured here.
|
|
234
|
+
expectedOutcome: {},
|
|
241
235
|
};
|
|
242
236
|
// Convert objective to domain type, properly cast constraints
|
|
243
237
|
const domainConstraints = (objective.constraints || []).map(c => ({
|
|
@@ -253,19 +247,32 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
253
247
|
// Run optimization if we have enough experiences
|
|
254
248
|
let bestStrategy = currentStrategy;
|
|
255
249
|
let improvement = 0;
|
|
256
|
-
let confidence = 0
|
|
250
|
+
let confidence = 0;
|
|
257
251
|
let validationResults = [];
|
|
252
|
+
let unmeasured = [];
|
|
253
|
+
let estimated;
|
|
254
|
+
let evaluation;
|
|
258
255
|
if (experiences.length >= 20) {
|
|
259
256
|
const optimizeResult = await metricsOptimizer.optimizeStrategy(currentStrategy, domainObjective, experiences);
|
|
260
|
-
if (optimizeResult.success)
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
257
|
+
if (!optimizeResult.success)
|
|
258
|
+
throw optimizeResult.error;
|
|
259
|
+
bestStrategy = {
|
|
260
|
+
name: optimizeResult.value.optimizedStrategy.name,
|
|
261
|
+
parameters: optimizeResult.value.optimizedStrategy.parameters,
|
|
262
|
+
expectedOutcome: optimizeResult.value.optimizedStrategy.expectedOutcome,
|
|
263
|
+
};
|
|
264
|
+
improvement = optimizeResult.value.improvement * 100; // Convert to percentage
|
|
265
|
+
confidence = optimizeResult.value.confidence;
|
|
266
|
+
validationResults = optimizeResult.value.validationResults;
|
|
267
|
+
const derived = optimizeResult.value.evaluation;
|
|
268
|
+
if (derived) {
|
|
269
|
+
evaluation = {
|
|
270
|
+
method: derived.method,
|
|
271
|
+
trainingSamples: derived.trainingSamples,
|
|
272
|
+
heldOutSamples: derived.heldOutSamples,
|
|
265
273
|
};
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
validationResults = optimizeResult.value.validationResults;
|
|
274
|
+
estimated = derived.estimated;
|
|
275
|
+
unmeasured = [...(derived.unmeasured ?? [])];
|
|
269
276
|
}
|
|
270
277
|
}
|
|
271
278
|
else {
|
|
@@ -274,16 +281,27 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
274
281
|
tags: [targetDomain, objective.metric],
|
|
275
282
|
};
|
|
276
283
|
const recommendResult = await metricsOptimizer.recommendStrategy(contextForRecommendation);
|
|
277
|
-
if (recommendResult.success)
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
284
|
+
if (!recommendResult.success)
|
|
285
|
+
throw recommendResult.error;
|
|
286
|
+
bestStrategy = {
|
|
287
|
+
name: recommendResult.value.name,
|
|
288
|
+
parameters: recommendResult.value.parameters,
|
|
289
|
+
expectedOutcome: recommendResult.value.expectedOutcome,
|
|
290
|
+
};
|
|
291
|
+
unmeasured = ['improvement', 'confidence'];
|
|
292
|
+
}
|
|
293
|
+
if (Object.keys(bestStrategy.expectedOutcome).length === 0) {
|
|
294
|
+
unmeasured.push('expectedOutcome');
|
|
284
295
|
}
|
|
285
296
|
return {
|
|
286
|
-
|
|
297
|
+
inputSource: 'recorded-experiences',
|
|
298
|
+
experiencesUsed: experiences.length,
|
|
299
|
+
...(assignedExcluded > 0 ? { assignedRewardsExcluded: assignedExcluded } : {}),
|
|
300
|
+
strategiesEvaluated: experiences.length >= 20 ? 1 : 0,
|
|
301
|
+
...(experiences.length < 20 ? { evidenceStatus: 'insufficient-evidence' } : {}),
|
|
302
|
+
...(unmeasured.length > 0 ? { unmeasured } : {}),
|
|
303
|
+
...(estimated ? { estimated } : {}),
|
|
304
|
+
...(evaluation ? { evaluation } : {}),
|
|
287
305
|
bestStrategy,
|
|
288
306
|
improvement,
|
|
289
307
|
confidence,
|
|
@@ -395,16 +413,17 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
395
413
|
'quality-assessment', 'defect-intelligence', 'learning-optimization'
|
|
396
414
|
];
|
|
397
415
|
let experiencesLast24h = 0;
|
|
416
|
+
let assignedRewardsExcluded = 0;
|
|
398
417
|
const domainPerformance = [];
|
|
399
418
|
for (const domain of domains) {
|
|
400
419
|
const mineResult = await learningCoordinator.mineExperiences(domain, recentTimeRange);
|
|
401
420
|
if (mineResult.success) {
|
|
402
421
|
experiencesLast24h += mineResult.value.experienceCount;
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
});
|
|
422
|
+
assignedRewardsExcluded += mineResult.value.assignedRewardsExcluded ?? 0;
|
|
423
|
+
// #1109: only a measured success rate can rank a domain.
|
|
424
|
+
const { successRate } = mineResult.value;
|
|
425
|
+
if (successRate !== null) {
|
|
426
|
+
domainPerformance.push({ domain, successRate });
|
|
408
427
|
}
|
|
409
428
|
}
|
|
410
429
|
}
|
|
@@ -414,8 +433,14 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
414
433
|
.slice(0, 3)
|
|
415
434
|
.map(d => d.domain);
|
|
416
435
|
// Calculate overall learning rate from pattern stats
|
|
436
|
+
// getPatternStats already leaves out patterns learned from assigned rewards.
|
|
417
437
|
const totalPatterns = statsResult.success ? statsResult.value.totalPatterns : 0;
|
|
418
|
-
const
|
|
438
|
+
const assignedPatternsExcluded = statsResult.success
|
|
439
|
+
? statsResult.value.assignedPatternsExcluded ?? 0
|
|
440
|
+
: 0;
|
|
441
|
+
const avgSuccessRate = totalPatterns > 0 && statsResult.success
|
|
442
|
+
? statsResult.value.avgSuccessRate
|
|
443
|
+
: null;
|
|
419
444
|
const overallLearningRate = avgSuccessRate;
|
|
420
445
|
// Generate learning trend from weekly pattern mining
|
|
421
446
|
const learningTrend = [];
|
|
@@ -437,28 +462,39 @@ export class LearningOptimizeTool extends MCPToolBase {
|
|
|
437
462
|
value: dayPatterns,
|
|
438
463
|
});
|
|
439
464
|
}
|
|
440
|
-
//
|
|
465
|
+
// Milestones from measured figures. When each was first reached is not
|
|
466
|
+
// recorded, so achievedAt is null rather than an invented date (#1109).
|
|
441
467
|
const recentMilestones = [];
|
|
442
468
|
if (totalPatterns >= 100) {
|
|
443
469
|
recentMilestones.push({
|
|
444
470
|
name: `Reached ${Math.floor(totalPatterns / 50) * 50} patterns`,
|
|
445
|
-
achievedAt:
|
|
471
|
+
achievedAt: null,
|
|
446
472
|
domain: 'learning-optimization',
|
|
447
473
|
});
|
|
448
474
|
}
|
|
449
|
-
if (avgSuccessRate >= 0.8) {
|
|
475
|
+
if (avgSuccessRate !== null && avgSuccessRate >= 0.8) {
|
|
450
476
|
recentMilestones.push({
|
|
451
477
|
name: `${Math.round(avgSuccessRate * 100)}% pattern success rate`,
|
|
452
|
-
achievedAt:
|
|
478
|
+
achievedAt: null,
|
|
453
479
|
domain: topPerformingDomains[0] || 'learning-optimization',
|
|
454
480
|
});
|
|
455
481
|
}
|
|
482
|
+
const unmeasured = [];
|
|
483
|
+
if (overallLearningRate === null)
|
|
484
|
+
unmeasured.push('overallLearningRate');
|
|
485
|
+
if (topPerformingDomains.length === 0)
|
|
486
|
+
unmeasured.push('topPerformingDomains');
|
|
456
487
|
return {
|
|
457
488
|
overallLearningRate,
|
|
458
489
|
totalPatterns,
|
|
459
490
|
totalKnowledge: knowledgeResult.success ? knowledgeResult.value.length : 0,
|
|
460
491
|
experiencesLast24h,
|
|
461
|
-
|
|
492
|
+
...(assignedRewardsExcluded > 0 ? { assignedRewardsExcluded } : {}),
|
|
493
|
+
...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
|
|
494
|
+
topPerformingDomains,
|
|
495
|
+
...(unmeasured.length > 0
|
|
496
|
+
? { evidenceStatus: 'insufficient-evidence', unmeasured }
|
|
497
|
+
: {}),
|
|
462
498
|
learningTrend,
|
|
463
499
|
recentMilestones,
|
|
464
500
|
sona,
|
|
@@ -50,7 +50,13 @@ export function createLWWRegister(nodeId, initialValue, initialTimestamp) {
|
|
|
50
50
|
return state.value;
|
|
51
51
|
},
|
|
52
52
|
set(value, timestamp) {
|
|
53
|
-
|
|
53
|
+
let ts = timestamp ?? Date.now();
|
|
54
|
+
// Without an explicit timestamp the write means "now": a second write by
|
|
55
|
+
// this node within one clock tick (or after a backwards clock step) must
|
|
56
|
+
// still supersede its own earlier write, not tie with it and be dropped.
|
|
57
|
+
if (timestamp === undefined && state.version > 0 && state.nodeId === nodeId && ts <= state.timestamp) {
|
|
58
|
+
ts = state.timestamp + 1;
|
|
59
|
+
}
|
|
54
60
|
// Only update if new timestamp wins
|
|
55
61
|
if (state.version === 0 ||
|
|
56
62
|
compareTimestamps(ts, nodeId, state.timestamp, state.nodeId) > 0) {
|
|
@@ -78,6 +84,10 @@ export function createLWWRegister(nodeId, initialValue, initialTimestamp) {
|
|
|
78
84
|
};
|
|
79
85
|
},
|
|
80
86
|
applyState(incoming) {
|
|
87
|
+
// An unwritten register is the merge identity: its placeholder timestamp
|
|
88
|
+
// (0) would otherwise beat a real write at a negative timestamp.
|
|
89
|
+
if (incoming.version === 0)
|
|
90
|
+
return;
|
|
81
91
|
// Only update if incoming timestamp wins
|
|
82
92
|
if (state.version === 0 ||
|
|
83
93
|
compareTimestamps(incoming.timestamp, incoming.nodeId, state.timestamp, state.nodeId) > 0) {
|
|
@@ -118,7 +118,9 @@ export class EMACalibrator {
|
|
|
118
118
|
* Serialize all records for persistence.
|
|
119
119
|
*/
|
|
120
120
|
serialize() {
|
|
121
|
-
|
|
121
|
+
// Null prototype: an agentId of `__proto__` must stay an own key (a plain
|
|
122
|
+
// object would turn the assignment into a prototype change and drop it).
|
|
123
|
+
const result = Object.create(null);
|
|
122
124
|
for (const [key, record] of this.records) {
|
|
123
125
|
result[key] = { ...record };
|
|
124
126
|
}
|
|
@@ -180,6 +180,10 @@ export declare abstract class BaseDomainPlugin implements DomainPlugin {
|
|
|
180
180
|
* Based on registered task handlers
|
|
181
181
|
*/
|
|
182
182
|
canHandleTask(taskType: string): boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Task types this domain executes, from its registered task handlers (#1075)
|
|
185
|
+
*/
|
|
186
|
+
getSupportedTaskTypes(): string[];
|
|
183
187
|
/**
|
|
184
188
|
* Execute a task assigned by Queen Coordinator
|
|
185
189
|
* Routes to the appropriate handler based on task type
|
|
@@ -201,6 +201,12 @@ export class BaseDomainPlugin {
|
|
|
201
201
|
canHandleTask(taskType) {
|
|
202
202
|
return this.getTaskHandlers().has(taskType);
|
|
203
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Task types this domain executes, from its registered task handlers (#1075)
|
|
206
|
+
*/
|
|
207
|
+
getSupportedTaskTypes() {
|
|
208
|
+
return Array.from(this.getTaskHandlers().keys());
|
|
209
|
+
}
|
|
204
210
|
/**
|
|
205
211
|
* Execute a task assigned by Queen Coordinator
|
|
206
212
|
* Routes to the appropriate handler based on task type
|
package/dist/shared/llm/cache.js
CHANGED
|
@@ -316,7 +316,10 @@ export class LLMResponseCache {
|
|
|
316
316
|
* Cache a completion response
|
|
317
317
|
*/
|
|
318
318
|
setCompletion(prompt, response, options, ttlMs) {
|
|
319
|
-
|
|
319
|
+
// CompletionResponse does not carry finishReason. In particular, Gemini
|
|
320
|
+
// returns an empty completion for a safety refusal (#912). Return that
|
|
321
|
+
// result to its caller, but never pin it as a reusable completion.
|
|
322
|
+
if (!this.config.cacheCompletions || response.completion.length === 0) {
|
|
320
323
|
return;
|
|
321
324
|
}
|
|
322
325
|
const key = LLMCache.generateKey('completion', prompt, options);
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Detects security and compliance patterns in source code
|
|
4
4
|
*/
|
|
5
5
|
import { FileReader } from '../io/index.js';
|
|
6
|
+
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
6
7
|
// ============================================================================
|
|
7
8
|
// Pattern Definitions
|
|
8
9
|
// ============================================================================
|
|
@@ -156,7 +157,8 @@ const SECURITY_CONTROLS_PATTERNS = {
|
|
|
156
157
|
export class CompliancePatternAnalyzer {
|
|
157
158
|
fileReader;
|
|
158
159
|
constructor() {
|
|
159
|
-
|
|
160
|
+
// #1096: a symlink inside the project must not expose an outside file.
|
|
161
|
+
this.fileReader = new FileReader({ projectRoot: findProjectRoot() });
|
|
160
162
|
}
|
|
161
163
|
/**
|
|
162
164
|
* Analyze encryption patterns in files
|
|
@@ -7,4 +7,30 @@ export declare function trackTestRunnerExit(proc: ChildProcess): () => void;
|
|
|
7
7
|
* Windows uses taskkill's tree operation while the root PID still exists.
|
|
8
8
|
*/
|
|
9
9
|
export declare function terminateTestRunner(proc: ChildProcess): Promise<void>;
|
|
10
|
+
/** The `spawnSync` result fields a test-runner caller reads. */
|
|
11
|
+
export interface TestRunnerProcessResult {
|
|
12
|
+
status: number | null;
|
|
13
|
+
signal: NodeJS.Signals | null;
|
|
14
|
+
stdout: string;
|
|
15
|
+
stderr: string;
|
|
16
|
+
error?: NodeJS.ErrnoException;
|
|
17
|
+
}
|
|
18
|
+
export interface TestRunnerProcessOptions {
|
|
19
|
+
cwd: string;
|
|
20
|
+
/** Kill the runner and report ETIMEDOUT after this many milliseconds. */
|
|
21
|
+
timeout: number;
|
|
22
|
+
env?: NodeJS.ProcessEnv;
|
|
23
|
+
/** Per-stream output limit; exceeding it kills the runner (ENOBUFS). */
|
|
24
|
+
maxBuffer?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* #1074: run a test runner without blocking the event loop. Resolves with the
|
|
28
|
+
* same fields and failure semantics `spawnSync` reports: exit status or
|
|
29
|
+
* terminating signal, captured UTF-8 stdout/stderr, an ETIMEDOUT error after
|
|
30
|
+
* `timeout`, an ENOBUFS error once a stream exceeds `maxBuffer`, and the
|
|
31
|
+
* spawn error itself when the command cannot start. The runner gets its own
|
|
32
|
+
* process group, so a timeout or overflow stops the whole `npx` tree before
|
|
33
|
+
* the promise settles and before any report file is removed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function runTestRunnerProcess(command: string, args: readonly string[], options: TestRunnerProcessOptions): Promise<TestRunnerProcessResult>;
|
|
10
36
|
//# sourceMappingURL=test-runner-process.d.ts.map
|
|
@@ -207,4 +207,95 @@ export function terminateTestRunner(proc) {
|
|
|
207
207
|
}
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
|
+
/** `spawnSync`'s default per-stream output limit. */
|
|
211
|
+
const DEFAULT_MAX_BUFFER = 1024 * 1024;
|
|
212
|
+
/** Longest wait for the runner's pipes to close after it has been stopped. */
|
|
213
|
+
const PIPE_RELEASE_GRACE_MS = 3000;
|
|
214
|
+
/**
|
|
215
|
+
* #1074: run a test runner without blocking the event loop. Resolves with the
|
|
216
|
+
* same fields and failure semantics `spawnSync` reports: exit status or
|
|
217
|
+
* terminating signal, captured UTF-8 stdout/stderr, an ETIMEDOUT error after
|
|
218
|
+
* `timeout`, an ENOBUFS error once a stream exceeds `maxBuffer`, and the
|
|
219
|
+
* spawn error itself when the command cannot start. The runner gets its own
|
|
220
|
+
* process group, so a timeout or overflow stops the whole `npx` tree before
|
|
221
|
+
* the promise settles and before any report file is removed.
|
|
222
|
+
*/
|
|
223
|
+
export function runTestRunnerProcess(command, args, options) {
|
|
224
|
+
const maxBuffer = options.maxBuffer ?? DEFAULT_MAX_BUFFER;
|
|
225
|
+
return new Promise(resolve => {
|
|
226
|
+
let stdout = '';
|
|
227
|
+
let stderr = '';
|
|
228
|
+
let error;
|
|
229
|
+
let stopping;
|
|
230
|
+
let releaseTimer;
|
|
231
|
+
let settled = false;
|
|
232
|
+
let proc;
|
|
233
|
+
try {
|
|
234
|
+
proc = spawn(command, [...args], {
|
|
235
|
+
cwd: options.cwd,
|
|
236
|
+
env: options.env ?? process.env,
|
|
237
|
+
detached: process.platform !== 'win32',
|
|
238
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (spawnError) {
|
|
242
|
+
resolve({ status: null, signal: null, stdout, stderr, error: spawnError });
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const untrackExit = trackTestRunnerExit(proc);
|
|
246
|
+
const settle = (status, signal) => {
|
|
247
|
+
if (settled)
|
|
248
|
+
return;
|
|
249
|
+
settled = true;
|
|
250
|
+
clearTimeout(timer);
|
|
251
|
+
clearTimeout(releaseTimer);
|
|
252
|
+
// Report the signal the runner was stopped with, as spawnSync does.
|
|
253
|
+
const stoppedWith = stopping && !signal ? 'SIGTERM' : signal;
|
|
254
|
+
const result = { status: stopping ? null : status, signal: stoppedWith, stdout, stderr, error };
|
|
255
|
+
const done = () => { untrackExit(); resolve(result); };
|
|
256
|
+
if (stopping)
|
|
257
|
+
stopping.then(done, done);
|
|
258
|
+
else
|
|
259
|
+
done();
|
|
260
|
+
};
|
|
261
|
+
const stop = (code, message) => {
|
|
262
|
+
if (stopping)
|
|
263
|
+
return;
|
|
264
|
+
error = Object.assign(new Error(message), { code, syscall: `spawnSync ${command}` });
|
|
265
|
+
stopping = terminateTestRunner(proc);
|
|
266
|
+
// spawnSync closes the runner's pipes when it kills it. Do the same once
|
|
267
|
+
// the runner is stopped, or after a grace period, so a descendant that
|
|
268
|
+
// left the process group (e.g. a detached server holding the inherited
|
|
269
|
+
// stdout) cannot keep 'close', and so the result, pending forever.
|
|
270
|
+
const release = () => {
|
|
271
|
+
proc.stdout?.destroy();
|
|
272
|
+
proc.stderr?.destroy();
|
|
273
|
+
};
|
|
274
|
+
stopping.then(release, release);
|
|
275
|
+
releaseTimer = setTimeout(release, PIPE_RELEASE_GRACE_MS);
|
|
276
|
+
};
|
|
277
|
+
const timer = setTimeout(() => stop('ETIMEDOUT', `spawnSync ${command} ETIMEDOUT`), options.timeout);
|
|
278
|
+
const collect = (stream) => (chunk) => {
|
|
279
|
+
if (stopping)
|
|
280
|
+
return;
|
|
281
|
+
const next = (stream === 'stdout' ? stdout : stderr) + chunk;
|
|
282
|
+
const kept = next.length > maxBuffer ? next.slice(0, maxBuffer) : next;
|
|
283
|
+
if (stream === 'stdout')
|
|
284
|
+
stdout = kept;
|
|
285
|
+
else
|
|
286
|
+
stderr = kept;
|
|
287
|
+
if (next.length > maxBuffer)
|
|
288
|
+
stop('ENOBUFS', `spawnSync ${command} ENOBUFS`);
|
|
289
|
+
};
|
|
290
|
+
proc.stdout?.setEncoding('utf8').on('data', collect('stdout'));
|
|
291
|
+
proc.stderr?.setEncoding('utf8').on('data', collect('stderr'));
|
|
292
|
+
proc.once('error', (spawnError) => {
|
|
293
|
+
error ??= spawnError;
|
|
294
|
+
// A runner that never started emits no 'close' with a status to wait for.
|
|
295
|
+
if (proc.pid === undefined)
|
|
296
|
+
settle(null, null);
|
|
297
|
+
});
|
|
298
|
+
proc.once('close', (status, signal) => settle(status, signal));
|
|
299
|
+
});
|
|
300
|
+
}
|
|
210
301
|
//# sourceMappingURL=test-runner-process.js.map
|
|
@@ -69,6 +69,15 @@ export interface QualityScore {
|
|
|
69
69
|
}
|
|
70
70
|
export type Severity = 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
71
71
|
export type Priority = 'p0' | 'p1' | 'p2' | 'p3';
|
|
72
|
+
export declare const ALL_PRIORITIES: readonly Priority[];
|
|
73
|
+
/**
|
|
74
|
+
* Type guard for a user-supplied task priority (CLI flags, MCP arguments).
|
|
75
|
+
* Validate at the boundary so an unknown priority is rejected instead of being
|
|
76
|
+
* silently accepted (#1108).
|
|
77
|
+
*/
|
|
78
|
+
export declare function isPriority(value: unknown): value is Priority;
|
|
79
|
+
/** Shared rejection message so `task_submit` and `aqe task submit` stay in parity (#1108). */
|
|
80
|
+
export declare function invalidPriorityMessage(value: unknown): string;
|
|
72
81
|
export interface DomainConfig {
|
|
73
82
|
enabled: boolean;
|
|
74
83
|
maxAgents: number;
|
|
@@ -32,4 +32,17 @@ export function ok(value) {
|
|
|
32
32
|
export function err(error) {
|
|
33
33
|
return { success: false, error };
|
|
34
34
|
}
|
|
35
|
+
export const ALL_PRIORITIES = ['p0', 'p1', 'p2', 'p3'];
|
|
36
|
+
/**
|
|
37
|
+
* Type guard for a user-supplied task priority (CLI flags, MCP arguments).
|
|
38
|
+
* Validate at the boundary so an unknown priority is rejected instead of being
|
|
39
|
+
* silently accepted (#1108).
|
|
40
|
+
*/
|
|
41
|
+
export function isPriority(value) {
|
|
42
|
+
return typeof value === 'string' && ALL_PRIORITIES.includes(value);
|
|
43
|
+
}
|
|
44
|
+
/** Shared rejection message so `task_submit` and `aqe task submit` stay in parity (#1108). */
|
|
45
|
+
export function invalidPriorityMessage(value) {
|
|
46
|
+
return `Invalid priority: ${String(value)}. Valid priorities: ${ALL_PRIORITIES.join(', ')}`;
|
|
47
|
+
}
|
|
35
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - namespaced kv key scans (#1049, #1071)
|
|
3
|
+
*
|
|
4
|
+
* Two problems with reading every key of a family through
|
|
5
|
+
* `MemoryBackend.search()`:
|
|
6
|
+
*
|
|
7
|
+
* 1. Kernel backends disagree on what a namespaced `search` returns: the
|
|
8
|
+
* hybrid (sqlite) backend returns bare keys, the in-memory backend returns
|
|
9
|
+
* `<namespace>:<key>`. A caller that passes a result straight back to
|
|
10
|
+
* `get(key, { namespace })` double-prefixes the key and reads nothing.
|
|
11
|
+
* 2. `search()` takes a row limit and has no offset or ordering, so a single
|
|
12
|
+
* call with a fixed cap silently drops every key past the cap.
|
|
13
|
+
*
|
|
14
|
+
* `searchAllKeys` addresses both: it returns every matching key, bare and in
|
|
15
|
+
* a stable order.
|
|
16
|
+
*/
|
|
17
|
+
import type { MemoryBackend, RetrieveOptions } from '../../kernel/interfaces.js';
|
|
18
|
+
/**
|
|
19
|
+
* The bare key for a key returned by `search(pattern, limit, { namespace })`.
|
|
20
|
+
* A result that already matches `pattern` is bare (keys may legitimately start
|
|
21
|
+
* with the namespace name, e.g. `defect-intelligence:predictor:…`); otherwise a
|
|
22
|
+
* leading `<namespace>:` is the backend's prefix and is removed.
|
|
23
|
+
*/
|
|
24
|
+
export declare function bareSearchKey(found: string, namespace: string, pattern: string): string;
|
|
25
|
+
/** First request size for `searchAllKeys`. Each further request doubles it. */
|
|
26
|
+
export declare const DEFAULT_KEY_SCAN_PAGE_SIZE = 10000;
|
|
27
|
+
export interface SearchAllKeysOptions {
|
|
28
|
+
/** Namespace for the scan. Omit for the backend default. */
|
|
29
|
+
retrieve?: RetrieveOptions;
|
|
30
|
+
/** First request size (tests). Defaults to `DEFAULT_KEY_SCAN_PAGE_SIZE`. */
|
|
31
|
+
pageSize?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Every key matching `pattern`, bare (usable with `get(key, retrieve)`),
|
|
35
|
+
* de-duplicated and sorted.
|
|
36
|
+
*
|
|
37
|
+
* `search()` has no offset, so this widens the request until the backend
|
|
38
|
+
* returns fewer keys than were asked for. That is the only point at which the
|
|
39
|
+
* result is known to be complete; no cap ever truncates it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function searchAllKeys(memory: MemoryBackend, pattern: string, options?: SearchAllKeysOptions): Promise<string[]>;
|
|
42
|
+
//# sourceMappingURL=namespaced-search.d.ts.map
|