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
|
@@ -8,17 +8,57 @@ import chalk from 'chalk';
|
|
|
8
8
|
import { discoverSecurityFiles } from '../../domains/security-compliance/scan-discovery.js';
|
|
9
9
|
import { FilePath } from '../../shared/value-objects/index.js';
|
|
10
10
|
import { writeOutput, toJSON, toSARIF, securityToMarkdown } from '../utils/ci-output.js';
|
|
11
|
+
import { runDependencyAdvisoryScan } from '../../domains/security-compliance/dependency-advisory-engine.js';
|
|
12
|
+
import { resolve as resolvePath } from 'node:path';
|
|
13
|
+
/** Name of the CLI check for the OSV dependency advisory scan (#1049). */
|
|
14
|
+
export const DEPENDENCY_CHECK = 'Dependency advisories';
|
|
15
|
+
/** #1049: dependency advisories could not be checked; the dependency result is UNMEASURED (same code as coverage/quality). */
|
|
16
|
+
export const EXIT_DEPENDENCIES_UNMEASURED = 3;
|
|
17
|
+
/**
|
|
18
|
+
* `aqe security` exit contract:
|
|
19
|
+
* 0 = every requested check completed, no medium+ findings
|
|
20
|
+
* 1 = high/critical findings, non-compliance, or a non-dependency check incomplete/failed
|
|
21
|
+
* 2 = medium findings only, every requested check complete
|
|
22
|
+
* 3 = dependency advisories could not be checked (failed or partial OSV lookup) and
|
|
23
|
+
* there are no high/critical findings, non-compliance or other incomplete checks:
|
|
24
|
+
* UNMEASURED, never a clean exit (#1049). Medium findings plus an incomplete
|
|
25
|
+
* dependency scan also exit 3: the result is unmeasured, not a medium-only verdict.
|
|
26
|
+
*/
|
|
27
|
+
export function securityExitCode(result) {
|
|
28
|
+
const checks = result.checks ?? [];
|
|
29
|
+
const highOrCritical = result.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical');
|
|
30
|
+
const nonCompliant = result.compliance?.compliant === false;
|
|
31
|
+
if (result.status !== 'complete' || nonCompliant) {
|
|
32
|
+
const dependencyUnmeasured = checks.some(check => check.name === DEPENDENCY_CHECK && check.status !== 'complete');
|
|
33
|
+
const otherIncomplete = checks.some(check => check.name !== DEPENDENCY_CHECK && check.status !== 'complete');
|
|
34
|
+
if (dependencyUnmeasured && !otherIncomplete && !nonCompliant && !highOrCritical)
|
|
35
|
+
return EXIT_DEPENDENCIES_UNMEASURED;
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
if (highOrCritical)
|
|
39
|
+
return 1;
|
|
40
|
+
if (result.vulnerabilities.some(v => v.severity === 'medium'))
|
|
41
|
+
return 2;
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
11
44
|
export function createSecurityCommand(context, cleanupAndExit, ensureInitialized) {
|
|
12
45
|
const securityCmd = new Command('security')
|
|
13
46
|
.description('Security scanning and URL validation')
|
|
14
47
|
.option('--sast', 'Run SAST scan')
|
|
15
48
|
.option('--dast', 'Run DAST scan')
|
|
49
|
+
.option('--dependencies', 'Check package.json dependencies against OSV advisories (sends package names and versions to the OSV API)')
|
|
16
50
|
.option('--compliance <frameworks>', 'Check compliance (gdpr,hipaa,soc2)', '')
|
|
17
51
|
.option('--url-validate <url>', 'Validate a URL for security threats and PII exposure')
|
|
18
52
|
.option('--no-pii', 'Disable PII scanning when using --url-validate')
|
|
19
53
|
.option('-t, --target <path>', 'Target directory to scan', '.')
|
|
20
54
|
.option('-F, --format <format>', 'Output format (text|json|sarif|markdown)', 'text')
|
|
21
55
|
.option('-o, --output <path>', 'Write output to file')
|
|
56
|
+
.addHelpText('after', `
|
|
57
|
+
Exit codes:
|
|
58
|
+
0 every requested check completed; no medium or higher findings
|
|
59
|
+
1 high/critical findings, non-compliance, or a check failed / is incomplete
|
|
60
|
+
2 medium findings only
|
|
61
|
+
${EXIT_DEPENDENCIES_UNMEASURED} UNMEASURED: dependency advisories could not be checked (OSV unreachable, rate limited, or partial)`)
|
|
22
62
|
.action(async (options) => {
|
|
23
63
|
if (!await ensureInitialized())
|
|
24
64
|
return;
|
|
@@ -86,13 +126,13 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
|
|
|
86
126
|
return; // Don't fall through to SAST/DAST path
|
|
87
127
|
}
|
|
88
128
|
const format = options.format;
|
|
89
|
-
const runSAST = options.sast || (!options.dast && !options.compliance);
|
|
129
|
+
const runSAST = options.sast || (!options.dast && !options.compliance && !options.dependencies);
|
|
90
130
|
const frameworks = options.compliance
|
|
91
131
|
? options.compliance.split(',').map((value) => value.trim()).filter(Boolean)
|
|
92
132
|
: [];
|
|
93
133
|
const scanResult = {
|
|
94
134
|
vulnerabilities: [], target: options.target,
|
|
95
|
-
scanType: [runSAST && 'SAST', options.dast && 'DAST', frameworks.length > 0 && 'Compliance'].filter(Boolean).join('+'),
|
|
135
|
+
scanType: [runSAST && 'SAST', options.dast && 'DAST', options.dependencies && 'Dependencies', frameworks.length > 0 && 'Compliance'].filter(Boolean).join('+'),
|
|
96
136
|
checks: [], status: 'not-run',
|
|
97
137
|
};
|
|
98
138
|
const checks = scanResult.checks;
|
|
@@ -133,6 +173,18 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
|
|
|
133
173
|
checks.push({ name: 'Source discovery', status: discovery.status, reason: 'Requested source discovery did not complete; inspect discovery issues.' });
|
|
134
174
|
}
|
|
135
175
|
}
|
|
176
|
+
if (options.dependencies) {
|
|
177
|
+
// #1049: a failed or partial OSV lookup is reported, never a clean dependency scan.
|
|
178
|
+
const outcome = await runDependencyAdvisoryScan({ scanPackageJson: (manifest) => securityAPI.runDependencyScan(manifest) }, resolvePath(options.target));
|
|
179
|
+
scanResult.dependencyScan = outcome.report;
|
|
180
|
+
scanResult.vulnerabilities.push(...outcome.vulnerabilities.map(formatVulnerability));
|
|
181
|
+
const status = outcome.report.status;
|
|
182
|
+
checks.push({
|
|
183
|
+
name: DEPENDENCY_CHECK,
|
|
184
|
+
status: status === 'complete' ? 'complete' : status === 'incomplete' ? 'partial' : status === 'failed' ? 'failed' : 'not-run',
|
|
185
|
+
...(status !== 'complete' ? { reason: outcome.report.message } : {}),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
136
188
|
if (frameworks.length > 0) {
|
|
137
189
|
const issues = [];
|
|
138
190
|
let compliant = true;
|
|
@@ -189,13 +241,7 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
|
|
|
189
241
|
return cleanupAndExit(1);
|
|
190
242
|
}
|
|
191
243
|
// Incomplete execution never has a clean exit, even if it found no vulnerabilities.
|
|
192
|
-
|
|
193
|
-
return cleanupAndExit(1);
|
|
194
|
-
if (scanResult.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical'))
|
|
195
|
-
return cleanupAndExit(1);
|
|
196
|
-
if (scanResult.vulnerabilities.some(v => v.severity === 'medium'))
|
|
197
|
-
return cleanupAndExit(2);
|
|
198
|
-
return cleanupAndExit(0);
|
|
244
|
+
return cleanupAndExit(securityExitCode(scanResult));
|
|
199
245
|
});
|
|
200
246
|
return securityCmd;
|
|
201
247
|
}
|
|
@@ -227,6 +273,7 @@ function formatVulnerability(value) {
|
|
|
227
273
|
severity: value.severity, type: value.title || value.category,
|
|
228
274
|
file: value.location.file, line: value.location.line ?? 1,
|
|
229
275
|
message: value.description,
|
|
276
|
+
...(value.cveId ? { cveId: value.cveId } : {}),
|
|
230
277
|
};
|
|
231
278
|
}
|
|
232
279
|
return value;
|
|
@@ -265,6 +312,26 @@ function printSecurityResult(result) {
|
|
|
265
312
|
...(result.evidence?.files.filter(file => file.status !== 'analyzed' && file.status !== 'excluded').map(file => `${file.path}: ${file.status}${file.reason ? ` (${file.reason})` : ''}`) ?? []),
|
|
266
313
|
...(result.discovery?.issues.map(issue => `${issue.path}: ${issue.reason}`) ?? []),
|
|
267
314
|
];
|
|
315
|
+
if (result.dependencyScan && result.dependencyScan.status !== 'complete') {
|
|
316
|
+
const unchecked = result.dependencyScan.uncheckedPackages;
|
|
317
|
+
console.log(chalk.yellow(` ${result.dependencyScan.message}`));
|
|
318
|
+
for (const pkg of unchecked.slice(0, 10)) {
|
|
319
|
+
const where = `${pkg.member ? `${pkg.member}: ` : ''}${pkg.name}@${pkg.version}${pkg.lockedVersion ? ` (lockfile ${pkg.lockedVersion})` : ''}`;
|
|
320
|
+
console.log(chalk.yellow(` not checked: ${where} (${pkg.reason})`));
|
|
321
|
+
}
|
|
322
|
+
if (unchecked.length > 10)
|
|
323
|
+
console.log(chalk.yellow(` ... and ${unchecked.length - 10} more unchecked package(s)`));
|
|
324
|
+
}
|
|
325
|
+
else if (result.dependencyScan) {
|
|
326
|
+
console.log(` ${result.dependencyScan.message}`);
|
|
327
|
+
}
|
|
328
|
+
if (result.dependencyScan?.localPackages.length) {
|
|
329
|
+
const local = result.dependencyScan.localPackages;
|
|
330
|
+
console.log(` Local packages (not OSV subjects, excluded): ${local.slice(0, 10).map(p => `${p.member ? `${p.member}: ` : ''}${p.name}`).join(', ')}${local.length > 10 ? ` ... and ${local.length - 10} more` : ''}`);
|
|
331
|
+
}
|
|
332
|
+
for (const problem of result.dependencyScan?.resolutionErrors ?? []) {
|
|
333
|
+
console.log(chalk.yellow(` incomplete: ${problem}`));
|
|
334
|
+
}
|
|
268
335
|
for (const limitation of limitations.slice(0, 10))
|
|
269
336
|
console.log(chalk.yellow(` ${limitation}`));
|
|
270
337
|
if (limitations.length > 10)
|
|
@@ -7,7 +7,7 @@ import { Command } from 'commander';
|
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import { filterTestFilesForFramework, walkSourceFiles } from '../utils/file-discovery.js';
|
|
9
9
|
import { writeOutput, toJSON, toJUnit, testRunToMarkdown } from '../utils/ci-output.js';
|
|
10
|
-
import {
|
|
10
|
+
import { writeTestRunEvidence } from '../../domains/quality-assessment/quality-evidence.js';
|
|
11
11
|
import { validateBehaviorExamples } from '../../domains/test-generation/services/behavior-example-validation.js';
|
|
12
12
|
import { findProjectRoot } from '../../kernel/project-root.js';
|
|
13
13
|
import { writeGeneratedTestFile } from '../utils/generated-test-writer.js';
|
|
@@ -192,12 +192,11 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
192
192
|
duration: run.duration,
|
|
193
193
|
measuredAt: new Date().toISOString(),
|
|
194
194
|
}, { namespace: 'test-execution', persist: true });
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
});
|
|
195
|
+
// #1027 NB1: the shared run-scoped writer (same as test_execute_parallel),
|
|
196
|
+
// stamped with this run's id so it pairs with the run's own coverage.
|
|
197
|
+
await writeTestRunEvidence(context.kernel.memory, {
|
|
198
|
+
runId: run.runId, passed: run.passed, failed: run.failed, skipped: run.skipped,
|
|
199
|
+
}, { source: 'aqe test execute' });
|
|
201
200
|
if (format === 'json') {
|
|
202
201
|
writeOutput(toJSON(run), options.output);
|
|
203
202
|
}
|
|
@@ -227,13 +227,17 @@ export function createWorkflowCommand(context, cleanupAndExit, ensureInitialized
|
|
|
227
227
|
console.log(chalk.gray(' No scheduled workflows\n'));
|
|
228
228
|
}
|
|
229
229
|
else {
|
|
230
|
+
// #991: entries loaded from a hand-edited or legacy file may lack
|
|
231
|
+
// fields; show "(missing)" rather than "undefined".
|
|
232
|
+
const show = (value) => value === undefined || value === null || value === '' ? '(missing)' : String(value);
|
|
230
233
|
for (const sched of scheduled) {
|
|
231
234
|
const statusIcon = sched.enabled ? chalk.green('*') : chalk.gray('o');
|
|
232
|
-
console.log(` ${statusIcon} ${chalk.white(sched.workflowId)}`);
|
|
233
|
-
console.log(chalk.gray(` ID: ${sched.id}`));
|
|
234
|
-
|
|
235
|
-
console.log(chalk.gray(`
|
|
236
|
-
console.log(chalk.gray(`
|
|
235
|
+
console.log(` ${statusIcon} ${chalk.white(show(sched.workflowId))}`);
|
|
236
|
+
console.log(chalk.gray(` ID: ${show(sched.id)}`));
|
|
237
|
+
const description = sched.scheduleDescription ? ` (${sched.scheduleDescription})` : '';
|
|
238
|
+
console.log(chalk.gray(` Schedule: ${show(sched.schedule)}${description}`));
|
|
239
|
+
console.log(chalk.gray(` File: ${show(sched.pipelinePath)}`));
|
|
240
|
+
console.log(chalk.gray(` Next run: ${show(sched.nextRun)}`));
|
|
237
241
|
if (sched.lastRun) {
|
|
238
242
|
console.log(chalk.gray(` Last run: ${sched.lastRun}`));
|
|
239
243
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aqe init` guard for shared directories (#1006, review of #1026 N3).
|
|
3
|
+
*
|
|
4
|
+
* Initializing in the OS temp dir or a system dir wrote `<tmp>/.agentic-qe`
|
|
5
|
+
* and `.mcp.json` there, but every later command resolves such a dir to a
|
|
6
|
+
* private scratch root, so the initialized store was never used. Refusing
|
|
7
|
+
* with a clear next step is less surprising than initializing a hidden root.
|
|
8
|
+
*
|
|
9
|
+
* @module cli/handlers/init-guard
|
|
10
|
+
*/
|
|
11
|
+
/** The explicit root is also the destination for all init-generated files. */
|
|
12
|
+
export declare function initProjectRoot(cwd?: string, env?: NodeJS.ProcessEnv): string;
|
|
13
|
+
/**
|
|
14
|
+
* Error message when `projectRoot` must not be initialized, otherwise null.
|
|
15
|
+
*
|
|
16
|
+
* An explicit root (`AQE_PROJECT_ROOT`) is refused only when it is a hard-stop
|
|
17
|
+
* directory (OS temp dir, `/`, `/home`, ...), or a sticky world-writable
|
|
18
|
+
* directory WITHOUT `.git`. This mirrors `findProjectRoot`, which keeps a
|
|
19
|
+
* sticky (mode 1777) directory that is itself a repo root as its own root, so
|
|
20
|
+
* the explicit root stays the escape hatch for such a repository. A derived
|
|
21
|
+
* root (the cwd) keeps the stricter rule: any shared directory is refused.
|
|
22
|
+
*/
|
|
23
|
+
export declare function sharedRootInitError(projectRoot: string, explicit: boolean): string | null;
|
|
24
|
+
/** Error message when the selected root must not be initialized, otherwise null. */
|
|
25
|
+
export declare function sharedDirInitError(cwd: string, env?: NodeJS.ProcessEnv): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Error message when an explicit `AQE_PROJECT_ROOT` is not an existing
|
|
28
|
+
* directory, otherwise null. A typo must not silently create and initialize a
|
|
29
|
+
* new project somewhere else. Must run before anything creates the root (the
|
|
30
|
+
* CLI's token bootstrap does `mkdir -p <root>/.agentic-qe` at startup).
|
|
31
|
+
*/
|
|
32
|
+
export declare function explicitRootError(cwd?: string, env?: NodeJS.ProcessEnv): string | null;
|
|
33
|
+
//# sourceMappingURL=init-guard.d.ts.map
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aqe init` guard for shared directories (#1006, review of #1026 N3).
|
|
3
|
+
*
|
|
4
|
+
* Initializing in the OS temp dir or a system dir wrote `<tmp>/.agentic-qe`
|
|
5
|
+
* and `.mcp.json` there, but every later command resolves such a dir to a
|
|
6
|
+
* private scratch root, so the initialized store was never used. Refusing
|
|
7
|
+
* with a clear next step is less surprising than initializing a hidden root.
|
|
8
|
+
*
|
|
9
|
+
* @module cli/handlers/init-guard
|
|
10
|
+
*/
|
|
11
|
+
import { isHardStopDir, isSharedSystemDir, isStickyWorldWritable } from '../../kernel/shared-dirs.js';
|
|
12
|
+
import { existsSync, statSync } from 'node:fs';
|
|
13
|
+
import { join, resolve } from 'node:path';
|
|
14
|
+
/** The explicit root is also the destination for all init-generated files. */
|
|
15
|
+
export function initProjectRoot(cwd = process.cwd(), env = process.env) {
|
|
16
|
+
return resolve(cwd, env.AQE_PROJECT_ROOT || '.');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error message when `projectRoot` must not be initialized, otherwise null.
|
|
20
|
+
*
|
|
21
|
+
* An explicit root (`AQE_PROJECT_ROOT`) is refused only when it is a hard-stop
|
|
22
|
+
* directory (OS temp dir, `/`, `/home`, ...), or a sticky world-writable
|
|
23
|
+
* directory WITHOUT `.git`. This mirrors `findProjectRoot`, which keeps a
|
|
24
|
+
* sticky (mode 1777) directory that is itself a repo root as its own root, so
|
|
25
|
+
* the explicit root stays the escape hatch for such a repository. A derived
|
|
26
|
+
* root (the cwd) keeps the stricter rule: any shared directory is refused.
|
|
27
|
+
*/
|
|
28
|
+
export function sharedRootInitError(projectRoot, explicit) {
|
|
29
|
+
const shared = explicit
|
|
30
|
+
? isHardStopDir(projectRoot)
|
|
31
|
+
|| (isStickyWorldWritable(projectRoot) && !existsSync(join(projectRoot, '.git')))
|
|
32
|
+
: isSharedSystemDir(projectRoot);
|
|
33
|
+
if (!shared)
|
|
34
|
+
return null;
|
|
35
|
+
return (`Refusing to initialize in "${projectRoot}": it is a shared temp/system directory, ` +
|
|
36
|
+
'so a store here would be shared by every unrelated project below it and ' +
|
|
37
|
+
'later commands would not use it. Create a project directory first ' +
|
|
38
|
+
'(mkdir my-project && cd my-project) or set AQE_PROJECT_ROOT to a project directory.');
|
|
39
|
+
}
|
|
40
|
+
/** Error message when the selected root must not be initialized, otherwise null. */
|
|
41
|
+
export function sharedDirInitError(cwd, env = process.env) {
|
|
42
|
+
return sharedRootInitError(initProjectRoot(cwd, env), Boolean(env.AQE_PROJECT_ROOT));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Error message when an explicit `AQE_PROJECT_ROOT` is not an existing
|
|
46
|
+
* directory, otherwise null. A typo must not silently create and initialize a
|
|
47
|
+
* new project somewhere else. Must run before anything creates the root (the
|
|
48
|
+
* CLI's token bootstrap does `mkdir -p <root>/.agentic-qe` at startup).
|
|
49
|
+
*/
|
|
50
|
+
export function explicitRootError(cwd = process.cwd(), env = process.env) {
|
|
51
|
+
if (!env.AQE_PROJECT_ROOT)
|
|
52
|
+
return null;
|
|
53
|
+
const root = initProjectRoot(cwd, env);
|
|
54
|
+
let isDir = false;
|
|
55
|
+
try {
|
|
56
|
+
isDir = statSync(root).isDirectory();
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
isDir = false;
|
|
60
|
+
}
|
|
61
|
+
if (isDir)
|
|
62
|
+
return null;
|
|
63
|
+
return (`AQE_PROJECT_ROOT "${root}" is not an existing directory. ` +
|
|
64
|
+
'Create it first (mkdir -p) or correct the path; aqe init does not create the project root.');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=init-guard.js.map
|
|
@@ -80,6 +80,9 @@ export interface InitJsonOutput {
|
|
|
80
80
|
error?: string;
|
|
81
81
|
};
|
|
82
82
|
};
|
|
83
|
+
/** #1017: pre-3.15.6 test-named skill files removed / kept by init. */
|
|
84
|
+
retiredAssetsRemoved?: string[];
|
|
85
|
+
retiredAssetsKept?: string[];
|
|
83
86
|
};
|
|
84
87
|
totalDurationMs: number;
|
|
85
88
|
timestamp: string;
|
|
@@ -9,6 +9,7 @@ import { createRequire } from 'node:module';
|
|
|
9
9
|
import { ALL_DOMAINS } from '../../shared/types/index.js';
|
|
10
10
|
import { toErrorMessage } from '../../shared/error-utils.js';
|
|
11
11
|
import { resolveInitFlags } from './init-flags.js';
|
|
12
|
+
import { initProjectRoot, sharedRootInitError } from './init-guard.js';
|
|
12
13
|
// ============================================================================
|
|
13
14
|
// Init Handler
|
|
14
15
|
// ============================================================================
|
|
@@ -88,6 +89,15 @@ export class InitHandler {
|
|
|
88
89
|
});
|
|
89
90
|
}
|
|
90
91
|
try {
|
|
92
|
+
const projectRoot = initProjectRoot();
|
|
93
|
+
// #1006 (review of #1026 N3): never initialize a store in a shared
|
|
94
|
+
// temp/system dir; later commands would resolve elsewhere and ignore it.
|
|
95
|
+
const sharedDirError = sharedRootInitError(projectRoot, Boolean(process.env.AQE_PROJECT_ROOT));
|
|
96
|
+
if (sharedDirError) {
|
|
97
|
+
console.error(chalk.red(`\n ${sharedDirError}\n`));
|
|
98
|
+
await this.cleanupAndExit(1);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
91
101
|
// Expand --with-all-platforms into individual flags
|
|
92
102
|
if (options.withAllPlatforms) {
|
|
93
103
|
options.withCopilot = true;
|
|
@@ -108,11 +118,11 @@ export class InitHandler {
|
|
|
108
118
|
console.log(chalk.blue('\n Agentic QE v3 Initialization\n'));
|
|
109
119
|
// Use modular orchestrator for --auto or --modular
|
|
110
120
|
if (options.auto || options.modular || options.browserEngine) {
|
|
111
|
-
await this.runModularInit(options, context);
|
|
121
|
+
await this.runModularInit(options, context, projectRoot);
|
|
112
122
|
return;
|
|
113
123
|
}
|
|
114
124
|
// Legacy wizard mode using InitOrchestrator
|
|
115
|
-
await this.runLegacyWizard(options, context);
|
|
125
|
+
await this.runLegacyWizard(options, context, projectRoot);
|
|
116
126
|
return;
|
|
117
127
|
}
|
|
118
128
|
// Platform provisioning (--with-opencode, --with-n8n, --with-<editor>, ...)
|
|
@@ -135,7 +145,7 @@ export class InitHandler {
|
|
|
135
145
|
const noStatusLineRequested = flags.noStatusLine;
|
|
136
146
|
if (options.browserEngine || options.modular || platformRequested || databaseFree || noClaudeRequested || noStatusLineRequested) {
|
|
137
147
|
console.log(chalk.blue('\n Agentic QE v3 Initialization\n'));
|
|
138
|
-
await this.runModularInit(options, context);
|
|
148
|
+
await this.runModularInit(options, context, projectRoot);
|
|
139
149
|
return;
|
|
140
150
|
}
|
|
141
151
|
// Standard init without wizard
|
|
@@ -146,7 +156,7 @@ export class InitHandler {
|
|
|
146
156
|
await this.cleanupAndExit(1);
|
|
147
157
|
}
|
|
148
158
|
}
|
|
149
|
-
async runModularInit(options, _context) {
|
|
159
|
+
async runModularInit(options, _context, projectRoot) {
|
|
150
160
|
const isJsonMode = options.json === true;
|
|
151
161
|
// #931/#935: commander maps --no-<name> to options.<name> === false.
|
|
152
162
|
const flags = resolveInitFlags(options);
|
|
@@ -176,7 +186,7 @@ export class InitHandler {
|
|
|
176
186
|
}
|
|
177
187
|
const { createModularInitOrchestrator } = await import('../../init/orchestrator.js');
|
|
178
188
|
const orchestrator = createModularInitOrchestrator({
|
|
179
|
-
projectRoot
|
|
189
|
+
projectRoot,
|
|
180
190
|
autoMode: options.auto,
|
|
181
191
|
upgrade: options.upgrade,
|
|
182
192
|
minimal: options.minimal,
|
|
@@ -247,7 +257,7 @@ export class InitHandler {
|
|
|
247
257
|
try {
|
|
248
258
|
const { setupClaudeFlowIntegration } = await import('../commands/claude-flow-setup.js');
|
|
249
259
|
cfResult = await setupClaudeFlowIntegration({
|
|
250
|
-
projectRoot
|
|
260
|
+
projectRoot,
|
|
251
261
|
force: options.withClaudeFlow,
|
|
252
262
|
});
|
|
253
263
|
if (cfResult.available) {
|
|
@@ -304,11 +314,11 @@ export class InitHandler {
|
|
|
304
314
|
}
|
|
305
315
|
await this.cleanupAndExit(0);
|
|
306
316
|
}
|
|
307
|
-
async runLegacyWizard(options, _context) {
|
|
317
|
+
async runLegacyWizard(options, _context, projectRoot) {
|
|
308
318
|
const flags = resolveInitFlags(options);
|
|
309
319
|
const { InitOrchestrator } = await import('../../init/init-wizard.js');
|
|
310
320
|
const orchestratorOptions = {
|
|
311
|
-
projectRoot
|
|
321
|
+
projectRoot,
|
|
312
322
|
autoMode: options.auto,
|
|
313
323
|
minimal: options.minimal,
|
|
314
324
|
browserEngine: options.browserEngine,
|
|
@@ -446,62 +456,62 @@ export class InitHandler {
|
|
|
446
456
|
}
|
|
447
457
|
}
|
|
448
458
|
getHelp() {
|
|
449
|
-
return `
|
|
450
|
-
Initialize the AQE v3 system with various configuration options.
|
|
451
|
-
|
|
452
|
-
Usage:
|
|
453
|
-
aqe init [options]
|
|
454
|
-
|
|
455
|
-
Options:
|
|
456
|
-
-d, --domains <domains> Comma-separated list of domains to enable (default: all)
|
|
457
|
-
-m, --max-agents <number> Maximum concurrent agents (default: 15)
|
|
458
|
-
--memory <backend> Memory backend: sqlite, agentdb, or hybrid (default: hybrid)
|
|
459
|
-
--lazy Enable lazy loading of domains
|
|
460
|
-
--wizard Run interactive setup wizard
|
|
461
|
-
--auto Auto-configure based on project analysis
|
|
462
|
-
-u, --upgrade Upgrade existing installation (overwrite skills, agents, validation)
|
|
463
|
-
--minimal Minimal configuration (skip optional features)
|
|
464
|
-
--skip-patterns Skip loading pre-trained patterns
|
|
459
|
+
return `
|
|
460
|
+
Initialize the AQE v3 system with various configuration options.
|
|
461
|
+
|
|
462
|
+
Usage:
|
|
463
|
+
aqe init [options]
|
|
464
|
+
|
|
465
|
+
Options:
|
|
466
|
+
-d, --domains <domains> Comma-separated list of domains to enable (default: all)
|
|
467
|
+
-m, --max-agents <number> Maximum concurrent agents (default: 15)
|
|
468
|
+
--memory <backend> Memory backend: sqlite, agentdb, or hybrid (default: hybrid)
|
|
469
|
+
--lazy Enable lazy loading of domains
|
|
470
|
+
--wizard Run interactive setup wizard
|
|
471
|
+
--auto Auto-configure based on project analysis
|
|
472
|
+
-u, --upgrade Upgrade existing installation (overwrite skills, agents, validation)
|
|
473
|
+
--minimal Minimal configuration (skip optional features)
|
|
474
|
+
--skip-patterns Skip loading pre-trained patterns
|
|
465
475
|
--browser-engine Install optional Vibium and browser payload
|
|
466
476
|
--no-browser-engine Skip browser setup (default)
|
|
467
|
-
--with-n8n Install n8n workflow testing agents and skills
|
|
477
|
+
--with-n8n Install n8n workflow testing agents and skills
|
|
468
478
|
--with-opencode Include OpenCode agent/skill provisioning
|
|
469
479
|
--with-codex Include OpenAI Codex hooks, instructions, skills, and MCP
|
|
470
480
|
--codex-guidance <mode> Codex AGENTS.md guidance: full, compact, or none
|
|
471
481
|
--with-ruflo Opt into Ruflo guidance and lifecycle hooks for Codex
|
|
472
|
-
--auto-migrate Automatically migrate from v2 if detected
|
|
473
|
-
--with-claude-flow Force Claude Flow integration setup
|
|
474
|
-
--skip-claude-flow Skip Claude Flow integration
|
|
475
|
-
--no-mcp Skip MCP server config (MCP is enabled by default)
|
|
476
|
-
--with-mcp Add the .mcp.json entry even if the agentic-qe-fleet plugin is enabled
|
|
477
|
-
(--no-mcp and --with-mcp cannot be combined)
|
|
478
|
-
--no-governance Skip governance configuration (ADR-058)
|
|
479
|
-
--modular Use new modular init system
|
|
480
|
-
|
|
481
|
-
MCP Server:
|
|
482
|
-
MCP server configuration is ENABLED BY DEFAULT. It writes .mcp.json
|
|
483
|
-
at the project root so Claude Code auto-discovers the AQE MCP server.
|
|
484
|
-
Use --no-mcp to skip if you only want CLI commands.
|
|
485
|
-
If the agentic-qe-fleet Claude Code plugin is enabled (user, project or
|
|
486
|
-
local settings), init skips the entry because the plugin already provides
|
|
487
|
-
the AQE MCP server. Use --with-mcp to add the project entry anyway.
|
|
488
|
-
|
|
489
|
-
Governance:
|
|
490
|
-
Governance is ENABLED BY DEFAULT. It installs .claude/guidance/ with:
|
|
491
|
-
- constitution.md: 7 unbreakable QE invariants
|
|
492
|
-
- shards/*.shard.md: 12 domain-specific governance rules
|
|
493
|
-
|
|
494
|
-
Use --no-governance to skip, or set GOVERNANCE_*=false env vars for
|
|
495
|
-
fine-grained control over individual gates (ContinueGate, MemoryWriteGate, etc.)
|
|
496
|
-
|
|
482
|
+
--auto-migrate Automatically migrate from v2 if detected
|
|
483
|
+
--with-claude-flow Force Claude Flow integration setup
|
|
484
|
+
--skip-claude-flow Skip Claude Flow integration
|
|
485
|
+
--no-mcp Skip MCP server config (MCP is enabled by default)
|
|
486
|
+
--with-mcp Add the .mcp.json entry even if the agentic-qe-fleet plugin is enabled
|
|
487
|
+
(--no-mcp and --with-mcp cannot be combined)
|
|
488
|
+
--no-governance Skip governance configuration (ADR-058)
|
|
489
|
+
--modular Use new modular init system
|
|
490
|
+
|
|
491
|
+
MCP Server:
|
|
492
|
+
MCP server configuration is ENABLED BY DEFAULT. It writes .mcp.json
|
|
493
|
+
at the project root so Claude Code auto-discovers the AQE MCP server.
|
|
494
|
+
Use --no-mcp to skip if you only want CLI commands.
|
|
495
|
+
If the agentic-qe-fleet Claude Code plugin is enabled (user, project or
|
|
496
|
+
local settings), init skips the entry because the plugin already provides
|
|
497
|
+
the AQE MCP server. Use --with-mcp to add the project entry anyway.
|
|
498
|
+
|
|
499
|
+
Governance:
|
|
500
|
+
Governance is ENABLED BY DEFAULT. It installs .claude/guidance/ with:
|
|
501
|
+
- constitution.md: 7 unbreakable QE invariants
|
|
502
|
+
- shards/*.shard.md: 12 domain-specific governance rules
|
|
503
|
+
|
|
504
|
+
Use --no-governance to skip, or set GOVERNANCE_*=false env vars for
|
|
505
|
+
fine-grained control over individual gates (ContinueGate, MemoryWriteGate, etc.)
|
|
506
|
+
|
|
497
507
|
Examples:
|
|
498
508
|
aqe init --auto # Auto-configure based on project (keeps existing skills)
|
|
499
509
|
aqe init --auto --with-codex --with-ruflo
|
|
500
510
|
# Codex plus optional Ruflo coordination
|
|
501
|
-
aqe init --auto --upgrade # Auto-configure AND update all skills/agents
|
|
502
|
-
aqe init --upgrade # Upgrade existing installation
|
|
503
|
-
aqe init --wizard # Run interactive wizard
|
|
504
|
-
aqe init --domains test-generation,coverage-analysis
|
|
511
|
+
aqe init --auto --upgrade # Auto-configure AND update all skills/agents
|
|
512
|
+
aqe init --upgrade # Upgrade existing installation
|
|
513
|
+
aqe init --wizard # Run interactive wizard
|
|
514
|
+
aqe init --domains test-generation,coverage-analysis
|
|
505
515
|
`;
|
|
506
516
|
}
|
|
507
517
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Part of the CLI modularization refactoring.
|
|
6
6
|
*/
|
|
7
7
|
import chalk from 'chalk';
|
|
8
|
+
import { isAqeManagedDir } from '../../shared/aqe-managed-dirs.js';
|
|
8
9
|
// ============================================================================
|
|
9
10
|
// Helper Functions for Handlers
|
|
10
11
|
// ============================================================================
|
|
@@ -66,7 +67,7 @@ export function getColorForPercent(percent) {
|
|
|
66
67
|
export async function walkDirectory(dir, options = {}) {
|
|
67
68
|
const fs = await import('fs');
|
|
68
69
|
const path = await import('path');
|
|
69
|
-
const { extensions = ['.ts'], exclude = ['node_modules', 'dist'], maxDepth = 4, includeTests = false, } = options;
|
|
70
|
+
const { extensions = ['.ts'], exclude = ['node_modules', 'dist', '.git'], maxDepth = 4, includeTests = false, } = options;
|
|
70
71
|
const walkDir = (currentDir, depth) => {
|
|
71
72
|
if (depth > maxDepth)
|
|
72
73
|
return [];
|
|
@@ -81,6 +82,9 @@ export async function walkDirectory(dir, options = {}) {
|
|
|
81
82
|
for (const item of items) {
|
|
82
83
|
if (exclude.includes(item))
|
|
83
84
|
continue;
|
|
85
|
+
// #999: AQE state/assets (.agentic-qe anywhere; .claude at the root or next to .agentic-qe)
|
|
86
|
+
if (isAqeManagedDir(currentDir, item, depth === 0))
|
|
87
|
+
continue;
|
|
84
88
|
if (!includeTests && (item === 'tests' || item.includes('.test.') || item.includes('.spec.')))
|
|
85
89
|
continue;
|
|
86
90
|
const fullPath = path.join(currentDir, item);
|
package/dist/cli/index.js
CHANGED
|
@@ -417,6 +417,17 @@ async function main() {
|
|
|
417
417
|
const commandArgs = process.argv.slice(2).filter(arg => arg !== '--');
|
|
418
418
|
const learningSnapshot = commandArgs[0] === 'learning'
|
|
419
419
|
&& (commandArgs[1] === 'backup' || commandArgs[1] === 'restore');
|
|
420
|
+
// `aqe init` must not create a mistyped AQE_PROJECT_ROOT: the token bootstrap
|
|
421
|
+
// below does `mkdir -p <root>/.agentic-qe`, so the check has to run first.
|
|
422
|
+
if (commandArgs[0] === 'init') {
|
|
423
|
+
const { explicitRootError } = await import('./handlers/init-guard.js');
|
|
424
|
+
const rootError = explicitRootError();
|
|
425
|
+
if (rootError) {
|
|
426
|
+
console.error(chalk.red(`\n ${rootError}\n`));
|
|
427
|
+
await cleanupAndExit(1);
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
420
431
|
if (!learningSnapshot) {
|
|
421
432
|
const { bootstrapTokenTracking } = await import('../init/token-bootstrap.js');
|
|
422
433
|
await bootstrapTokenTracking({
|
|
@@ -123,9 +123,11 @@ export declare class PersistentScheduler {
|
|
|
123
123
|
due: number;
|
|
124
124
|
}>;
|
|
125
125
|
/**
|
|
126
|
-
* Load schedules
|
|
126
|
+
* Load schedules for a locked read-modify-write. A genuinely unparseable
|
|
127
|
+
* file is backed up (not removed) first, so the write that follows cannot
|
|
128
|
+
* silently replace it with fewer schedules.
|
|
127
129
|
*/
|
|
128
|
-
private
|
|
130
|
+
private loadForWrite;
|
|
129
131
|
/**
|
|
130
132
|
* Parse schedules file content with validation
|
|
131
133
|
* Security: Checks file size before parsing to prevent DoS
|
|
@@ -139,6 +141,8 @@ export declare class PersistentScheduler {
|
|
|
139
141
|
* Handle corrupt schedules file by backing up and creating new
|
|
140
142
|
*/
|
|
141
143
|
private handleCorruptFile;
|
|
144
|
+
/** Copy an unparseable schedules file to `.corrupt.<ts>` (left in place). */
|
|
145
|
+
private backupCorruptFile;
|
|
142
146
|
/**
|
|
143
147
|
* Execute a function with file locking for safe concurrent access
|
|
144
148
|
*/
|