agentic-qe 3.15.0 → 3.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +87 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-EUIELRLI.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-GDHJ6QUN.js → agent-booster-wasm-664M7426.js} +2 -2
- package/dist/cli/chunks/{agent-handler-MPYYQ2RZ.js → agent-handler-E47ITH45.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-QBSHKLA2.js → agent-memory-branch-CFWVOJX3.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-LXRKHASR.js +2 -0
- package/dist/cli/chunks/{arena-UJE2FROF.js → arena-JM3OY263.js} +4 -4
- package/dist/cli/chunks/{arena-WIGSL37B.js → arena-ZU5CGBGH.js} +2 -2
- package/dist/cli/chunks/{audit-VT7Y2Z7V.js → audit-HVBRC5AS.js} +3 -3
- package/dist/cli/chunks/base-4DSLX33Y.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-DSL7LFRK.js → better-sqlite3-45JLBQX3.js} +2 -2
- package/dist/cli/chunks/{brain-handler-N3C2MDMK.js → brain-handler-FKDONZYA.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-B6NSQ3PZ.js → branch-enumerator-M3DPS3D5.js} +2 -2
- package/dist/cli/chunks/{browser-KQ3YNRGW.js → browser-TG2TV6NR.js} +2 -2
- package/dist/cli/chunks/browser-workflow-AWCQLQZK.js +2 -0
- package/dist/cli/chunks/{chunk-DXA7RLYU.js → chunk-2AOAEMJG.js} +2 -2
- package/dist/cli/chunks/{chunk-BH2SQQ2N.js → chunk-2AWU2E6R.js} +1 -1
- package/dist/cli/chunks/{chunk-DZHIE5UW.js → chunk-2B2MGJ2W.js} +2 -2
- package/dist/cli/chunks/{chunk-ISAMM7QA.js → chunk-2JEPRQMT.js} +1 -1
- package/dist/cli/chunks/{chunk-7WUHVGGT.js → chunk-2Q4Y3VQ6.js} +2 -2
- package/dist/cli/chunks/{chunk-2ZEV3O24.js → chunk-326V7N25.js} +1 -1
- package/dist/cli/chunks/{chunk-URUOTHPO.js → chunk-3DCRAW43.js} +2 -2
- package/dist/cli/chunks/{chunk-X5RELRY7.js → chunk-3KTAMNKI.js} +2 -2
- package/dist/cli/chunks/{chunk-XZDPR6I2.js → chunk-3KXKJSKS.js} +2 -2
- package/dist/cli/chunks/{chunk-GV7P5JYF.js → chunk-3RC5UMRJ.js} +2 -2
- package/dist/cli/chunks/{chunk-7JC3LHA6.js → chunk-3XF7YTQC.js} +48 -48
- package/dist/cli/chunks/{chunk-FCSETOWZ.js → chunk-4MCO43NX.js} +1 -1
- package/dist/cli/chunks/{chunk-AW5OWYQ4.js → chunk-55T7PDYP.js} +2 -2
- package/dist/cli/chunks/{chunk-MRIZY6HB.js → chunk-56CE7UO4.js} +2 -2
- package/dist/cli/chunks/{chunk-P725KXHX.js → chunk-5DFPAJ5O.js} +2 -2
- package/dist/cli/chunks/{chunk-OBSX3I4Y.js → chunk-5TEPPW4J.js} +2 -2
- package/dist/cli/chunks/{chunk-A37YYHUD.js → chunk-5YS2DF5G.js} +2 -2
- package/dist/cli/chunks/chunk-6KEYA4EH.js +316 -0
- package/dist/cli/chunks/{chunk-5DJGP4TA.js → chunk-6O4KVU4K.js} +2 -2
- package/dist/cli/chunks/{chunk-EBK6CUBD.js → chunk-6OL2WES5.js} +1 -1
- package/dist/cli/chunks/{chunk-R6CZCMKD.js → chunk-6UO5YSNN.js} +2 -2
- package/dist/cli/chunks/{chunk-WPSGMTI4.js → chunk-6WVEICL2.js} +3 -3
- package/dist/cli/chunks/{chunk-XEABMIUH.js → chunk-6XLCFDIB.js} +2 -2
- package/dist/cli/chunks/{chunk-P4FRYNHL.js → chunk-7UA7SMM4.js} +1 -1
- package/dist/cli/chunks/{chunk-YFRZVNE4.js → chunk-A6L2OCMO.js} +2 -2
- package/dist/cli/chunks/{chunk-J4XCBOPA.js → chunk-ANI3KPB7.js} +2 -2
- package/dist/cli/chunks/{chunk-FZ3TQAPW.js → chunk-AR5V7VNC.js} +1 -1
- package/dist/cli/chunks/{chunk-FFE4XAQA.js → chunk-AS27JP67.js} +1 -1
- package/dist/cli/chunks/{chunk-FPTZP7W5.js → chunk-ATGIGJSL.js} +1 -1
- package/dist/cli/chunks/{chunk-2ORTL5WG.js → chunk-AXJ75X6I.js} +1 -1
- package/dist/cli/chunks/{chunk-OLD2CIDI.js → chunk-B4H66LPR.js} +1 -1
- package/dist/cli/chunks/{chunk-I3BH3KIF.js → chunk-BKZSTZDB.js} +1 -1
- package/dist/cli/chunks/{chunk-AQZSF32Y.js → chunk-BT6TZTCL.js} +2 -2
- package/dist/cli/chunks/{chunk-H77AUJNW.js → chunk-CFDIYZGA.js} +2 -2
- package/dist/cli/chunks/{chunk-PN3FYSQ6.js → chunk-CRYZXTSQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OYVDTD3A.js → chunk-CV7E627D.js} +2 -2
- package/dist/cli/chunks/{chunk-GX5RFGW2.js → chunk-D75HDHX3.js} +1 -1
- package/dist/cli/chunks/{chunk-4DCDIKBX.js → chunk-DGKPGRBT.js} +2 -2
- package/dist/cli/chunks/{chunk-KUTMQBV4.js → chunk-DHSGCI6H.js} +4 -4
- package/dist/cli/chunks/{chunk-CZWWC7GC.js → chunk-DNS37AHW.js} +1 -1
- package/dist/cli/chunks/{chunk-F7JVDLOI.js → chunk-E2QHUMCR.js} +2 -2
- package/dist/cli/chunks/{chunk-FTFIA4I5.js → chunk-E6GANSLP.js} +2 -2
- package/dist/cli/chunks/{chunk-62IEVKN3.js → chunk-EATZW5T2.js} +2 -2
- package/dist/cli/chunks/{chunk-LLS6JYPN.js → chunk-EDRIROCG.js} +2 -2
- package/dist/cli/chunks/{chunk-S2GNFAOC.js → chunk-EQG3JYSV.js} +2 -2
- package/dist/cli/chunks/{chunk-XPUY3ZKD.js → chunk-FCMCQ6OX.js} +9 -9
- package/dist/cli/chunks/{chunk-UGYXUPGN.js → chunk-FH6N2LKG.js} +2 -2
- package/dist/cli/chunks/{chunk-6GTIJNRO.js → chunk-FNPZINHV.js} +1 -1
- package/dist/cli/chunks/{chunk-4FOKHGP5.js → chunk-FRZVLRVR.js} +2 -2
- package/dist/cli/chunks/{chunk-5PNRUMRV.js → chunk-GDSLQTJC.js} +2 -2
- package/dist/cli/chunks/{chunk-NZ556KZN.js → chunk-GHXNRF63.js} +2 -2
- package/dist/cli/chunks/{chunk-N5ZHIQAV.js → chunk-GJ7DON5S.js} +3 -3
- package/dist/cli/chunks/{chunk-3Y24VTZ3.js → chunk-GJTH6VBH.js} +1 -1
- package/dist/cli/chunks/{chunk-ZXIIB3QE.js → chunk-GSC6JXDE.js} +1 -1
- package/dist/cli/chunks/{chunk-4EEY23JS.js → chunk-HADOG2PT.js} +2 -2
- package/dist/cli/chunks/{chunk-PJU5HVWV.js → chunk-HBMBO4FD.js} +2 -2
- package/dist/cli/chunks/{chunk-VYERAOQL.js → chunk-HFF5ERIE.js} +2 -2
- package/dist/cli/chunks/{chunk-GRN47ANK.js → chunk-HMDSBWF6.js} +2 -2
- package/dist/cli/chunks/{chunk-LDJ5DZT5.js → chunk-HOBBYORR.js} +1 -1
- package/dist/cli/chunks/{chunk-EQ4SDE4L.js → chunk-HS3O763N.js} +3 -3
- package/dist/cli/chunks/{chunk-YIDZ3TEN.js → chunk-HSXLHNSS.js} +2 -2
- package/dist/cli/chunks/{chunk-4YPL3OXS.js → chunk-HXT4XDQO.js} +2 -2
- package/dist/cli/chunks/{chunk-S7CROKX4.js → chunk-HYWW4A2E.js} +2 -2
- package/dist/cli/chunks/chunk-I7ECEOFV.js +2 -0
- package/dist/cli/chunks/{chunk-FTS6NGBP.js → chunk-I7J2ESGR.js} +2 -2
- package/dist/cli/chunks/{chunk-JYRBOSOF.js → chunk-IAOB2G3X.js} +2 -2
- package/dist/cli/chunks/{chunk-MEYSIVMP.js → chunk-IBAXNCR2.js} +2 -2
- package/dist/cli/chunks/{chunk-JLPNYHJJ.js → chunk-IHKRKRAV.js} +1 -1
- package/dist/cli/chunks/{chunk-JJ7WAU4I.js → chunk-IM67YHDK.js} +2 -2
- package/dist/cli/chunks/{chunk-DSGRXW6K.js → chunk-IQB5ZBYO.js} +3 -3
- package/dist/cli/chunks/{chunk-WR54SKKL.js → chunk-IT753IPZ.js} +2 -2
- package/dist/cli/chunks/{chunk-WBR4VRQE.js → chunk-ITM26I6O.js} +2 -2
- package/dist/cli/chunks/{chunk-VT5SMBEM.js → chunk-J4EJMAH3.js} +1 -1
- package/dist/cli/chunks/{chunk-7JABIXP3.js → chunk-JCB6K24D.js} +2 -2
- package/dist/cli/chunks/{chunk-VWCFXCSV.js → chunk-JFFVYCTV.js} +2 -2
- package/dist/cli/chunks/{chunk-OTJ22IO2.js → chunk-JIRX6KUR.js} +3 -3
- package/dist/cli/chunks/{chunk-X7JEBPEW.js → chunk-JSTKSPYT.js} +1 -1
- package/dist/cli/chunks/{chunk-N2MDNEF7.js → chunk-KQMCCHPO.js} +2 -2
- package/dist/cli/chunks/{chunk-Z6CRROLU.js → chunk-KTLYL3BS.js} +2 -2
- package/dist/cli/chunks/{chunk-QVX22EIM.js → chunk-L77Z3Q6L.js} +2 -2
- package/dist/cli/chunks/{chunk-O5AUOBGU.js → chunk-LH3H4V7C.js} +2 -2
- package/dist/cli/chunks/{chunk-VQVFGFYK.js → chunk-LRVR56PD.js} +1 -1
- package/dist/cli/chunks/{chunk-6MN4L6BS.js → chunk-LVDZ25VX.js} +2 -2
- package/dist/cli/chunks/{chunk-7D6NVIGP.js → chunk-LW4BCFIV.js} +2 -2
- package/dist/cli/chunks/{chunk-GCHDMO5V.js → chunk-M36DAETL.js} +2 -2
- package/dist/cli/chunks/{chunk-P2PPJUGD.js → chunk-MDDECCAC.js} +10 -10
- package/dist/cli/chunks/{chunk-C6M27NQE.js → chunk-MEUJWTOX.js} +2 -2
- package/dist/cli/chunks/{chunk-DGRE6ZAA.js → chunk-MOSXT6AO.js} +2 -2
- package/dist/cli/chunks/{chunk-4BWDCUZZ.js → chunk-MY2XZHW3.js} +1 -1
- package/dist/cli/chunks/{chunk-QRALXNNX.js → chunk-MYDZBABD.js} +2 -2
- package/dist/cli/chunks/{chunk-F76SYOBT.js → chunk-N4MNSEKY.js} +1 -1
- package/dist/cli/chunks/{chunk-CMYZWIXS.js → chunk-N653RGT3.js} +2 -2
- package/dist/cli/chunks/{chunk-ZPH2YT3J.js → chunk-NBV37CEK.js} +2 -2
- package/dist/cli/chunks/{chunk-XELFJC77.js → chunk-NKWMTXBL.js} +3 -3
- package/dist/cli/chunks/{chunk-VTGRGYY4.js → chunk-NL6HKEPR.js} +3 -3
- package/dist/cli/chunks/{chunk-P7MNF2SK.js → chunk-NLY5NUHZ.js} +2 -2
- package/dist/cli/chunks/{chunk-J46XGXPS.js → chunk-NP2WWIZ3.js} +1 -1
- package/dist/cli/chunks/{chunk-ISGFAMHZ.js → chunk-NWYAV2UG.js} +2 -2
- package/dist/cli/chunks/{chunk-HBIV7PQH.js → chunk-O6QTCUSL.js} +1 -1
- package/dist/cli/chunks/{chunk-IRHBR56R.js → chunk-OWZ3F7DJ.js} +1 -1
- package/dist/cli/chunks/{chunk-WDV6CBED.js → chunk-PZK7O445.js} +2 -2
- package/dist/cli/chunks/{chunk-W6H2SOIK.js → chunk-Q32UGPWK.js} +2 -2
- package/dist/cli/chunks/{chunk-KLGFEHEN.js → chunk-QB7H62A4.js} +2 -2
- package/dist/cli/chunks/{chunk-JO2YLIZH.js → chunk-QGCFMACF.js} +2 -2
- package/dist/cli/chunks/{chunk-WO7NPGUD.js → chunk-QJGKL67W.js} +3 -3
- package/dist/cli/chunks/{chunk-D7NOHASX.js → chunk-QJN5RW2U.js} +3 -3
- package/dist/cli/chunks/{chunk-JIWMFLHV.js → chunk-QR5ILM34.js} +2 -2
- package/dist/cli/chunks/{chunk-ILKMNDUM.js → chunk-QZNFZ5IQ.js} +2 -2
- package/dist/cli/chunks/{chunk-L6PUBB6L.js → chunk-RIAKRZCZ.js} +2 -2
- package/dist/cli/chunks/{chunk-ROK5YQ5P.js → chunk-RLQ4MYB6.js} +2 -2
- package/dist/cli/chunks/{chunk-M5EKZA7Q.js → chunk-RO6HAZLV.js} +1 -1
- package/dist/cli/chunks/{chunk-ANUZGOLQ.js → chunk-SKQTRYE7.js} +2 -2
- package/dist/cli/chunks/{chunk-S7QUHLXV.js → chunk-SVHFSOGT.js} +1 -1
- package/dist/cli/chunks/{chunk-32YSI6OT.js → chunk-SZYK5JL7.js} +1 -1
- package/dist/cli/chunks/{chunk-LPCFIFZF.js → chunk-T5N2PIPS.js} +2 -2
- package/dist/cli/chunks/{chunk-P4WE6VRR.js → chunk-T75PWWK4.js} +2 -2
- package/dist/cli/chunks/{chunk-BAPMEDWC.js → chunk-TC4B5D4Z.js} +1 -1
- package/dist/cli/chunks/{chunk-S644OORE.js → chunk-TMYGGYRY.js} +1 -1
- package/dist/cli/chunks/{chunk-AAQNRZKT.js → chunk-TZH2QAFZ.js} +2 -2
- package/dist/cli/chunks/{chunk-KU4WLKDK.js → chunk-UKRK3IE3.js} +2 -2
- package/dist/cli/chunks/{chunk-ATXAMGVE.js → chunk-URWT3EQT.js} +2 -2
- package/dist/cli/chunks/{chunk-Q4RCUCHD.js → chunk-UX4BOI6K.js} +1 -1
- package/dist/cli/chunks/{chunk-AV3RX2L5.js → chunk-UZL4JYVW.js} +2 -2
- package/dist/cli/chunks/{chunk-Y63DADOR.js → chunk-V67UQRQN.js} +2 -2
- package/dist/cli/chunks/{chunk-EZPWSS3B.js → chunk-VTGAPHJE.js} +2 -2
- package/dist/cli/chunks/{chunk-AGYPPPXR.js → chunk-W5EKSBS4.js} +2 -2
- package/dist/cli/chunks/{chunk-EPEKEUCF.js → chunk-W6PLBRRS.js} +1 -1
- package/dist/cli/chunks/{chunk-MM57SD2F.js → chunk-W7P7EOJ4.js} +1 -1
- package/dist/cli/chunks/{chunk-URRPJ3M7.js → chunk-WBCE6V2N.js} +1 -1
- package/dist/cli/chunks/{chunk-B6QTNTCU.js → chunk-WBZIOTY6.js} +2 -2
- package/dist/cli/chunks/{chunk-VCYOFWMG.js → chunk-WJ7657IX.js} +2 -2
- package/dist/cli/chunks/{chunk-5KN4QL3G.js → chunk-WMNVFCKY.js} +2 -2
- package/dist/cli/chunks/{chunk-JSYNSJDQ.js → chunk-WUSSZ2S6.js} +2 -2
- package/dist/cli/chunks/{chunk-4OQSAUKR.js → chunk-X43HA3RF.js} +2 -2
- package/dist/cli/chunks/{chunk-G35KP72N.js → chunk-X4CADOSD.js} +2 -2
- package/dist/cli/chunks/{chunk-WQMXQO3O.js → chunk-XQBH3366.js} +2 -2
- package/dist/cli/chunks/{chunk-KEZ4PXVF.js → chunk-Y5VPLOA7.js} +1 -1
- package/dist/cli/chunks/{chunk-5LN7FQZI.js → chunk-YH7VOLBP.js} +2 -2
- package/dist/cli/chunks/{chunk-MFGLRMO4.js → chunk-YJSKT6G6.js} +1 -1
- package/dist/cli/chunks/{chunk-X4OESN7M.js → chunk-YYVLMW65.js} +2 -2
- package/dist/cli/chunks/{chunk-PPFW3H7E.js → chunk-Z3K4JZXQ.js} +1 -1
- package/dist/cli/chunks/{chunk-MO3QXLF2.js → chunk-Z3PANQUT.js} +1 -1
- package/dist/cli/chunks/{chunk-VY4557VF.js → chunk-Z7XCXHEB.js} +2 -2
- package/dist/cli/chunks/{chunk-HOPXHZA3.js → chunk-ZIKH7U5A.js} +2 -2
- package/dist/cli/chunks/{chunk-WPOYFV4X.js → chunk-ZSKQPXRW.js} +1 -1
- package/dist/cli/chunks/{chunk-ZV7LJPSI.js → chunk-ZVQSIH7Y.js} +5 -5
- package/dist/cli/chunks/{ci-63JINRNB.js → ci-JNBOR6FP.js} +3 -3
- package/dist/cli/chunks/{ci-output-CRFWLUAA.js → ci-output-FYNKONEQ.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-PJLG3WYL.js → circuit-breaker-KOIXRDAD.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-UKHSQMJU.js → claude-flow-setup-4CO7KHRN.js} +2 -2
- package/dist/cli/chunks/client-UJVHZXNQ.js +2 -0
- package/dist/cli/chunks/{cline-installer-PYQ27AS3.js → cline-installer-CMYAPKK5.js} +2 -2
- package/dist/cli/chunks/{code-K7VGLZ3W.js → code-WFIAEP3H.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-NNWAVWSL.js → code-index-extractor-IYM6HWJN.js} +2 -2
- package/dist/cli/chunks/{codex-installer-U4VJIKRN.js → codex-installer-DORVWRSU.js} +2 -2
- package/dist/cli/chunks/{completions-DOCI3P4W.js → completions-54VM2MX2.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-RFW2QRFR.js → complexity-analyzer-EGZDP5N4.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-S5WXXOBU.js → continuedev-installer-4SDVDD4T.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-AAQ6YLVJ.js → copilot-installer-7FJQ7PCL.js} +2 -2
- package/dist/cli/chunks/core-handlers-AFXZOSH3.js +2 -0
- package/dist/cli/chunks/{cost-tracker-R4VOHTWQ.js → cost-tracker-D6YSKTQC.js} +2 -2
- package/dist/cli/chunks/{coverage-P54HPCLV.js → coverage-DI5LDRJ7.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-ZLNVKLIR.js +2 -0
- package/dist/cli/chunks/{cursor-installer-VHBWZE5A.js → cursor-installer-RTSZP5YD.js} +2 -2
- package/dist/cli/chunks/{daemon-JLH5TTWZ.js → daemon-LM7LETPV.js} +4 -4
- package/dist/cli/chunks/{daemon-BTRSWNB4.js → daemon-SP3APEZY.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-5Z6DCRFK.js → dag-attention-scheduler-C3QBODFE.js} +2 -2
- package/dist/cli/chunks/{detect-NWGASRJJ.js → detect-I4RBUFFJ.js} +2 -2
- package/dist/cli/chunks/{dist-node-XMNNSEFJ.js → dist-node-PT6TCBCO.js} +2 -2
- package/dist/cli/chunks/{domain-handler-BWVBZTNR.js → domain-handler-MJMTMB5X.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-YAD4USA4.js → domain-plugins-Y4A2WYJW.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-Z3MRPZEZ.js → domain-transfer-DUO42TLA.js} +2 -2
- package/dist/cli/chunks/dream-4OPJXXEG.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-5CCO45WC.js → embed-and-insert-pattern-66ZQK4AI.js} +2 -2
- package/dist/cli/chunks/{eval-JEMLTGY4.js → eval-NQ7H27UF.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-FKVYBBAN.js → experience-capture-middleware-MHEYPTIG.js} +3 -3
- package/dist/cli/chunks/{fast-paths-TFL32H3C.js → fast-paths-YYDGN6ZC.js} +2 -2
- package/dist/cli/chunks/{feature-flags-CNGAUUMT.js → feature-flags-FY4DOYS2.js} +2 -2
- package/dist/cli/chunks/{feature-flags-OHGD2NCW.js → feature-flags-YFGUORHY.js} +2 -2
- package/dist/cli/chunks/{file-discovery-IHGDYW34.js → file-discovery-TOMDY7TK.js} +2 -2
- package/dist/cli/chunks/{fleet-OGTSDGJ2.js → fleet-MO3UCWB4.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-QYTTKNCE.js → gnn-wrapper-SLW4PPXQ.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-R5OD2SKN.js → heartbeat-handler-36RFCP4E.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-J5KLHO6C.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-56P6XSFR.js +2 -0
- package/dist/cli/chunks/hnsw-index-GFZ6XCEW.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-ULJWYXBQ.js → hnsw-legacy-bridge-BJLWBKHE.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-SYKJXGE2.js → hnswlib-node-RAYNVJCJ.js} +2 -2
- package/dist/cli/chunks/{hooks-XAJXPXTU.js → hooks-JMHFWVEQ.js} +10 -10
- package/dist/cli/chunks/hybrid-backend-TUBWJDDN.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-GIBPGW4N.js → hypergraph-engine-JUDBKPOX.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ENFK6IDN.js → hypergraph-handler-AXTWXOZU.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-FXVGKS6B.js +2 -0
- package/dist/cli/chunks/init-handler-PARJNZFF.js +86 -0
- package/dist/cli/chunks/init-wizard-LK73HQ7W.js +2 -0
- package/dist/cli/chunks/kernel-TCZDKRSI.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-YXFIRTSA.js → kilocode-installer-22HX2E4V.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-JW3BG2MQ.js → kiro-installer-OVPBLY7J.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-TWMB2GH2.js +2 -0
- package/dist/cli/chunks/{learning-BDBZ7ZVG.js → learning-DWXPJ3R6.js} +3 -3
- package/dist/cli/chunks/{llm-router-CCX2DYTC.js → llm-router-7PPVVKNG.js} +4 -4
- package/dist/cli/chunks/llm-router-service-HPDH3P77.js +2 -0
- package/dist/cli/chunks/{load-UJTTEOOK.js → load-VI5XHNZA.js} +2 -2
- package/dist/cli/chunks/load-test-HTYOUYSN.js +2 -0
- package/dist/cli/chunks/{mcp-2NAJYREC.js → mcp-UW4Z3Z64.js} +2 -2
- package/dist/cli/chunks/{memory-C3UQSN5F.js → memory-UD2KCB5M.js} +5 -5
- package/dist/cli/chunks/memory-backend-X5BE2MPK.js +2 -0
- package/dist/cli/chunks/{memory-handlers-ESFIJENU.js → memory-handlers-SQXMFX5X.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-SIHSHAD7.js → multi-model-executor-5O4WWU5Z.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-KDYHUGPG.js → opencode-installer-DTRFDGM7.js} +2 -2
- package/dist/cli/chunks/{orchestrator-MJHIQEHD.js → orchestrator-ENJIKV6Z.js} +18 -18
- package/dist/cli/chunks/pattern-null-store-OCQGQZU6.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-OLBE4UIF.js → pattern-usage-recorder-QPNIU5PD.js} +2 -2
- package/dist/cli/chunks/{pipeline-IOK2CV3U.js → pipeline-G3JYDNPE.js} +2 -2
- package/dist/cli/chunks/{platform-53JQ7JXN.js → platform-P4WR6N3D.js} +2 -2
- package/dist/cli/chunks/{plugin-L5SDIWDI.js → plugin-C7763Q5W.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-2DS67JFS.js → prime-radiant-advanced-wasm-DH6R3XSZ.js} +2 -2
- package/dist/cli/chunks/{project-root-LQMOFO2Z.js → project-root-7DTXDLEG.js} +2 -2
- package/dist/cli/chunks/protocol-executor-CYEQHQCL.js +2 -0
- package/dist/cli/chunks/{protocol-handler-NXG2M43B.js → protocol-handler-EODULGOZ.js} +2 -2
- package/dist/cli/chunks/{prove-7K7PFSSX.js → prove-A7G3SIOF.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-GSTA5WJ4.js +2 -0
- package/dist/cli/chunks/{quality-ATILUGMJ.js → quality-JTURFUX3.js} +2 -2
- package/dist/cli/chunks/{quality-gate-MPZMDPIZ.js → quality-gate-M2EI754V.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-Y2Q5RQL7.js +2 -0
- package/dist/cli/chunks/{real-embeddings-VZN3KIAI.js → real-embeddings-DI7JMCG7.js} +2 -2
- package/dist/cli/chunks/{ref-validation-EUATPVXX.js → ref-validation-MSFMNKDR.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-7M2GOUNZ.js → roocode-installer-XIMFFHOH.js} +2 -2
- package/dist/cli/chunks/router-4QB5L4IW.js +2 -0
- package/dist/cli/chunks/routing-feedback-YBVHJY5L.js +2 -0
- package/dist/cli/chunks/{routing-handler-VWANE652.js → routing-handler-MCDKNBQW.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-B2YIPGOV.js → ruvector-commands-OBSYAK2X.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-T5B456SW.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-2O2NL7ZF.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-RQXOQJ5T.js → rvf-migration-coordinator-4DTRIHY6.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-RDB3GWTW.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-7P5YDXRH.js → rvf-store-integrity-CWAVMRC4.js} +2 -2
- package/dist/cli/chunks/safe-db-YXVMLFU4.js +2 -0
- package/dist/cli/chunks/schedule-K6XWCCSK.js +2 -0
- package/dist/cli/chunks/scheduler-4MW22D6Q.js +2 -0
- package/dist/cli/chunks/{security-VJ7TVSQF.js → security-74TWSO74.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-63NXQFBX.js → shared-rvf-adapter-ZHNAGE5H.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-JQRP7P5A.js → shared-rvf-dual-writer-BS5WAVCC.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-UVDHUSAU.js +2 -0
- package/dist/cli/chunks/{standalone-memory-WJ72PH5P.js → standalone-memory-3HGHTE7S.js} +2 -2
- package/dist/cli/chunks/{status-handler-G72ZSLAX.js → status-handler-XWEEGNGH.js} +2 -2
- package/dist/cli/chunks/{structural-health-HYBGP4BD.js → structural-health-TB5JGMVS.js} +2 -2
- package/dist/cli/chunks/{sync-5YMZZIF4.js → sync-LSPNSVDI.js} +2 -2
- package/dist/cli/chunks/{sync-O5FQAHT7.js → sync-T4VLBURM.js} +2 -2
- package/dist/cli/chunks/{task-handler-E6IFNHZG.js → task-handler-RQ65QKXX.js} +2 -2
- package/dist/cli/chunks/{task-handlers-P3GC2L5L.js → task-handlers-USYWJ4H2.js} +3 -3
- package/dist/cli/chunks/test-M2XTKD62.js +33 -0
- package/dist/cli/chunks/{test-scheduling-3HY4I3HY.js → test-scheduling-GYXJQHJL.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-A5QA4CWK.js → token-bootstrap-OTEMRUFR.js} +2 -2
- package/dist/cli/chunks/{token-usage-MUNQVPFT.js → token-usage-CISTB5K5.js} +2 -2
- package/dist/cli/chunks/{transformers-IEO25W5V.js → transformers-C7LV763N.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-T2EQHEAY.js → tree-sitter-wasm-parser-P26JC3YV.js} +2 -2
- package/dist/cli/chunks/{types-ODCPGCID.js → types-YMVMKIWB.js} +2 -2
- package/dist/cli/chunks/unified-memory-UUK77NSE.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-JOUE6WNF.js +2 -0
- package/dist/cli/chunks/unified-persistence-3DRJGNQE.js +2 -0
- package/dist/cli/chunks/{upgrade-4DN6EIW2.js → upgrade-U2REOPAW.js} +2 -2
- package/dist/cli/chunks/{validate-TBNAPDE3.js → validate-NDTCKN7P.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-ZN7XXUY4.js → validate-swarm-OJUGVH5Q.js} +2 -2
- package/dist/cli/chunks/visual-security-EM7FQG5X.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-DWAWVD2X.js → web-tree-sitter-2CLRSA7K.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-U6EROS5S.js → windsurf-installer-DSUJJ4PG.js} +2 -2
- package/dist/cli/chunks/witness-chain-7NZ6IIUN.js +2 -0
- package/dist/cli/chunks/{witness-chain-EQEJS2P4.js → witness-chain-TEGL4ZWB.js} +2 -2
- package/dist/cli/chunks/{witness-chain-repair-KBXDRXS3.js → witness-chain-repair-ZWS5WXFL.js} +2 -2
- package/dist/cli/chunks/{witness-chain-verifier-HSQGZ4R4.js → witness-chain-verifier-SPXKFC67.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-RAODG73T.js → witness-key-manager-EALOV4OV.js} +2 -2
- package/dist/cli/chunks/{workflow-KNFJNNKG.js → workflow-PYI6HCAG.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-3C3S5FIM.js +2 -0
- package/dist/cli/chunks/{wrappers-NIJBA22T.js → wrappers-NXJHGK3W.js} +2 -2
- package/dist/cli/commands/test.js +17 -2
- package/dist/cli/handlers/init-flags.d.ts +45 -0
- package/dist/cli/handlers/init-flags.js +35 -0
- package/dist/cli/handlers/init-handler.d.ts +6 -0
- package/dist/cli/handlers/init-handler.js +24 -10
- package/dist/coordination/task-executor.js +4 -2
- package/dist/init/claude-plugin-detection.d.ts +63 -0
- package/dist/init/claude-plugin-detection.js +118 -0
- package/dist/init/init-wizard-hooks.d.ts +6 -1
- package/dist/init/init-wizard-hooks.js +9 -1
- package/dist/init/init-wizard.d.ts +4 -0
- package/dist/init/init-wizard.js +3 -1
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/08-mcp.d.ts +7 -0
- package/dist/init/phases/08-mcp.js +22 -0
- package/dist/init/phases/phase-interface.d.ts +5 -1
- package/dist/mcp/bundle.js +298 -298
- package/dist/mcp/handlers/domain-handler-configs.js +3 -1
- package/dist/mcp/handlers/handler-factory.js +5 -0
- package/dist/mcp/handlers/save-results-option.d.ts +35 -0
- package/dist/mcp/handlers/save-results-option.js +59 -0
- package/dist/mcp/protocol-server.js +2 -1
- package/dist/mcp/types.d.ts +9 -0
- package/package.json +1 -1
- package/dist/cli/chunks/adapter-D7G5MIDQ.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-G6TUFGHC.js +0 -2
- package/dist/cli/chunks/base-B45BOC7E.js +0 -2
- package/dist/cli/chunks/browser-workflow-MIBU4XMV.js +0 -2
- package/dist/cli/chunks/chunk-3DKYBHNA.js +0 -316
- package/dist/cli/chunks/chunk-AIE6OKCD.js +0 -2
- package/dist/cli/chunks/client-A4FTITK3.js +0 -2
- package/dist/cli/chunks/core-handlers-FO3QTNWI.js +0 -2
- package/dist/cli/chunks/cross-domain-router-LIV6SRWF.js +0 -2
- package/dist/cli/chunks/dream-DNLGHYXY.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-DL4LXXJF.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-Y64M43J4.js +0 -2
- package/dist/cli/chunks/hnsw-index-5V6DDMTA.js +0 -2
- package/dist/cli/chunks/hybrid-backend-JWT2V4FQ.js +0 -2
- package/dist/cli/chunks/impact-analyzer-XUZQSZZC.js +0 -2
- package/dist/cli/chunks/init-handler-CSA62LGT.js +0 -81
- package/dist/cli/chunks/init-wizard-KDJKHEPN.js +0 -2
- package/dist/cli/chunks/kernel-MUDYPGFR.js +0 -2
- package/dist/cli/chunks/knowledge-graph-GR52N7PU.js +0 -2
- package/dist/cli/chunks/llm-router-service-QL6LVKZ4.js +0 -2
- package/dist/cli/chunks/load-test-76V75WZ5.js +0 -2
- package/dist/cli/chunks/memory-backend-SMQRS5QN.js +0 -2
- package/dist/cli/chunks/pattern-null-store-MWAJMOYU.js +0 -2
- package/dist/cli/chunks/protocol-executor-32X3GAJT.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-KAFV3TGI.js +0 -2
- package/dist/cli/chunks/queen-coordinator-L3SODGRX.js +0 -2
- package/dist/cli/chunks/router-DDCSSXYQ.js +0 -2
- package/dist/cli/chunks/routing-feedback-RFASKYCD.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-HCIF2G56.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-UVAHQ7SV.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-F2I5FFHK.js +0 -2
- package/dist/cli/chunks/safe-db-6ZAA4S23.js +0 -2
- package/dist/cli/chunks/schedule-SM5Q6UVP.js +0 -2
- package/dist/cli/chunks/scheduler-4EYP4EZ6.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-KLN2K266.js +0 -2
- package/dist/cli/chunks/test-OU6ERW67.js +0 -33
- package/dist/cli/chunks/unified-memory-B5IA2KKQ.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-YF74LL3Z.js +0 -2
- package/dist/cli/chunks/unified-persistence-VZMGNGWY.js +0 -2
- package/dist/cli/chunks/visual-security-ZV3BLLSH.js +0 -2
- package/dist/cli/chunks/witness-chain-OA24MQWX.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-IMX2LSVE.js +0 -2
package/dist/cli/chunks/{witness-chain-repair-KBXDRXS3.js → witness-chain-repair-ZWS5WXFL.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.
|
|
2
|
-
import{a as E}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.2");process.exit(0)}
|
|
2
|
+
import{a as E}from"./chunk-JCB6K24D.js";import"./chunk-DGKPGRBT.js";import{b as R,c as b,e as A,h as y,k as C}from"./chunk-ZSKQPXRW.js";import"./chunk-3KXKJSKS.js";import"./chunk-QZNFZ5IQ.js";import"./chunk-URWT3EQT.js";import"./chunk-IM67YHDK.js";import"./chunk-2Q4Y3VQ6.js";import"./chunk-FH6N2LKG.js";import"./chunk-ZIKH7U5A.js";import"./chunk-WBZIOTY6.js";import"./chunk-ITM26I6O.js";import"./chunk-3RC5UMRJ.js";import"./chunk-YH7VOLBP.js";import"./chunk-I7ECEOFV.js";import"./chunk-CV7E627D.js";import"./chunk-5TEPPW4J.js";import"./chunk-3KTAMNKI.js";import"./chunk-3DCRAW43.js";import"./chunk-MYDZBABD.js";import{a as g,b as _}from"./chunk-W5EKSBS4.js";import"./chunk-PZK7O445.js";import"./chunk-D75HDHX3.js";_();import{existsSync as v}from"node:fs";import{basename as I}from"node:path";var w={includeArchive:!0};function l(e){let r=n=>C(e,n)?e.prepare(`SELECT COUNT(*) AS n FROM ${n}`).get().n:0;return{live:r("witness_chain"),archive:r("witness_chain_archive")}}function O(e){return{status:e.status,entriesChecked:e.entriesChecked,forks:e.forks.length,unacknowledgedForks:e.forks.length-e.acknowledgedForks.length,...e.tamperedAt!==void 0?{tamperedAt:e.tamperedAt}:{},...e.tamperReason?{tamperReason:e.tamperReason}:{}}}function $(e){return e.forkDetails.filter(r=>!r.acknowledged).map(({id:r,parentId:n,prevHash:s,actionHash:c})=>({id:r,parentId:n,prevHash:s,actionHash:c}))}function x(e,r){let n=new Set,s=e.prepare("SELECT prev_hash FROM witness_chain UNION ALL SELECT prev_hash FROM witness_chain_archive").pluck().iterate();for(let t of s)n.add(t);let c=[],a=new Set;for(let t of["witness_chain","witness_chain_archive"]){let f=e.prepare(`SELECT * FROM ${t} ORDER BY id ASC`).iterate();for(let o of f){if(o.id===r||a.has(o.id))continue;a.add(o.id);let i=A(o);!n.has(b(i))&&!n.has(R(i))&&c.push({id:o.id,hash:y(o)})}}return c.sort((t,f)=>t.id-f.id)}function S(e){return`Refusing to repair: tampering detected at id=${e.tamperedAt} (${e.tamperReason}). Only accidental forks can be re-anchored; restore from a backup and investigate.`}function M(e){let r=`${e}.bak-${Math.floor(Date.now()/1e3)}`;if(!v(r))return r;let n=1;for(;v(`${r}-${n}`);)n++;return`${r}-${n}`}function W(e,r){let n=M(e),s=g(e,{readonly:!0,fileMustExist:!0});try{s.prepare("VACUUM INTO ?").run(n)}finally{s.close()}let c=g(n,{readonly:!0,fileMustExist:!0});try{let a=c.pragma("integrity_check",{simple:!0});if(a!=="ok")throw new Error(`backup integrity_check failed: ${String(a)}`);let t=l(c);if(t.live!==r.live||t.archive!==r.archive)throw new Error(`backup holds ${JSON.stringify(t)} witness rows, expected ${JSON.stringify(r)}`)}finally{c.close()}return n}async function L(e,r){let n=r.dryRun===!0,s=new E(e,r.keyManager??void 0);await s.initialize();let c=l(e),a=s.verify(w),t={dryRun:n,before:O(a),rowsBefore:c,rowsAfter:c};if(a.tampered)return{...t,action:"refused",message:S(a),forksAcknowledged:[]};let f=$(a);if(f.length===0){let d=a.forks.length>0?`Nothing to repair: all ${a.forks.length} fork(s) are already re-anchored.`:"Nothing to repair: the audit chain has no forks.";return{...t,action:"none",message:d,forksAcknowledged:[]}}if(n)return{...t,action:"would-reanchor",forksAcknowledged:f.map(d=>d.id),message:`Dry run: would back up the database and append a CHAIN_REANCHOR entry acknowledging ${f.length} fork(s). Nothing was written.`};let o,i=e.transaction(()=>{let d=l(e),p=s.verify(w);if(p.tampered)return{kind:"refused",check:p};let h=$(p);if(h.length===0)return{kind:"noop"};o=W(r.dbPath,d);let m=e.prepare("SELECT * FROM witness_chain ORDER BY id DESC LIMIT 1").get(),T=s.append("CHAIN_REANCHOR",{reason:"fork-repair",issue:"https://github.com/proffesor-for-testing/agentic-qe/issues/753",note:"Acknowledges accidental forks from pre-3.14.5 concurrent appends; no rows were changed.",forkCount:h.length,forks:h,pins:x(e,m.id),verifiedTipId:m.id,verifiedTipHash:y(m),entriesChecked:p.entriesChecked,rows:d,backup:I(o)},r.actor??"aqe-audit-repair"),k=l(e);if(k.live!==d.live+1||k.archive!==d.archive)throw new Error(`row-count check failed: before ${JSON.stringify(d)}, after ${JSON.stringify(k)}`);return{kind:"reanchored",entry:T,forks:h,txAfter:k}}).immediate();if(i.kind==="refused")return{...t,action:"refused",message:S(i.check),forksAcknowledged:[]};if(i.kind==="noop")return{...t,action:"none",message:"Nothing to repair (another process re-anchored first).",forksAcknowledged:[]};let u=s.verify(w),N=u.valid&&!u.tampered;return{...t,action:"reanchored",after:O(u),rowsAfter:i.txAfter,forksAcknowledged:i.forks.map(d=>d.id),reanchorId:i.entry.id,backupPath:o,message:N?`Re-anchored ${i.forks.length} fork(s) with CHAIN_REANCHOR id=${i.entry.id}; chain now ${u.status}. Backup: ${o}`:`Appended CHAIN_REANCHOR id=${i.entry.id}, but the chain still verifies as ${u.status}. Backup: ${o}`}}export{L as repairWitnessChainForks};
|
package/dist/cli/chunks/{witness-chain-verifier-HSQGZ4R4.js → witness-chain-verifier-SPXKFC67.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.
|
|
2
|
-
import{g as a,h as b,i as c,j as d,k as e}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.2");process.exit(0)}
|
|
2
|
+
import{g as a,h as b,i as c,j as d,k as e}from"./chunk-ZSKQPXRW.js";import"./chunk-D75HDHX3.js";export{a as CHAIN_REANCHOR_ACTION,c as WitnessChainVerifier,b as ownHash,e as tableExists,d as verifyWitnessChain};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.2");process.exit(0)}
|
|
2
|
+
import{a,b,c}from"./chunk-DGKPGRBT.js";import"./chunk-MYDZBABD.js";import"./chunk-D75HDHX3.js";export{a as WitnessKeyManager,c as _resetDefaultWitnessKeyManagerForTests,b as getDefaultWitnessKeyManager};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.
|
|
2
|
-
import"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.2");process.exit(0)}
|
|
2
|
+
import"./chunk-A6L2OCMO.js";import{b as $}from"./chunk-ATGIGJSL.js";import{a as k,b as W,c as v,g as C}from"./chunk-RLQ4MYB6.js";import{c as b}from"./chunk-URWT3EQT.js";import"./chunk-2AWU2E6R.js";import"./chunk-3KTAMNKI.js";import"./chunk-D75HDHX3.js";import{Command as D}from"commander";import o from"chalk";function O(w,i){let h=w.indexOf("=");return h>0&&(i[w.substring(0,h)]=w.substring(h+1)),i}function V(w,i,h){let m=new D("workflow").description("Manage QE workflows and pipelines (ADR-041)");return m.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(n,t)=>{if(!await h())return;let u=(await import("path")).resolve(n);try{console.log(o.blue(`
|
|
3
3
|
Running workflow from: ${n}
|
|
4
4
|
`));let l=k(u);if(!l.success||!l.workflow){console.log(o.red("Failed to parse pipeline:"));for(let g of l.errors)console.log(o.red(` ${g}`));await i(1)}let f={...b(t.params,"params")};if(l.pipeline){for(let g of l.pipeline.stages)if(g.params)for(let[y,p]of Object.entries(g.params))f[y]=p}if(!w.workflowOrchestrator.getWorkflow(l.workflow.id)){let g=w.workflowOrchestrator.registerWorkflow(l.workflow);g.success||(console.log(o.red(`Failed to register workflow: ${g.error.message}`)),await i(1))}let c=await w.workflowOrchestrator.executeWorkflow(l.workflow.id,f);if(!c.success){console.log(o.red(`Failed to start workflow: ${c.error.message}`)),await i(1);return}let a=c.value;if(console.log(o.cyan(` Execution ID: ${a}`)),console.log(o.gray(` Workflow: ${l.workflow.name}`)),console.log(o.gray(` Stages: ${l.workflow.steps.length}`)),console.log(""),t.watch){console.log(o.blue(`Workflow Progress:
|
|
5
5
|
`));let g,y=Date.now();for(;;){let d=w.workflowOrchestrator.getWorkflowStatus(a);if(!d)break;if(!g||g.progress!==d.progress||g.status!==d.status||JSON.stringify(g.currentSteps)!==JSON.stringify(d.currentSteps)){process.stdout.write("\r\x1B[K");let S="\u2588".repeat(Math.floor(d.progress/5))+"\u2591".repeat(20-Math.floor(d.progress/5)),R=d.status==="completed"?o.green:d.status==="failed"?o.red:d.status==="running"?o.yellow:o.gray;console.log(` [${S}] ${d.progress}% - ${R(d.status)}`),d.currentSteps.length>0&&t.verbose&&console.log(o.gray(` Running: ${d.currentSteps.join(", ")}`)),g=d}if(d.status==="completed"||d.status==="failed"||d.status==="cancelled")break;await new Promise(S=>setTimeout(S,500))}let p=w.workflowOrchestrator.getWorkflowStatus(a);if(p){console.log("");let d=p.duration||Date.now()-y;p.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(d)}`)),console.log(o.gray(` Completed: ${p.completedSteps.length} stages`)),p.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${p.skippedSteps.length} stages`))):p.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${p.error}`)),console.log(o.gray(` Failed stages: ${p.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${p.status}`))}console.log(""),await i(p?.status==="completed"?0:1);return}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${a}' to check progress`));console.log(""),await i(0)}catch(l){console.error(o.red(`
|
|
@@ -35,10 +35,10 @@ Workflow cancelled: ${n}
|
|
|
35
35
|
`)):console.log(o.red(`
|
|
36
36
|
Failed to cancel workflow: ${t.error.message}
|
|
37
37
|
`)),await i(t.success?0:1)}catch(t){console.error(o.red(`
|
|
38
|
-
Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-
|
|
38
|
+
Failed to cancel workflow:`),t),await i(1)}}),m.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:n}=await import("./browser-workflow-AWCQLQZK.js"),e=await new n().invoke({});if(e.success&&e.data){console.log(o.blue(`
|
|
39
39
|
Browser Workflow Templates:
|
|
40
40
|
`));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await i(0)}catch(n){console.error(o.red(`
|
|
41
|
-
Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-
|
|
41
|
+
Failed:`),n),await i(1)}}),m.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",O,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(n,t)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-AWCQLQZK.js"),{writeOutput:u,toJSON:l}=await import("./ci-output-FYNKONEQ.js"),s=new e,f={variables:t.var||{}};if(t.yaml)f.workflowYaml=t.yaml;else if(n)if(n.endsWith(".yaml")||n.endsWith(".yml")){let c=await import("fs"),g=(await import("path")).resolve(n);c.existsSync(g)||(console.log(o.red(`
|
|
42
42
|
File not found: ${g}
|
|
43
43
|
`)),await i(1)),f.workflowYaml=c.readFileSync(g,"utf-8")}else f.templateName=n;else console.log(o.red(`
|
|
44
44
|
Provide a template name or --yaml. Use "workflow browser-list" to see templates.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.2");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-X4CADOSD.js";import"./chunk-VTGAPHJE.js";import"./chunk-3KXKJSKS.js";import"./chunk-QZNFZ5IQ.js";import"./chunk-URWT3EQT.js";import"./chunk-IM67YHDK.js";import"./chunk-2Q4Y3VQ6.js";import"./chunk-FH6N2LKG.js";import"./chunk-ZIKH7U5A.js";import"./chunk-WBZIOTY6.js";import"./chunk-ITM26I6O.js";import"./chunk-3RC5UMRJ.js";import"./chunk-Z3PANQUT.js";import"./chunk-2AWU2E6R.js";import"./chunk-YH7VOLBP.js";import"./chunk-I7ECEOFV.js";import"./chunk-CV7E627D.js";import"./chunk-5TEPPW4J.js";import"./chunk-3KTAMNKI.js";import"./chunk-3DCRAW43.js";import"./chunk-MYDZBABD.js";import"./chunk-W5EKSBS4.js";import"./chunk-PZK7O445.js";import"./chunk-D75HDHX3.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.2");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-IBAXNCR2.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-HXT4XDQO.js";import"./chunk-3KXKJSKS.js";import"./chunk-QZNFZ5IQ.js";import"./chunk-URWT3EQT.js";import"./chunk-IM67YHDK.js";import"./chunk-2Q4Y3VQ6.js";import"./chunk-FH6N2LKG.js";import"./chunk-ZIKH7U5A.js";import"./chunk-WBZIOTY6.js";import"./chunk-ITM26I6O.js";import"./chunk-3RC5UMRJ.js";import"./chunk-YH7VOLBP.js";import"./chunk-I7ECEOFV.js";import"./chunk-CV7E627D.js";import"./chunk-5TEPPW4J.js";import"./chunk-3KTAMNKI.js";import"./chunk-3DCRAW43.js";import"./chunk-MYDZBABD.js";import"./chunk-W5EKSBS4.js";import"./chunk-PZK7O445.js";import"./chunk-D75HDHX3.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
|
|
@@ -19,6 +19,7 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
19
19
|
.option('-t, --type <type>', 'Test type (unit|integration|e2e)', 'unit')
|
|
20
20
|
.option('-F, --format <format>', 'Output format (text|json|junit|markdown)', 'text')
|
|
21
21
|
.option('-o, --output <path>', 'Write output to file')
|
|
22
|
+
.option('--no-save', 'generate action: print the generated test code instead of writing test files beside the source (#925)')
|
|
22
23
|
.option('--git-ref <ref>', 'Git ref for schedule action (e.g., main, HEAD~3)')
|
|
23
24
|
.option('--no-git-aware', 'Disable git-aware test selection (schedule action)')
|
|
24
25
|
.option('--no-flaky', 'Disable flaky test tracking (schedule action)')
|
|
@@ -95,11 +96,22 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
95
96
|
// Default text output
|
|
96
97
|
console.log(chalk.green(`Generated ${generated.tests.length} tests\n`));
|
|
97
98
|
console.log(chalk.cyan(' Tests:'));
|
|
98
|
-
|
|
99
|
+
// #925: with --no-save the printed code is the only output, so
|
|
100
|
+
// show every test instead of the first 10.
|
|
101
|
+
const noSave = options.save === false;
|
|
102
|
+
const shown = noSave ? generated.tests : generated.tests.slice(0, 10);
|
|
103
|
+
for (const test of shown) {
|
|
99
104
|
console.log(` ${chalk.white(test.name)}`);
|
|
100
105
|
console.log(chalk.gray(` Source: ${path.basename(test.sourceFile)}`));
|
|
101
106
|
console.log(chalk.gray(` Assertions: ${test.assertions}`));
|
|
102
107
|
if (test.testCode) {
|
|
108
|
+
if (noSave) {
|
|
109
|
+
console.log(chalk.gray(` Would be written to: ${test.testFile} (not written, --no-save)`));
|
|
110
|
+
console.log(` ----- ${path.basename(test.testFile)} -----`);
|
|
111
|
+
console.log(test.testCode);
|
|
112
|
+
console.log(` ----- end ${path.basename(test.testFile)} -----`);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
103
115
|
console.log(chalk.gray(` Test File: ${test.testFile}`));
|
|
104
116
|
// Bug #295 fix: Write generated test code to disk
|
|
105
117
|
const fs = await import('fs');
|
|
@@ -109,13 +121,16 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
109
121
|
console.log(chalk.green(` Written to: ${test.testFile}`));
|
|
110
122
|
}
|
|
111
123
|
}
|
|
112
|
-
if (generated.tests.length > 10) {
|
|
124
|
+
if (!noSave && generated.tests.length > 10) {
|
|
113
125
|
console.log(chalk.gray(` ... and ${generated.tests.length - 10} more`));
|
|
114
126
|
}
|
|
115
127
|
console.log(`\n Coverage Estimate: ${chalk.yellow(generated.coverageEstimate == null ? 'Unmeasured' : generated.coverageEstimate + '%')}`);
|
|
116
128
|
if (generated.patternsUsed.length > 0) {
|
|
117
129
|
console.log(` Patterns Used: ${chalk.cyan(generated.patternsUsed.join(', '))}`);
|
|
118
130
|
}
|
|
131
|
+
if (options.save === false) {
|
|
132
|
+
console.log(chalk.gray(' --no-save: no generated test files were written.'));
|
|
133
|
+
}
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
136
|
else {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aqe init` negatable flag resolution (#922, #931, #935)
|
|
3
|
+
*
|
|
4
|
+
* Commander maps a negatable `--no-<name>` flag to `options.<name> === false`;
|
|
5
|
+
* it never sets `options.no<Name>`. Reading `noMcp` / `noGovernance` made
|
|
6
|
+
* `--no-mcp` (#931) and `--no-governance` (#935) silent no-ops. Every
|
|
7
|
+
* negatable init flag is resolved here, the same way, so the handler never
|
|
8
|
+
* reads a Commander option name by hand.
|
|
9
|
+
*
|
|
10
|
+
* The `no<Name>: true` spelling is still honoured for programmatic callers.
|
|
11
|
+
*
|
|
12
|
+
* `--no-mcp` and `--with-mcp` contradict each other. The CLI rejects the
|
|
13
|
+
* combination at parse time (Commander `.conflicts()`); this resolver
|
|
14
|
+
* rejects it for programmatic callers too, so neither path guesses.
|
|
15
|
+
*/
|
|
16
|
+
export interface InitFlagInput {
|
|
17
|
+
/** `--no-mcp` sets this to false. */
|
|
18
|
+
mcp?: boolean;
|
|
19
|
+
/** `--no-governance` sets this to false. */
|
|
20
|
+
governance?: boolean;
|
|
21
|
+
/** `--no-claude` sets this to false (#532). */
|
|
22
|
+
claude?: boolean;
|
|
23
|
+
/** `--no-statusline` sets this to false (#591). */
|
|
24
|
+
statusline?: boolean;
|
|
25
|
+
/** `--no-database` sets this to false. */
|
|
26
|
+
database?: boolean;
|
|
27
|
+
/** Programmatic aliases. */
|
|
28
|
+
noMcp?: boolean;
|
|
29
|
+
noGovernance?: boolean;
|
|
30
|
+
noClaude?: boolean;
|
|
31
|
+
noStatusLine?: boolean;
|
|
32
|
+
/** `--with-mcp`: write the entry even when the agentic-qe-fleet plugin is enabled. */
|
|
33
|
+
withMcp?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ResolvedInitFlags {
|
|
36
|
+
noMcp: boolean;
|
|
37
|
+
withMcp: boolean;
|
|
38
|
+
noGovernance: boolean;
|
|
39
|
+
noClaude: boolean;
|
|
40
|
+
noStatusLine: boolean;
|
|
41
|
+
noDatabase: boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare const INIT_MCP_FLAG_CONFLICT_MESSAGE = "--no-mcp and --with-mcp cannot be combined: --no-mcp skips the .mcp.json entry, --with-mcp forces it";
|
|
44
|
+
export declare function resolveInitFlags(options: InitFlagInput): ResolvedInitFlags;
|
|
45
|
+
//# sourceMappingURL=init-flags.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aqe init` negatable flag resolution (#922, #931, #935)
|
|
3
|
+
*
|
|
4
|
+
* Commander maps a negatable `--no-<name>` flag to `options.<name> === false`;
|
|
5
|
+
* it never sets `options.no<Name>`. Reading `noMcp` / `noGovernance` made
|
|
6
|
+
* `--no-mcp` (#931) and `--no-governance` (#935) silent no-ops. Every
|
|
7
|
+
* negatable init flag is resolved here, the same way, so the handler never
|
|
8
|
+
* reads a Commander option name by hand.
|
|
9
|
+
*
|
|
10
|
+
* The `no<Name>: true` spelling is still honoured for programmatic callers.
|
|
11
|
+
*
|
|
12
|
+
* `--no-mcp` and `--with-mcp` contradict each other. The CLI rejects the
|
|
13
|
+
* combination at parse time (Commander `.conflicts()`); this resolver
|
|
14
|
+
* rejects it for programmatic callers too, so neither path guesses.
|
|
15
|
+
*/
|
|
16
|
+
export const INIT_MCP_FLAG_CONFLICT_MESSAGE = '--no-mcp and --with-mcp cannot be combined: --no-mcp skips the .mcp.json entry, --with-mcp forces it';
|
|
17
|
+
/** True when the negatable flag was turned off, or the programmatic alias was set. */
|
|
18
|
+
function isOff(value, alias) {
|
|
19
|
+
return value === false || alias === true;
|
|
20
|
+
}
|
|
21
|
+
export function resolveInitFlags(options) {
|
|
22
|
+
const resolved = {
|
|
23
|
+
noMcp: isOff(options.mcp, options.noMcp),
|
|
24
|
+
withMcp: options.withMcp === true,
|
|
25
|
+
noGovernance: isOff(options.governance, options.noGovernance),
|
|
26
|
+
noClaude: isOff(options.claude, options.noClaude),
|
|
27
|
+
noStatusLine: isOff(options.statusline, options.noStatusLine),
|
|
28
|
+
noDatabase: options.database === false,
|
|
29
|
+
};
|
|
30
|
+
if (resolved.noMcp && resolved.withMcp) {
|
|
31
|
+
throw new Error(INIT_MCP_FLAG_CONFLICT_MESSAGE);
|
|
32
|
+
}
|
|
33
|
+
return resolved;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=init-flags.js.map
|
|
@@ -114,10 +114,16 @@ interface InitOptions {
|
|
|
114
114
|
withWindsurf?: boolean;
|
|
115
115
|
withContinuedev?: boolean;
|
|
116
116
|
withAllPlatforms?: boolean;
|
|
117
|
+
/** commander negatable flag: `--no-mcp` sets this to false (#931). */
|
|
118
|
+
mcp?: boolean;
|
|
119
|
+
/** Programmatic alias for `--no-mcp`. */
|
|
117
120
|
noMcp?: boolean;
|
|
118
121
|
withMcp?: boolean;
|
|
119
122
|
withClaudeFlow?: boolean;
|
|
120
123
|
skipClaudeFlow?: boolean;
|
|
124
|
+
/** commander negatable flag: `--no-governance` sets this to false (#935). */
|
|
125
|
+
governance?: boolean;
|
|
126
|
+
/** Programmatic alias for `--no-governance`. */
|
|
121
127
|
noGovernance?: boolean;
|
|
122
128
|
/** commander negatable flag: `--no-claude` sets this to false (#532). */
|
|
123
129
|
claude?: boolean;
|
|
@@ -8,6 +8,7 @@ import chalk from 'chalk';
|
|
|
8
8
|
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
|
+
import { resolveInitFlags } from './init-flags.js';
|
|
11
12
|
// ============================================================================
|
|
12
13
|
// Init Handler
|
|
13
14
|
// ============================================================================
|
|
@@ -58,8 +59,9 @@ export class InitHandler {
|
|
|
58
59
|
.option('--with-ruflo', 'Add optional Ruflo guidance and lifecycle hooks to the Codex setup')
|
|
59
60
|
.option('--with-windsurf', 'Include Windsurf MCP config and rules')
|
|
60
61
|
.option('--with-continuedev', 'Include Continue.dev MCP config and rules')
|
|
61
|
-
.option('--no-mcp', 'Skip MCP server config (MCP is enabled by default)')
|
|
62
|
-
.
|
|
62
|
+
.option('--no-mcp', 'Skip MCP server config (MCP is enabled by default). Cannot be combined with --with-mcp')
|
|
63
|
+
.addOption(new Option('--with-mcp', 'Write the project .mcp.json agentic-qe entry even when the agentic-qe-fleet Claude Code plugin already provides the AQE MCP server (#922). Cannot be combined with --no-mcp')
|
|
64
|
+
.conflicts('mcp'))
|
|
63
65
|
.option('--with-all-platforms', 'Include all coding agent platform configurations')
|
|
64
66
|
.option('--auto-migrate', 'Automatically migrate from v2 if detected')
|
|
65
67
|
.option('--with-claude-flow', 'Force Claude Flow integration setup')
|
|
@@ -123,13 +125,14 @@ export class InitHandler {
|
|
|
123
125
|
options.withCopilot || options.withCursor || options.withCline ||
|
|
124
126
|
options.withKilocode || options.withRoocode || options.withCodex ||
|
|
125
127
|
options.withWindsurf || options.withContinuedev || options.withAllPlatforms);
|
|
126
|
-
const
|
|
128
|
+
const flags = resolveInitFlags(options);
|
|
129
|
+
const databaseFree = flags.noDatabase || options.memory === 'memory';
|
|
127
130
|
// #532: `--no-claude` (commander negatable → options.claude === false) is
|
|
128
131
|
// only honored by the modular orchestrator. Route there too, or the flag
|
|
129
132
|
// silently falls through to runStandardInit and installs the full Claude
|
|
130
133
|
// surface it was meant to suppress.
|
|
131
|
-
const noClaudeRequested =
|
|
132
|
-
const noStatusLineRequested =
|
|
134
|
+
const noClaudeRequested = flags.noClaude;
|
|
135
|
+
const noStatusLineRequested = flags.noStatusLine;
|
|
133
136
|
if (options.browserEngine || options.modular || platformRequested || databaseFree || noClaudeRequested || noStatusLineRequested) {
|
|
134
137
|
console.log(chalk.blue('\n Agentic QE v3 Initialization\n'));
|
|
135
138
|
await this.runModularInit(options, context);
|
|
@@ -145,10 +148,12 @@ export class InitHandler {
|
|
|
145
148
|
}
|
|
146
149
|
async runModularInit(options, _context) {
|
|
147
150
|
const isJsonMode = options.json === true;
|
|
151
|
+
// #931/#935: commander maps --no-<name> to options.<name> === false.
|
|
152
|
+
const flags = resolveInitFlags(options);
|
|
148
153
|
// Database-free mode: `--no-database` or `--memory memory`. Skips the SQLite
|
|
149
154
|
// database phase and configures any MCP server to run in-memory. Export the
|
|
150
155
|
// backend env up-front so every subsystem spawned during init honors it.
|
|
151
|
-
const memoryOnly =
|
|
156
|
+
const memoryOnly = flags.noDatabase || options.memory === 'memory';
|
|
152
157
|
if (memoryOnly) {
|
|
153
158
|
process.env.AQE_MEMORY_BACKEND = 'memory';
|
|
154
159
|
if (!isJsonMode) {
|
|
@@ -159,7 +164,7 @@ export class InitHandler {
|
|
|
159
164
|
// `--with-<platform>` flags become the only targets. Commander maps the
|
|
160
165
|
// negatable flag to `options.claude === false`. Warn if it would produce an
|
|
161
166
|
// empty install (no platform selected) so the user isn't surprised.
|
|
162
|
-
const noClaude =
|
|
167
|
+
const noClaude = flags.noClaude;
|
|
163
168
|
if (noClaude) {
|
|
164
169
|
const anyPlatform = Boolean(options.withOpencode || options.withN8n || options.withKiro ||
|
|
165
170
|
options.withCopilot || options.withCursor || options.withCline ||
|
|
@@ -191,10 +196,11 @@ export class InitHandler {
|
|
|
191
196
|
codexGuidance: options.codexGuidance,
|
|
192
197
|
withWindsurf: options.withWindsurf,
|
|
193
198
|
withContinueDev: options.withContinuedev,
|
|
194
|
-
noMcp:
|
|
195
|
-
|
|
199
|
+
noMcp: flags.noMcp,
|
|
200
|
+
withMcp: flags.withMcp,
|
|
201
|
+
noGovernance: flags.noGovernance,
|
|
196
202
|
noClaude,
|
|
197
|
-
noStatusLine:
|
|
203
|
+
noStatusLine: flags.noStatusLine,
|
|
198
204
|
memoryBackend: memoryOnly ? 'memory' : undefined,
|
|
199
205
|
});
|
|
200
206
|
console.log(chalk.white(' Analyzing project...\n'));
|
|
@@ -299,6 +305,7 @@ export class InitHandler {
|
|
|
299
305
|
await this.cleanupAndExit(0);
|
|
300
306
|
}
|
|
301
307
|
async runLegacyWizard(options, _context) {
|
|
308
|
+
const flags = resolveInitFlags(options);
|
|
302
309
|
const { InitOrchestrator } = await import('../../init/init-wizard.js');
|
|
303
310
|
const orchestratorOptions = {
|
|
304
311
|
projectRoot: process.cwd(),
|
|
@@ -307,6 +314,8 @@ export class InitHandler {
|
|
|
307
314
|
browserEngine: options.browserEngine,
|
|
308
315
|
skipPatterns: options.skipPatterns,
|
|
309
316
|
withN8n: options.withN8n,
|
|
317
|
+
noMcp: flags.noMcp,
|
|
318
|
+
withMcp: flags.withMcp,
|
|
310
319
|
};
|
|
311
320
|
const orchestrator = new InitOrchestrator(orchestratorOptions);
|
|
312
321
|
if (options.wizard) {
|
|
@@ -464,6 +473,8 @@ Options:
|
|
|
464
473
|
--with-claude-flow Force Claude Flow integration setup
|
|
465
474
|
--skip-claude-flow Skip Claude Flow integration
|
|
466
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)
|
|
467
478
|
--no-governance Skip governance configuration (ADR-058)
|
|
468
479
|
--modular Use new modular init system
|
|
469
480
|
|
|
@@ -471,6 +482,9 @@ MCP Server:
|
|
|
471
482
|
MCP server configuration is ENABLED BY DEFAULT. It writes .mcp.json
|
|
472
483
|
at the project root so Claude Code auto-discovers the AQE MCP server.
|
|
473
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.
|
|
474
488
|
|
|
475
489
|
Governance:
|
|
476
490
|
Governance is ENABLED BY DEFAULT. It installs .claude/guidance/ with:
|
|
@@ -450,9 +450,11 @@ export class DomainTaskExecutor {
|
|
|
450
450
|
await this.publishTaskCompleted(task.id, result.value, domain);
|
|
451
451
|
// ADR-051: Record successful outcome
|
|
452
452
|
this.recordOutcome(task, routingTier, true, Date.now() - startTime).catch((e) => { logger.warn('recordOutcome failed', { error: e instanceof Error ? e.message : String(e), taskId: task.id }); });
|
|
453
|
-
// Save results to files if enabled
|
|
453
|
+
// Save results to files if enabled. A task can opt out per call with
|
|
454
|
+
// payload.saveResults === false (#925); the executor-wide config still
|
|
455
|
+
// acts as the global switch.
|
|
454
456
|
let savedFiles;
|
|
455
|
-
if (this._config.saveResults) {
|
|
457
|
+
if (this._config.saveResults && payload?.saveResults !== false) {
|
|
456
458
|
try {
|
|
457
459
|
const saveOptions = {
|
|
458
460
|
language: payload?.language || this._config.defaultLanguage,
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code plugin detection (#922)
|
|
3
|
+
*
|
|
4
|
+
* The `agentic-qe-fleet` Claude Code plugin bundles its own `agentic-qe` MCP
|
|
5
|
+
* server (exposed as `mcp__plugin_agentic-qe-fleet_agentic-qe__*`). When that
|
|
6
|
+
* plugin is enabled, `aqe init` must not also register a project-level
|
|
7
|
+
* `agentic-qe` server in `.mcp.json`, or AQE ends up registered twice.
|
|
8
|
+
*
|
|
9
|
+
* Detection reads `enabledPlugins` from the three Claude Code settings scopes
|
|
10
|
+
* and merges them per key with Claude Code's precedence (local > project >
|
|
11
|
+
* user):
|
|
12
|
+
* - user: `$CLAUDE_CONFIG_DIR/settings.json` (default `~/.claude/settings.json`)
|
|
13
|
+
* - project: `<project>/.claude/settings.json`
|
|
14
|
+
* - local: `<project>/.claude/settings.local.json`
|
|
15
|
+
*
|
|
16
|
+
* A key `agentic-qe-fleet@<marketplace>` whose merged value is `true` means
|
|
17
|
+
* the plugin is enabled. Missing, unreadable or invalid files count as "no
|
|
18
|
+
* opinion"; detection never throws.
|
|
19
|
+
*/
|
|
20
|
+
/** Plugin name as published in the `agentic-qe` marketplace. */
|
|
21
|
+
export declare const AQE_FLEET_PLUGIN_NAME = "agentic-qe-fleet";
|
|
22
|
+
export type ClaudeSettingsScope = 'user' | 'project' | 'local';
|
|
23
|
+
export interface PluginDetectionOptions {
|
|
24
|
+
/** Environment to read CLAUDE_CONFIG_DIR from (defaults to process.env). */
|
|
25
|
+
env?: NodeJS.ProcessEnv;
|
|
26
|
+
/** Home directory used when CLAUDE_CONFIG_DIR is unset (defaults to os.homedir()). */
|
|
27
|
+
homeDir?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface PluginDetectionResult {
|
|
30
|
+
/** True when at least one `agentic-qe-fleet@*` key resolves to `true`. */
|
|
31
|
+
enabled: boolean;
|
|
32
|
+
/** The enabled plugin key, e.g. `agentic-qe-fleet@agentic-qe`. */
|
|
33
|
+
pluginKey?: string;
|
|
34
|
+
/** Scope whose setting decided the enabled key. */
|
|
35
|
+
scope?: ClaudeSettingsScope;
|
|
36
|
+
/** Settings file that decided the enabled key. */
|
|
37
|
+
settingsPath?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Settings files in ascending precedence order (later entries win).
|
|
41
|
+
*/
|
|
42
|
+
export declare function claudeSettingsPaths(projectRoot: string, options?: PluginDetectionOptions): Array<{
|
|
43
|
+
scope: ClaudeSettingsScope;
|
|
44
|
+
path: string;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Detect whether the `agentic-qe-fleet` Claude Code plugin is enabled for
|
|
48
|
+
* `projectRoot`. Never throws.
|
|
49
|
+
*/
|
|
50
|
+
export declare function detectAqeFleetPlugin(projectRoot: string, options?: PluginDetectionOptions): PluginDetectionResult;
|
|
51
|
+
/** One-line notice printed when init skips the project MCP entry. */
|
|
52
|
+
export declare const AQE_PLUGIN_MCP_SKIP_MESSAGE: string;
|
|
53
|
+
/**
|
|
54
|
+
* One-line notice printed when the plugin is enabled but `.mcp.json` already
|
|
55
|
+
* has an `agentic-qe` entry (e.g. an upgrade from 3.15.1). Init never deletes
|
|
56
|
+
* user config, so the entry is kept and the user is told how to remove it.
|
|
57
|
+
*/
|
|
58
|
+
export declare const AQE_PLUGIN_MCP_EXISTING_ENTRY_MESSAGE: string;
|
|
59
|
+
/** True when `<projectRoot>/.mcp.json` declares an `agentic-qe` server. Never throws. */
|
|
60
|
+
export declare function hasProjectAqeMcpEntry(projectRoot: string): boolean;
|
|
61
|
+
/** The notice to print when init skips the project entry because of the plugin. */
|
|
62
|
+
export declare function aqePluginMcpSkipMessage(projectRoot: string): string;
|
|
63
|
+
//# sourceMappingURL=claude-plugin-detection.d.ts.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code plugin detection (#922)
|
|
3
|
+
*
|
|
4
|
+
* The `agentic-qe-fleet` Claude Code plugin bundles its own `agentic-qe` MCP
|
|
5
|
+
* server (exposed as `mcp__plugin_agentic-qe-fleet_agentic-qe__*`). When that
|
|
6
|
+
* plugin is enabled, `aqe init` must not also register a project-level
|
|
7
|
+
* `agentic-qe` server in `.mcp.json`, or AQE ends up registered twice.
|
|
8
|
+
*
|
|
9
|
+
* Detection reads `enabledPlugins` from the three Claude Code settings scopes
|
|
10
|
+
* and merges them per key with Claude Code's precedence (local > project >
|
|
11
|
+
* user):
|
|
12
|
+
* - user: `$CLAUDE_CONFIG_DIR/settings.json` (default `~/.claude/settings.json`)
|
|
13
|
+
* - project: `<project>/.claude/settings.json`
|
|
14
|
+
* - local: `<project>/.claude/settings.local.json`
|
|
15
|
+
*
|
|
16
|
+
* A key `agentic-qe-fleet@<marketplace>` whose merged value is `true` means
|
|
17
|
+
* the plugin is enabled. Missing, unreadable or invalid files count as "no
|
|
18
|
+
* opinion"; detection never throws.
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync } from 'fs';
|
|
21
|
+
import { homedir } from 'os';
|
|
22
|
+
import { join } from 'path';
|
|
23
|
+
import { safeJsonParse } from '../shared/safe-json.js';
|
|
24
|
+
/** Plugin name as published in the `agentic-qe` marketplace. */
|
|
25
|
+
export const AQE_FLEET_PLUGIN_NAME = 'agentic-qe-fleet';
|
|
26
|
+
/**
|
|
27
|
+
* Settings files in ascending precedence order (later entries win).
|
|
28
|
+
*/
|
|
29
|
+
export function claudeSettingsPaths(projectRoot, options = {}) {
|
|
30
|
+
const env = options.env ?? process.env;
|
|
31
|
+
const configDir = env.CLAUDE_CONFIG_DIR?.trim()
|
|
32
|
+
? env.CLAUDE_CONFIG_DIR.trim()
|
|
33
|
+
: join(options.homeDir ?? homedir(), '.claude');
|
|
34
|
+
return [
|
|
35
|
+
{ scope: 'user', path: join(configDir, 'settings.json') },
|
|
36
|
+
{ scope: 'project', path: join(projectRoot, '.claude', 'settings.json') },
|
|
37
|
+
{ scope: 'local', path: join(projectRoot, '.claude', 'settings.local.json') },
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
/** Read `enabledPlugins` from one settings file; null on any failure. */
|
|
41
|
+
function readEnabledPlugins(path) {
|
|
42
|
+
try {
|
|
43
|
+
const parsed = safeJsonParse(readFileSync(path, 'utf-8'));
|
|
44
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
45
|
+
return null;
|
|
46
|
+
const plugins = parsed.enabledPlugins;
|
|
47
|
+
if (!plugins || typeof plugins !== 'object' || Array.isArray(plugins))
|
|
48
|
+
return null;
|
|
49
|
+
return plugins;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function isFleetPluginKey(key) {
|
|
56
|
+
const at = key.lastIndexOf('@');
|
|
57
|
+
const name = at === -1 ? key : key.slice(0, at);
|
|
58
|
+
return name === AQE_FLEET_PLUGIN_NAME && at > 0 && at < key.length - 1;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detect whether the `agentic-qe-fleet` Claude Code plugin is enabled for
|
|
62
|
+
* `projectRoot`. Never throws.
|
|
63
|
+
*/
|
|
64
|
+
export function detectAqeFleetPlugin(projectRoot, options = {}) {
|
|
65
|
+
try {
|
|
66
|
+
const merged = new Map();
|
|
67
|
+
for (const { scope, path } of claudeSettingsPaths(projectRoot, options)) {
|
|
68
|
+
const plugins = readEnabledPlugins(path);
|
|
69
|
+
if (!plugins)
|
|
70
|
+
continue;
|
|
71
|
+
for (const [key, value] of Object.entries(plugins)) {
|
|
72
|
+
if (isFleetPluginKey(key))
|
|
73
|
+
merged.set(key, { value, scope, path });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const [key, entry] of merged) {
|
|
77
|
+
if (entry.value === true) {
|
|
78
|
+
return { enabled: true, pluginKey: key, scope: entry.scope, settingsPath: entry.path };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Detection is advisory; fall through to "not enabled".
|
|
84
|
+
}
|
|
85
|
+
return { enabled: false };
|
|
86
|
+
}
|
|
87
|
+
/** One-line notice printed when init skips the project MCP entry. */
|
|
88
|
+
export const AQE_PLUGIN_MCP_SKIP_MESSAGE = ' MCP: skipped — the agentic-qe-fleet plugin already provides the AQE MCP server ' +
|
|
89
|
+
'(mcp__plugin_agentic-qe-fleet_agentic-qe__* tools); run `aqe init --with-mcp` to add the project entry anyway';
|
|
90
|
+
/**
|
|
91
|
+
* One-line notice printed when the plugin is enabled but `.mcp.json` already
|
|
92
|
+
* has an `agentic-qe` entry (e.g. an upgrade from 3.15.1). Init never deletes
|
|
93
|
+
* user config, so the entry is kept and the user is told how to remove it.
|
|
94
|
+
*/
|
|
95
|
+
export const AQE_PLUGIN_MCP_EXISTING_ENTRY_MESSAGE = ' MCP: kept the existing project `agentic-qe` entry in .mcp.json — it duplicates the agentic-qe-fleet ' +
|
|
96
|
+
"plugin's AQE MCP server (mcp__plugin_agentic-qe-fleet_agentic-qe__* tools); to remove it, delete the " +
|
|
97
|
+
'`agentic-qe` key from .mcp.json or run `claude mcp remove agentic-qe -s project`';
|
|
98
|
+
/** True when `<projectRoot>/.mcp.json` declares an `agentic-qe` server. Never throws. */
|
|
99
|
+
export function hasProjectAqeMcpEntry(projectRoot) {
|
|
100
|
+
try {
|
|
101
|
+
const parsed = safeJsonParse(readFileSync(join(projectRoot, '.mcp.json'), 'utf-8'));
|
|
102
|
+
if (!parsed || typeof parsed !== 'object')
|
|
103
|
+
return false;
|
|
104
|
+
const servers = parsed.mcpServers;
|
|
105
|
+
return !!servers && typeof servers === 'object' && !Array.isArray(servers) &&
|
|
106
|
+
Object.prototype.hasOwnProperty.call(servers, 'agentic-qe');
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/** The notice to print when init skips the project entry because of the plugin. */
|
|
113
|
+
export function aqePluginMcpSkipMessage(projectRoot) {
|
|
114
|
+
return hasProjectAqeMcpEntry(projectRoot)
|
|
115
|
+
? AQE_PLUGIN_MCP_EXISTING_ENTRY_MESSAGE
|
|
116
|
+
: AQE_PLUGIN_MCP_SKIP_MESSAGE;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=claude-plugin-detection.js.map
|
|
@@ -22,8 +22,13 @@ export declare function configureHooks(projectRoot: string, config: AQEInitConfi
|
|
|
22
22
|
* Configure MCP server.
|
|
23
23
|
* Creates .mcp.json (root level) with AQE v3 MCP server configuration.
|
|
24
24
|
* Uses npx to run the MCP server without requiring global installation.
|
|
25
|
+
*
|
|
26
|
+
* #922: skipped when the agentic-qe-fleet Claude Code plugin is enabled (it
|
|
27
|
+
* already provides the AQE MCP server) unless `force` is set (--with-mcp).
|
|
25
28
|
*/
|
|
26
|
-
export declare function configureMCP(projectRoot: string
|
|
29
|
+
export declare function configureMCP(projectRoot: string, options?: {
|
|
30
|
+
force?: boolean;
|
|
31
|
+
}): Promise<boolean>;
|
|
27
32
|
/**
|
|
28
33
|
* Generate CLAUDE.md for the project.
|
|
29
34
|
* Creates a comprehensive guide for Claude Code with V3-specific instructions.
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { existsSync, mkdirSync, writeFileSync, readFileSync, copyFileSync } from 'fs';
|
|
13
13
|
import { join, dirname } from 'path';
|
|
14
14
|
import { safeJsonParse } from '../shared/safe-json.js';
|
|
15
|
+
import { aqePluginMcpSkipMessage, detectAqeFleetPlugin } from './claude-plugin-detection.js';
|
|
15
16
|
import { mergeHooksSmart, generateAqeEnvVars, generateV3SettingsSections, applyV3Sections, mergeAqeEnv, backupSettingsFile, } from './settings-merge.js';
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Hook Configuration
|
|
@@ -272,8 +273,15 @@ routing:
|
|
|
272
273
|
* Configure MCP server.
|
|
273
274
|
* Creates .mcp.json (root level) with AQE v3 MCP server configuration.
|
|
274
275
|
* Uses npx to run the MCP server without requiring global installation.
|
|
276
|
+
*
|
|
277
|
+
* #922: skipped when the agentic-qe-fleet Claude Code plugin is enabled (it
|
|
278
|
+
* already provides the AQE MCP server) unless `force` is set (--with-mcp).
|
|
275
279
|
*/
|
|
276
|
-
export async function configureMCP(projectRoot) {
|
|
280
|
+
export async function configureMCP(projectRoot, options = {}) {
|
|
281
|
+
if (!options.force && detectAqeFleetPlugin(projectRoot).enabled) {
|
|
282
|
+
console.log(aqePluginMcpSkipMessage(projectRoot));
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
277
285
|
const mcpPath = join(projectRoot, '.mcp.json');
|
|
278
286
|
let mcpConfig = {};
|
|
279
287
|
if (existsSync(mcpPath)) {
|
|
@@ -26,6 +26,10 @@ export interface InitOrchestratorOptions {
|
|
|
26
26
|
wizardAnswers?: Record<string, unknown>;
|
|
27
27
|
/** Install n8n workflow testing agents and skills */
|
|
28
28
|
withN8n?: boolean;
|
|
29
|
+
/** Write the .mcp.json entry even when the agentic-qe-fleet plugin is enabled (#922) */
|
|
30
|
+
withMcp?: boolean;
|
|
31
|
+
/** Skip the .mcp.json entry entirely (--no-mcp, #931) */
|
|
32
|
+
noMcp?: boolean;
|
|
29
33
|
/** N8n API configuration */
|
|
30
34
|
n8nApiConfig?: {
|
|
31
35
|
baseUrl?: string;
|
package/dist/init/init-wizard.js
CHANGED
|
@@ -146,7 +146,9 @@ export class InitOrchestrator {
|
|
|
146
146
|
});
|
|
147
147
|
// Step 6: Configure MCP server
|
|
148
148
|
const mcpConfigured = await this.runStep('MCP Configuration', async () => {
|
|
149
|
-
|
|
149
|
+
if (this.options.noMcp)
|
|
150
|
+
return false;
|
|
151
|
+
return await configureMCP(this.projectRoot, { force: this.options.withMcp });
|
|
150
152
|
});
|
|
151
153
|
// Step 7: Generate CLAUDE.md
|
|
152
154
|
const claudeMdGenerated = await this.runStep('CLAUDE.md Generation', async () => {
|