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
|
@@ -6,54 +6,12 @@
|
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import { runCoverageAnalysisWizard } from '../wizards/coverage-wizard.js';
|
|
9
|
-
import { walkSourceFiles } from '../utils/file-discovery.js';
|
|
10
9
|
import { writeOutput, toJSON, coverageToMarkdown } from '../utils/ci-output.js';
|
|
11
10
|
import * as path from 'path';
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (!data.instrumented)
|
|
17
|
-
return { branch: true, function: true }; // labelled heuristic estimate
|
|
18
|
-
return {
|
|
19
|
-
branch: data.files.some(f => f.branches.total > 0),
|
|
20
|
-
function: data.files.some(f => f.functions.total > 0),
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/** `aqe coverage` exit code when the target has no coverage measurement (#995). */
|
|
24
|
-
export const EXIT_UNMEASURED = 3;
|
|
25
|
-
/**
|
|
26
|
-
* Resolve the coverage data for a CLI target (#995).
|
|
27
|
-
*
|
|
28
|
-
* Uses the SAME resolution and verdict as the MCP `coverage_analyze_sublinear`
|
|
29
|
-
* handler (`resolveExistingCoverage`), so CLI and MCP cannot disagree about
|
|
30
|
-
* what a report says for a target:
|
|
31
|
-
* - a coverage report file (lcov.info, coverage-final.json, ...) is parsed
|
|
32
|
-
* directly;
|
|
33
|
-
* - a directory or source file is scoped against the instrumented report of
|
|
34
|
-
* its PROJECT ROOT (nearest package.json/.git above it), not the cwd;
|
|
35
|
-
* - with no report at the project root, the CLI falls back to its labelled
|
|
36
|
-
* heuristic estimate (the CLI never runs the test suite).
|
|
37
|
-
*/
|
|
38
|
-
export async function resolveCliCoverageData(targetPath) {
|
|
39
|
-
const existing = await resolveExistingCoverage(targetPath);
|
|
40
|
-
if (existing.status === 'target-missing') {
|
|
41
|
-
return { kind: 'no-data', reason: 'target-missing', message: describeNoData('target-missing', targetPath, null) };
|
|
42
|
-
}
|
|
43
|
-
if (existing.status === 'evaluated') {
|
|
44
|
-
const { evaluation, projectRoot } = existing;
|
|
45
|
-
if (evaluation.status === 'measured') {
|
|
46
|
-
const files = evaluation.files;
|
|
47
|
-
return { kind: 'data', data: { files, summary: summarizeCoverage(files), instrumented: true } };
|
|
48
|
-
}
|
|
49
|
-
return { kind: 'no-data', reason: evaluation.reason, message: describeNoData(evaluation.reason, targetPath, projectRoot) };
|
|
50
|
-
}
|
|
51
|
-
const sourceFiles = walkSourceFiles(existing.target, { includeTests: false });
|
|
52
|
-
if (sourceFiles.length === 0)
|
|
53
|
-
return { kind: 'no-sources' };
|
|
54
|
-
console.log(chalk.gray(` Analyzing ${sourceFiles.length} files...\n`));
|
|
55
|
-
return { kind: 'data', data: buildCoverageData(sourceFiles, existing.projectRoot) };
|
|
56
|
-
}
|
|
11
|
+
import { EXIT_UNMEASURED, coverageExitCode, coverageJson, evaluateCliCoverage, } from '../utils/coverage-verdict.js';
|
|
12
|
+
// #1012 / #1010: resolution and verdict are shared with `aqe ci` (and built on
|
|
13
|
+
// the same functions as MCP); re-exported here for existing importers.
|
|
14
|
+
export { EXIT_UNMEASURED, resolveCliCoverageData } from '../utils/coverage-verdict.js';
|
|
57
15
|
function getColorForPercent(percent) {
|
|
58
16
|
if (percent >= 80)
|
|
59
17
|
return chalk.green;
|
|
@@ -87,7 +45,13 @@ Exit codes:
|
|
|
87
45
|
1 coverage below the threshold, or an error (missing target, unreadable report)
|
|
88
46
|
2 coverage within 5% above the threshold
|
|
89
47
|
${EXIT_UNMEASURED} UNMEASURED: no coverage measurement exists for the target
|
|
90
|
-
(not in the report, the runner ran 0 tests, or only test files were reported)
|
|
48
|
+
(not in the report, the runner ran 0 tests, or only test files were reported),
|
|
49
|
+
or NO coverage report exists, so only a labelled static estimate was shown
|
|
50
|
+
(-F json: measured:false, estimated:true; no threshold verdict)
|
|
51
|
+
|
|
52
|
+
In \`aqe ci\`, an UNMEASURED coverage phase is a warning (phase exit code 3); it
|
|
53
|
+
does not fail the pipeline by itself. An enforced quality gate fails on
|
|
54
|
+
missing coverage evidence.`)
|
|
91
55
|
.action(async (target, options) => {
|
|
92
56
|
let analyzeTarget = target;
|
|
93
57
|
let includeRisk = options.risk;
|
|
@@ -141,90 +105,62 @@ Exit codes:
|
|
|
141
105
|
const targetPath = path.resolve(analyzeTarget);
|
|
142
106
|
// Fix #280: shared file discovery supporting all languages.
|
|
143
107
|
// #995: coverage files as targets; reports resolved from the project root.
|
|
144
|
-
|
|
145
|
-
|
|
108
|
+
// #1012: one shared verdict (measured / unmeasured / labelled estimate).
|
|
109
|
+
const outcome = await evaluateCliCoverage(coverageAPI, targetPath, threshold);
|
|
110
|
+
const format = options.format;
|
|
111
|
+
if (outcome.kind === 'no-sources') {
|
|
146
112
|
console.log(chalk.yellow('No source files found'));
|
|
147
113
|
return;
|
|
148
114
|
}
|
|
149
|
-
if (
|
|
150
|
-
// Errors (missing target, unreadable report) exit 1.
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
if (options.format === 'json') {
|
|
115
|
+
if (outcome.kind === 'error' || outcome.kind === 'unmeasured' || outcome.kind === 'analysis-failed') {
|
|
116
|
+
// Errors (missing target, unreadable report) exit 1. "No measurement
|
|
117
|
+
// exists" has its own exit code — never "0%".
|
|
118
|
+
if (format === 'json') {
|
|
154
119
|
// Same shape as a normal result, with nulls (#995 review N4).
|
|
155
|
-
emit(toJSON(
|
|
156
|
-
summary: { line: null, branch: null, function: null, statement: null },
|
|
157
|
-
meetsThreshold: null,
|
|
158
|
-
threshold,
|
|
159
|
-
measured: false,
|
|
160
|
-
unmeasured: isUnmeasured(resolved.reason),
|
|
161
|
-
reason: resolved.reason,
|
|
162
|
-
target: targetPath,
|
|
163
|
-
warning: resolved.message,
|
|
164
|
-
}));
|
|
120
|
+
emit(toJSON(coverageJson(outcome, threshold, targetPath)));
|
|
165
121
|
}
|
|
166
122
|
else {
|
|
167
|
-
console.log((
|
|
123
|
+
console.log((outcome.kind === 'unmeasured' ? chalk.yellow : chalk.red)(` ${outcome.message}\n`));
|
|
168
124
|
}
|
|
169
|
-
await cleanupAndExit(
|
|
125
|
+
await cleanupAndExit(coverageExitCode(outcome, threshold));
|
|
170
126
|
return;
|
|
171
127
|
}
|
|
172
|
-
const coverageData =
|
|
173
|
-
|
|
128
|
+
const coverageData = outcome.data;
|
|
129
|
+
const isEstimate = outcome.kind === 'estimate';
|
|
130
|
+
if (!isEstimate) {
|
|
174
131
|
console.log(chalk.green(' Using instrumented coverage data (V8/istanbul)\n'));
|
|
175
132
|
if (coverageData.unmeasuredFiles?.length) {
|
|
176
133
|
console.log(chalk.yellow(` ${coverageData.unmeasuredFiles.length} file(s) not in the coverage report — UNMEASURED, excluded from the figures\n`));
|
|
177
134
|
}
|
|
178
135
|
}
|
|
179
136
|
else {
|
|
180
|
-
console.log(chalk.yellow(' No
|
|
137
|
+
console.log(chalk.yellow(' No coverage report found — showing a heuristic STATIC ESTIMATE (UNMEASURED)'));
|
|
181
138
|
console.log(chalk.gray(' Run tests with coverage first: npm test -- --coverage\n'));
|
|
182
139
|
}
|
|
183
|
-
// #
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// For non-text formats, collect all data and output at end
|
|
208
|
-
coverageResult = {
|
|
209
|
-
summary: summary,
|
|
210
|
-
meetsThreshold: verdict.meetsThreshold,
|
|
211
|
-
threshold,
|
|
212
|
-
recommendations,
|
|
213
|
-
};
|
|
214
|
-
if (format === 'text') {
|
|
215
|
-
const fmt = (v) => v === null ? 'n/a (not collected)' : v.toFixed(1) + '%';
|
|
216
|
-
const color = (v) => v === null ? chalk.gray : getColorForPercent(v);
|
|
217
|
-
console.log(chalk.cyan(' Coverage Summary:'));
|
|
218
|
-
console.log(` Lines: ${color(summary.line)(fmt(summary.line))}`);
|
|
219
|
-
console.log(` Branches: ${color(summary.branch)(fmt(summary.branch))}`);
|
|
220
|
-
console.log(` Functions: ${color(summary.function)(fmt(summary.function))}`);
|
|
221
|
-
console.log(` Statements: ${color(summary.statement)(fmt(summary.statement))}`);
|
|
222
|
-
console.log(`\n Threshold: ${verdict.meetsThreshold ? chalk.green(`Met (${threshold}%)`) : chalk.red(`Not met (${threshold}%)`)}`);
|
|
223
|
-
if (recommendations.length > 0) {
|
|
224
|
-
console.log(chalk.cyan('\n Recommendations:'));
|
|
225
|
-
for (const rec of recommendations) {
|
|
226
|
-
console.log(chalk.gray(` - ${rec}`));
|
|
227
|
-
}
|
|
140
|
+
// #1012: the JSON carries its provenance (measured / estimated /
|
|
141
|
+
// coverageMethod) exactly as MCP does; an estimate has no verdict.
|
|
142
|
+
const coverageResult = coverageJson(outcome, threshold, targetPath);
|
|
143
|
+
const summary = outcome.summary;
|
|
144
|
+
if (format === 'text') {
|
|
145
|
+
const fmt = (v) => v === null ? 'n/a (not collected)' : (isEstimate ? '~' : '') + v.toFixed(1) + '%';
|
|
146
|
+
const color = (v) => v === null || isEstimate ? chalk.gray : getColorForPercent(v);
|
|
147
|
+
console.log(chalk.cyan(isEstimate ? ' Coverage Summary (STATIC ESTIMATE — not measured):' : ' Coverage Summary:'));
|
|
148
|
+
console.log(` Lines: ${color(summary.line)(fmt(summary.line))}`);
|
|
149
|
+
console.log(` Branches: ${color(summary.branch)(fmt(summary.branch))}`);
|
|
150
|
+
console.log(` Functions: ${color(summary.function)(fmt(summary.function))}`);
|
|
151
|
+
console.log(` Statements: ${color(summary.statement)(fmt(summary.statement))}`);
|
|
152
|
+
if (outcome.kind === 'measured') {
|
|
153
|
+
console.log(`\n Threshold: ${outcome.verdict.meetsThreshold ? chalk.green(`Met (${threshold}%)`) : chalk.red(`Not met (${threshold}%)`)}`);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(`\n Threshold: ${chalk.yellow(`not evaluated (${threshold}%) — UNMEASURED, estimate only`)}`);
|
|
157
|
+
console.log(chalk.gray(` ${outcome.message}`));
|
|
158
|
+
}
|
|
159
|
+
const recommendations = outcome.kind === 'measured' ? outcome.recommendations : [];
|
|
160
|
+
if (recommendations.length > 0) {
|
|
161
|
+
console.log(chalk.cyan('\n Recommendations:'));
|
|
162
|
+
for (const rec of recommendations) {
|
|
163
|
+
console.log(chalk.gray(` - ${rec}`));
|
|
228
164
|
}
|
|
229
165
|
}
|
|
230
166
|
}
|
|
@@ -235,16 +171,17 @@ Exit codes:
|
|
|
235
171
|
coverageData,
|
|
236
172
|
minCoverage: threshold,
|
|
237
173
|
prioritize: includeRisk ? 'risk' : 'size',
|
|
174
|
+
// #1014: gaps in an estimate are shown, never learned or published.
|
|
175
|
+
measured: !isEstimate,
|
|
238
176
|
});
|
|
239
177
|
if (gapResult.success && gapResult.value) {
|
|
240
178
|
const gaps = gapResult.value;
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}));
|
|
179
|
+
coverageResult.gaps = gaps.gaps.map(g => ({
|
|
180
|
+
file: g.file.replace(process.cwd() + '/', ''),
|
|
181
|
+
lines: g.lines,
|
|
182
|
+
riskScore: g.riskScore,
|
|
183
|
+
severity: g.severity,
|
|
184
|
+
}));
|
|
248
185
|
console.log(chalk.gray(` Total uncovered lines: ${gaps.totalUncoveredLines}`));
|
|
249
186
|
console.log(chalk.gray(` Estimated effort: ${gaps.estimatedEffort} hours\n`));
|
|
250
187
|
for (const gap of gaps.gaps.slice(0, 8)) {
|
|
@@ -307,26 +244,18 @@ Exit codes:
|
|
|
307
244
|
}
|
|
308
245
|
}
|
|
309
246
|
// Non-text format output (collected all data)
|
|
310
|
-
if (
|
|
247
|
+
if (format === 'json') {
|
|
311
248
|
emit(toJSON(coverageResult));
|
|
312
249
|
}
|
|
313
|
-
else if (
|
|
250
|
+
else if (format === 'markdown') {
|
|
314
251
|
emit(coverageToMarkdown(coverageResult));
|
|
315
252
|
}
|
|
316
253
|
else if (format === 'text') {
|
|
317
254
|
console.log(chalk.green('\n Coverage analysis complete\n'));
|
|
318
255
|
}
|
|
319
|
-
// Exit codes: 1 = below threshold, 2 = within 5% of threshold,
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
}
|
|
323
|
-
if (coverageResult) {
|
|
324
|
-
const avg = overallCoverage;
|
|
325
|
-
if (avg < threshold + 5 && avg >= threshold) {
|
|
326
|
-
await cleanupAndExit(2);
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
await cleanupAndExit(0);
|
|
256
|
+
// Exit codes: 1 = below threshold, 2 = within 5% of threshold,
|
|
257
|
+
// 0 = above threshold, 3 = UNMEASURED (estimate only) — shared with `aqe ci`.
|
|
258
|
+
await cleanupAndExit(coverageExitCode(outcome, threshold));
|
|
330
259
|
}
|
|
331
260
|
catch (error) {
|
|
332
261
|
console.error(chalk.red('\nFailed:'), error);
|
|
@@ -70,7 +70,13 @@ Examples:
|
|
|
70
70
|
// Fallback for environments where kernel isn't available
|
|
71
71
|
const store = new Map();
|
|
72
72
|
memory = {
|
|
73
|
-
|
|
73
|
+
// Like InMemoryWorkerMemory (#1028 N4): this process-local store holds
|
|
74
|
+
// only daemon keys, so a read of another namespace finds nothing.
|
|
75
|
+
async get(key, options) {
|
|
76
|
+
if (options?.namespace)
|
|
77
|
+
return undefined;
|
|
78
|
+
return store.get(key);
|
|
79
|
+
},
|
|
74
80
|
async set(key, value) { store.set(key, value); },
|
|
75
81
|
async search(pattern) {
|
|
76
82
|
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
@@ -5,6 +5,21 @@
|
|
|
5
5
|
* Handles pattern management and statistics subcommands.
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
|
+
/**
|
|
9
|
+
* How a learned pattern reached vector search, by cause (#981, review N1).
|
|
10
|
+
* - `indexed`: stored with its vector in the active index.
|
|
11
|
+
* - `sqlite`: an embedder produced the vector and SQLite holds it (vector
|
|
12
|
+
* search uses it now); only the ANN index (patterns.rvf) was not open in
|
|
13
|
+
* this process. It is ingested automatically the next time the index opens.
|
|
14
|
+
* - `pending`: no vector (no embedding runtime); text search only until an
|
|
15
|
+
* embedder is configured and `aqe learning backfill-embeddings` runs.
|
|
16
|
+
*/
|
|
17
|
+
export declare function describeVectorIndexState(pattern: {
|
|
18
|
+
embedding?: ArrayLike<number>;
|
|
19
|
+
}, indexUnavailableCause?: string): {
|
|
20
|
+
vectorIndex: 'indexed' | 'sqlite' | 'pending';
|
|
21
|
+
notice?: string;
|
|
22
|
+
};
|
|
8
23
|
/**
|
|
9
24
|
* Register stats, list, emit, learn, and search subcommands on the hooks command.
|
|
10
25
|
*/
|
|
@@ -7,7 +7,37 @@
|
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import { QE_HOOK_EVENTS } from '../../../learning/qe-hooks.js';
|
|
9
9
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
10
|
+
import { committedPendingIndexPatternId } from '../../../learning/pattern-mutation-error.js';
|
|
10
11
|
import { getHooksSystem, printJson, printSuccess, printError, } from './hooks-shared.js';
|
|
12
|
+
/**
|
|
13
|
+
* How a learned pattern reached vector search, by cause (#981, review N1).
|
|
14
|
+
* - `indexed`: stored with its vector in the active index.
|
|
15
|
+
* - `sqlite`: an embedder produced the vector and SQLite holds it (vector
|
|
16
|
+
* search uses it now); only the ANN index (patterns.rvf) was not open in
|
|
17
|
+
* this process. It is ingested automatically the next time the index opens.
|
|
18
|
+
* - `pending`: no vector (no embedding runtime); text search only until an
|
|
19
|
+
* embedder is configured and `aqe learning backfill-embeddings` runs.
|
|
20
|
+
*/
|
|
21
|
+
export function describeVectorIndexState(pattern, indexUnavailableCause) {
|
|
22
|
+
const hasVector = Boolean(pattern.embedding && pattern.embedding.length > 0);
|
|
23
|
+
if (!hasVector) {
|
|
24
|
+
return {
|
|
25
|
+
vectorIndex: 'pending',
|
|
26
|
+
notice: 'Pattern stored in SQLite without a vector (no embedding runtime is available). ' +
|
|
27
|
+
'Text search finds it now. Set AQE_EMBEDDER_ENDPOINT or install @huggingface/transformers, then run ' +
|
|
28
|
+
'`aqe learning backfill-embeddings` to enable semantic search for it.',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (indexUnavailableCause) {
|
|
32
|
+
return {
|
|
33
|
+
vectorIndex: 'sqlite',
|
|
34
|
+
notice: 'Pattern stored; its vector is stored in SQLite and vector search can use it now. ' +
|
|
35
|
+
`The ANN index (patterns.rvf) was not open in this process (${indexUnavailableCause}); ` +
|
|
36
|
+
'the vector is added to it automatically the next time the index opens.',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return { vectorIndex: 'indexed' };
|
|
40
|
+
}
|
|
11
41
|
/**
|
|
12
42
|
* Register stats, list, emit, learn, and search subcommands on the hooks command.
|
|
13
43
|
*/
|
|
@@ -161,10 +191,27 @@ export function registerStatsHooks(hooks) {
|
|
|
161
191
|
tags: options.tags || [],
|
|
162
192
|
},
|
|
163
193
|
});
|
|
194
|
+
// #981: COMMITTED_PENDING_INDEX means the authoritative SQLite row was
|
|
195
|
+
// written and only the derived vector index is unavailable (e.g. no
|
|
196
|
+
// embedding runtime). That is a stored pattern, not a failure.
|
|
197
|
+
let pattern = result.success ? result.value : null;
|
|
198
|
+
let indexCause;
|
|
164
199
|
if (!result.success) {
|
|
165
|
-
|
|
200
|
+
const committedId = committedPendingIndexPatternId(result.error);
|
|
201
|
+
if (!committedId) {
|
|
202
|
+
throw new Error(result.error.message);
|
|
203
|
+
}
|
|
204
|
+
pattern = await reasoningBank.getPattern(committedId);
|
|
205
|
+
if (!pattern) {
|
|
206
|
+
throw new Error(result.error.message);
|
|
207
|
+
}
|
|
208
|
+
const cause = result.error.cause;
|
|
209
|
+
indexCause = cause instanceof Error ? cause.message : 'the vector index is unavailable';
|
|
166
210
|
}
|
|
167
|
-
|
|
211
|
+
if (!pattern) {
|
|
212
|
+
throw new Error('learn failed: no pattern returned');
|
|
213
|
+
}
|
|
214
|
+
const { vectorIndex, notice: pendingWarning } = describeVectorIndexState(pattern, indexCause);
|
|
168
215
|
if (options.json) {
|
|
169
216
|
printJson({
|
|
170
217
|
success: true,
|
|
@@ -174,6 +221,8 @@ export function registerStatsHooks(hooks) {
|
|
|
174
221
|
type: pattern.patternType,
|
|
175
222
|
domain: pattern.qeDomain,
|
|
176
223
|
},
|
|
224
|
+
vectorIndex,
|
|
225
|
+
...(pendingWarning ? { warning: pendingWarning } : {}),
|
|
177
226
|
});
|
|
178
227
|
}
|
|
179
228
|
else {
|
|
@@ -181,6 +230,9 @@ export function registerStatsHooks(hooks) {
|
|
|
181
230
|
console.log(chalk.dim(` ID: ${pattern.id}`));
|
|
182
231
|
console.log(chalk.dim(` Domain: ${pattern.qeDomain}`));
|
|
183
232
|
console.log(chalk.dim(` Tier: ${pattern.tier}`));
|
|
233
|
+
if (pendingWarning) {
|
|
234
|
+
console.log(chalk.yellow(` ${vectorIndex === 'pending' ? 'Vector index pending' : 'Vector index'}: ${pendingWarning}`));
|
|
235
|
+
}
|
|
184
236
|
}
|
|
185
237
|
}
|
|
186
238
|
catch (error) {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { Command } from 'commander';
|
|
13
13
|
import chalk from 'chalk';
|
|
14
14
|
import path from 'node:path';
|
|
15
|
+
import { randomUUID } from 'node:crypto';
|
|
15
16
|
import { findProjectRoot } from '../../kernel/unified-memory.js';
|
|
16
17
|
import { existsSync, writeFileSync, readFileSync, copyFileSync, renameSync } from 'node:fs';
|
|
17
18
|
import { safeJsonParse } from '../../shared/safe-json.js';
|
|
@@ -24,6 +25,7 @@ import { backupLearningDatabase, restoreLearningDatabase } from './learning-snap
|
|
|
24
25
|
import { createSQLitePatternStore } from '../../learning/sqlite-persistence.js';
|
|
25
26
|
import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
|
|
26
27
|
import { inspectEmbeddingSpaceRows } from '../../learning/embedding-space.js';
|
|
28
|
+
import { committedPendingIndexPatternId } from '../../learning/pattern-mutation-error.js';
|
|
27
29
|
// Extracted helpers
|
|
28
30
|
import { initializeLearningSystem, printJson, printSuccess, printError, printInfo, displayDashboard, getDbPath, compressFile, decompressFile, verifyDatabaseIntegrity, getSchemaVersion, padRight, EXPORT_FORMAT_VERSION, DOMAIN_MAPPING, PATTERN_TYPE_MAPPING, } from './learning-helpers.js';
|
|
29
31
|
// ============================================================================
|
|
@@ -151,11 +153,29 @@ function registerBackfillEmbeddingsCommand(learning) {
|
|
|
151
153
|
}
|
|
152
154
|
const result = await store.backfillEmbeddings(batchSize);
|
|
153
155
|
const after = store.getGhostPatternCount();
|
|
156
|
+
// #981 review B2: backfill writes SQLite vectors only. Opening the
|
|
157
|
+
// reasoning bank reconciles the RVF index with them (ingesting just
|
|
158
|
+
// the ids it is missing), so backfilled patterns reach vector search
|
|
159
|
+
// even when patterns.rvf already held other vectors.
|
|
160
|
+
let rvfIndex = { skipped: 'vector index unavailable' };
|
|
161
|
+
if (result.processed > 0) {
|
|
162
|
+
try {
|
|
163
|
+
const reasoningBank = await initializeLearningSystem();
|
|
164
|
+
const reconciled = reasoningBank.getLastVectorReconcile() ?? reasoningBank.reconcileVectorIndex();
|
|
165
|
+
if (reconciled) {
|
|
166
|
+
rvfIndex = { ingested: reconciled.ingested, missing: reconciled.missing, capped: reconciled.capped };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
rvfIndex = { skipped: error instanceof Error ? error.message : String(error) };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
154
173
|
const output = {
|
|
155
174
|
...result,
|
|
156
175
|
batchSize,
|
|
157
176
|
missingBefore: before.withoutEmbeddings,
|
|
158
177
|
missingAfter: after.withoutEmbeddings,
|
|
178
|
+
rvfIndex,
|
|
159
179
|
};
|
|
160
180
|
if (options.json) {
|
|
161
181
|
printJson(output);
|
|
@@ -167,6 +187,9 @@ function registerBackfillEmbeddingsCommand(learning) {
|
|
|
167
187
|
console.log(` Errors: ${result.errors}`);
|
|
168
188
|
console.log(` Remaining missing: ${after.withoutEmbeddings}`);
|
|
169
189
|
console.log(` Method: ${result.method}`);
|
|
190
|
+
console.log('ingested' in rvfIndex
|
|
191
|
+
? ` Vector index (RVF): ingested ${rvfIndex.ingested} of ${rvfIndex.missing} missing${rvfIndex.capped ? ' (capped; rerun to continue)' : ''}`
|
|
192
|
+
: ` Vector index (RVF): not updated (${rvfIndex.skipped})`);
|
|
170
193
|
console.log('');
|
|
171
194
|
}
|
|
172
195
|
}
|
|
@@ -416,6 +439,7 @@ function registerImportCommand(learning) {
|
|
|
416
439
|
const reasoningBank = await initializeLearningSystem();
|
|
417
440
|
let imported = 0;
|
|
418
441
|
let skipped = 0;
|
|
442
|
+
let pendingIndex = 0;
|
|
419
443
|
const errors = [];
|
|
420
444
|
if (!options.dryRun) {
|
|
421
445
|
for (const pattern of importData.patterns) {
|
|
@@ -424,8 +448,17 @@ function registerImportCommand(learning) {
|
|
|
424
448
|
patternType: pattern.patternType, name: pattern.name,
|
|
425
449
|
description: pattern.description, template: pattern.template, context: pattern.context,
|
|
426
450
|
});
|
|
427
|
-
if (result.success)
|
|
451
|
+
if (result.success) {
|
|
452
|
+
imported++;
|
|
453
|
+
// #981 review N2: stored text-only (no embedding runtime) → vector pending.
|
|
454
|
+
if (!(result.value.embedding && result.value.embedding.length > 0))
|
|
455
|
+
pendingIndex++;
|
|
456
|
+
}
|
|
457
|
+
// #981: the row committed; only its vector index is pending.
|
|
458
|
+
else if (committedPendingIndexPatternId(result.error)) {
|
|
428
459
|
imported++;
|
|
460
|
+
pendingIndex++;
|
|
461
|
+
}
|
|
429
462
|
else {
|
|
430
463
|
skipped++;
|
|
431
464
|
errors.push(`${pattern.name}: ${result.error.message}`);
|
|
@@ -438,7 +471,7 @@ function registerImportCommand(learning) {
|
|
|
438
471
|
}
|
|
439
472
|
}
|
|
440
473
|
if (options.json) {
|
|
441
|
-
printJson({ dryRun: options.dryRun || false, totalPatterns: importData.patterns.length, imported, skipped, errors });
|
|
474
|
+
printJson({ dryRun: options.dryRun || false, totalPatterns: importData.patterns.length, imported, skipped, pendingIndex, errors });
|
|
442
475
|
}
|
|
443
476
|
else {
|
|
444
477
|
console.log(chalk.bold('\n📥 Pattern Import\n'));
|
|
@@ -450,6 +483,8 @@ function registerImportCommand(learning) {
|
|
|
450
483
|
}
|
|
451
484
|
else {
|
|
452
485
|
console.log(chalk.green(`\n Imported: ${imported}`));
|
|
486
|
+
if (pendingIndex > 0)
|
|
487
|
+
console.log(chalk.yellow(` Vector index pending: ${pendingIndex} (run "aqe learning backfill-embeddings" once an embedder is available)`));
|
|
453
488
|
if (skipped > 0)
|
|
454
489
|
console.log(chalk.yellow(` Skipped: ${skipped}`));
|
|
455
490
|
}
|
|
@@ -593,7 +628,8 @@ function registerExtractCommand(learning) {
|
|
|
593
628
|
template: { type: 'code', content: templateContent, variables: [{ name: 'implementation', type: 'code', required: true, description: 'Implementation code for this pattern' }] },
|
|
594
629
|
context: { tags: [p.domain, p.patternType, `sources:${p.sourceCount}`, `reward:${p.avgReward.toFixed(2)}`] },
|
|
595
630
|
});
|
|
596
|
-
|
|
631
|
+
// #981: a committed row with a pending vector index is stored.
|
|
632
|
+
if (result.success || committedPendingIndexPatternId(result.error))
|
|
597
633
|
stored++;
|
|
598
634
|
else
|
|
599
635
|
errors.push(`${p.name}: ${result.error.message}`);
|
|
@@ -702,8 +738,8 @@ function registerBackupCommand(learning) {
|
|
|
702
738
|
const dbPath = getDbPath();
|
|
703
739
|
if (!existsSync(dbPath))
|
|
704
740
|
throw new Error(`No learning database found at: ${dbPath}`);
|
|
705
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0,
|
|
706
|
-
const defaultOutput = path.join(process.cwd(), 'backups', `learning-${timestamp}.db`);
|
|
741
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 23);
|
|
742
|
+
const defaultOutput = path.join(process.cwd(), 'backups', `learning-${timestamp}-${randomUUID()}.db`);
|
|
707
743
|
const outputPath = options.output ? path.resolve(options.output) : defaultOutput;
|
|
708
744
|
const snapshot = await backupLearningDatabase(dbPath, outputPath, options);
|
|
709
745
|
const { backupPath: finalPath, sourceSizeKB, backupSizeKB: finalSizeKB, schemaVersion } = snapshot;
|
|
@@ -962,7 +998,8 @@ function registerImportMergeCommand(learning) {
|
|
|
962
998
|
}
|
|
963
999
|
try {
|
|
964
1000
|
const result = await reasoningBank.storePattern({ patternType: pattern.patternType, name: pattern.name, description: pattern.description, template: pattern.template, context: pattern.context });
|
|
965
|
-
|
|
1001
|
+
// #981: a committed row with a pending vector index is imported.
|
|
1002
|
+
if (result.success || committedPendingIndexPatternId(result.error)) {
|
|
966
1003
|
if (isDuplicate)
|
|
967
1004
|
updated++;
|
|
968
1005
|
else
|
|
@@ -1148,14 +1185,18 @@ function registerDreamCommand(learning) {
|
|
|
1148
1185
|
template: { type: 'workflow', content: insight.suggestedAction || insight.description, variables: [] },
|
|
1149
1186
|
context: { tags: ['dream-generated', insight.type, ...insight.sourceConcepts.slice(0, 3)], complexity: 'medium' },
|
|
1150
1187
|
});
|
|
1188
|
+
// #981: a committed row with a pending vector index is a created pattern.
|
|
1189
|
+
const createdPatternId = patternResult.success
|
|
1190
|
+
? patternResult.value.id
|
|
1191
|
+
: committedPendingIndexPatternId(patternResult.error);
|
|
1151
1192
|
if (options.json) {
|
|
1152
|
-
printJson({ insightId: insight.id, applied: result.success, patternId:
|
|
1193
|
+
printJson({ insightId: insight.id, applied: result.success, patternId: createdPatternId, error: result.error || (createdPatternId ? null : patternResult.success ? null : patternResult.error?.message) });
|
|
1153
1194
|
}
|
|
1154
1195
|
else {
|
|
1155
1196
|
if (result.success) {
|
|
1156
1197
|
printSuccess(`Applied insight ${insight.id.slice(0, 8)}`);
|
|
1157
|
-
if (
|
|
1158
|
-
printSuccess(`Created pattern ${
|
|
1198
|
+
if (createdPatternId)
|
|
1199
|
+
printSuccess(`Created pattern ${createdPatternId} in ReasoningBank`);
|
|
1159
1200
|
}
|
|
1160
1201
|
else
|
|
1161
1202
|
printError(`Failed to apply insight: ${result.error}`);
|
|
@@ -5,5 +5,21 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
import type { CLIContext } from '../handlers/interfaces.js';
|
|
8
|
+
import { type SecurityScanResult } from '../utils/ci-output.js';
|
|
9
|
+
/** Name of the CLI check for the OSV dependency advisory scan (#1049). */
|
|
10
|
+
export declare const DEPENDENCY_CHECK = "Dependency advisories";
|
|
11
|
+
/** #1049: dependency advisories could not be checked; the dependency result is UNMEASURED (same code as coverage/quality). */
|
|
12
|
+
export declare const EXIT_DEPENDENCIES_UNMEASURED = 3;
|
|
13
|
+
/**
|
|
14
|
+
* `aqe security` exit contract:
|
|
15
|
+
* 0 = every requested check completed, no medium+ findings
|
|
16
|
+
* 1 = high/critical findings, non-compliance, or a non-dependency check incomplete/failed
|
|
17
|
+
* 2 = medium findings only, every requested check complete
|
|
18
|
+
* 3 = dependency advisories could not be checked (failed or partial OSV lookup) and
|
|
19
|
+
* there are no high/critical findings, non-compliance or other incomplete checks:
|
|
20
|
+
* UNMEASURED, never a clean exit (#1049). Medium findings plus an incomplete
|
|
21
|
+
* dependency scan also exit 3: the result is unmeasured, not a medium-only verdict.
|
|
22
|
+
*/
|
|
23
|
+
export declare function securityExitCode(result: SecurityScanResult): number;
|
|
8
24
|
export declare function createSecurityCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>): Command;
|
|
9
25
|
//# sourceMappingURL=security.d.ts.map
|