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
|
@@ -1,4 +1,4 @@
|
|
|
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.
|
|
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
2
|
var P="quality-daemon",x=class{constructor(e){this.backend=e}backend;async get(e){return this.backend.kvGet(e,P)}async set(e,t){await this.backend.kvSet(e,t,P)}async search(e){return this.backend.kvSearch(e,P)}};import{cpus as Z,freemem as ee,totalmem as te,loadavg as ie}from"os";var p=class{queues={now:[],next:[],later:[]};_maxSize;constructor(e=1e3){this._maxSize=e}enqueue(e){return this.size>=this._maxSize&&(this.pruneExpired(),this.size>=this._maxSize)?!1:(this.queues[e.priority].push(e),!0)}dequeue(){let e=Date.now();for(let t of["now","next","later"]){let i=this.queues[t];for(;i.length>0;){let o=i.shift();if(!(o.ttlMs&&e-o.createdAt>o.ttlMs))return o}}}peek(){let e=Date.now();for(let t of["now","next","later"]){let i=this.queues[t];for(let o of i)if(!o.ttlMs||e-o.createdAt<=o.ttlMs)return o}}drainPriority(e){let t=this.queues[e].splice(0),i=Date.now();return t.filter(o=>!o.ttlMs||i-o.createdAt<=o.ttlMs)}pruneExpired(){let e=0,t=Date.now();for(let i of["now","next","later"]){let o=this.queues[i].length;this.queues[i]=this.queues[i].filter(r=>!r.ttlMs||t-r.createdAt<=r.ttlMs),e+=o-this.queues[i].length}return e}get size(){return this.queues.now.length+this.queues.next.length+this.queues.later.length}get depths(){return{now:this.queues.now.length,next:this.queues.next.length,later:this.queues.later.length}}get isEmpty(){return this.size===0}clear(){this.queues.now=[],this.queues.next=[],this.queues.later=[]}};import{watch as G}from"fs";import{execFile as Q}from"child_process";import{promisify as $}from"util";import{resolve as q,join as H}from"path";import{existsSync as z,readFileSync as E}from"fs";var _=$(Q),L={repoRoot:process.cwd(),debounceMs:500,maxChangedFiles:200,pollIntervalMs:5e3},g=class{constructor(e,t){this.queue=e;this.options={...L,...t}}queue;watcher;pollTimer;options;lastKnownHeads=new Map;debounceTimer;_running=!1;_polling=!1;get running(){return this._running}async start(){if(this._running)return;let e=q(this.options.repoRoot,".git","refs","heads");if(!z(e))throw new Error(`Git refs directory not found: ${e}`);await this.snapshotHeads(),process.platform==="darwin"||process.platform==="win32"?this.watcher=G(e,{recursive:!0},(i,o)=>{o&&this.handleRefChange(o)}):(this.pollTimer=setInterval(()=>{this.poll().catch(i=>{console.debug("[GitWatcher] Poll error:",i)})},this.options.pollIntervalMs),this.pollTimer.unref?.()),this._running=!0}stop(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=void 0),this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=void 0),this.watcher&&(this.watcher.close(),this.watcher=void 0),this._running=!1}async poll(){if(this._polling)return[];this._polling=!0;let e=[];try{let{stdout:t}=await _("git",["for-each-ref","--format=%(refname:short) %(objectname:short)","refs/heads/"],{cwd:this.options.repoRoot});for(let i of t.trim().split(`
|
|
3
3
|
`)){if(!i)continue;let[o,r]=i.split(" "),n=this.lastKnownHeads.get(o);n&&n!==r&&(e.push(o),await this.enqueueCommitAnalysis(o,r)),this.lastKnownHeads.set(o,r)}}catch{}finally{this._polling=!1}return e}handleRefChange(e){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.processRefChange(e).catch(t=>{console.debug("[GitWatcher] Error processing ref change:",t)})},this.options.debounceMs)}async processRefChange(e){let t=e.replace(/\\/g,"/"),i=q(this.options.repoRoot,".git","refs","heads"),o=H(i,e),r;try{r=E(o,"utf-8").trim()}catch{return}this.lastKnownHeads.get(t)!==r&&(this.lastKnownHeads.set(t,r),await this.enqueueCommitAnalysis(t,r))}async enqueueCommitAnalysis(e,t){let i=[];try{let{stdout:n}=await _("git",["diff-tree","--no-commit-id","--name-only","-r",t],{cwd:this.options.repoRoot});i=n.trim().split(`
|
|
4
4
|
`).filter(Boolean).slice(0,this.options.maxChangedFiles)}catch{}let o={type:"git_commit",branch:e,commitHash:t,changedFiles:i},r={id:`git-${t}-${Date.now()}`,priority:"next",payload:o,createdAt:Date.now(),source:"git-watcher",ttlMs:300*1e3};this.queue.enqueue(r)}async snapshotHeads(){try{let{stdout:e}=await _("git",["for-each-ref","--format=%(refname:short) %(objectname:short)","refs/heads/"],{cwd:this.options.repoRoot});for(let t of e.trim().split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
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{b as f,d as v}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{b as f,d as v}from"./chunk-URWT3EQT.js";import q,{MultiBar as F,Presets as k}from"cli-progress";import O from"ora";import o from"chalk";v();import{existsSync as w,readFileSync as y,writeFileSync as j,mkdirSync as W,unlinkSync as V}from"fs";import{join as p}from"path";import{homedir as C}from"os";var u={wizards:{enabled:!0,themes:["default","minimal","detailed"],defaultTheme:"default"},progress:{style:"multi-bar",updateIntervalMs:100,showETA:!0,colors:!0},completion:{maxSuggestions:10,historyWeight:.3,contextWeight:.7,fuzzyMatch:!0},streaming:{enabled:!0,bufferSize:100,updateIntervalMs:50}};function x(){return p(C(),".aqe")}function E(){return p(x(),"cli-config.json")}var g=null,d=0,T=5e3;function S(){return g?Date.now()-d<T:!1}function A(s){let e=[],t=s;if(typeof t.enabled!="boolean"&&t.enabled!==void 0&&e.push({path:"wizards.enabled",message:"must be a boolean"}),t.themes!==void 0)if(!Array.isArray(t.themes))e.push({path:"wizards.themes",message:"must be an array"});else{let r=["default","minimal","detailed"];for(let n of t.themes)r.includes(n)||e.push({path:"wizards.themes",message:`invalid theme: ${n}`})}return t.defaultTheme!==void 0&&(["default","minimal","detailed"].includes(t.defaultTheme)||e.push({path:"wizards.defaultTheme",message:`invalid theme: ${t.defaultTheme}`})),e}function P(s){let e=[],t=s;return t.style!==void 0&&(["multi-bar","single-bar","spinner"].includes(t.style)||e.push({path:"progress.style",message:`invalid style: ${t.style}`})),t.updateIntervalMs!==void 0&&(typeof t.updateIntervalMs!="number"||t.updateIntervalMs<10)&&e.push({path:"progress.updateIntervalMs",message:"must be a number >= 10"}),typeof t.showETA!="boolean"&&t.showETA!==void 0&&e.push({path:"progress.showETA",message:"must be a boolean"}),typeof t.colors!="boolean"&&t.colors!==void 0&&e.push({path:"progress.colors",message:"must be a boolean"}),e}function $(s){let e=[],t=s;return t.maxSuggestions!==void 0&&(typeof t.maxSuggestions!="number"||t.maxSuggestions<1)&&e.push({path:"completion.maxSuggestions",message:"must be a number >= 1"}),t.historyWeight!==void 0&&(typeof t.historyWeight!="number"||t.historyWeight<0||t.historyWeight>1)&&e.push({path:"completion.historyWeight",message:"must be a number between 0 and 1"}),t.contextWeight!==void 0&&(typeof t.contextWeight!="number"||t.contextWeight<0||t.contextWeight>1)&&e.push({path:"completion.contextWeight",message:"must be a number between 0 and 1"}),typeof t.fuzzyMatch!="boolean"&&t.fuzzyMatch!==void 0&&e.push({path:"completion.fuzzyMatch",message:"must be a boolean"}),e}function I(s){let e=[],t=s;return typeof t.enabled!="boolean"&&t.enabled!==void 0&&e.push({path:"streaming.enabled",message:"must be a boolean"}),t.bufferSize!==void 0&&(typeof t.bufferSize!="number"||t.bufferSize<1)&&e.push({path:"streaming.bufferSize",message:"must be a number >= 1"}),t.updateIntervalMs!==void 0&&(typeof t.updateIntervalMs!="number"||t.updateIntervalMs<10)&&e.push({path:"streaming.updateIntervalMs",message:"must be a number >= 10"}),e}function M(s){let e=[];if(typeof s!="object"||s===null)return{valid:!1,errors:[{path:"",message:"config must be an object"}]};let t=s;return t.wizards!==void 0&&(typeof t.wizards!="object"||t.wizards===null?e.push({path:"wizards",message:"must be an object"}):e.push(...A(t.wizards))),t.progress!==void 0&&(typeof t.progress!="object"||t.progress===null?e.push({path:"progress",message:"must be an object"}):e.push(...P(t.progress))),t.completion!==void 0&&(typeof t.completion!="object"||t.completion===null?e.push({path:"completion",message:"must be an object"}):e.push(...$(t.completion))),t.streaming!==void 0&&(typeof t.streaming!="object"||t.streaming===null?e.push({path:"streaming",message:"must be an object"}):e.push(...I(t.streaming))),{valid:e.length===0,errors:e}}var z=["__proto__","constructor","prototype"];function m(s,e){let t={...s};for(let r of Object.keys(e)){if(z.includes(r)){console.warn(`Security: Skipping forbidden key '${String(r)}' in configuration merge`);continue}let n=e[r],i=s[r];n!==void 0&&typeof n=="object"&&!Array.isArray(n)&&typeof i=="object"&&!Array.isArray(i)?t[r]=m(i,n):n!==void 0&&(t[r]=n)}return t}function D(){let s=E();if(!w(s))return{...u};try{let e=y(s,"utf-8"),t=f(e),r=M(t);return r.valid?m(u,t):(console.warn(`CLI config validation errors: ${r.errors.map(n=>`${n.path}: ${n.message}`).join(", ")}`),console.warn("Using default configuration"),{...u})}catch(e){return console.warn(`Failed to load CLI config: ${e instanceof Error?e.message:"Unknown error"}`),{...u}}}function c(){return S()||(g=D(),d=Date.now()),g}function B(){return process.stdout.isTTY===!0}function h(){let s=c();return process.env.NO_COLOR!==void 0?!1:process.env.FORCE_COLOR!==void 0?!0:s.progress.colors&&B()}var b=class{multiBar;agentBars=new Map;agentStates=new Map;fleetBar=null;startTime=Date.now();options;isActive=!1;constructor(e={}){let t=c(),r=h();this.options={title:"Fleet Progress",showEta:t.progress.showETA,showPercentage:!0,...e};let n=r?o.cyan("{bar}"):"{bar}",i=this.options.format||`{name} ${n} {percentage}% | {status} {eta}`;this.multiBar=new F({clearOnComplete:!1,hideCursor:!0,format:i,barCompleteChar:"\u2588",barIncompleteChar:"\u2591",forceRedraw:!0,fps:Math.round(1e3/t.progress.updateIntervalMs)},k.shades_classic)}start(e){this.isActive=!0,this.startTime=Date.now(),console.log(o.blue(`
|
|
3
3
|
${this.options.title}
|
|
4
4
|
`)),this.fleetBar=this.multiBar.create(100,0,{name:o.white("Fleet Progress".padEnd(30)),status:"",eta:""})}addAgent(e){if(!this.isActive)return;this.agentStates.set(e.id,e);let t=this.multiBar.create(100,e.progress,{name:o.gray(this.truncateName(e.name,30).padEnd(30)),status:this.getStatusIcon(e.status),eta:e.eta?this.formatEta(e.eta):""});this.agentBars.set(e.id,t),this.updateFleetProgress()}updateAgent(e,t,r){if(!this.isActive)return;let n=this.agentStates.get(e),i=this.agentBars.get(e);!n||!i||(n.progress=Math.min(100,Math.max(0,t)),r?.status&&(n.status=r.status),r?.message&&(n.message=r.message),r?.eta!==void 0&&(n.eta=r.eta),i.update(n.progress,{name:this.getAgentNameDisplay(n),status:this.getStatusIcon(n.status),eta:n.eta?this.formatEta(n.eta):""}),this.updateFleetProgress())}completeAgent(e,t=!0){if(!this.isActive)return;let r=this.agentStates.get(e),n=this.agentBars.get(e);!r||!n||(r.status=t?"completed":"failed",r.progress=t?100:r.progress,n.update(r.progress,{name:this.getAgentNameDisplay(r),status:this.getStatusIcon(r.status),eta:""}),this.updateFleetProgress())}stop(){if(!this.isActive)return;this.isActive=!1,this.multiBar.stop();let e=Array.from(this.agentStates.values()).filter(i=>i.status==="completed").length,t=Array.from(this.agentStates.values()).filter(i=>i.status==="failed").length,r=this.agentStates.size,n=Date.now()-this.startTime;console.log(""),console.log(t===0?o.green(`All ${e}/${r} agents completed successfully (${this.formatDuration(n)})`):o.yellow(`${e}/${r} agents completed, ${t} failed (${this.formatDuration(n)})`)),console.log("")}updateFleetProgress(){if(!this.fleetBar)return;let e=Array.from(this.agentStates.values()),t=e.reduce((a,l)=>a+l.progress,0),r=e.length>0?Math.round(t/e.length):0,n=e.filter(a=>a.status==="completed").length,i=e.filter(a=>a.status==="running").length;this.fleetBar.update(r,{status:o.gray(`${n}/${e.length} complete, ${i} running`),eta:this.options.showEta?this.estimateFleetEta(e):""})}getAgentNameDisplay(e){let t=this.truncateName(e.name,26);switch(e.status){case"completed":return o.green(t.padEnd(30));case"failed":return o.red(t.padEnd(30));case"running":return o.yellow(t.padEnd(30));default:return o.gray(t.padEnd(30))}}getStatusIcon(e){switch(e){case"completed":return o.green("\u2713");case"failed":return o.red("\u2717");case"running":return o.yellow("\u25B6");default:return o.gray("\u25CB")}}truncateName(e,t){return e.length<=t?e:e.slice(0,t-3)+"..."}formatEta(e){return e<=0?"":e<1e3?`${e}ms`:e<6e4?`${Math.round(e/1e3)}s`:e<36e5?`${Math.round(e/6e4)}m`:`${Math.round(e/36e5)}h`}formatDuration(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:e<36e5?`${(e/6e4).toFixed(1)}m`:`${(e/36e5).toFixed(1)}h`}estimateFleetEta(e){let t=e.filter(a=>a.status==="running"||a.status==="pending");if(t.length===0)return"";let r=t.map(a=>a.eta||0).filter(a=>a>0);if(r.length>0){let a=Math.max(...r);return o.gray(`ETA: ${this.formatEta(a)}`)}let n=Date.now()-this.startTime,i=t.reduce((a,l)=>a+l.progress,0)/t.length;if(i>0){let a=n/(i/100),l=Math.max(0,a-n);return o.gray(`ETA: ${this.formatEta(l)}`)}return""}};function X(s){let e=Date.now(),t=O({text:s,color:"cyan"}).start(),r=setInterval(()=>{let i=((Date.now()-e)/1e3).toFixed(1);t.text=`${s} (${i}s)`},100);r.unref?.();let n=()=>{clearInterval(r)};return{spinner:t,stop:()=>{n(),t.stop()},succeed:i=>{n();let a=((Date.now()-e)/1e3).toFixed(1);t.succeed(i||`${s} (${a}s)`)},fail:i=>{n();let a=((Date.now()-e)/1e3).toFixed(1);t.fail(i||`${s} failed (${a}s)`)}}}export{b as a,X as b};
|
|
@@ -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{e as A,f as O,j as I,k as V,q as z}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{e as A,f as O,j as I,k as V,q as z}from"./chunk-HYWW4A2E.js";import{b as S,e as q}from"./chunk-3KTAMNKI.js";import{b as p}from"./chunk-D75HDHX3.js";import{createRequire as T}from"node:module";import{execFileSync as N}from"node:child_process";import{existsSync as j}from"node:fs";import{dirname as k,join as g}from"node:path";function G(i=process.platform,e=process.execPath,t=j){if(i==="win32"){let r=g(k(e),"node_modules","npm","bin","npm-cli.js");if(t(r))return[e,[r]]}return["npm",[]]}function B(){try{return x.resolve("vibium")}catch{try{return T(g(process.cwd(),"package.json")).resolve("vibium")}catch{}let[i,e]=G(),t=N(i,[...e,"root","-g"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","pipe"]}).trim();return x.resolve(g(t,"vibium"))}}function J(i){return typeof i?.browser?.start=="function"?i:typeof i?.default?.browser?.start=="function"?i.default:null}async function F(){let i;try{i=await import("vibium")}catch(t){if(t.code!=="ERR_MODULE_NOT_FOUND"&&t.code!=="MODULE_NOT_FOUND")throw t;let r;try{r=B()}catch(n){throw new Error(`Vibium is not installed; run ${l}`,{cause:n})}i=x(r)}let e=J(i);if(!e)throw new Error(`Unsupported Vibium API: the installed package exposes no browser.start() (neither as a named nor a default export); run ${l}`);return e}function P(){try{let i=g(k(B()),"..","bin","cli.js");return N(process.execPath,[i,"is-installed"],{timeout:5e3,stdio:"ignore"}),!0}catch{return!1}}var l,x,_=p(()=>{"use strict";l="aqe init --browser-engine (or npm install vibium@^26.8.21)",x=T(import.meta.url)});var M,U=p(()=>{"use strict";M={enabled:!0,headless:!0,timeout:3e4,retryAttempts:3,fallbackEnabled:!0,browserType:"chromium",viewport:{width:1280,height:720},userAgent:"",devtools:!1,slowMo:0,screenshotDir:".agentic-qe/screenshots"}});function W(i){return i instanceof o}function a(i,e="Unknown Vibium error"){return W(i)?i:i instanceof Error?new o(i.message||e,"UNKNOWN_ERROR",i):new o(typeof i=="string"?i:e,"UNKNOWN_ERROR")}var o,m,v,w,b,E,d,f,$=p(()=>{"use strict";o=class i extends Error{constructor(t,r,n){super(t);this.code=r;this.cause=n;this.name="VibiumError",Error.captureStackTrace&&Error.captureStackTrace(this,i),n?.stack&&(this.stack+=`
|
|
3
3
|
Caused by: ${n.stack}`)}code;cause},m=class extends o{constructor(e="Vibium MCP server is unavailable",t){super(e,"VIBIUM_UNAVAILABLE",t),this.name="VibiumUnavailableError"}},v=class extends o{constructor(e="Browser operation timed out",t){super(e,"VIBIUM_TIMEOUT",t),this.name="VibiumTimeoutError"}},w=class extends o{selector;constructor(e,t){super(`Element not found: ${e}`,"ELEMENT_NOT_FOUND",t),this.name="VibiumElementNotFoundError",this.selector=e}},b=class extends o{constructor(e="Failed to connect to browser",t){super(e,"CONNECTION_ERROR",t),this.name="VibiumConnectionError"}},E=class extends o{url;statusCode;constructor(e,t,r){let n=t?`Navigation failed: ${e} (HTTP ${t})`:`Navigation failed: ${e}`;super(n,"NAVIGATION_ERROR",r),this.name="VibiumNavigationError",this.url=e,this.statusCode=t}},d=class extends o{constructor(e="Failed to capture screenshot",t){super(e,"SCREENSHOT_ERROR",t),this.name="VibiumScreenshotError"}},f=class extends o{action;selector;constructor(e,t,r){super(`Failed to ${e} element: ${t}`,"INTERACTION_ERROR",r),this.name="VibiumInteractionError",this.action=e,this.selector=t}}});import{randomUUID as K}from"crypto";async function C(){if(y!==null)return y;try{return y=(await F()).browser,D=!0,y}catch(i){return console.warn("[Vibium] Failed to load vibium package:",i),D=!1,null}}async function L(i,e,t){let r;for(let n=1;n<=e;n++)try{return await i()}catch(s){if(r=S(s),n<e){let u=Math.min(100*Math.pow(2,n-1),2e3);await new Promise(c=>setTimeout(c,u))}}throw new o(`${t} failed after ${e} attempts`,"RETRY_EXHAUSTED",r)}async function h(i,e){let t=Date.now();try{let r=await i();return V()&&console.log(`[Vibium] ${e}: ${Date.now()-t}ms`),r}catch(r){throw V()&&console.log(`[Vibium] ${e} failed: ${Date.now()-t}ms`,r),r}}var y,D,R,H,X=p(()=>{_();U();$();q();z();y=null,D=!1;R=class{config;currentSession=null;lastHealthCheck=null;_initialized=!1;_available=null;vibeInstance=null;browserInstance=null;constructor(e={}){this.config={...M,...e}}async isAvailable(){if(!this.config.enabled)return!1;if(this._available!==null)return this._available;try{let e=await C();return this._available=e!==null&&P(),this._available}catch{return this._available=!1,!1}}async getHealth(){let e=new Date;if(!this.config.enabled)return{status:"unavailable",features:["fallback-only"],lastChecked:e,error:"Vibium is disabled by configuration",sessionActive:!1};try{await this.isAvailable()?this.lastHealthCheck={status:this.vibeInstance?"connected":"disconnected",browserType:this.config.browserType,features:["browser-launch","navigation","element-interaction","screenshots","script-evaluation","accessibility-testing"],latencyMs:10,lastChecked:e,sessionActive:this.vibeInstance!==null}:this.lastHealthCheck={status:"unavailable",features:["fallback-only"],lastChecked:e,error:`Vibium runtime or browser payload unavailable; run ${l}`,sessionActive:!1}}catch(t){this.lastHealthCheck={status:"error",features:["fallback-only"],lastChecked:e,error:t instanceof Error?t.message:"Unknown error",sessionActive:!1}}return this.lastHealthCheck}async getSession(){return this.currentSession}async launch(e){if(!A())return{success:!1,error:new m("Browser mode is disabled by feature flags")};let t=async()=>{let r=await C();if(!r)throw new m(`Vibium runtime unavailable; run ${l}`);let n=e?.headless??this.config.headless;if(!P())throw new m(`Vibium browser payload unavailable; run ${l}`);let s=await r.start({headless:n});try{this.vibeInstance=await s.page(),this.browserInstance=s}catch(c){throw await s.stop(),c}let u={id:this.generateSessionId(),browserType:this.config.browserType,launchedAt:new Date,status:"connected",viewport:e?.viewport??this.config.viewport,headless:n};return this.currentSession=u,u};try{return{success:!0,value:I()?await L(()=>h(t,"browser_launch"),this.config.retryAttempts,"browser_launch"):await h(t,"browser_launch")}}catch(r){return{success:!1,error:a(r,"Failed to launch browser")}}}async quit(){if(!this.vibeInstance)return{success:!1,error:new b("No active browser session")};let e=async()=>{this.vibeInstance&&(await this.browserInstance?.stop(),this.vibeInstance=null,this.browserInstance=null),this.currentSession=null};try{return await h(e,"browser_quit"),{success:!0,value:void 0}}catch(t){return{success:!1,error:a(t,"Failed to quit browser")}}}async navigate(e){this.ensureSession();let t=async()=>{let r=Date.now();await this.vibeInstance.go(e.url);let n="";try{n=await this.vibeInstance.evaluate("document.title")}catch{n="Unknown"}let s={url:e.url,statusCode:200,title:n,durationMs:Date.now()-r,success:!0};return this.currentSession&&(this.currentSession.currentUrl=e.url),s};try{return{success:!0,value:I()?await L(()=>h(t,"page_navigate"),this.config.retryAttempts,"page_navigate"):await h(t,"page_navigate")}}catch(r){return{success:!1,error:new E(e.url,void 0,r instanceof Error?r:void 0)}}}async getPageInfo(){this.ensureSession();try{let e=await this.vibeInstance.evaluate("window.location.href"),t=await this.vibeInstance.evaluate("document.title");return{success:!0,value:{url:e,title:t,viewport:this.config.viewport,loadState:"loaded"}}}catch(e){return{success:!1,error:a(e,"Failed to get page info")}}}async goBack(){this.ensureSession();try{return await this.vibeInstance.evaluate("window.history.back()"),{success:!0,value:void 0}}catch(e){return{success:!1,error:a(e,"Failed to go back")}}}async goForward(){this.ensureSession();try{return await this.vibeInstance.evaluate("window.history.forward()"),{success:!0,value:void 0}}catch(e){return{success:!1,error:a(e,"Failed to go forward")}}}async reload(){this.ensureSession();try{return await this.vibeInstance.evaluate("window.location.reload()"),{success:!0,value:void 0}}catch(e){return{success:!1,error:a(e,"Failed to reload page")}}}async findElement(e){this.ensureSession();try{let t=await this.vibeInstance.find(e.selector,{timeout:e.timeout??this.config.timeout});return{success:!0,value:{selector:e.selector,tagName:t.info.tag,textContent:t.info.text,attributes:{},boundingBox:t.info.box,visible:!0,enabled:!0}}}catch(t){return{success:!1,error:new w(e.selector,t instanceof Error?t:void 0)}}}async findElements(e){this.ensureSession();try{let t=e.selector.replace(/\\/g,"\\\\").replace(/'/g,"\\'");return{success:!0,value:(await this.vibeInstance.evaluate(`
|
|
4
4
|
Array.from(document.querySelectorAll('${t}'))
|
|
5
5
|
.map(el => ({
|
|
@@ -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{e as l,l as 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{e as l,l as c}from"./chunk-GDSLQTJC.js";import{a as i}from"./chunk-O6QTCUSL.js";import{a as n,e as h}from"./chunk-3KTAMNKI.js";h();var d=class extends c{config={name:"qe/tests/schedule",description:"Schedule and execute tests using phase-based pipeline with git-aware selection and flaky tracking. Runs tests in phases (unit, integration, e2e), selects affected tests from git changes, and tracks flaky tests.",domain:"test-execution",schema:this.buildSchema()};buildSchema(){return{type:"object",properties:{cwd:{type:"string",description:"Working directory for test execution (defaults to project root)"},gitRef:{type:"string",description:'Git ref to compare for affected test selection (e.g., "main", "HEAD~3")'},useGitAware:{type:"boolean",description:"Enable git-aware test selection to only run affected tests",default:!0},trackFlaky:{type:"boolean",description:"Enable flaky test tracking and quarantine",default:!0}}}}async execute(s,o){if(s.gitRef!==void 0){let a=i(s.gitRef,"gitRef");if(a)return{success:!1,error:a}}try{let{runTestPipeline:a}=await import("./test-scheduling-GYXJQHJL.js"),u=await l(o),t=await a({cwd:s.cwd||process.cwd(),memory:u,baseRef:s.gitRef,flakyHistoryPath:s.trackFlaky!==!1?".agentic-qe/flaky-history.json":void 0,runAllTests:s.useGitAware===!1}),f=t.phaseResults.reduce((e,r)=>e+r.totalTests,0),p=t.phaseResults.reduce((e,r)=>e+r.passed,0),g=t.phaseResults.reduce((e,r)=>e+r.failed,0);return{success:!0,data:{pipelineId:o.requestId,phases:t.phaseResults.map(e=>({phaseId:e.phaseId,phaseName:e.phaseName,totalTests:e.totalTests,passed:e.passed,failed:e.failed,passRate:e.passRate,durationMs:e.durationMs})),gitAware:{enabled:!t.ranAllTests,selectedTests:t.selectedTests.length,gitRef:s.gitRef},flakyTracking:{enabled:s.trackFlaky!==!1},totalDuration:t.totalDurationMs,ranAllTests:t.ranAllTests,summary:`Executed ${t.phaseResults.length} phases, ${f} tests (${p} passed, ${g} failed) in ${t.totalDurationMs}ms`}}}catch(a){return{success:!1,error:n(a)}}}};export{d as a};
|
|
@@ -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{b as _}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{b as _}from"./chunk-D75HDHX3.js";function p(e){return g.has(e)}function m(e){return l.has(e)}function b(e){return/^qe-security|^qe-pentest/.test(e)}function x(e,t="strict"){if(t==="off")return{text:e,redactions:[],replacementCount:0};let r=e,s=new Set,c=0;for(let a of d){if(!a.modes.includes(t))continue;let i=new RegExp(a.regex.source,a.regex.flags),n=r.match(i);n&&n.length>0&&(s.add(a.category),c+=n.length,r=r.replace(i,a.replacement))}return{text:r,redactions:Array.from(s).sort(),replacementCount:c}}function E(e,t,r){if(b(e)&&!m(t))throw new o(`Security agent "${e}" may only use providers: ${[...l].join(", ")}. Got: "${t}". OpenRouter is excluded (third-party proxy risk).`,6);if(r==="off"&&!p(t))throw new o(`Redaction mode "off" is only allowed for self-hosted providers (${[...g].join(", ")}). Got: "${t}".`,6)}var d,g,l,o,A=_(()=>{"use strict";d=[{category:"aws_key",regex:/\b(AKIA[0-9A-Z]{16})\b/g,replacement:"<REDACTED:aws_key>",modes:["strict","balanced"]},{category:"env_value",regex:/^([A-Z][A-Z0-9_]{2,})=(.+)$/gm,replacement:"$1=<REDACTED:env_value>",modes:["strict","balanced"]},{category:"api_key_header",regex:/(Authorization:\s*Bearer\s+)\S+/gi,replacement:"$1<REDACTED:api_key>",modes:["strict","balanced"]},{category:"api_key_header",regex:/(x-api-key:\s*)\S+/gi,replacement:"$1<REDACTED:api_key>",modes:["strict","balanced"]},{category:"private_key",regex:/-----BEGIN\s[\w\s]*PRIVATE KEY-----[\s\S]*?-----END\s[\w\s]*PRIVATE KEY-----/g,replacement:"<REDACTED:private_key>",modes:["strict","balanced"]},{category:"jwt",regex:/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,replacement:"<REDACTED:jwt>",modes:["strict","balanced"]},{category:"github_token",regex:/\b(ghp_|gho_|ghs_|ghr_|github_pat_)[A-Za-z0-9_]{16,}\b/g,replacement:"<REDACTED:github_token>",modes:["strict","balanced"]},{category:"gitlab_token",regex:/\b(glpat-)[A-Za-z0-9_-]{20,}\b/g,replacement:"<REDACTED:gitlab_token>",modes:["strict","balanced"]},{category:"slack_token",regex:/\b(xoxb-|xoxp-|xoxs-|xoxa-)[A-Za-z0-9-]{10,}\b/g,replacement:"<REDACTED:slack_token>",modes:["strict","balanced"]},{category:"stripe_key",regex:/\b(sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_)[A-Za-z0-9]{10,}\b/g,replacement:"<REDACTED:stripe_key>",modes:["strict","balanced"]},{category:"google_api_key",regex:/\bAIzaSy[A-Za-z0-9_-]{33}\b/g,replacement:"<REDACTED:google_api_key>",modes:["strict","balanced"]},{category:"aws_session_token",regex:/\bASIA[0-9A-Z]{16}\b/g,replacement:"<REDACTED:aws_session_token>",modes:["strict","balanced"]},{category:"connection_string",regex:/\b(mongodb(\+srv)?|postgres(ql)?|mysql|redis|amqp):\/\/[^\s"']+/gi,replacement:"<REDACTED:connection_string>",modes:["strict","balanced"]},{category:"generic_secret",regex:/\b(password|secret|token|apikey|api_key|access_key|secret_key)\s*[:=]\s*['"]?(?!ghp_|gho_|ghs_|ghr_|github_pat_|glpat-|xoxb-|xoxp-|xoxs-|xoxa-|sk_live_|pk_live_|sk_test_|pk_test_|rk_live_|rk_test_|AIzaSy|AKIA|ASIA|<REDACTED:)[^\s'"]{8,}['"]?/gi,replacement:"<REDACTED:generic_secret>",modes:["strict","balanced"]},{category:"email",regex:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,replacement:"<REDACTED:pii_email>",modes:["strict"]},{category:"phone",regex:/\b(\+?1?[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,replacement:"<REDACTED:pii_phone>",modes:["strict"]},{category:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g,replacement:"<REDACTED:pii_ssn>",modes:["strict"]}],g=new Set(["ollama"]),l=new Set(["claude","ollama"]);o=class extends Error{constructor(r,s){super(r);this.exitCode=s;this.name="AdvisorRedactionError"}exitCode}});export{p as a,x as b,E as c,A as d};
|
|
@@ -1,4 +1,4 @@
|
|
|
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*as a from"fs";import*as m from"path";import{createRequire as z}from"node:module";var B=z(import.meta.url),b=B("semver"),L="3.15.
|
|
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*as a from"fs";import*as m from"path";import{createRequire as z}from"node:module";var B=z(import.meta.url),b=B("semver"),L="3.15.2",y=t=>typeof t=="string"&&b.valid(t)===t.split("+")[0],E=t=>b.validRange(t)!==null,x=(t,e)=>b.satisfies(t,e),C=(t,e)=>b.compare(t,e),N=(t,e)=>C(e,t)||t.localeCompare(e);var R=class{cacheDir;keepVersions;constructor(e={}){this.cacheDir=e.cacheDir??m.join(process.cwd(),".agentic-qe","plugins"),this.keepVersions=e.keepVersions??2}has(e,n){let s=this.versionDir(e,n);return a.existsSync(s)&&a.existsSync(m.join(s,"qe-plugin.json"))}get(e,n){if(!this.has(e,n))return;let s=this.versionDir(e,n),i=a.readFileSync(m.join(s,"qe-plugin.json"),"utf-8"),r=JSON.parse(i),l=a.statSync(s);return{manifest:r,path:s,cachedAt:l.birthtime.toISOString()}}store(e,n){let s=this.versionDir(e.name,e.version);if(a.existsSync(s))return s;a.mkdirSync(s,{recursive:!0});try{this.copyDir(n,s),a.writeFileSync(m.join(s,"qe-plugin.json"),JSON.stringify(e,null,2))}catch(i){throw a.rmSync(s,{recursive:!0,force:!0}),i}return this.pruneOldVersions(e.name),s}remove(e,n){let s=this.versionDir(e,n);return a.existsSync(s)?(a.rmSync(s,{recursive:!0,force:!0}),!0):!1}listVersions(e){let n=m.join(this.cacheDir,e);if(!a.existsSync(n))return[];let s=[],i=a.readdirSync(n);for(let r of i){let l=m.join(n,r),d=m.join(l,"qe-plugin.json");if(a.existsSync(d))try{let p=a.readFileSync(d,"utf-8"),v=JSON.parse(p);if(!y(v.version)){console.warn(`[PluginCache] Skipping cached plugin ${e}@${r}: invalid version ${JSON.stringify(v.version)}`);continue}let c=a.statSync(l);s.push({manifest:v,path:l,cachedAt:c.birthtime.toISOString()})}catch{}}return s}listAll(){if(!a.existsSync(this.cacheDir))return[];let e=[],n=a.readdirSync(this.cacheDir);for(let s of n){let i=this.listVersions(s);i.length>0&&(i.sort((r,l)=>N(r.manifest.version,l.manifest.version)),e.push(i[0]))}return e}listCandidates(){return a.existsSync(this.cacheDir)?a.readdirSync(this.cacheDir).flatMap(e=>this.listVersions(e)):[]}versionDir(e,n){return m.join(this.cacheDir,e,n)}pruneOldVersions(e){let n=this.listVersions(e);if(n.length<=this.keepVersions)return;n.sort((i,r)=>i.cachedAt.localeCompare(r.cachedAt));let s=n.slice(0,n.length-this.keepVersions);for(let i of s)a.rmSync(i.path,{recursive:!0,force:!0})}copyDir(e,n){if(!a.existsSync(e))return;let s=a.readdirSync(e,{withFileTypes:!0});for(let i of s){let r=m.join(e,i.name),l=m.join(n,i.name);if(i.isDirectory()){if(i.name===".git"||i.name==="node_modules")continue;a.mkdirSync(l,{recursive:!0}),this.copyDir(r,l)}else a.copyFileSync(r,l)}}};var K=/^[a-z][a-z0-9-]*$/,Z=["aqe-core-","agentic-qe-core-"],F=64,G=500;function k(t){let e=[],n=[];if(!t||typeof t!="object")return{valid:!1,errors:["Manifest must be a non-null object"],warnings:[]};let s=t;if(!s.name||typeof s.name!="string"?e.push("name is required and must be a string"):ee(s.name,e,n),!s.version||typeof s.version!="string"?e.push("version is required and must be a string"):y(s.version)||e.push(`version "${s.version}" is not valid semver (expected: major.minor.patch)`),!s.description||typeof s.description!="string"?e.push("description is required and must be a string"):s.description.length>G&&n.push(`description exceeds ${G} characters`),(!s.author||typeof s.author!="string")&&e.push("author is required and must be a string"),!Array.isArray(s.domains)||s.domains.length===0)e.push("domains is required and must be a non-empty array");else for(let i of s.domains)if(typeof i!="string"){e.push("Each domain must be a string");break}if(!s.entryPoint||typeof s.entryPoint!="string"?e.push("entryPoint is required and must be a string"):se(s.entryPoint,e),s.dependencies!==void 0)if(typeof s.dependencies!="object"||s.dependencies===null||Array.isArray(s.dependencies))e.push("dependencies must be an object mapping plugin names to semver ranges");else for(let[i,r]of Object.entries(s.dependencies))typeof r!="string"?e.push(`Dependency "${i}" must have a string version range`):E(r)||e.push(`Dependency "${i}" has an invalid semver range`);if(s.hooks!==void 0)if(typeof s.hooks!="object"||s.hooks===null||Array.isArray(s.hooks))e.push("hooks must be an object mapping event names to handler paths");else for(let[,i]of Object.entries(s.hooks)){if(typeof i!="string"){e.push("Hook handler paths must be strings");break}i.includes("..")&&e.push(`Hook handler path "${i}" must not contain ".." (path traversal)`)}if(s.minAqeVersion!==void 0&&(typeof s.minAqeVersion!="string"||!y(s.minAqeVersion))&&e.push("minAqeVersion must be valid semver"),s.permissions!==void 0){if(!Array.isArray(s.permissions))e.push("permissions must be an array of strings");else for(let i of s.permissions)if(typeof i!="string"){e.push("Each permission must be a string");break}}return{valid:e.length===0,errors:e,warnings:n}}function T(t){let e=typeof t=="string"?JSON.parse(t):t,n=k(e);if(!n.valid)throw new Error(`Invalid plugin manifest:
|
|
3
3
|
- ${n.errors.join(`
|
|
4
4
|
- `)}`);return e}function ee(t,e,n){t.length>F&&e.push(`name must be ${F} characters or fewer`),K.test(t)||e.push("name must be lowercase alphanumeric with hyphens, starting with a letter"),/[^\x00-\x7F]/.test(t)&&e.push("name must contain only ASCII characters");for(let s of Z)t.startsWith(s)&&e.push(`name cannot start with reserved prefix "${s}"`);["plugin","test","tool"].includes(t)&&n.push(`name "${t}" is very generic \u2014 consider a more descriptive name`)}function se(t,e){t.includes("..")&&e.push('entryPoint must not contain ".." (path traversal)'),(t.startsWith("/")||t.startsWith("\\"))&&e.push("entryPoint must be a relative path"),!t.endsWith(".js")&&!t.endsWith(".ts")&&!t.endsWith(".mjs")&&e.push("entryPoint must end in .js, .ts, or .mjs")}var I=class{constructor(e=L){this.aqeVersion=e}aqeVersion;resolve(e,n){let s=new Map,i=new Map;for(let o of e){let u=s.get(o.name)??[];s.set(o.name,u);let f=this.validateVersions(o);f?i.set(o.name,[...i.get(o.name)??[],f]):u.push(o)}for(let o of s.values())o.sort((u,f)=>N(u.version,f.version));let r=new Map,l=[],d=o=>({ordered:o.map((u,f)=>({manifest:u,order:f})),missing:r,errors:l,selectedVersions:Object.fromEntries(o.map(u=>[u.name,u.version])),aqeVersion:this.aqeVersion}),p=[...n??s.keys()].sort(),v=new Set(p),c=new Map,_=0,h=!1,J=()=>{for(let o of c.values())for(let[u,f]of Object.entries(o.dependencies??{})){let g=c.get(u);if(!(g?[g]:s.get(u)??[]).some(M=>x(M.version,f)))return!1}return!0},w,X=()=>{let o=new Set,u=new Set,f=(g,P)=>{if(u.has(g))return[...P.slice(P.indexOf(g)),g];if(!o.has(g)){u.add(g);for(let M of Object.keys(c.get(g)?.dependencies??{})){let Q=f(M,[...P,g]);if(Q)return Q}u.delete(g),o.add(g)}};for(let g of c.keys()){let P=f(g,[]);if(P)return P}},j=()=>{let o=new Set(p);for(let f of c.values())for(let g of Object.keys(f.dependencies??{}))o.add(g);let u=[...o].sort().find(f=>!c.has(f));if(!u){let f=X();return f?(w=f,!1):!0}v.add(u);for(let f of s.get(u)??[]){if(++_>1e4)return h=!0,!1;if(c.set(u,f),J()&&j())return!0;if(c.delete(u),h)return!1}return!1};if(!j()){if(w&&!h)throw new Error(`Dependency cycle detected: ${w.join(" -> ")}`);for(let o of v)s.get(o)?.length||l.push(...i.get(o)??[]);for(let[o,u]of s){let f=[...new Set(u.flatMap(g=>Object.keys(g.dependencies??{})))].filter(g=>!s.has(g));f.length&&r.set(o,f)}return l.push({code:h?"RESOLUTION_LIMIT":r.size?"MISSING_DEPENDENCY":"UNSATISFIED_DEPENDENCY_RANGE",plugin:p.join(", "),message:h?"Plugin dependency search exceeded 10000 candidates":"No cached plugin selection satisfies all dependency ranges"}),d([])}let O=[],q=new Set,A=new Set,$=(o,u)=>{if(q.has(o))return;if(A.has(o))throw new Error(`Dependency cycle detected: ${[...u.slice(u.indexOf(o)),o].join(" -> ")}`);A.add(o);let f=c.get(o);for(let g of Object.keys(f.dependencies??{}))$(g,[...u,o]);A.delete(o),q.add(o),O.push(f)};for(let o of[...c.keys()].sort())$(o,[]);return d(O)}resolveAvailable(e){let n=[],s=this.resolve(e,[]),i=[],r=new Map;for(let l of[...new Set(e.map(d=>d.name))].sort())try{let d=this.resolve(e,[...n,l]);if(d.errors.length){i.push(...d.errors.map(p=>({...p,plugin:l})));for(let[p,v]of d.missing)r.set(p,v);continue}n.push(l),s=d}catch(d){i.push({code:"DEPENDENCY_CYCLE",plugin:l,message:d instanceof Error?d.message:String(d)})}return{...s,errors:i,missing:r}}canLoad(e,n){let s=Object.entries(e.dependencies??{}).filter(([i,r])=>{let l=n instanceof Set?void 0:n.get(i);return!l||!E(r)||!x(l,r)}).map(([i])=>i);return{canLoad:!this.validateVersions(e)&&s.length===0,missingDeps:s}}validateVersions(e){if(!y(e.version))return{code:"INVALID_PLUGIN_VERSION",plugin:e.name,message:"Invalid plugin version"};for(let n of Object.values(e.dependencies??{}))if(!E(n))return{code:"INVALID_DEPENDENCY_RANGE",plugin:e.name,message:"Invalid dependency range"};if(e.minAqeVersion&&(!y(e.minAqeVersion)||!y(this.aqeVersion)||C(this.aqeVersion,e.minAqeVersion)<0))return{code:"AQE_VERSION_INCOMPATIBLE",plugin:e.name,message:`Requires AQE ${e.minAqeVersion}; running ${this.aqeVersion}`}}};var ne=["aqe-core-","agentic-qe-core-","agentic-qe-internal-"],U=new Set(["aqe","agentic-qe","ruflo","claude-flow"]),te=["..","~","/etc/","/proc/","/dev/","node_modules/"];function Y(t){let e=[];return ie(t.name,e),re(t.entryPoint,e),oe(t.hooks,e),ae(t.permissions,e),{safe:e.length===0,violations:e}}function ie(t,e){/[^\x20-\x7E]/.test(t)&&e.push(`Plugin name "${t}" contains non-ASCII characters`),U.has(t.toLowerCase())&&e.push(`Plugin name "${t}" is a reserved name`);for(let s of ne)t.toLowerCase().startsWith(s)&&e.push(`Plugin name "${t}" uses reserved prefix "${s}"`);let n=t.toLowerCase().replace(/[0o]/g,"o").replace(/[1il]/g,"l").replace(/[-_]/g,"");U.has(n)&&e.push(`Plugin name "${t}" is visually similar to a reserved name`)}function re(t,e){W(t,"entryPoint",e),(t.startsWith("/")||t.startsWith("\\"))&&e.push("entryPoint must be a relative path, not absolute")}function oe(t,e){if(t)for(let[n,s]of Object.entries(t))W(s,`hook[${n}]`,e)}function W(t,e,n){for(let s of te)t.includes(s)&&n.push(`${e} contains dangerous path pattern "${s}"`);t.includes("\0")&&n.push(`${e} contains null byte (path injection attempt)`)}function ae(t,e){if(!t)return;let n=["fs:write-root","net:arbitrary","exec:shell"];for(let s of t)n.includes(s)&&e.push(`Plugin requests dangerous permission: ${s}`)}import*as S from"fs";import*as V from"path";var D=class{type="local";async resolve(e){let n=V.resolve(e),s=V.join(n,"qe-plugin.json");if(!S.existsSync(s))throw new Error(`No qe-plugin.json found at ${s}`);let i=S.readFileSync(s,"utf-8");return T(i)}async getPluginPath(e){let n=V.resolve(e);if(!S.existsSync(n))throw new Error(`Plugin directory does not exist: ${n}`);return n}};var H=class{cache;resolver;sources=new Map;constructor(e={}){this.cache=e.cache??new R,this.resolver=new I;let n=new D;if(this.sources.set("local",n),e.sources)for(let s of e.sources)this.sources.set(s.type,s)}async install(e,n="local"){if(process.env.AQE_PLUGINS_DISABLED==="true")return{success:!1,errors:["Plugin loading is disabled (AQE_PLUGINS_DISABLED=true)"],securityViolations:[]};let s=[],i=this.sources.get(n);if(!i)return{success:!1,errors:[`Unknown source type: ${n}. Available: ${[...this.sources.keys()].join(", ")}`],securityViolations:[]};let r;try{r=await i.resolve(e)}catch(c){return{success:!1,errors:[`Failed to resolve plugin: ${c instanceof Error?c.message:String(c)}`],securityViolations:[]}}let l=k(r);if(!l.valid)return{success:!1,manifest:r,errors:l.errors,securityViolations:[]};let d=Y(r);if(!d.safe)return{success:!1,manifest:r,errors:["Plugin failed security checks"],securityViolations:d.violations};try{let c=this.cache.listCandidates().map(h=>h.manifest).filter(h=>h.name!==r.name),_=this.resolver.resolve([...c,r],[r.name]);if(_.errors.length)return{success:!1,manifest:r,errors:_.errors.map(h=>`${h.code}: ${h.message}`),securityViolations:[]}}catch(c){return{success:!1,manifest:r,errors:[c instanceof Error?c.message:String(c)],securityViolations:[]}}if(this.cache.has(r.name,r.version)){let c=this.cache.get(r.name,r.version);return{success:!0,manifest:r,cachePath:c.path,errors:[],securityViolations:[]}}let p;try{p=await i.getPluginPath(e)}catch(c){return{success:!1,manifest:r,errors:[`Failed to get plugin path: ${c instanceof Error?c.message:String(c)}`],securityViolations:[]}}let v=this.cache.store(r,p);return{success:!0,manifest:r,cachePath:v,errors:s,securityViolations:[]}}remove(e,n){if(n)return this.cache.remove(e,n);let s=this.cache.listVersions(e),i=!1;for(let r of s)this.cache.remove(e,r.manifest.version)&&(i=!0);return i}list(){return this.cache.listAll().map(n=>({name:n.manifest.name,version:n.manifest.version,description:n.manifest.description,domains:n.manifest.domains,source:"cached",cachePath:n.path}))}resolveLoadOrder(){let e=this.cache.listCandidates();return this.resolver.resolveAvailable(e.map(n=>n.manifest))}registerSource(e){this.sources.set(e.type,e)}};export{T as a,R as b,H as c};
|
|
@@ -0,0 +1,316 @@
|
|
|
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{b as P,c as q,d as R,e as D,g as O,h as x,i as j,j as $,k as L,l as N,m as M,n as Q,o as U,p as z}from"./chunk-FCMCQ6OX.js";import{b as v,d as T}from"./chunk-URWT3EQT.js";import{a as f,e as A}from"./chunk-3KTAMNKI.js";import{a as _,b as ae}from"./chunk-W5EKSBS4.js";T();import{existsSync as y,mkdirSync as F,writeFileSync as b,readFileSync as C,copyFileSync as oe}from"fs";import{join as p,dirname as ie}from"path";async function W(t,e){if(!e.hooks.claudeCode)return!1;let r=p(t,".claude");y(r)||F(r,{recursive:!0});let n=p(r,"settings.json"),s={};if(y(n))try{let m=C(n,"utf-8");s=v(m)}catch{s={}}let o={PreToolUse:[{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" guard --file "$TOOL_INPUT_file_path" --json',timeout:3,continueOnError:!0}]},{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-edit --file "$TOOL_INPUT_file_path" --json',timeout:5,continueOnError:!0}]},{matcher:"^Bash$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-command --command "$TOOL_INPUT_command" --json',timeout:3,continueOnError:!0}]},{matcher:"^Task$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" pre-task --description "$TOOL_INPUT_prompt" --json',timeout:5,continueOnError:!0}]}],PostToolUse:[{matcher:"^(Write|Edit|MultiEdit)$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-edit --file "$TOOL_INPUT_file_path" --success --json',timeout:5,continueOnError:!0}]},{matcher:"^Bash$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-command --command "$TOOL_INPUT_command" --success true --json',timeout:5,continueOnError:!0}]},{matcher:"^Task$",hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-task --task-id "$TOOL_RESULT_agent_id" --agent "$TOOL_INPUT_subagent_type" --success true --description "$TOOL_INPUT_prompt" --json',timeout:5,continueOnError:!0}]}],UserPromptSubmit:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" route --json',timeout:5,continueOnError:!0}]}],SessionStart:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-start --session-id "$SESSION_ID" --json',timeout:10,continueOnError:!0}]}],Stop:[{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" session-end --save-state --json',timeout:5,continueOnError:!0}]},{hooks:[{type:"command",command:'node "${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/aqe-hook.cjs" post-route --success true --json',timeout:5,continueOnError:!0}]}]},u=s.hooks||{};s.hooks=O(u,o);let l=s.env;s.env=x(l,j(e));let d=L(e,t);$(s,d);let a=s.enabledMcpjsonServers||[];return a=a.filter(m=>m!=="aqe"),a.includes("agentic-qe")||a.push("agentic-qe"),s.enabledMcpjsonServers=a,D(n),b(n,JSON.stringify(s,null,2),"utf-8"),await le(t),!0}async function le(t){let e=p(t,".claude","hooks");y(e)||F(e,{recursive:!0});let r=p(e,"cross-phase-memory.yaml");if(y(r))return;let n=[p(ie(import.meta.url.replace("file://","")),"..","..","assets","hooks","cross-phase-memory.yaml"),p(process.cwd(),"assets","hooks","cross-phase-memory.yaml"),p(process.cwd(),"v3","assets","hooks","cross-phase-memory.yaml")];for(let o of n)try{if(y(o)){oe(o,r),console.log(" \u2713 Cross-phase memory hooks installed");return}}catch{}b(r,`# Cross-Phase Memory Hooks Configuration
|
|
3
|
+
# Generated by aqe init
|
|
4
|
+
# See: https://github.com/anthropics/agentic-qe/docs/cross-phase-memory.md
|
|
5
|
+
|
|
6
|
+
version: "1.0"
|
|
7
|
+
enabled: true
|
|
8
|
+
|
|
9
|
+
hooks:
|
|
10
|
+
# Add custom QCSD feedback loop hooks here
|
|
11
|
+
# See .claude/hooks/cross-phase-memory.yaml in the agentic-qe repo for examples
|
|
12
|
+
|
|
13
|
+
routing:
|
|
14
|
+
authorized_receivers:
|
|
15
|
+
strategic:
|
|
16
|
+
- "qe-risk-assessor"
|
|
17
|
+
- "qe-quality-criteria-recommender"
|
|
18
|
+
tactical:
|
|
19
|
+
- "qe-product-factors-assessor"
|
|
20
|
+
operational:
|
|
21
|
+
- "qe-test-architect"
|
|
22
|
+
- "qe-tdd-specialist"
|
|
23
|
+
quality-criteria:
|
|
24
|
+
- "qe-requirements-validator"
|
|
25
|
+
- "qe-bdd-generator"
|
|
26
|
+
`,"utf-8"),console.log(" \u2713 Cross-phase memory hooks created (minimal config)")}async function G(t,e={}){if(!e.force&&N(t).enabled)return console.log(M(t)),!1;let r=p(t,".mcp.json"),n={};if(y(r))try{let o=C(r,"utf-8");n=v(o)}catch{n={}}n.mcpServers||(n.mcpServers={});let s=n.mcpServers;return s["agentic-qe"]={command:"npx",args:["@anthropics/agentic-qe","mcp","start"],env:{AQE_LEARNING_ENABLED:"true",AQE_VERBOSE:"false"},autoStart:!1},b(r,JSON.stringify(n,null,2),"utf-8"),!0}async function V(t,e){let r=p(t,"CLAUDE.md"),n=ce(e);if(y(r)){let s=C(r,"utf-8");if(s.includes("## Agentic QE v3"))return!0;let o=p(t,"CLAUDE.md.backup");b(o,s,"utf-8"),b(r,s+`
|
|
27
|
+
|
|
28
|
+
`+n,"utf-8")}else b(r,n,"utf-8");return!0}function ce(t){let e=t.domains.enabled.slice(0,6).join(", "),r=Math.max(0,t.domains.enabled.length-6);return`## Agentic QE v3
|
|
29
|
+
|
|
30
|
+
This project uses **Agentic QE v3** - a Domain-Driven Quality Engineering platform with 12 bounded contexts, ReasoningBank learning, and HNSW vector search.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## \u{1F41D} AQE FLEET ORCHESTRATION
|
|
35
|
+
|
|
36
|
+
### Fleet Initialization
|
|
37
|
+
|
|
38
|
+
**For QE-specific tasks, initialize the AQE fleet:**
|
|
39
|
+
|
|
40
|
+
\`\`\`javascript
|
|
41
|
+
// Initialize AQE Fleet with MCP tool
|
|
42
|
+
mcp__agentic-qe__fleet_init({
|
|
43
|
+
config: {
|
|
44
|
+
topology: "hierarchical", // Queen-led for QE coordination
|
|
45
|
+
maxAgents: 15,
|
|
46
|
+
testingFocus: ["unit", "integration", "e2e", "performance"],
|
|
47
|
+
frameworks: ["vitest", "jest", "playwright"],
|
|
48
|
+
environments: ["node", "browser"]
|
|
49
|
+
},
|
|
50
|
+
projectContext: {
|
|
51
|
+
language: "typescript",
|
|
52
|
+
buildSystem: "npm"
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
\`\`\`
|
|
56
|
+
|
|
57
|
+
### 12 DDD Domains \u2192 Agent Mapping
|
|
58
|
+
|
|
59
|
+
| Domain | Primary Agents | Focus Area |
|
|
60
|
+
|--------|---------------|------------|
|
|
61
|
+
| \`test-generation\` | qe-test-architect, qe-tdd-specialist | AI-powered test creation |
|
|
62
|
+
| \`test-execution\` | qe-parallel-executor, qe-flaky-hunter, qe-retry-handler | Parallel execution, flaky detection |
|
|
63
|
+
| \`coverage-analysis\` | qe-coverage-specialist, qe-gap-detector | O(log n) sublinear coverage |
|
|
64
|
+
| \`quality-assessment\` | qe-quality-gate, qe-deployment-advisor | Quality gates, risk scoring |
|
|
65
|
+
| \`defect-intelligence\` | qe-defect-predictor, qe-root-cause-analyzer | ML-powered defect prediction |
|
|
66
|
+
| \`learning-optimization\` | qe-learning-coordinator, qe-pattern-learner | Cross-domain pattern learning |
|
|
67
|
+
| \`requirements-validation\` | qe-tdd-specialist, qe-property-tester | BDD scenarios, property tests |
|
|
68
|
+
| \`code-intelligence\` | qe-knowledge-manager, code-analyzer | Knowledge graphs, 80% token reduction |
|
|
69
|
+
| \`security-compliance\` | qe-security-scanner, qe-security-auditor | OWASP, CVE detection |
|
|
70
|
+
| \`contract-testing\` | qe-contract-validator, qe-api-tester | Pact, schema validation |
|
|
71
|
+
| \`visual-accessibility\` | qe-visual-tester, qe-a11y-validator | Visual regression, WCAG |
|
|
72
|
+
| \`chaos-resilience\` | qe-chaos-engineer, qe-performance-tester | Fault injection, load testing |
|
|
73
|
+
|
|
74
|
+
### Fleet MCP Tools
|
|
75
|
+
|
|
76
|
+
\`\`\`javascript
|
|
77
|
+
// Spawn specialized QE agent
|
|
78
|
+
mcp__agentic-qe__agent_spawn({
|
|
79
|
+
spec: {
|
|
80
|
+
type: "test-generator",
|
|
81
|
+
capabilities: ["unit-tests", "integration-tests"],
|
|
82
|
+
name: "test-gen-1"
|
|
83
|
+
},
|
|
84
|
+
fleetId: "fleet-123"
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
// AI-enhanced test generation
|
|
88
|
+
mcp__agentic-qe__test_generate_enhanced({
|
|
89
|
+
sourceCode: "...",
|
|
90
|
+
language: "typescript",
|
|
91
|
+
testType: "unit",
|
|
92
|
+
coverageGoal: 90,
|
|
93
|
+
aiEnhancement: true,
|
|
94
|
+
detectAntiPatterns: true
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
// Parallel test execution with retry (concrete paths; expand globs before calling)
|
|
98
|
+
mcp__agentic-qe__test_execute_parallel({
|
|
99
|
+
testFiles: ["tests/auth.test.ts", "tests/session.test.ts"],
|
|
100
|
+
parallelism: 4,
|
|
101
|
+
retryFailures: true,
|
|
102
|
+
maxRetries: 3,
|
|
103
|
+
collectCoverage: true
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
// Orchestrate QE task across fleet
|
|
107
|
+
mcp__agentic-qe__task_orchestrate({
|
|
108
|
+
task: {
|
|
109
|
+
type: "comprehensive-testing",
|
|
110
|
+
priority: "high",
|
|
111
|
+
strategy: "adaptive",
|
|
112
|
+
maxAgents: 5
|
|
113
|
+
},
|
|
114
|
+
context: {
|
|
115
|
+
project: "my-project",
|
|
116
|
+
environment: "test"
|
|
117
|
+
},
|
|
118
|
+
fleetId: "fleet-123"
|
|
119
|
+
})
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
### QE Memory Operations
|
|
123
|
+
|
|
124
|
+
\`\`\`javascript
|
|
125
|
+
// Store QE pattern with namespace
|
|
126
|
+
mcp__agentic-qe__memory_store({
|
|
127
|
+
key: "coverage-pattern-auth",
|
|
128
|
+
value: { pattern: "...", successRate: 0.95 },
|
|
129
|
+
namespace: "qe-patterns",
|
|
130
|
+
ttl: 86400,
|
|
131
|
+
persist: true
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
// Query memory with pattern matching
|
|
135
|
+
mcp__agentic-qe__memory_query({
|
|
136
|
+
pattern: "coverage-*",
|
|
137
|
+
namespace: "qe-patterns",
|
|
138
|
+
limit: 10
|
|
139
|
+
})
|
|
140
|
+
\`\`\`
|
|
141
|
+
|
|
142
|
+
### QE Task Routing by Domain
|
|
143
|
+
|
|
144
|
+
| Task Type | MCP Tool | Agents Spawned |
|
|
145
|
+
|-----------|----------|----------------|
|
|
146
|
+
| Generate tests | \`test_generate_enhanced\` | qe-test-architect, qe-tdd-specialist |
|
|
147
|
+
| Run tests | \`test_execute_parallel\` | qe-parallel-executor, qe-retry-handler |
|
|
148
|
+
| Analyze coverage | \`task_orchestrate\` (coverage) | qe-coverage-specialist, qe-gap-detector |
|
|
149
|
+
| Quality gate | \`task_orchestrate\` (quality-gate) | qe-quality-gate, qe-deployment-advisor |
|
|
150
|
+
| Security scan | \`agent_spawn\` (security-scanner) | qe-security-scanner, qe-security-auditor |
|
|
151
|
+
| Chaos test | \`agent_spawn\` (chaos-engineer) | qe-chaos-engineer, qe-load-tester |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Quick Reference
|
|
156
|
+
|
|
157
|
+
\`\`\`bash
|
|
158
|
+
# Run tests
|
|
159
|
+
npm test -- --run
|
|
160
|
+
|
|
161
|
+
# Check quality
|
|
162
|
+
aqe quality assess
|
|
163
|
+
|
|
164
|
+
# Generate tests
|
|
165
|
+
aqe test generate <file>
|
|
166
|
+
|
|
167
|
+
# Coverage analysis
|
|
168
|
+
aqe coverage <path>
|
|
169
|
+
\`\`\`
|
|
170
|
+
|
|
171
|
+
### MCP Server
|
|
172
|
+
|
|
173
|
+
The AQE v3 MCP server is configured in \`.claude/mcp.json\`. Available tools:
|
|
174
|
+
|
|
175
|
+
| Tool | Description |
|
|
176
|
+
|------|-------------|
|
|
177
|
+
| \`fleet_init\` | Initialize QE fleet with topology |
|
|
178
|
+
| \`agent_spawn\` | Spawn specialized QE agent |
|
|
179
|
+
| \`test_generate_enhanced\` | AI-powered test generation |
|
|
180
|
+
| \`test_execute_parallel\` | Parallel test execution with retry |
|
|
181
|
+
| \`task_orchestrate\` | Orchestrate multi-agent QE tasks |
|
|
182
|
+
| \`coverage_analyze_sublinear\` | O(log n) coverage analysis |
|
|
183
|
+
| \`quality_assess\` | Quality gate evaluation |
|
|
184
|
+
| \`memory_store\` / \`memory_query\` | Pattern storage with namespacing |
|
|
185
|
+
| \`security_scan_comprehensive\` | SAST/DAST scanning |
|
|
186
|
+
| \`fleet_status\` | Get fleet and agent status |
|
|
187
|
+
|
|
188
|
+
### Configuration
|
|
189
|
+
|
|
190
|
+
- **Enabled Domains**: ${e}${r>0?` (+${r} more)`:""}
|
|
191
|
+
- **Learning**: ${t.learning.enabled?"Enabled":"Disabled"} (${t.learning.embeddingModel} embeddings)
|
|
192
|
+
- **Max Concurrent Agents**: ${t.agents.maxConcurrent}
|
|
193
|
+
- **Background Workers**: ${t.workers.enabled.length>0?t.workers.enabled.join(", "):"None"}
|
|
194
|
+
|
|
195
|
+
### V3 QE Agents
|
|
196
|
+
|
|
197
|
+
QE agents are installed in \`.claude/agents/v3/\`. Use with Claude Code's Task tool:
|
|
198
|
+
|
|
199
|
+
\`\`\`javascript
|
|
200
|
+
// Example: Generate tests
|
|
201
|
+
Task({ prompt: "Generate unit tests for auth module", subagent_type: "qe-test-architect", run_in_background: true })
|
|
202
|
+
|
|
203
|
+
// Example: Analyze coverage
|
|
204
|
+
Task({ prompt: "Find coverage gaps in src/", subagent_type: "qe-coverage-specialist", run_in_background: true })
|
|
205
|
+
|
|
206
|
+
// Example: Security scan
|
|
207
|
+
Task({ prompt: "Run security audit", subagent_type: "qe-security-scanner", run_in_background: true })
|
|
208
|
+
\`\`\`
|
|
209
|
+
|
|
210
|
+
### Integration with Claude Flow
|
|
211
|
+
|
|
212
|
+
**AQE Fleet + Claude Flow work together:**
|
|
213
|
+
|
|
214
|
+
\`\`\`javascript
|
|
215
|
+
// STEP 1: Initialize Claude Flow swarm for coordination
|
|
216
|
+
Bash("npx ruflo swarm init --topology hierarchical --max-agents 15")
|
|
217
|
+
|
|
218
|
+
// STEP 2: Initialize AQE Fleet for QE-specific work
|
|
219
|
+
mcp__agentic-qe__fleet_init({
|
|
220
|
+
config: { topology: "hierarchical", maxAgents: 10, testingFocus: ["unit", "integration"] }
|
|
221
|
+
})
|
|
222
|
+
|
|
223
|
+
// STEP 3: Spawn agents via Claude Code Task tool (do the actual work)
|
|
224
|
+
Task({ prompt: "Generate tests for auth module", subagent_type: "qe-test-architect", run_in_background: true })
|
|
225
|
+
Task({ prompt: "Analyze coverage gaps", subagent_type: "qe-coverage-specialist", run_in_background: true })
|
|
226
|
+
|
|
227
|
+
// STEP 4: Store learnings in both systems
|
|
228
|
+
mcp__agentic-qe__memory_store({ key: "pattern-1", value: "...", namespace: "qe-patterns", persist: true })
|
|
229
|
+
Bash("npx ruflo memory store --key 'qe-pattern-1' --value '...' --namespace patterns")
|
|
230
|
+
\`\`\`
|
|
231
|
+
|
|
232
|
+
### Data Storage
|
|
233
|
+
|
|
234
|
+
- **Memory Backend**: \`.agentic-qe/memory.db\` (SQLite)
|
|
235
|
+
- **Pattern Storage**: \`.agentic-qe/data/memory.db\` (ReasoningBank)
|
|
236
|
+
- **HNSW Index**: \`.agentic-qe/data/hnsw/index.bin\`
|
|
237
|
+
- **Configuration**: \`.agentic-qe/config.yaml\`
|
|
238
|
+
|
|
239
|
+
### Best Practices
|
|
240
|
+
|
|
241
|
+
1. **Test Execution**: Always use \`npm test -- --run\` (not \`npm test\` which runs in watch mode)
|
|
242
|
+
2. **Coverage Targets**: Aim for 80%+ coverage on critical paths
|
|
243
|
+
3. **Quality Gates**: Run \`quality_assess\` before merging PRs
|
|
244
|
+
4. **Pattern Learning**: AQE learns from successful test patterns - consistent naming helps
|
|
245
|
+
5. **Fleet Coordination**: Use \`fleet_init\` before spawning multiple QE agents
|
|
246
|
+
6. **Memory Persistence**: Use \`persist: true\` for patterns you want to keep across sessions
|
|
247
|
+
|
|
248
|
+
### Troubleshooting
|
|
249
|
+
|
|
250
|
+
If MCP tools aren't working:
|
|
251
|
+
\`\`\`bash
|
|
252
|
+
# Verify MCP server is configured
|
|
253
|
+
cat .claude/mcp.json
|
|
254
|
+
|
|
255
|
+
# Check fleet status
|
|
256
|
+
mcp__agentic-qe__fleet_status({ includeAgentDetails: true })
|
|
257
|
+
|
|
258
|
+
# Reinitialize if needed
|
|
259
|
+
aqe init --auto
|
|
260
|
+
\`\`\`
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
*Generated by AQE v3 init - ${new Date().toISOString()}*
|
|
264
|
+
`}A();import{existsSync as h,mkdirSync as k,writeFileSync as E}from"fs";import{join as i,dirname as ue}from"path";A();ae();T();async function J(t,e){let r=i(t,".agentic-qe","memory.db");try{let n=ue(r);h(n)||k(n,{recursive:!0});let s=_(r);try{s.exec(`
|
|
265
|
+
CREATE TABLE IF NOT EXISTS kv_store (
|
|
266
|
+
key TEXT NOT NULL,
|
|
267
|
+
namespace TEXT NOT NULL,
|
|
268
|
+
value TEXT NOT NULL,
|
|
269
|
+
expires_at INTEGER,
|
|
270
|
+
created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
|
|
271
|
+
PRIMARY KEY (namespace, key)
|
|
272
|
+
);
|
|
273
|
+
`);let o=Date.now();return s.prepare(`
|
|
274
|
+
INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
|
|
275
|
+
VALUES (?, '_system', ?, ?)
|
|
276
|
+
`).run("aqe_version",JSON.stringify(e),o),s.prepare(`
|
|
277
|
+
INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
|
|
278
|
+
VALUES (?, '_system', ?, ?)
|
|
279
|
+
`).run("init_timestamp",JSON.stringify(new Date().toISOString()),o),s.close(),console.log(` \u2713 Version ${e} written to memory.db`),!0}catch(o){return s.close(),console.warn(` \u26A0 Could not write version: ${f(o)}`),!1}}catch(n){return console.warn(` \u26A0 Could not open memory.db: ${f(n)}`),!1}}async function B(t){let e=null;try{e=(await import("./better-sqlite3-45JLBQX3.js")).default}catch{throw new Error(`SQLite persistence REQUIRED but better-sqlite3 is not installed.
|
|
280
|
+
Install it with: npm install better-sqlite3
|
|
281
|
+
If you see native compilation errors, ensure build tools are installed:
|
|
282
|
+
- macOS: xcode-select --install
|
|
283
|
+
- Ubuntu/Debian: sudo apt-get install build-essential python3
|
|
284
|
+
- Alpine: apk add build-base python3`)}let r=i(t,".agentic-qe");h(r)||k(r,{recursive:!0});let n=i(r,"memory.db");try{let s=new e(n);if(s.pragma("journal_mode = WAL"),s.pragma("busy_timeout = 5000"),s.exec(`
|
|
285
|
+
CREATE TABLE IF NOT EXISTS kv_store (
|
|
286
|
+
key TEXT NOT NULL,
|
|
287
|
+
namespace TEXT NOT NULL,
|
|
288
|
+
value TEXT NOT NULL,
|
|
289
|
+
expires_at INTEGER,
|
|
290
|
+
created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),
|
|
291
|
+
PRIMARY KEY (namespace, key)
|
|
292
|
+
);
|
|
293
|
+
CREATE INDEX IF NOT EXISTS idx_kv_namespace ON kv_store(namespace);
|
|
294
|
+
CREATE INDEX IF NOT EXISTS idx_kv_expires ON kv_store(expires_at) WHERE expires_at IS NOT NULL;
|
|
295
|
+
`),!s.prepare(`
|
|
296
|
+
SELECT name FROM sqlite_master WHERE type='table' AND name='kv_store'
|
|
297
|
+
`).get())throw new Error("Failed to create kv_store table");return s.prepare(`
|
|
298
|
+
INSERT OR REPLACE INTO kv_store (key, namespace, value)
|
|
299
|
+
VALUES (?, ?, ?)
|
|
300
|
+
`).run("_init_test","_system",JSON.stringify({initialized:new Date().toISOString()})),s.close(),console.log(`\u2713 SQLite persistence initialized: ${n}`),!0}catch(s){throw new Error(`SQLite persistence initialization FAILED: ${s}
|
|
301
|
+
Database path: ${n}
|
|
302
|
+
Ensure the directory is writable and has sufficient disk space.`)}}async function H(t){let e=i(t,".agentic-qe","memory.db");if(!h(e))return!1;try{let r=_(e),n=r.prepare(`
|
|
303
|
+
SELECT COUNT(*) as count FROM kv_store
|
|
304
|
+
WHERE namespace = 'code-intelligence:kg'
|
|
305
|
+
`).get();return r.close(),n.count>0}catch{return!1}}async function X(t){try{let{KnowledgeGraphService:e}=await import("./knowledge-graph-TWMB2GH2.js"),{InMemoryBackend:r}=await import("./memory-backend-X5BE2MPK.js"),n=new r;await n.initialize();let s=new e(n,{namespace:"code-intelligence:kg",enableVectorEmbeddings:!0}),{glob:o}=await import("tinyglobby"),u=await o(["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.py"],{cwd:t,ignore:["node_modules/**","dist/**","coverage/**",".agentic-qe/**"],expandDirectories:!1}),l=await s.index({paths:u.map(d=>i(t,d)),incremental:!1,includeTests:!0});return s.destroy(),l.success?{status:"indexed",entries:l.value.nodesCreated+l.value.edgesCreated}:{status:"error",entries:0}}catch(e){return console.warn("Code intelligence scan warning:",f(e)),{status:"skipped",entries:0}}}async function K(t){let e=i(t,".agentic-qe","memory.db");try{let r=_(e),n=r.prepare(`
|
|
306
|
+
SELECT COUNT(*) as count FROM kv_store
|
|
307
|
+
WHERE namespace LIKE 'code-intelligence:kg%'
|
|
308
|
+
`).get();return r.close(),n.count}catch{return 0}}async function Y(t,e,r){if(!e.learning.enabled)return 0;let n=i(t,".agentic-qe","data");h(n)||k(n,{recursive:!0});let s=i(n,"hnsw");h(s)||k(s,{recursive:!0});let o=i(n,"learning-config.json"),u={embeddingModel:e.learning.embeddingModel,hnswConfig:e.learning.hnswConfig,qualityThreshold:e.learning.qualityThreshold,promotionThreshold:e.learning.promotionThreshold,databasePath:i(n,"memory.db"),hnswIndexPath:i(s,"index.bin"),initialized:new Date().toISOString()};E(o,JSON.stringify(u,null,2),"utf-8");let l=0;if(e.learning.pretrainedPatterns&&r){let d=r,a=new Map;for(let g of d.patterns){let c=g.domain||"general";a.has(c)||a.set(c,[]),a.get(c).push(g)}let m=i(n,"pretrained-index.json"),S={version:d.version,totalPatterns:d.statistics.totalPatterns,domains:Array.from(a.entries()).map(([g,c])=>({name:g,patternCount:c.length})),loadedAt:new Date().toISOString()};E(m,JSON.stringify(S,null,2),"utf-8");for(let[g,c]of a){let w=i(n,"patterns",g);h(w)||k(w,{recursive:!0});let se=i(w,"patterns.json");E(se,JSON.stringify(c,null,2),"utf-8"),l+=c.length}return l}return 0}async function Z(t,e){if(!e.workers.daemonAutoStart||e.workers.enabled.length===0)return 0;let r=i(t,".agentic-qe","workers");h(r)||k(r,{recursive:!0});let n={},s={"pattern-consolidator":6e4,"coverage-gap-scanner":3e5,"flaky-test-detector":6e5,"routing-accuracy-monitor":12e4};for(let a of e.workers.enabled)n[a]={name:a,enabled:!0,interval:e.workers.intervals[a]||s[a]||6e4,lastRun:null,status:"pending"};let o=i(r,"registry.json"),u={version:e.version,maxConcurrent:e.workers.maxConcurrent,workers:n,createdAt:new Date().toISOString(),daemonPid:null};E(o,JSON.stringify(u,null,2),"utf-8");for(let a of e.workers.enabled){let m=i(r,`${a}.json`),S={name:a,enabled:!0,interval:e.workers.intervals[a]||s[a]||6e4,projectRoot:t,dataDir:i(t,".agentic-qe","data"),createdAt:new Date().toISOString()};E(m,JSON.stringify(S,null,2),"utf-8")}let l=i(r,"start-daemon.cjs");return E(l,`#!/usr/bin/env node
|
|
309
|
+
// AQE v3 Worker Daemon Startup Script (cross-platform)
|
|
310
|
+
// Generated by aqe init
|
|
311
|
+
|
|
312
|
+
console.log("AQE v3 hooks work via CLI commands (no daemon required)");
|
|
313
|
+
console.log("Use: npx aqe hooks session-start");
|
|
314
|
+
`),e.workers.enabled.length}async function ee(t,e){if(!e.skills.install)return 0;let n=await Q({projectRoot:t,installV2Skills:e.skills.installV2,installV3Skills:e.skills.installV3,overwrite:e.skills.overwrite}).install();return n.errors.length>0&&console.warn("Skills installation warnings:",n.errors),n.installed.length}async function te(t){let r=await U({projectRoot:t,installQEAgents:!0,installSubagents:!0,overwrite:!1}).install();return r.errors.length>0&&console.warn("Agents installation warnings:",r.errors),r.installed.length}async function ne(t,e,r){let s=await z({projectRoot:t,installAgents:!0,installSkills:!0,overwrite:!1,n8nApiConfig:r}).install();return s.errors.length>0&&console.warn("N8n installation warnings:",s.errors),e.platforms||(e.platforms={}),e.platforms.n8n={enabled:!0,installAgents:!0,installSkills:!0,installTypeScriptAgents:!1,n8nApiConfig:r},{agents:s.agentsInstalled.length,skills:s.skillsInstalled.length}}async function re(t,e){if(!e)throw new Error("No configuration to save");let r=i(t,".agentic-qe");h(r)||k(r,{recursive:!0});let n=de(e),s=i(r,"config.yaml");E(s,n,"utf-8")}function de(t){let e=["# Agentic QE v3 Configuration","# Generated by aqe init",`# ${new Date().toISOString()}`,""];e.push(`version: "${t.version}"`),e.push(""),e.push("project:"),e.push(` name: "${t.project.name}"`),e.push(` root: "${t.project.root}"`),e.push(` type: "${t.project.type}"`),e.push(""),e.push("learning:"),e.push(` enabled: ${t.learning.enabled}`),e.push(` embeddingModel: "${t.learning.embeddingModel}"`),e.push(" hnswConfig:"),e.push(` M: ${t.learning.hnswConfig.M}`),e.push(` efConstruction: ${t.learning.hnswConfig.efConstruction}`),e.push(` efSearch: ${t.learning.hnswConfig.efSearch}`),e.push(` qualityThreshold: ${t.learning.qualityThreshold}`),e.push(` promotionThreshold: ${t.learning.promotionThreshold}`),e.push(` pretrainedPatterns: ${t.learning.pretrainedPatterns}`),e.push(""),e.push("routing:"),e.push(` mode: "${t.routing.mode}"`),e.push(` confidenceThreshold: ${t.routing.confidenceThreshold}`),e.push(` feedbackEnabled: ${t.routing.feedbackEnabled}`),e.push(""),e.push("# ADR-092: Advisor Strategy \u2014 agents consult a stronger model for strategic guidance"),e.push("# Set provider/model to override auto-detection from environment API keys"),e.push("advisor:"),e.push(' # provider: "openrouter" # openrouter | claude | ollama (auto-detected if not set)'),e.push(' # model: "anthropic/claude-opus-5.5" # provider-specific model ID'),e.push(' # maxUses: "3" # per-task advisor call cap'),e.push(' redact: "strict" # strict | balanced | off'),e.push(""),e.push("workers:"),e.push(" enabled:");for(let r of t.workers.enabled)e.push(` - "${r}"`);e.push(" intervals:");for(let[r,n]of Object.entries(t.workers.intervals))e.push(` ${r}: ${n}`);e.push(` maxConcurrent: ${t.workers.maxConcurrent}`),e.push(` daemonAutoStart: ${t.workers.daemonAutoStart}`),e.push(""),e.push("hooks:"),e.push(` claudeCode: ${t.hooks.claudeCode}`),e.push(` preCommit: ${t.hooks.preCommit}`),e.push(` ciIntegration: ${t.hooks.ciIntegration}`),e.push(""),e.push("skills:"),e.push(` install: ${t.skills.install}`),e.push(` installV2: ${t.skills.installV2}`),e.push(` installV3: ${t.skills.installV3}`),e.push(` overwrite: ${t.skills.overwrite}`),e.push(""),e.push("autoTuning:"),e.push(` enabled: ${t.autoTuning.enabled}`),e.push(" parameters:");for(let r of t.autoTuning.parameters)e.push(` - "${r}"`);e.push(` evaluationPeriodMs: ${t.autoTuning.evaluationPeriodMs}`),e.push(""),e.push("domains:"),e.push(" enabled:");for(let r of t.domains.enabled)e.push(` - "${r}"`);e.push(" disabled:");for(let r of t.domains.disabled)e.push(` - "${r}"`);return e.push(""),e.push("agents:"),e.push(` maxConcurrent: ${t.agents.maxConcurrent}`),e.push(` defaultTimeout: ${t.agents.defaultTimeout}`),e.push(""),e.join(`
|
|
315
|
+
`)}var pe=[{id:"welcome",title:"Welcome to AQE v3",description:"This wizard will configure Agentic QE for your project.",type:"info"},{id:"project-type",title:"Project Type",description:"What type of project is this?",type:"choice",options:[{value:"auto",label:"Auto-detect",description:"Let AQE analyze your project",recommended:!0},{value:"single",label:"Single Package",description:"Standard single-package project"},{value:"monorepo",label:"Monorepo",description:"Multi-package workspace"},{value:"library",label:"Library",description:"Publishable package/library"}],default:"auto"},{id:"learning-mode",title:"Learning System",description:"How should AQE learn from your project?",type:"choice",options:[{value:"full",label:"Full Learning",description:"Transformer embeddings + SQLite persistence",recommended:!0},{value:"basic",label:"Basic Learning",description:"Hash-based embeddings, in-memory"},{value:"disabled",label:"Disabled",description:"No pattern learning"}],default:"full"},{id:"load-patterns",title:"Pre-trained Patterns",description:"Load pre-trained QE patterns for faster results?",type:"confirm",default:!0},{id:"hooks",title:"Claude Code Integration",description:"Enable Claude Code hooks for seamless integration?",type:"confirm",default:!0},{id:"workers",title:"Background Workers",description:"Start background workers for continuous monitoring?",type:"confirm",default:!0},{id:"skills",title:"Install Skills",description:"Install AQE skills (v2 methodology + v3 domain skills)?",type:"confirm",default:!0},{id:"agents",title:"Install Agents",description:"Install V3 QE agents for Claude Code Task tool?",type:"confirm",default:!0}],I=class{projectRoot;options;analyzer;configurator;steps=[];constructor(e){this.options=e,this.projectRoot=e.projectRoot,this.analyzer=q(e.projectRoot),this.configurator=R({minimal:e.minimal})}async initialize(){let e=Date.now();try{let r=await this.runStep("Project Analysis",async()=>await this.analyzer.analyze()),n=await this.runStep("Configuration Generation",async()=>this.options.autoMode?this.configurator.recommend(r):this.applyWizardAnswers(r));await this.runStep("Persistence Database Setup",async()=>await B(this.projectRoot));let s=await this.runStep("Code Intelligence Pre-Scan",async()=>{if(!await H(this.projectRoot))return console.log(" Building knowledge graph for code intelligence..."),await X(r.projectRoot);let w=await K(this.projectRoot);return console.log(` Using existing code intelligence index (${w} entries)`),{status:"existing",entries:w}}),o=await this.runStep("Learning System Setup",async()=>n.learning.enabled&&!this.options.skipPatterns?await Y(this.projectRoot,n,this.options.pretrainedLibrary):0),u=await this.runStep("Hooks Configuration",async()=>n.hooks.claudeCode?await W(this.projectRoot,n):!1),l=await this.runStep("MCP Configuration",async()=>this.options.noMcp?!1:await G(this.projectRoot,{force:this.options.withMcp})),d=await this.runStep("CLAUDE.md Generation",async()=>await V(this.projectRoot,n)),a=await this.runStep("Background Workers",async()=>n.workers.daemonAutoStart?await Z(this.projectRoot,n):0),m=await this.runStep("Skills Installation",async()=>n.skills.install?await ee(this.projectRoot,n):0),S=await this.runStep("Agents Installation",async()=>await te(this.projectRoot)),g;if(this.options.withN8n){let c=await this.runStep("N8n Platform Installation",async()=>await ne(this.projectRoot,n,this.options.n8nApiConfig));c&&(g=c)}return await this.runStep("Save Configuration",async()=>await re(this.projectRoot,n)),await this.runStep("Version Marker",async()=>await J(this.projectRoot,n.version)),{success:!0,config:n,steps:this.steps,summary:{projectAnalyzed:!0,configGenerated:!0,codeIntelligenceIndexed:s?.entries??0,patternsLoaded:o,skillsInstalled:m,agentsInstalled:S,hooksConfigured:u,mcpConfigured:l,claudeMdGenerated:d,workersStarted:a,n8nInstalled:g},totalDurationMs:Date.now()-e,timestamp:new Date}}catch(r){return this.steps.push({step:"Initialization Failed",status:"error",message:f(r),durationMs:0}),{success:!1,config:P("unknown",this.projectRoot),steps:this.steps,summary:{projectAnalyzed:!1,configGenerated:!1,codeIntelligenceIndexed:0,patternsLoaded:0,skillsInstalled:0,agentsInstalled:0,hooksConfigured:!1,mcpConfigured:!1,claudeMdGenerated:!1,workersStarted:0},totalDurationMs:Date.now()-e,timestamp:new Date}}}getWizardSteps(){return pe}async runStep(e,r){let n=Date.now();try{let s=await r();return this.steps.push({step:e,status:"success",message:`${e} completed successfully`,durationMs:Date.now()-n}),s}catch(s){throw this.steps.push({step:e,status:"error",message:f(s),durationMs:Date.now()-n}),s}}applyWizardAnswers(e){let r=this.options.wizardAnswers||{},n=this.configurator.recommend(e);switch(r["project-type"]&&r["project-type"]!=="auto"&&(n.project.type=r["project-type"]),r["learning-mode"]){case"full":n.learning.enabled=!0,n.learning.embeddingModel="transformer";break;case"basic":n.learning.enabled=!0,n.learning.embeddingModel="hash";break;case"disabled":n.learning.enabled=!1;break}return r["load-patterns"]===!1&&(n.learning.pretrainedPatterns=!1),r.hooks===!1&&(n.hooks.claudeCode=!1),r.workers===!1&&(n.workers.daemonAutoStart=!1),r.skills===!1&&(n.skills.install=!1),n}};function me(t){return new I(t)}async function Le(t){return await me({projectRoot:t,autoMode:!0}).initialize()}function Ne(t){let e=[];e.push(""),e.push("+-------------------------------------------------------------+"),e.push("| AQE v3 Initialization |"),e.push("+-------------------------------------------------------------+");for(let n of t.steps){let s=n.status==="success"?"[OK]":n.status==="error"?"[!!]":"[ ]";e.push(`| ${s} ${n.step.padEnd(50)} ${String(n.durationMs).padStart(4)}ms |`)}e.push("+-------------------------------------------------------------+"),e.push(`| Project: ${t.config.project.name.padEnd(47)} |`),e.push(`| Type: ${t.config.project.type.padEnd(50)} |`),e.push(`| Code Intel Indexed: ${String(t.summary.codeIntelligenceIndexed).padEnd(36)} |`),e.push(`| Patterns Loaded: ${String(t.summary.patternsLoaded).padEnd(39)} |`),e.push(`| Skills Installed: ${String(t.summary.skillsInstalled).padEnd(38)} |`),e.push(`| Agents Installed: ${String(t.summary.agentsInstalled).padEnd(38)} |`),e.push(`| Workers Started: ${String(t.summary.workersStarted).padEnd(39)} |`),e.push(`| Hooks Configured: ${t.summary.hooksConfigured?"Yes":"No".padEnd(38)} |`),e.push(`| MCP Server: ${t.summary.mcpConfigured?"Yes":"No".padEnd(44)} |`),e.push(`| CLAUDE.md: ${t.summary.claudeMdGenerated?"Yes":"No".padEnd(45)} |`),e.push("+-------------------------------------------------------------+");let r=t.success?"[OK] AQE v3 initialized as self-learning platform":"[!!] Initialization failed";return e.push(`| ${r.padEnd(57)} |`),e.push("+-------------------------------------------------------------+"),e.push(""),e.join(`
|
|
316
|
+
`)}export{I as a,me as b,Le as c,Ne as d};
|