agentic-qe 3.15.5 → 3.15.7
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/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
- package/.claude/skills/qe-court/evals/qe-court.yaml +3 -2
- package/.claude/skills/qe-quality-assessment/schemas/output.json +12 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +262 -0
- package/README.md +2 -0
- package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
- package/assets/skills/qe-court/evals/qe-court.yaml +3 -2
- package/assets/skills/qe-quality-assessment/schemas/output.json +12 -2
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +8 -6
- package/dist/cli/chunks/adapter-PEOUNYXJ.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-OS5G7KMQ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-PI4I7PME.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-J7TXHX4U.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +2 -0
- package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-FXESDCFR.js} +4 -4
- package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-OWUGXKNT.js} +2 -2
- package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-EPAWLYIZ.js} +3 -3
- package/dist/cli/chunks/base-QZWK3D5P.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-IYVR5EQY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-3W2E6TC6.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-HU7VACJ4.js} +2 -2
- package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-72XOR6E2.js} +2 -2
- package/dist/cli/chunks/browser-workflow-ITPX72RX.js +2 -0
- package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-2423JAA5.js} +1 -1
- package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-24CENUT4.js} +3 -3
- package/dist/cli/chunks/chunk-2AYBYXOA.js +4 -0
- package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-2E3XWKEU.js} +2 -2
- package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-2RJYA6WK.js} +2 -2
- package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2YVJ5OUL.js} +5 -5
- package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34JLY3U6.js} +2 -2
- package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-3JD2USUH.js} +2 -2
- package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-3RM46XFP.js} +1 -1
- package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-44DPYNPE.js} +1 -1
- package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-4DIZ5BT6.js} +2 -2
- package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-4G2VNW4C.js} +2 -2
- package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-56ZKQYZY.js} +3 -3
- package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-5KCBX225.js} +2 -2
- package/dist/cli/chunks/chunk-5KS7HA37.js +2 -0
- package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-5PBRBS7D.js} +2 -2
- package/dist/cli/chunks/chunk-5Q22XPTH.js +2 -0
- package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-634D2ENF.js} +2 -2
- package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-6AYRAOCA.js} +2 -2
- package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-6BO3WCK7.js} +2 -2
- package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-6FEQ73BF.js} +2 -2
- package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-6JT73S5B.js} +1 -1
- package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6OS7HREG.js} +1 -1
- package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6PKCQXEW.js} +2 -2
- package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-7EX4DEQR.js} +2 -2
- package/dist/cli/chunks/chunk-7UCVYYWL.js +3 -0
- package/dist/cli/chunks/chunk-AAA4SHEG.js +2 -0
- package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-AXO7OOOA.js} +2 -2
- package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-B7M323VL.js} +2 -2
- package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-BB7OLQKO.js} +1 -1
- package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-BTIBXGVQ.js} +4 -4
- package/dist/cli/chunks/chunk-BTYKGVJ5.js +2 -0
- package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-C2CUPJGR.js} +1 -1
- package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-C2MDBBFF.js} +3 -3
- package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-CG5DZCOZ.js} +1 -1
- package/dist/cli/chunks/chunk-CIFWOMNX.js +2 -0
- package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-CWPRU7ZI.js} +2 -2
- package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-CXTJ47QS.js} +2 -2
- package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-DCJW2DPL.js} +4 -4
- package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-DGK6GQMO.js} +2 -2
- package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-DVPGBDBP.js} +3 -3
- package/dist/cli/chunks/chunk-EB2PP6X2.js +2 -0
- package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-ECSLJJOQ.js} +1 -1
- package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-ED32XJ5R.js} +2 -2
- package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-EDU72RTW.js} +1 -1
- package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-EL75G2A3.js} +1 -1
- package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-EV2BYY6T.js} +1 -1
- package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-F62EKVVC.js} +2 -2
- package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-FTTFJ7SJ.js} +1 -1
- package/dist/cli/chunks/chunk-FVBFASOD.js +2 -0
- package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-G762PEFO.js} +26 -26
- package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-G7YTZTGU.js} +1 -1
- package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-GY2SAIXP.js} +2 -2
- package/dist/cli/chunks/chunk-H4WHDFB5.js +4 -0
- package/dist/cli/chunks/chunk-HLZATDD2.js +2 -0
- package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-HPG7354V.js} +2 -2
- package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-HSDOOFV7.js} +1 -1
- package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-HTWIGQL4.js} +2 -2
- package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-HXBAQKMH.js} +2 -2
- package/dist/cli/chunks/chunk-HZFT3P5B.js +2 -0
- package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-I7H4IP7T.js} +2 -2
- package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-IARSGAG7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-IC2WSSD5.js} +8 -8
- package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-ICPALF4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-IWQQIXHO.js} +2 -2
- package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-IYQ7XNE5.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-J26GADQE.js} +418 -412
- package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-J43DV3ME.js} +1 -1
- package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-JFPXCQNP.js} +1 -1
- package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-JK6B3ULP.js} +2 -2
- package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-JPHDMHFG.js} +2 -2
- package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-JVYPXW6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-JY4AIEZ7.js} +1 -1
- package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-JY4WLN3K.js} +2 -2
- package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-JYXOFN3E.js} +2 -2
- package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-K7W55B7Q.js} +3 -3
- package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-KPOPBUUJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-LDXQRNTT.js} +1 -1
- package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-LDZWIV2O.js} +1 -1
- package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-LGBN7TKC.js} +2 -2
- package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-LMEU64TR.js} +2 -2
- package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-LP4AS2E4.js} +1 -1
- package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-LQOVA4YX.js} +2 -2
- package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-LVEX4GID.js} +2 -2
- package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-M63QB466.js} +2 -2
- package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-MDC4G323.js} +1 -1
- package/dist/cli/chunks/chunk-MHZPC4HJ.js +2 -0
- package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-MJJC6HUK.js} +1 -1
- package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-MKFQNCXI.js} +2 -2
- package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-MMXG3LL6.js} +2 -2
- package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-MNCF643K.js} +2 -2
- package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-MNZFEIE5.js} +1 -1
- package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-MQ6OF6DU.js} +1 -1
- package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-MRHM4COP.js} +2 -2
- package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-N4PMPSJJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-NZQPP533.js} +3 -3
- package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-OA4GR3EZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-OJEZNLB6.js} +2 -2
- package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-ONVALAZN.js} +2 -2
- package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-PEKDSJBC.js} +2 -2
- package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-PG64YV6C.js} +66 -65
- package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-PQV7E7XH.js} +2 -2
- package/dist/cli/chunks/chunk-PTK66HEY.js +2 -0
- package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-PUECC4WI.js} +2 -2
- package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-PXZKPUW6.js} +2 -2
- package/dist/cli/chunks/chunk-PYHYOKYT.js +2 -0
- package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-PZG3542B.js} +2 -2
- package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-Q2T5FXEA.js} +2 -2
- package/dist/cli/chunks/chunk-QJE6ZW2X.js +6 -0
- package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-QNQSM2OG.js} +2 -2
- package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QQT6QENQ.js} +9 -9
- package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-QVG4ZDXX.js} +3 -3
- package/dist/cli/chunks/chunk-QWLTHFZW.js +16 -0
- package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-RCYLCA7E.js} +10 -6
- package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-REEIFA6A.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-RNYX4CPI.js} +2 -2
- package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-RORZ5O5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-RRPYWBFX.js} +2 -2
- package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-RXAFLK34.js} +2 -2
- package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-SQHLC6I5.js} +1 -1
- package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-SSP2B2WR.js} +2 -2
- package/dist/cli/chunks/chunk-SX2YSHE7.js +115 -0
- package/dist/cli/chunks/chunk-T3ZDVU6F.js +5 -0
- package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-T6W5APYP.js} +1 -1
- package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-TU4LIIOP.js} +2 -2
- package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-UBYCR3O4.js} +2 -2
- package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-UCLN6AME.js} +1 -1
- package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-UIYKR2SA.js} +2 -2
- package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-UUHIEM2M.js} +18 -18
- package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-UY3REQOK.js} +2 -2
- package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-V2SAEMZY.js} +1 -1
- package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-V5NGBQAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-VCA6YYII.js} +1 -1
- package/dist/cli/chunks/chunk-VJRZFWR5.js +2 -0
- package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-VKPKYMCT.js} +2 -2
- package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-VNW5Q2CX.js} +2 -2
- package/dist/cli/chunks/chunk-VUFRTGML.js +3 -0
- package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-W4X2VTIY.js} +2 -2
- package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-WTLIEBDH.js} +1 -1
- package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-WUV5RZUI.js} +2 -2
- package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-WXI2STKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-XEWXYGJI.js} +2 -2
- package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-XNSQZ3O7.js} +2 -2
- package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-XTJMY3KS.js} +1 -1
- package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-XXAVQACL.js} +1 -1
- package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-Y4SAWE45.js} +1 -1
- package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-Y6A46M3B.js} +2 -2
- package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-YDZJWDR6.js} +3 -3
- package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-YFOBQSOW.js} +2 -2
- package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-YK3NOC2R.js} +2 -2
- package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-YUC7RJGR.js} +1 -1
- package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-Z3VJLWRR.js} +2 -2
- package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-ZLVQSEZK.js} +2 -2
- package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-ZRLNACPY.js} +2 -2
- package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-ZTMZFF25.js} +2 -2
- package/dist/cli/chunks/chunk-ZUMDDMDE.js +3 -0
- package/dist/cli/chunks/ci-5HEXJZ2C.js +81 -0
- package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-WU4NPDAM.js} +2 -2
- package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-BJQVXX5E.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-3BMGTQCB.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-GVDGJWMU.js} +2 -2
- package/dist/cli/chunks/client-S7GNYTZ5.js +2 -0
- package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-V4MRGWVA.js} +2 -2
- package/dist/cli/chunks/{code-QSZTDINQ.js → code-A3TGQPEO.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-YJQSYWD3.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-7N7UQPAH.js} +2 -2
- package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-PPGVYLZS.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-XZTFLYV5.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-Z5I57RAH.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-F5YZ6BHB.js} +2 -2
- package/dist/cli/chunks/core-handlers-CUEPOQIO.js +2 -0
- package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-GO33ZQAP.js} +2 -2
- package/dist/cli/chunks/coverage-GSHKLY74.js +49 -0
- package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +2 -0
- package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-JJ7IVJZB.js} +2 -2
- package/dist/cli/chunks/daemon-3DQCKRYO.js +10 -0
- package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-IRL7QRNE.js} +5 -5
- package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-ORXSUHPA.js} +2 -2
- package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-RHU62KRI.js} +2 -2
- package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-3VKV4Z6C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-SFIML4FK.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-CJ4FA3OC.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-BCRKPCAA.js} +2 -2
- package/dist/cli/chunks/dream-5AUNJW24.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-VL3HFLPV.js +3 -0
- package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-GGKRI4P5.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-F72TIRQY.js +40 -0
- package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-7KOOF3MA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-FNHBTHBH.js} +2 -2
- package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-IOZEWWFU.js} +2 -2
- package/dist/cli/chunks/file-discovery-AYWF357I.js +2 -0
- package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-QX5KXTRC.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-OH2DOQP7.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-W67NXTNE.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +2 -0
- package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-6MLLOGOE.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-4UDISJ3G.js} +2 -2
- package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-NOQJWQ4P.js} +43 -43
- package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-2OD3APVP.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-5AZGMBUM.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +2 -0
- package/dist/cli/chunks/init-guard-SMGJ45PW.js +2 -0
- package/dist/cli/chunks/init-handler-5T4MP2NM.js +88 -0
- package/dist/cli/chunks/init-wizard-MK2325JJ.js +2 -0
- package/dist/cli/chunks/kernel-2NJQQ2KT.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-RLZYLVQJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-LFZOC7VD.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SDISHO62.js +2 -0
- package/dist/cli/chunks/learning-XRPGLUWR.js +122 -0
- package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-OMK5HYPH.js} +4 -4
- package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +2 -0
- package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XADC7KCU.js} +2 -2
- package/dist/cli/chunks/load-test-RPKHLBCC.js +2 -0
- package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-PIBKSSVU.js} +2 -2
- package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-AP7EZERS.js} +5 -5
- package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +2 -0
- package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-7JJ2FZ33.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-ZZZ6EBYJ.js} +2 -2
- package/dist/cli/chunks/orchestrator-2H2YKSGJ.js +452 -0
- package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-7MJJWC2Z.js} +2 -2
- package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-LIE5BWQY.js} +2 -2
- package/dist/cli/chunks/{platform-2MCRKC25.js → platform-SMYUNLGX.js} +2 -2
- package/dist/cli/chunks/plugin-LJDIXQNT.js +27 -0
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-RIDNE5D2.js} +2 -2
- package/dist/cli/chunks/project-root-NBIQF63D.js +2 -0
- package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +2 -0
- package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-YVM66DLI.js} +2 -2
- package/dist/cli/chunks/{prove-QWONEJWX.js → prove-ZBDT52GD.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +2 -0
- package/dist/cli/chunks/{quality-WFH54FY7.js → quality-DUKXGDDO.js} +2 -2
- package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-SM3RXF4V.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +2 -0
- package/dist/cli/chunks/real-embeddings-4QLQZDB5.js +2 -0
- package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-M3EO32YQ.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-S6Q5OLV5.js} +2 -2
- package/dist/cli/chunks/router-H5YSIRH2.js +2 -0
- package/dist/cli/chunks/routing-feedback-5R36TJDH.js +2 -0
- package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-55FMUACP.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-QATKAAPK.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-RFXFU6JD.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-PKDVXQAW.js} +2 -2
- package/dist/cli/chunks/safe-db-MSTD2GDH.js +2 -0
- package/dist/cli/chunks/schedule-KST6KIFD.js +2 -0
- package/dist/cli/chunks/scheduler-FTQS6YK3.js +2 -0
- package/dist/cli/chunks/security-CMRB6WA3.js +18 -0
- package/dist/cli/chunks/shared-rvf-adapter-YHLLNFHF.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-4BGDVPQ7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +2 -0
- package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-LUHKQAGM.js} +2 -2
- package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-S6S5PNR7.js} +2 -2
- package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-PQ7NZAJ4.js} +2 -2
- package/dist/cli/chunks/{sync-PDPORHVN.js → sync-Q6KRQXU6.js} +2 -2
- package/dist/cli/chunks/sync-S744AEJC.js +2 -0
- package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-GAMGEHUW.js} +2 -2
- package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-6CRDEELN.js} +3 -3
- package/dist/cli/chunks/{test-DMBJFQNL.js → test-FNH67DBK.js} +12 -12
- package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-NZA5SHK6.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-CXKG55JD.js +2 -0
- package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-M7WWEDJX.js} +2 -2
- package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-2IFMCK6A.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-NMNA6RJC.js} +2 -2
- package/dist/cli/chunks/{types-K4FLXR2K.js → types-N7FWTOLD.js} +2 -2
- package/dist/cli/chunks/unified-memory-2Z2F446J.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +2 -0
- package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +2 -0
- package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-KDB5RGL7.js} +2 -2
- package/dist/cli/chunks/{validate-AAP773B3.js → validate-KMUV5FUA.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-ANZWRCJU.js} +2 -2
- package/dist/cli/chunks/visual-security-GXYZV7KR.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-SXXC4NMS.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-2LWSKMBU.js} +2 -2
- package/dist/cli/chunks/witness-chain-52PEIEGK.js +2 -0
- package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-JJMSJFZP.js} +2 -2
- package/dist/cli/chunks/witness-chain-repair-OX7VFW6T.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-QLSMXHAZ.js} +2 -2
- package/dist/cli/chunks/witness-key-manager-3DS4L7LE.js +2 -0
- package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-ARWAMHD3.js} +28 -28
- package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.js +2 -0
- package/dist/cli/chunks/wrappers-J6KGTUSJ.js +2 -0
- package/dist/cli/commands/ci.js +47 -25
- package/dist/cli/commands/coverage.d.ts +1 -28
- package/dist/cli/commands/coverage.js +63 -134
- package/dist/cli/commands/daemon.js +7 -1
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +15 -0
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +54 -2
- package/dist/cli/commands/learning.js +50 -9
- package/dist/cli/commands/security.d.ts +16 -0
- package/dist/cli/commands/security.js +76 -9
- package/dist/cli/commands/test.js +6 -7
- package/dist/cli/commands/workflow.js +9 -5
- package/dist/cli/handlers/init-guard.d.ts +33 -0
- package/dist/cli/handlers/init-guard.js +66 -0
- package/dist/cli/handlers/init-handler.d.ts +3 -0
- package/dist/cli/handlers/init-handler.js +64 -54
- package/dist/cli/handlers/interfaces.js +5 -1
- package/dist/cli/index.js +11 -0
- package/dist/cli/scheduler/persistent-scheduler.d.ts +6 -2
- package/dist/cli/scheduler/persistent-scheduler.js +107 -41
- package/dist/cli/utils/ci-output.d.ts +13 -1
- package/dist/cli/utils/ci-output.js +21 -2
- package/dist/cli/utils/coverage-data.d.ts +3 -0
- package/dist/cli/utils/coverage-data.js +14 -39
- package/dist/cli/utils/coverage-verdict.d.ts +130 -0
- package/dist/cli/utils/coverage-verdict.js +193 -0
- package/dist/cli/utils/file-discovery.js +5 -0
- package/dist/coordination/deterministic-actions.js +24 -13
- package/dist/coordination/handlers/code-intelligence-handlers.d.ts +8 -0
- package/dist/coordination/handlers/code-intelligence-handlers.js +39 -0
- package/dist/coordination/handlers/coverage-handlers.js +34 -6
- package/dist/coordination/handlers/coverage-runner.d.ts +22 -0
- package/dist/coordination/handlers/coverage-runner.js +105 -10
- package/dist/coordination/handlers/coverage-target.d.ts +1 -0
- package/dist/coordination/handlers/coverage-target.js +4 -1
- package/dist/coordination/handlers/handler-types.d.ts +9 -0
- package/dist/coordination/handlers/handler-utils.d.ts +14 -1
- package/dist/coordination/handlers/handler-utils.js +46 -22
- package/dist/coordination/handlers/quality-handlers.js +108 -18
- package/dist/coordination/handlers/security-handlers.js +22 -6
- package/dist/coordination/handlers/test-execution-handlers.js +4 -1
- package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
- package/dist/coordination/protocols/defect-investigation.js +12 -3
- package/dist/coordination/protocols/quality-gate.js +10 -6
- package/dist/coordination/protocols/security-audit.js +11 -0
- package/dist/coordination/result-saver.d.ts +31 -0
- package/dist/coordination/result-saver.js +146 -46
- package/dist/coordination/task-executor.d.ts +7 -0
- package/dist/coordination/task-executor.js +32 -3
- package/dist/domains/code-intelligence/plugin.js +4 -0
- package/dist/domains/code-intelligence/services/metric-collector/index.js +9 -2
- package/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +21 -0
- package/dist/domains/code-intelligence/services/metric-collector/interfaces.js +25 -0
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +12 -0
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +69 -3
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +4 -1
- package/dist/domains/coverage-analysis/collected-metrics.d.ts +35 -0
- package/dist/domains/coverage-analysis/collected-metrics.js +42 -0
- package/dist/domains/coverage-analysis/coordinator.js +18 -6
- package/dist/domains/coverage-analysis/interfaces.d.ts +44 -0
- package/dist/domains/coverage-analysis/interfaces.js +6 -1
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +61 -34
- package/dist/domains/coverage-analysis/services/gap-detector.js +7 -2
- package/dist/domains/defect-intelligence/plugin.js +4 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +13 -8
- package/dist/domains/learning-optimization/coordinator.js +4 -0
- package/dist/domains/learning-optimization/plugin.js +4 -0
- package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +14 -0
- package/dist/domains/quality-assessment/coordinator-rl-integration.js +54 -16
- package/dist/domains/quality-assessment/coordinator.js +10 -6
- package/dist/domains/quality-assessment/coverage-report-event.d.ts +32 -8
- package/dist/domains/quality-assessment/coverage-report-event.js +28 -6
- package/dist/domains/quality-assessment/index.d.ts +1 -1
- package/dist/domains/quality-assessment/interfaces.d.ts +50 -0
- package/dist/domains/quality-assessment/quality-evidence.d.ts +49 -3
- package/dist/domains/quality-assessment/quality-evidence.js +62 -0
- package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +23 -2
- package/dist/domains/quality-assessment/services/quality-analyzer.js +197 -112
- package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
- package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
- package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
- package/dist/domains/security-compliance/interfaces.d.ts +30 -0
- package/dist/domains/security-compliance/plugin.d.ts +7 -1
- package/dist/domains/security-compliance/plugin.js +19 -0
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
- package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
- package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
- package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
- package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
- package/dist/domains/security-compliance/services/security-auditor.js +133 -92
- package/dist/domains/test-execution/interfaces.d.ts +10 -6
- package/dist/domains/test-execution/plugin.js +4 -0
- package/dist/domains/test-execution/services/retry-handler.js +17 -6
- package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
- package/dist/domains/test-execution/services/test-executor.js +239 -109
- package/dist/domains/test-generation/coordinator.js +4 -0
- package/dist/domains/test-generation/plugin.js +4 -0
- package/dist/feedback/coverage-learner.js +4 -1
- package/dist/feedback/coverage-session-provenance.d.ts +29 -0
- package/dist/feedback/coverage-session-provenance.js +39 -0
- package/dist/init/orchestrator.js +2 -0
- package/dist/init/phases/09-assets.d.ts +4 -0
- package/dist/init/phases/09-assets.js +35 -0
- package/dist/init/retired-assets.d.ts +86 -0
- package/dist/init/retired-assets.js +230 -0
- package/dist/init/skills-installer.d.ts +2 -0
- package/dist/init/skills-installer.js +4 -0
- package/dist/init/types.d.ts +3 -0
- package/dist/integrations/ruvector/rvf-native-adapter.d.ts +2 -0
- package/dist/integrations/ruvector/rvf-native-adapter.js +5 -0
- package/dist/integrations/ruvector/server-client.js +4 -12
- package/dist/kernel/project-root.d.ts +17 -0
- package/dist/kernel/project-root.js +54 -2
- package/dist/kernel/shared-dirs.d.ts +66 -0
- package/dist/kernel/shared-dirs.js +180 -0
- package/dist/learning/daily-log.js +2 -1
- package/dist/learning/experience-capture-middleware.d.ts +22 -0
- package/dist/learning/experience-capture-middleware.js +35 -0
- package/dist/learning/learnable-result.d.ts +16 -0
- package/dist/learning/learnable-result.js +24 -0
- package/dist/learning/pattern-mutation-error.d.ts +8 -0
- package/dist/learning/pattern-mutation-error.js +12 -0
- package/dist/learning/qe-reasoning-bank.d.ts +10 -0
- package/dist/learning/qe-reasoning-bank.js +50 -1
- package/dist/learning/rvf-reconcile.d.ts +39 -0
- package/dist/learning/rvf-reconcile.js +40 -0
- package/dist/learning/sqlite-persistence.d.ts +14 -0
- package/dist/learning/sqlite-persistence.js +36 -0
- package/dist/mcp/bundle.js +908 -896
- package/dist/mcp/handlers/domain-handler-configs.d.ts +35 -1
- package/dist/mcp/handlers/domain-handler-configs.js +42 -4
- package/dist/mcp/handlers/handler-factory.js +40 -14
- package/dist/mcp/protocol-server.js +29 -3
- package/dist/mcp/tool-cache-scope.d.ts +31 -0
- package/dist/mcp/tool-cache-scope.js +71 -0
- package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
- package/dist/mcp/types.d.ts +10 -0
- package/dist/optimization/session-cache.d.ts +19 -1
- package/dist/optimization/session-cache.js +36 -2
- package/dist/plugins/cache.js +2 -1
- package/dist/plugins/sources/github.js +2 -1
- package/dist/plugins/sources/npm.js +2 -1
- package/dist/shared/aqe-managed-dirs.d.ts +24 -0
- package/dist/shared/aqe-managed-dirs.js +56 -0
- package/dist/shared/events/domain-events.d.ts +18 -3
- package/dist/shared/events/domain-events.js +4 -0
- package/dist/shared/http/http-client.d.ts +6 -0
- package/dist/shared/http/http-client.js +13 -15
- package/dist/shared/io/file-reader.d.ts +26 -0
- package/dist/shared/io/file-reader.js +111 -17
- package/dist/shared/llm/providers/response-deadline.d.ts +7 -2
- package/dist/shared/llm/providers/response-deadline.js +17 -5
- package/dist/shared/metrics/code-metrics.d.ts +24 -0
- package/dist/shared/metrics/code-metrics.js +93 -6
- package/dist/shared/metrics/index.d.ts +1 -1
- package/dist/shared/security/index.d.ts +2 -2
- package/dist/shared/security/index.js +1 -1
- package/dist/shared/security/osv-client.d.ts +79 -132
- package/dist/shared/security/osv-client.js +344 -167
- package/dist/shared/security/osv-lookup.d.ts +124 -0
- package/dist/shared/security/osv-lookup.js +246 -0
- package/dist/shared/security/osv-types.d.ts +119 -0
- package/dist/shared/security/osv-types.js +6 -0
- package/dist/workers/interfaces.d.ts +15 -2
- package/dist/workers/namespaced-keys.d.ts +16 -0
- package/dist/workers/namespaced-keys.js +24 -0
- package/dist/workers/quality-daemon/coverage-delta.d.ts +4 -3
- package/dist/workers/quality-daemon/coverage-delta.js +13 -6
- package/dist/workers/quality-daemon/index.js +6 -5
- package/dist/workers/quality-daemon/notification-service.js +3 -3
- package/dist/workers/quality-daemon/persistent-memory.d.ts +3 -3
- package/dist/workers/quality-daemon/persistent-memory.js +4 -4
- package/dist/workers/worker-manager.js +10 -3
- package/dist/workers/workers/coverage-tracker.js +69 -33
- package/dist/workers/workers/defect-predictor.d.ts +25 -8
- package/dist/workers/workers/defect-predictor.js +223 -216
- package/dist/workers/workers/performance-baseline.d.ts +24 -9
- package/dist/workers/workers/performance-baseline.js +187 -230
- package/dist/workers/workers/quality-gate.d.ts +11 -9
- package/dist/workers/workers/quality-gate.js +125 -267
- package/dist/workers/workers/regression-monitor.d.ts +18 -1
- package/dist/workers/workers/regression-monitor.js +276 -117
- package/dist/workers/workers/security-scan-records.d.ts +111 -0
- package/dist/workers/workers/security-scan-records.js +128 -0
- package/dist/workers/workers/security-scan.d.ts +25 -7
- package/dist/workers/workers/security-scan.js +187 -164
- package/package.json +2 -2
- package/dist/cli/chunks/adapter-EGIPTX5H.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +0 -2
- package/dist/cli/chunks/base-6ORFD62I.js +0 -2
- package/dist/cli/chunks/browser-workflow-PIXGERWP.js +0 -2
- package/dist/cli/chunks/chunk-2WFTZSRT.js +0 -2
- package/dist/cli/chunks/chunk-7YB2KELI.js +0 -5
- package/dist/cli/chunks/chunk-BBL6YXD3.js +0 -2
- package/dist/cli/chunks/chunk-BJ5P4IV2.js +0 -2
- package/dist/cli/chunks/chunk-BO4PKNYP.js +0 -102
- package/dist/cli/chunks/chunk-DFPL5N3Q.js +0 -16
- package/dist/cli/chunks/chunk-DLY4YEN3.js +0 -2
- package/dist/cli/chunks/chunk-ERGWWI4Y.js +0 -3
- package/dist/cli/chunks/chunk-GTSOFCMQ.js +0 -2
- package/dist/cli/chunks/chunk-KZVJW2SD.js +0 -2
- package/dist/cli/chunks/chunk-L336HFFE.js +0 -2
- package/dist/cli/chunks/chunk-N2TJNIHA.js +0 -2
- package/dist/cli/chunks/chunk-RCXMUEZN.js +0 -3
- package/dist/cli/chunks/chunk-SEZLYRCS.js +0 -2
- package/dist/cli/chunks/chunk-TDLKXLJC.js +0 -4
- package/dist/cli/chunks/chunk-WOZIXXY5.js +0 -7
- package/dist/cli/chunks/ci-KP4GZKJ7.js +0 -81
- package/dist/cli/chunks/client-C3KHVRM6.js +0 -2
- package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +0 -2
- package/dist/cli/chunks/coverage-SPFVHRRU.js +0 -43
- package/dist/cli/chunks/coverage-target-GSRBNHXE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +0 -2
- package/dist/cli/chunks/daemon-M5TD5Y6T.js +0 -10
- package/dist/cli/chunks/dream-MIK2E4UL.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-QST77T2B.js +0 -3
- package/dist/cli/chunks/experience-capture-middleware-X66IYSRV.js +0 -40
- package/dist/cli/chunks/file-discovery-3NHRUQQB.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +0 -2
- package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +0 -2
- package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +0 -2
- package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +0 -2
- package/dist/cli/chunks/init-handler-2AXMXHYF.js +0 -86
- package/dist/cli/chunks/init-wizard-C2MRX2QG.js +0 -2
- package/dist/cli/chunks/kernel-Q2IUDIDC.js +0 -2
- package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +0 -2
- package/dist/cli/chunks/learning-BEA26RNA.js +0 -122
- package/dist/cli/chunks/llm-router-service-YATYFEDD.js +0 -2
- package/dist/cli/chunks/load-test-LV77JXWA.js +0 -2
- package/dist/cli/chunks/memory-backend-XME3X3QX.js +0 -2
- package/dist/cli/chunks/memory-handlers-VG47X5DX.js +0 -2
- package/dist/cli/chunks/orchestrator-VHUXUYIM.js +0 -452
- package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +0 -2
- package/dist/cli/chunks/plugin-2VAYWAO3.js +0 -27
- package/dist/cli/chunks/project-root-CFFPBGPX.js +0 -2
- package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +0 -2
- package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +0 -2
- package/dist/cli/chunks/real-embeddings-GZV4VKK4.js +0 -2
- package/dist/cli/chunks/router-MXOBVEBF.js +0 -2
- package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-D4KUBNRZ.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +0 -2
- package/dist/cli/chunks/safe-db-CI6IPSIN.js +0 -2
- package/dist/cli/chunks/schedule-X4HW6TVJ.js +0 -2
- package/dist/cli/chunks/scheduler-KCNJ2ON3.js +0 -2
- package/dist/cli/chunks/security-7723AZZ4.js +0 -13
- package/dist/cli/chunks/shared-rvf-adapter-KEQ5CLNI.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +0 -2
- package/dist/cli/chunks/sync-EFWXMA2H.js +0 -2
- package/dist/cli/chunks/token-bootstrap-S346YBVO.js +0 -2
- package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +0 -2
- package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +0 -2
- package/dist/cli/chunks/visual-security-L4J7LQWT.js +0 -2
- package/dist/cli/chunks/witness-chain-CDUMX623.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-WNYH6O4L.js +0 -2
- package/dist/cli/chunks/witness-key-manager-NQ5DAAC4.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +0 -2
- package/dist/cli/chunks/wrappers-CZDI6Z3X.js +0 -2
- /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
- /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
- /package/.claude/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
- /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
- /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
- /package/assets/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared temp/system directory detection and the per-user scratch root (#1006).
|
|
3
|
+
*
|
|
4
|
+
* AQE must never adopt or create a learning store in a directory that many
|
|
5
|
+
* unrelated runs share (the OS temp dir, `/tmp`, `/`, `/home`, ...): every
|
|
6
|
+
* project without a marker below it would then read and pollute one store.
|
|
7
|
+
*
|
|
8
|
+
* Dependency-free (fs/os/path/crypto only) so `project-root` stays light.
|
|
9
|
+
*
|
|
10
|
+
* @module kernel/shared-dirs
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Fixed POSIX system directories that are never a project root. A `.agentic-qe`,
|
|
14
|
+
* `.git` or `package.json` found in one of these is a stray left by another run.
|
|
15
|
+
*/
|
|
16
|
+
export declare const POSIX_SYSTEM_DIRS: readonly string[];
|
|
17
|
+
/** Platform facts, injectable so Windows/macOS rules are testable anywhere. */
|
|
18
|
+
export interface PlatformContext {
|
|
19
|
+
platform: NodeJS.Platform;
|
|
20
|
+
tmpdir: string;
|
|
21
|
+
homedir: string;
|
|
22
|
+
env: NodeJS.ProcessEnv;
|
|
23
|
+
/** Resolve symlinks and (on Windows) 8.3 short names; return input on failure. */
|
|
24
|
+
realpath: (p: string) => string;
|
|
25
|
+
}
|
|
26
|
+
export declare function currentPlatformContext(): PlatformContext;
|
|
27
|
+
/**
|
|
28
|
+
* Canonical form for comparing two directory paths on `platform`: absolute,
|
|
29
|
+
* symlinks/8.3 names resolved, no trailing separator, and case-folded on
|
|
30
|
+
* Windows (whose file system is case-insensitive).
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeForCompare(p: string, ctx?: PlatformContext): string;
|
|
33
|
+
/** True when `a` and `b` name the same directory on the given platform. */
|
|
34
|
+
export declare function samePath(a: string, b: string, ctx?: PlatformContext): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* True for a directory the project-root walk must never cross or adopt: the OS
|
|
37
|
+
* temp dir, a drive root on Windows, or a fixed POSIX system directory.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isHardStopDir(dir: string, ctx?: PlatformContext): boolean;
|
|
40
|
+
/** True for a sticky world-writable directory (mode 1777, the shape of a shared temp dir). */
|
|
41
|
+
export declare function isStickyWorldWritable(dir: string, ctx?: PlatformContext): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* True when `dir` is shared by unrelated runs: a hard-stop directory or a
|
|
44
|
+
* sticky world-writable one. A plain chmod-777 directory (no sticky bit) is
|
|
45
|
+
* not shared: container workspaces often look like that and are real projects.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isSharedSystemDir(dir: string, ctx?: PlatformContext): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Per-user cache base for scratch roots:
|
|
50
|
+
* - Windows: `%LOCALAPPDATA%` (or `~/AppData/Local`)
|
|
51
|
+
* - macOS: `~/Library/Caches`
|
|
52
|
+
* - other: `$XDG_CACHE_HOME` when absolute, else `~/.cache`
|
|
53
|
+
*/
|
|
54
|
+
export declare function userScratchBase(ctx?: PlatformContext): string;
|
|
55
|
+
/** Stable scratch-root path for `dir`: `<base>/<sha256(canonical dir) first 16 hex>`. */
|
|
56
|
+
export declare function scratchRootPath(dir: string, ctx?: PlatformContext): string;
|
|
57
|
+
/**
|
|
58
|
+
* Create (or reuse) the private scratch root that stands in for a shared
|
|
59
|
+
* directory with no project marker. The location is stable per user and per
|
|
60
|
+
* directory, so memory persists across runs and no new directory is minted
|
|
61
|
+
* per process; it lives outside every shared dir, so no other walk adopts it.
|
|
62
|
+
* Falls back to `<tmpdir>/agentic-qe-scratch-<uid>/<key>` (0700) when the
|
|
63
|
+
* user cache dir cannot be created.
|
|
64
|
+
*/
|
|
65
|
+
export declare function ensureScratchRoot(dir: string, ctx?: PlatformContext): string;
|
|
66
|
+
//# sourceMappingURL=shared-dirs.d.ts.map
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared temp/system directory detection and the per-user scratch root (#1006).
|
|
3
|
+
*
|
|
4
|
+
* AQE must never adopt or create a learning store in a directory that many
|
|
5
|
+
* unrelated runs share (the OS temp dir, `/tmp`, `/`, `/home`, ...): every
|
|
6
|
+
* project without a marker below it would then read and pollute one store.
|
|
7
|
+
*
|
|
8
|
+
* Dependency-free (fs/os/path/crypto only) so `project-root` stays light.
|
|
9
|
+
*
|
|
10
|
+
* @module kernel/shared-dirs
|
|
11
|
+
*/
|
|
12
|
+
import { createHash } from 'crypto';
|
|
13
|
+
import * as fs from 'fs';
|
|
14
|
+
import * as os from 'os';
|
|
15
|
+
import * as path from 'path';
|
|
16
|
+
/**
|
|
17
|
+
* Fixed POSIX system directories that are never a project root. A `.agentic-qe`,
|
|
18
|
+
* `.git` or `package.json` found in one of these is a stray left by another run.
|
|
19
|
+
*/
|
|
20
|
+
export const POSIX_SYSTEM_DIRS = [
|
|
21
|
+
'/', '/tmp', '/var/tmp', '/usr/tmp', '/dev/shm', '/run/shm',
|
|
22
|
+
'/private', '/private/tmp', '/private/var', '/private/var/tmp',
|
|
23
|
+
'/var', '/usr', '/etc', '/opt', '/srv', '/mnt', '/media', '/run',
|
|
24
|
+
'/home', '/Users', '/Volumes',
|
|
25
|
+
];
|
|
26
|
+
function nativeRealpath(p) {
|
|
27
|
+
try {
|
|
28
|
+
return fs.realpathSync.native(p);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return p;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function currentPlatformContext() {
|
|
35
|
+
let tmpdir = '';
|
|
36
|
+
let homedir = '';
|
|
37
|
+
try {
|
|
38
|
+
tmpdir = os.tmpdir();
|
|
39
|
+
}
|
|
40
|
+
catch { /* none configured */ }
|
|
41
|
+
try {
|
|
42
|
+
homedir = os.homedir();
|
|
43
|
+
}
|
|
44
|
+
catch { /* none configured */ }
|
|
45
|
+
return { platform: process.platform, tmpdir, homedir, env: process.env, realpath: nativeRealpath };
|
|
46
|
+
}
|
|
47
|
+
function pathApi(platform) {
|
|
48
|
+
return platform === 'win32' ? path.win32 : path.posix;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Canonical form for comparing two directory paths on `platform`: absolute,
|
|
52
|
+
* symlinks/8.3 names resolved, no trailing separator, and case-folded on
|
|
53
|
+
* Windows (whose file system is case-insensitive).
|
|
54
|
+
*/
|
|
55
|
+
export function normalizeForCompare(p, ctx = currentPlatformContext()) {
|
|
56
|
+
const api = pathApi(ctx.platform);
|
|
57
|
+
let out = api.resolve(ctx.realpath(api.resolve(p)));
|
|
58
|
+
const rootLength = api.parse(out).root.length;
|
|
59
|
+
while (out.length > rootLength && /[\\/]$/.test(out))
|
|
60
|
+
out = out.slice(0, -1);
|
|
61
|
+
return ctx.platform === 'win32' ? out.toLowerCase() : out;
|
|
62
|
+
}
|
|
63
|
+
/** True when `a` and `b` name the same directory on the given platform. */
|
|
64
|
+
export function samePath(a, b, ctx = currentPlatformContext()) {
|
|
65
|
+
return normalizeForCompare(a, ctx) === normalizeForCompare(b, ctx);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* True for a directory the project-root walk must never cross or adopt: the OS
|
|
69
|
+
* temp dir, a drive root on Windows, or a fixed POSIX system directory.
|
|
70
|
+
*/
|
|
71
|
+
export function isHardStopDir(dir, ctx = currentPlatformContext()) {
|
|
72
|
+
const api = pathApi(ctx.platform);
|
|
73
|
+
const target = normalizeForCompare(dir, ctx);
|
|
74
|
+
if (ctx.tmpdir && target === normalizeForCompare(ctx.tmpdir, ctx))
|
|
75
|
+
return true;
|
|
76
|
+
if (ctx.platform === 'win32') {
|
|
77
|
+
return target === api.parse(target).root.toLowerCase();
|
|
78
|
+
}
|
|
79
|
+
// Compare against the literal and the resolved form (macOS /tmp -> /private/tmp).
|
|
80
|
+
const literal = api.resolve(dir);
|
|
81
|
+
return POSIX_SYSTEM_DIRS.some(sys => sys === literal || normalizeForCompare(sys, ctx) === target);
|
|
82
|
+
}
|
|
83
|
+
/** True for a sticky world-writable directory (mode 1777, the shape of a shared temp dir). */
|
|
84
|
+
export function isStickyWorldWritable(dir, ctx = currentPlatformContext()) {
|
|
85
|
+
if (ctx.platform === 'win32')
|
|
86
|
+
return false;
|
|
87
|
+
try {
|
|
88
|
+
return (fs.statSync(dir).mode & 0o1002) === 0o1002;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* True when `dir` is shared by unrelated runs: a hard-stop directory or a
|
|
96
|
+
* sticky world-writable one. A plain chmod-777 directory (no sticky bit) is
|
|
97
|
+
* not shared: container workspaces often look like that and are real projects.
|
|
98
|
+
*/
|
|
99
|
+
export function isSharedSystemDir(dir, ctx = currentPlatformContext()) {
|
|
100
|
+
return isHardStopDir(dir, ctx) || isStickyWorldWritable(dir, ctx);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Per-user cache base for scratch roots:
|
|
104
|
+
* - Windows: `%LOCALAPPDATA%` (or `~/AppData/Local`)
|
|
105
|
+
* - macOS: `~/Library/Caches`
|
|
106
|
+
* - other: `$XDG_CACHE_HOME` when absolute, else `~/.cache`
|
|
107
|
+
*/
|
|
108
|
+
export function userScratchBase(ctx = currentPlatformContext()) {
|
|
109
|
+
const api = pathApi(ctx.platform);
|
|
110
|
+
let base;
|
|
111
|
+
if (ctx.platform === 'win32') {
|
|
112
|
+
base = ctx.env.LOCALAPPDATA || api.join(ctx.homedir, 'AppData', 'Local');
|
|
113
|
+
}
|
|
114
|
+
else if (ctx.platform === 'darwin') {
|
|
115
|
+
base = api.join(ctx.homedir, 'Library', 'Caches');
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const xdg = ctx.env.XDG_CACHE_HOME;
|
|
119
|
+
base = xdg && api.isAbsolute(xdg) ? xdg : api.join(ctx.homedir, '.cache');
|
|
120
|
+
}
|
|
121
|
+
return api.join(base, 'agentic-qe', 'scratch');
|
|
122
|
+
}
|
|
123
|
+
/** Stable scratch-root path for `dir`: `<base>/<sha256(canonical dir) first 16 hex>`. */
|
|
124
|
+
export function scratchRootPath(dir, ctx = currentPlatformContext()) {
|
|
125
|
+
const key = createHash('sha256').update(normalizeForCompare(dir, ctx)).digest('hex').slice(0, 16);
|
|
126
|
+
return pathApi(ctx.platform).join(userScratchBase(ctx), key);
|
|
127
|
+
}
|
|
128
|
+
function ensurePrivateDir(dir) {
|
|
129
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
130
|
+
if (process.platform !== 'win32')
|
|
131
|
+
fs.chmodSync(dir, 0o700);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create (or reuse) the private scratch root that stands in for a shared
|
|
135
|
+
* directory with no project marker. The location is stable per user and per
|
|
136
|
+
* directory, so memory persists across runs and no new directory is minted
|
|
137
|
+
* per process; it lives outside every shared dir, so no other walk adopts it.
|
|
138
|
+
* Falls back to `<tmpdir>/agentic-qe-scratch-<uid>/<key>` (0700) when the
|
|
139
|
+
* user cache dir cannot be created.
|
|
140
|
+
*/
|
|
141
|
+
export function ensureScratchRoot(dir, ctx = currentPlatformContext()) {
|
|
142
|
+
const preferred = scratchRootPath(dir, ctx);
|
|
143
|
+
try {
|
|
144
|
+
ensurePrivateDir(preferred);
|
|
145
|
+
writeOrigin(preferred, dir);
|
|
146
|
+
return preferred;
|
|
147
|
+
}
|
|
148
|
+
catch (preferredError) {
|
|
149
|
+
const uid = typeof process.getuid === 'function' ? String(process.getuid()) : 'user';
|
|
150
|
+
const fallbackBase = path.join(ctx.tmpdir || os.tmpdir(), `agentic-qe-scratch-${uid}`);
|
|
151
|
+
const fallback = path.join(fallbackBase, path.basename(preferred));
|
|
152
|
+
try {
|
|
153
|
+
ensurePrivateDir(fallbackBase);
|
|
154
|
+
ensurePrivateDir(fallback);
|
|
155
|
+
writeOrigin(fallback, dir);
|
|
156
|
+
return fallback;
|
|
157
|
+
}
|
|
158
|
+
catch (fallbackError) {
|
|
159
|
+
// Never fall back to the shared directory itself: that would mix data
|
|
160
|
+
// from unrelated projects. Give callers a usable diagnosis instead of
|
|
161
|
+
// an opaque EEXIST/ENOTDIR from the final mkdir.
|
|
162
|
+
const reason = (error) => error instanceof Error ? error.message : String(error);
|
|
163
|
+
throw new Error(`Cannot create a private AQE scratch root for "${dir}". ` +
|
|
164
|
+
`User cache "${preferred}" failed: ${reason(preferredError)}. ` +
|
|
165
|
+
`Temporary fallback "${fallback}" failed: ${reason(fallbackError)}. ` +
|
|
166
|
+
'Set AQE_PROJECT_ROOT to a project directory or make the user cache writable.');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function writeOrigin(root, dir) {
|
|
171
|
+
const origin = path.join(root, 'SCRATCH_ROOT_FOR');
|
|
172
|
+
try {
|
|
173
|
+
if (!fs.existsSync(origin))
|
|
174
|
+
fs.writeFileSync(origin, `${path.resolve(dir)}\n`, { mode: 0o600 });
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Informational only.
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=shared-dirs.js.map
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as path from 'path';
|
|
9
|
+
import { getProjectStorePath } from '../kernel/project-root.js';
|
|
9
10
|
const LOG_ICONS = {
|
|
10
11
|
'pattern-learned': '\u{1F9E0}',
|
|
11
12
|
'pattern-promoted': '\u2B06\uFE0F',
|
|
@@ -20,7 +21,7 @@ export class DailyLogger {
|
|
|
20
21
|
flushTimer = null;
|
|
21
22
|
constructor(config) {
|
|
22
23
|
this.config = {
|
|
23
|
-
logDir: config?.logDir ??
|
|
24
|
+
logDir: config?.logDir ?? getProjectStorePath('logs'),
|
|
24
25
|
enabled: config?.enabled ?? true,
|
|
25
26
|
maxEntriesPerDay: config?.maxEntriesPerDay ?? 500,
|
|
26
27
|
};
|
|
@@ -80,6 +80,28 @@ export declare function startExperience(task: string, agent: string, domain: QED
|
|
|
80
80
|
* Record a step in an active experience
|
|
81
81
|
*/
|
|
82
82
|
export declare function recordExperienceStep(experienceId: string, step: ExperienceStep): void;
|
|
83
|
+
/**
|
|
84
|
+
* #1002: a result whose status or evidenceStatus is "insufficient-evidence"
|
|
85
|
+
* carries no verdict, so it is neither a success nor a failure to learn from.
|
|
86
|
+
* #1014: likewise a successful coverage-analysis result that is not a
|
|
87
|
+
* measurement (static estimate, unmeasured target, or no provenance).
|
|
88
|
+
* Implemented by the shared `isLearnableResult` (#1014 / #1021 dedupe, #1027 B1).
|
|
89
|
+
*/
|
|
90
|
+
export declare function isInsufficientEvidenceResult(result: {
|
|
91
|
+
success: boolean;
|
|
92
|
+
data?: unknown;
|
|
93
|
+
}, domain?: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* #1021 round 2b: a failure caused by the caller's input (marked
|
|
96
|
+
* `callerError: true`, e.g. a target outside the project root) says nothing
|
|
97
|
+
* about the component, so it is not recorded as a failure experience.
|
|
98
|
+
*/
|
|
99
|
+
export declare function isCallerInputFailure(result: {
|
|
100
|
+
success: boolean;
|
|
101
|
+
data?: unknown;
|
|
102
|
+
}): boolean;
|
|
103
|
+
/** Drop an active experience without persisting it (no verdict to record). */
|
|
104
|
+
export declare function abandonExperience(experienceId: string): boolean;
|
|
83
105
|
/**
|
|
84
106
|
* Complete an experience and persist to database
|
|
85
107
|
*/
|
|
@@ -15,6 +15,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
15
15
|
import { getUnifiedMemory } from '../kernel/unified-memory.js';
|
|
16
16
|
import { toErrorMessage } from '../shared/error-utils.js';
|
|
17
17
|
import { createLogger } from '../logging/logger-factory.js';
|
|
18
|
+
import { isLearnableResult } from './learnable-result.js';
|
|
18
19
|
const ecLogger = createLogger('ExperienceCapture');
|
|
19
20
|
// ============================================================================
|
|
20
21
|
// Active Experience Tracking
|
|
@@ -233,6 +234,34 @@ export function recordExperienceStep(experienceId, step) {
|
|
|
233
234
|
}
|
|
234
235
|
experience.steps.push(step);
|
|
235
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* #1002: a result whose status or evidenceStatus is "insufficient-evidence"
|
|
239
|
+
* carries no verdict, so it is neither a success nor a failure to learn from.
|
|
240
|
+
* #1014: likewise a successful coverage-analysis result that is not a
|
|
241
|
+
* measurement (static estimate, unmeasured target, or no provenance).
|
|
242
|
+
* Implemented by the shared `isLearnableResult` (#1014 / #1021 dedupe, #1027 B1).
|
|
243
|
+
*/
|
|
244
|
+
export function isInsufficientEvidenceResult(result, domain) {
|
|
245
|
+
// Delegates to the shared predicate (#1014/#1021 dedupe). A FAILED
|
|
246
|
+
// coverage-analysis call is still a real failure record, so only the
|
|
247
|
+
// insufficient-evidence status applies to it.
|
|
248
|
+
if (domain === 'coverage-analysis' && !result.success)
|
|
249
|
+
return !isLearnableResult('', result.data);
|
|
250
|
+
return !isLearnableResult(domain ?? '', result.data);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* #1021 round 2b: a failure caused by the caller's input (marked
|
|
254
|
+
* `callerError: true`, e.g. a target outside the project root) says nothing
|
|
255
|
+
* about the component, so it is not recorded as a failure experience.
|
|
256
|
+
*/
|
|
257
|
+
export function isCallerInputFailure(result) {
|
|
258
|
+
const data = result.data;
|
|
259
|
+
return !result.success && !!data && typeof data === 'object' && data.callerError === true;
|
|
260
|
+
}
|
|
261
|
+
/** Drop an active experience without persisting it (no verdict to record). */
|
|
262
|
+
export function abandonExperience(experienceId) {
|
|
263
|
+
return activeExperiences.delete(experienceId);
|
|
264
|
+
}
|
|
236
265
|
/**
|
|
237
266
|
* Complete an experience and persist to database
|
|
238
267
|
*/
|
|
@@ -384,6 +413,12 @@ export function wrapWithExperienceCapture(handler, domain, agent) {
|
|
|
384
413
|
// Execute the handler
|
|
385
414
|
const result = await handler(params);
|
|
386
415
|
const durationMs = Date.now() - startTime;
|
|
416
|
+
// #1002/#1014: a run with no measured verdict is not recorded as success or failure.
|
|
417
|
+
if (isInsufficientEvidenceResult(result, domain) || isCallerInputFailure(result)) {
|
|
418
|
+
abandonExperience(expId);
|
|
419
|
+
ecLogger.debug('Skipped capture: insufficient evidence carries no verdict', { domain, agent });
|
|
420
|
+
return result;
|
|
421
|
+
}
|
|
387
422
|
// Record execution step
|
|
388
423
|
recordExperienceStep(expId, {
|
|
389
424
|
action: `execute-${domain}`,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Which tool results may become learning (#1014)
|
|
3
|
+
*
|
|
4
|
+
* A tool run that produced no evidence must not be learned from as if it did:
|
|
5
|
+
*
|
|
6
|
+
* - coverage-analysis results are learnable only when they are MEASURED
|
|
7
|
+
* (`measured === true`). A static estimate or an UNMEASURED target is a
|
|
8
|
+
* hypothesis / an absence — learning from it records invented coverage in
|
|
9
|
+
* coverage_sessions, captured experiences and pattern-usage success;
|
|
10
|
+
* - any result whose status is `insufficient-evidence` (quality gate without
|
|
11
|
+
* measured evidence) is not a success to learn from.
|
|
12
|
+
*
|
|
13
|
+
* Fail-closed: a coverage result without provenance is not learnable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isLearnableResult(domain: string, data: unknown): boolean;
|
|
16
|
+
//# sourceMappingURL=learnable-result.d.ts.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentic QE v3 - Which tool results may become learning (#1014)
|
|
3
|
+
*
|
|
4
|
+
* A tool run that produced no evidence must not be learned from as if it did:
|
|
5
|
+
*
|
|
6
|
+
* - coverage-analysis results are learnable only when they are MEASURED
|
|
7
|
+
* (`measured === true`). A static estimate or an UNMEASURED target is a
|
|
8
|
+
* hypothesis / an absence — learning from it records invented coverage in
|
|
9
|
+
* coverage_sessions, captured experiences and pattern-usage success;
|
|
10
|
+
* - any result whose status is `insufficient-evidence` (quality gate without
|
|
11
|
+
* measured evidence) is not a success to learn from.
|
|
12
|
+
*
|
|
13
|
+
* Fail-closed: a coverage result without provenance is not learnable.
|
|
14
|
+
*/
|
|
15
|
+
const INSUFFICIENT = 'insufficient-evidence';
|
|
16
|
+
export function isLearnableResult(domain, data) {
|
|
17
|
+
const record = data && typeof data === 'object' ? data : null;
|
|
18
|
+
if (record && (record.status === INSUFFICIENT || record.evidenceStatus === INSUFFICIENT))
|
|
19
|
+
return false;
|
|
20
|
+
if (domain === 'coverage-analysis')
|
|
21
|
+
return record?.measured === true;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=learnable-result.js.map
|
|
@@ -6,4 +6,12 @@ export declare class PatternMutationError extends Error {
|
|
|
6
6
|
readonly cause: unknown;
|
|
7
7
|
constructor(patternId: string, disposition: PatternMutationDisposition, cause: unknown);
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* The pattern id when `error` proves the authoritative SQLite row committed and
|
|
11
|
+
* only the derived vector index (HNSW/RVF) is pending, e.g. no embedding runtime
|
|
12
|
+
* was available (#981). Callers treat that as a stored pattern whose vector can
|
|
13
|
+
* be filled later by `aqe learning backfill-embeddings`. Any other error,
|
|
14
|
+
* including a `FAILED` disposition, returns null.
|
|
15
|
+
*/
|
|
16
|
+
export declare function committedPendingIndexPatternId(error: unknown): string | null;
|
|
9
17
|
//# sourceMappingURL=pattern-mutation-error.d.ts.map
|
|
@@ -11,4 +11,16 @@ export class PatternMutationError extends Error {
|
|
|
11
11
|
this.cause = cause;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* The pattern id when `error` proves the authoritative SQLite row committed and
|
|
16
|
+
* only the derived vector index (HNSW/RVF) is pending, e.g. no embedding runtime
|
|
17
|
+
* was available (#981). Callers treat that as a stored pattern whose vector can
|
|
18
|
+
* be filled later by `aqe learning backfill-embeddings`. Any other error,
|
|
19
|
+
* including a `FAILED` disposition, returns null.
|
|
20
|
+
*/
|
|
21
|
+
export function committedPendingIndexPatternId(error) {
|
|
22
|
+
return error instanceof PatternMutationError && error.disposition === 'COMMITTED_PENDING_INDEX'
|
|
23
|
+
? error.patternId
|
|
24
|
+
: null;
|
|
25
|
+
}
|
|
14
26
|
//# sourceMappingURL=pattern-mutation-error.js.map
|
|
@@ -19,6 +19,7 @@ import { QEPattern, QEPatternContext, QEDomain, ProgrammingLanguage, TestFramewo
|
|
|
19
19
|
import { QEGuidance } from './qe-guidance.js';
|
|
20
20
|
import { PatternSearchOptions, PatternSearchResult } from './pattern-store.js';
|
|
21
21
|
import type { RvfDualWriter } from '../integrations/ruvector/rvf-dual-writer.js';
|
|
22
|
+
import { type RvfReconcileResult } from './rvf-reconcile.js';
|
|
22
23
|
import type { QEReasoningBankConfig, QERoutingRequest, QERoutingResult, LearningOutcome, IQEReasoningBank, QEReasoningBankStats } from './qe-reasoning-bank-types.js';
|
|
23
24
|
/**
|
|
24
25
|
* QE ReasoningBank - Pattern learning for quality engineering
|
|
@@ -76,6 +77,15 @@ export declare class QEReasoningBank implements IQEReasoningBank {
|
|
|
76
77
|
initialize(options?: {
|
|
77
78
|
signal?: AbortSignal;
|
|
78
79
|
}): Promise<void>;
|
|
80
|
+
/** Result of the last RVF↔SQLite vector reconcile (#981 review B2). */
|
|
81
|
+
private lastVectorReconcile;
|
|
82
|
+
getLastVectorReconcile(): RvfReconcileResult | null;
|
|
83
|
+
/**
|
|
84
|
+
* Ingest SQLite vectors of the active embedding space that the RVF index
|
|
85
|
+
* does not hold yet (#981 review B2). Idempotent and capped per pass by
|
|
86
|
+
* AQE_RVF_BACKFILL_LIMIT (default 1000). Non-fatal.
|
|
87
|
+
*/
|
|
88
|
+
reconcileVectorIndex(): RvfReconcileResult | null;
|
|
79
89
|
/**
|
|
80
90
|
* Load pre-trained patterns for common QE scenarios
|
|
81
91
|
*/
|
|
@@ -23,6 +23,7 @@ import { createPatternStore, } from './pattern-store.js';
|
|
|
23
23
|
import { createSQLitePatternStore, } from './sqlite-persistence.js';
|
|
24
24
|
import { getWitnessChain } from '../audit/witness-chain.js';
|
|
25
25
|
import { getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
|
|
26
|
+
import { reconcileRvfWithSqlite } from './rvf-reconcile.js';
|
|
26
27
|
import { PatternMutationError } from './pattern-mutation-error.js';
|
|
27
28
|
// Import extracted modules
|
|
28
29
|
import { DEFAULT_QE_REASONING_BANK_CONFIG } from './qe-reasoning-bank-types.js';
|
|
@@ -174,6 +175,36 @@ export class QEReasoningBank {
|
|
|
174
175
|
}
|
|
175
176
|
logger.info('Initialized');
|
|
176
177
|
}
|
|
178
|
+
/** Result of the last RVF↔SQLite vector reconcile (#981 review B2). */
|
|
179
|
+
lastVectorReconcile = null;
|
|
180
|
+
getLastVectorReconcile() {
|
|
181
|
+
return this.lastVectorReconcile;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Ingest SQLite vectors of the active embedding space that the RVF index
|
|
185
|
+
* does not hold yet (#981 review B2). Idempotent and capped per pass by
|
|
186
|
+
* AQE_RVF_BACKFILL_LIMIT (default 1000). Non-fatal.
|
|
187
|
+
*/
|
|
188
|
+
reconcileVectorIndex() {
|
|
189
|
+
const adapter = this.patternStore.getAdapter?.();
|
|
190
|
+
const spaceId = getActiveEmbeddingSpaceIdentity()?.spaceId;
|
|
191
|
+
if (!adapter || !spaceId)
|
|
192
|
+
return null;
|
|
193
|
+
try {
|
|
194
|
+
const env = Number(process.env.AQE_RVF_BACKFILL_LIMIT);
|
|
195
|
+
const limit = Number.isFinite(env) && env > 0 ? Math.floor(env) : 1000;
|
|
196
|
+
const result = reconcileRvfWithSqlite(adapter, this.getSqliteStore(), spaceId, limit);
|
|
197
|
+
if (result.missing > 0) {
|
|
198
|
+
logger.info('Reconciled RVF index with SQLite vectors', { ...result });
|
|
199
|
+
}
|
|
200
|
+
this.lastVectorReconcile = result;
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
logger.warn('RVF reconcile failed (non-fatal)', { error: toErrorMessage(err) });
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
177
208
|
/**
|
|
178
209
|
* Load pre-trained patterns for common QE scenarios
|
|
179
210
|
*/
|
|
@@ -229,6 +260,12 @@ export class QEReasoningBank {
|
|
|
229
260
|
logger.warn('RVF backfill failed (non-fatal)', { error: toErrorMessage(err) });
|
|
230
261
|
}
|
|
231
262
|
}
|
|
263
|
+
else if (adapter) {
|
|
264
|
+
// #981 review B2: a non-empty index can still lag SQLite, e.g. after
|
|
265
|
+
// `aqe learning backfill-embeddings` filled vectors for patterns that
|
|
266
|
+
// were learned text-only. Ingest exactly the missing active-space ids.
|
|
267
|
+
this.reconcileVectorIndex();
|
|
268
|
+
}
|
|
232
269
|
return;
|
|
233
270
|
}
|
|
234
271
|
// Use storePattern() (not patternStore.create() directly) so that:
|
|
@@ -280,7 +317,19 @@ export class QEReasoningBank {
|
|
|
280
317
|
// Generate embedding if not provided
|
|
281
318
|
if (!options.embedding) {
|
|
282
319
|
const embedding = await this.embed(`${options.name} ${options.description} ${options.context?.tags?.join(' ') || ''}`);
|
|
283
|
-
|
|
320
|
+
// #981: with no embedding runtime, embed() returns a hash-fallback vector
|
|
321
|
+
// that has no embedding-space provenance, and the pattern store refuses
|
|
322
|
+
// to persist it (VECTOR_SPACE_UNVERIFIED), losing the pattern. Store it
|
|
323
|
+
// text-only instead, as search already does for such vectors; the vector
|
|
324
|
+
// is filled later by `aqe learning backfill-embeddings`.
|
|
325
|
+
const hasProvenance = this.embeddingProvenance.has(embedding)
|
|
326
|
+
|| Boolean(getActiveEmbeddingSpaceIdentity()?.spaceId);
|
|
327
|
+
if (hasProvenance) {
|
|
328
|
+
options = { ...options, embedding };
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
logger.debug('No embedding runtime provenance; storing pattern without a vector', { name: options.name });
|
|
332
|
+
}
|
|
284
333
|
}
|
|
285
334
|
const result = await this.patternStore.create(options);
|
|
286
335
|
// A pending-index error still proves the authoritative SQLite mutation
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reconcile the derived RVF vector index with authoritative SQLite vectors
|
|
3
|
+
* (#981 review B2).
|
|
4
|
+
*
|
|
5
|
+
* `aqe learning backfill-embeddings` and any other SQLite-only vector write
|
|
6
|
+
* leave patterns.rvf behind. The original re-ingest only ran while the index
|
|
7
|
+
* was empty, so a single pattern learned with an embedder blocked every later
|
|
8
|
+
* backfill from reaching vector search. This pass ingests exactly the vectors
|
|
9
|
+
* that are in SQLite for the active embedding space but not in the index.
|
|
10
|
+
*/
|
|
11
|
+
import type { RvfNativeAdapter } from '../integrations/ruvector/rvf-native-adapter.js';
|
|
12
|
+
export interface RvfReconcileSource {
|
|
13
|
+
/** Pattern ids with a stored vector in `spaceId`; `ordered`: most recently used first. */
|
|
14
|
+
getEmbeddingIdsInSpace(spaceId: string, options?: {
|
|
15
|
+
ordered?: boolean;
|
|
16
|
+
}): string[];
|
|
17
|
+
/** Stored vectors for `ids`. */
|
|
18
|
+
getEmbeddingsByIds(ids: string[]): Array<{
|
|
19
|
+
patternId: string;
|
|
20
|
+
embedding: number[];
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
export type RvfReconcileTarget = Pick<RvfNativeAdapter, 'ingest'> & Partial<Pick<RvfNativeAdapter, 'has'>>;
|
|
24
|
+
export interface RvfReconcileResult {
|
|
25
|
+
/** SQLite vectors in the active space that the index did not hold. */
|
|
26
|
+
missing: number;
|
|
27
|
+
ingested: number;
|
|
28
|
+
rejected: number;
|
|
29
|
+
/** True when `missing` exceeded `limit` and the rest waits for a later pass. */
|
|
30
|
+
capped: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Ingest SQLite vectors (active space only) missing from the RVF index.
|
|
34
|
+
* Idempotent: ids the index already holds are skipped, so repeated runs add
|
|
35
|
+
* nothing. An adapter without `has()` cannot be reconciled safely (ingest is
|
|
36
|
+
* not idempotent), so the pass is skipped.
|
|
37
|
+
*/
|
|
38
|
+
export declare function reconcileRvfWithSqlite(adapter: RvfReconcileTarget, sqlite: RvfReconcileSource, activeSpaceId: string, limit: number): RvfReconcileResult;
|
|
39
|
+
//# sourceMappingURL=rvf-reconcile.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reconcile the derived RVF vector index with authoritative SQLite vectors
|
|
3
|
+
* (#981 review B2).
|
|
4
|
+
*
|
|
5
|
+
* `aqe learning backfill-embeddings` and any other SQLite-only vector write
|
|
6
|
+
* leave patterns.rvf behind. The original re-ingest only ran while the index
|
|
7
|
+
* was empty, so a single pattern learned with an embedder blocked every later
|
|
8
|
+
* backfill from reaching vector search. This pass ingests exactly the vectors
|
|
9
|
+
* that are in SQLite for the active embedding space but not in the index.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Ingest SQLite vectors (active space only) missing from the RVF index.
|
|
13
|
+
* Idempotent: ids the index already holds are skipped, so repeated runs add
|
|
14
|
+
* nothing. An adapter without `has()` cannot be reconciled safely (ingest is
|
|
15
|
+
* not idempotent), so the pass is skipped.
|
|
16
|
+
*/
|
|
17
|
+
export function reconcileRvfWithSqlite(adapter, sqlite, activeSpaceId, limit) {
|
|
18
|
+
const none = { missing: 0, ingested: 0, rejected: 0, capped: false };
|
|
19
|
+
if (typeof adapter.has !== 'function')
|
|
20
|
+
return none;
|
|
21
|
+
// Cheap no-op path first: an unordered id scan + has() per id. The ordered
|
|
22
|
+
// (join + sort) query runs only when one pass cannot ingest everything and
|
|
23
|
+
// the most recently used vectors should go first.
|
|
24
|
+
const missing = (ids) => ids.filter((id) => !adapter.has(id));
|
|
25
|
+
let missingIds = missing(sqlite.getEmbeddingIdsInSpace(activeSpaceId));
|
|
26
|
+
if (missingIds.length === 0)
|
|
27
|
+
return none;
|
|
28
|
+
const cap = Number.isFinite(limit) && limit > 0 ? Math.floor(limit) : 1000;
|
|
29
|
+
if (missingIds.length > cap) {
|
|
30
|
+
missingIds = missing(sqlite.getEmbeddingIdsInSpace(activeSpaceId, { ordered: true }));
|
|
31
|
+
}
|
|
32
|
+
const batchIds = missingIds.slice(0, cap);
|
|
33
|
+
const vectors = sqlite
|
|
34
|
+
.getEmbeddingsByIds(batchIds)
|
|
35
|
+
.filter(({ embedding }) => embedding && embedding.length > 0)
|
|
36
|
+
.map(({ patternId, embedding }) => ({ id: patternId, vector: new Float32Array(embedding) }));
|
|
37
|
+
const { accepted, rejected } = vectors.length > 0 ? adapter.ingest(vectors) : { accepted: 0, rejected: 0 };
|
|
38
|
+
return { missing: missingIds.length, ingested: accepted, rejected, capped: missingIds.length > cap };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=rvf-reconcile.js.map
|
|
@@ -124,6 +124,20 @@ export declare class SQLitePatternStore {
|
|
|
124
124
|
embedding: number[];
|
|
125
125
|
spaceId: string | null;
|
|
126
126
|
}>;
|
|
127
|
+
/**
|
|
128
|
+
* Pattern ids that have a stored vector in `spaceId` (#981 review B2: find
|
|
129
|
+
* vectors the RVF index is missing). Unordered by default, which is a plain
|
|
130
|
+
* indexed scan; `ordered` returns most recently used first (join + sort),
|
|
131
|
+
* which the reconcile only needs when more ids are missing than one pass ingests.
|
|
132
|
+
*/
|
|
133
|
+
getEmbeddingIdsInSpace(spaceId: string, options?: {
|
|
134
|
+
ordered?: boolean;
|
|
135
|
+
}): string[];
|
|
136
|
+
/** Stored vectors for the given pattern ids (#981 review B2). */
|
|
137
|
+
getEmbeddingsByIds(ids: string[]): Array<{
|
|
138
|
+
patternId: string;
|
|
139
|
+
embedding: number[];
|
|
140
|
+
}>;
|
|
127
141
|
/**
|
|
128
142
|
* Get up to `limit` embeddings, most-recently-used first.
|
|
129
143
|
*
|