agentic-qe 3.13.4 → 3.13.6
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/helpers/.helpers-version +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +430 -430
- package/.claude/helpers/helpers.manifest.json +6 -6
- package/.claude/helpers/hook-handler.cjs +565 -565
- package/.claude/helpers/intelligence.cjs +1058 -1058
- package/.claude/helpers/statusline.cjs +1022 -968
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +89 -0
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-7XXMDGFO.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-PR3RQWXF.js → agent-booster-wasm-TMON22NL.js} +2 -2
- package/dist/cli/chunks/{agent-handler-J5EPFBSZ.js → agent-handler-JOX6O26U.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-CCHI6QAA.js → agent-memory-branch-AMIJIDCM.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-2KGMCBJG.js +2 -0
- package/dist/cli/chunks/{arena-KMKBGSMY.js → arena-N6SO2CCQ.js} +2 -2
- package/dist/cli/chunks/{arena-SI7IPVZ3.js → arena-RKLFXDMO.js} +4 -4
- package/dist/cli/chunks/{audit-ZDKR3HT6.js → audit-ZJE3DUH6.js} +3 -3
- package/dist/cli/chunks/base-4M3VL4XK.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-BP5CZGMD.js → better-sqlite3-5G6AR6LX.js} +2 -2
- package/dist/cli/chunks/{brain-handler-MSYMTM5B.js → brain-handler-QD4DZ574.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-FRAHCBTO.js → branch-enumerator-PG3OUYE6.js} +2 -2
- package/dist/cli/chunks/{browser-4KHKVNYC.js → browser-Y2DJG7HQ.js} +2 -2
- package/dist/cli/chunks/browser-workflow-DHIPXEGO.js +2 -0
- package/dist/cli/chunks/{chunk-Q4VZXT6X.js → chunk-2BUDKFIE.js} +1 -1
- package/dist/cli/chunks/{chunk-NQVF4M7L.js → chunk-2FTAMEOB.js} +1 -1
- package/dist/cli/chunks/{chunk-AROPZPNG.js → chunk-2ILX73JG.js} +1 -1
- package/dist/cli/chunks/{chunk-6GNVVQW3.js → chunk-2SVDR5KB.js} +2 -2
- package/dist/cli/chunks/{chunk-HN2DD2DQ.js → chunk-2VUXU22M.js} +2 -2
- package/dist/cli/chunks/{chunk-U52IQFMP.js → chunk-3OUHOJBN.js} +1 -1
- package/dist/cli/chunks/{chunk-BQRCNRTJ.js → chunk-3QJH5W55.js} +2 -2
- package/dist/cli/chunks/{chunk-OU2YHXJY.js → chunk-3TC4ZPGR.js} +2 -2
- package/dist/cli/chunks/{chunk-ISGKDLZ7.js → chunk-463VBHHH.js} +2 -2
- package/dist/cli/chunks/{chunk-IN5KRJSE.js → chunk-4VWB64OH.js} +1 -1
- package/dist/cli/chunks/{chunk-WSQE3VZB.js → chunk-4YFBAXRD.js} +1 -1
- package/dist/cli/chunks/{chunk-N7LIYK7Z.js → chunk-523XPMTU.js} +1 -1
- package/dist/cli/chunks/{chunk-QXF6EQFP.js → chunk-5CMZDVUR.js} +2 -2
- package/dist/cli/chunks/{chunk-VOAXVNO5.js → chunk-5VGQABM3.js} +4 -4
- package/dist/cli/chunks/{chunk-UOO7P2AK.js → chunk-5VV5MOED.js} +2 -2
- package/dist/cli/chunks/{chunk-5IVXM3TE.js → chunk-6FICUNAV.js} +1 -1
- package/dist/cli/chunks/{chunk-LASZCR5G.js → chunk-6ITWOYET.js} +2 -2
- package/dist/cli/chunks/{chunk-7EL5QEMJ.js → chunk-6QZSF6RL.js} +2 -2
- package/dist/cli/chunks/{chunk-KDICUKYX.js → chunk-6UPQD42K.js} +2 -2
- package/dist/cli/chunks/{chunk-LJSHQU2P.js → chunk-6VUEUYFL.js} +5 -5
- package/dist/cli/chunks/{chunk-75CFWCQV.js → chunk-7225UNNY.js} +2 -2
- package/dist/cli/chunks/{chunk-L3UTZEVW.js → chunk-75QKZ6VX.js} +2 -2
- package/dist/cli/chunks/{chunk-GRMKN44A.js → chunk-7GTB7LVJ.js} +3 -3
- package/dist/cli/chunks/{chunk-EUIUWZF4.js → chunk-7KRZ2Q6B.js} +3 -3
- package/dist/cli/chunks/{chunk-ERKYIV25.js → chunk-7NYCYSGW.js} +2 -2
- package/dist/cli/chunks/{chunk-7YAHECC5.js → chunk-7TON6JSG.js} +2 -2
- package/dist/cli/chunks/chunk-ACHMNMEJ.js +2 -0
- package/dist/cli/chunks/{chunk-27FWRWOB.js → chunk-ADYY2GKC.js} +2 -2
- package/dist/cli/chunks/{chunk-NAZFAGJ5.js → chunk-AOUULKKT.js} +2 -2
- package/dist/cli/chunks/{chunk-XBSBVPSM.js → chunk-AU3APBY2.js} +2 -2
- package/dist/cli/chunks/{chunk-C3AF5Z55.js → chunk-BAOKXLIV.js} +2 -2
- package/dist/cli/chunks/{chunk-RO4BYINM.js → chunk-BDVZF46F.js} +2 -2
- package/dist/cli/chunks/{chunk-LIMFWEUI.js → chunk-BGLSIA4U.js} +2 -2
- package/dist/cli/chunks/{chunk-UNMWI4QU.js → chunk-BI6UU3Z3.js} +1 -1
- package/dist/cli/chunks/{chunk-SFRYDGLF.js → chunk-BOM5NGCR.js} +1 -1
- package/dist/cli/chunks/{chunk-QENUKXPP.js → chunk-CBXJ4AQS.js} +2 -2
- package/dist/cli/chunks/{chunk-6XCULO27.js → chunk-CKYRZ3TA.js} +2 -2
- package/dist/cli/chunks/{chunk-RLZZTFEN.js → chunk-CTILSLXF.js} +2 -2
- package/dist/cli/chunks/chunk-CVXEOTIK.js +2 -0
- package/dist/cli/chunks/{chunk-3RSF7POD.js → chunk-D777E2MT.js} +2 -2
- package/dist/cli/chunks/{chunk-FZ4MUDHZ.js → chunk-DKGDBKBJ.js} +1 -1
- package/dist/cli/chunks/{chunk-KO3UQYGY.js → chunk-DLBJ7IZT.js} +75 -75
- package/dist/cli/chunks/{chunk-56QR72EB.js → chunk-DR2M2SI2.js} +2 -2
- package/dist/cli/chunks/{chunk-MP3RCZ75.js → chunk-DS53MJCN.js} +1 -1
- package/dist/cli/chunks/{chunk-KE656E6T.js → chunk-DSIS6WQD.js} +3 -3
- package/dist/cli/chunks/{chunk-CQP6BDSF.js → chunk-DSTQ2OWI.js} +1 -1
- package/dist/cli/chunks/{chunk-WUXCL65V.js → chunk-DXM7IN2W.js} +2 -2
- package/dist/cli/chunks/{chunk-O74V7MB4.js → chunk-E3OKRZCH.js} +2 -2
- package/dist/cli/chunks/{chunk-TO7FTPRV.js → chunk-E7MD5LHC.js} +2 -2
- package/dist/cli/chunks/{chunk-A2G26WU4.js → chunk-EKWEJOV7.js} +1 -1
- package/dist/cli/chunks/chunk-EP4ORDFE.js +2 -0
- package/dist/cli/chunks/{chunk-5RVWL2U3.js → chunk-EVJSK56E.js} +3 -3
- package/dist/cli/chunks/chunk-EY44JDUL.js +12 -0
- package/dist/cli/chunks/{chunk-JDADACZZ.js → chunk-EYHRYIBX.js} +1 -1
- package/dist/cli/chunks/{chunk-FJSL7TWU.js → chunk-EYWR4Y3J.js} +1 -1
- package/dist/cli/chunks/{chunk-E7FCVH32.js → chunk-F66FYZQF.js} +2 -2
- package/dist/cli/chunks/{chunk-GNFKG2LX.js → chunk-FGQH5LOG.js} +2 -2
- package/dist/cli/chunks/{chunk-ZAT65V6I.js → chunk-FH6H4KOZ.js} +17 -17
- package/dist/cli/chunks/{chunk-OU3SYEYJ.js → chunk-FV47SYXK.js} +1 -1
- package/dist/cli/chunks/chunk-GA7PUAMT.js +2 -0
- package/dist/cli/chunks/{chunk-IVZA5XTW.js → chunk-GEH3S5DI.js} +2 -2
- package/dist/cli/chunks/{chunk-44SYMJ4T.js → chunk-GQCYO54W.js} +2 -2
- package/dist/cli/chunks/{chunk-4HVVVVUF.js → chunk-GSZL3WST.js} +2 -2
- package/dist/cli/chunks/{chunk-XTHRSBMJ.js → chunk-GV3C224P.js} +2 -2
- package/dist/cli/chunks/{chunk-JBHGMLN7.js → chunk-HBNMEYJS.js} +182 -201
- package/dist/cli/chunks/{chunk-LUAYTM77.js → chunk-HPRX5S74.js} +1 -1
- package/dist/cli/chunks/{chunk-PFQLB4XP.js → chunk-HWWMINXV.js} +2 -2
- package/dist/cli/chunks/{chunk-UQFMQOZB.js → chunk-IHUAEQZN.js} +1 -1
- package/dist/cli/chunks/{chunk-GGZB2ZBB.js → chunk-ISOTSVI7.js} +1 -1
- package/dist/cli/chunks/{chunk-RCRKCMN5.js → chunk-JDADNBWS.js} +1 -1
- package/dist/cli/chunks/{chunk-ITQCSIYG.js → chunk-JGQZ7ECC.js} +1 -1
- package/dist/cli/chunks/{chunk-5R26MAMK.js → chunk-JH6KUV74.js} +2 -2
- package/dist/cli/chunks/{chunk-6CZUQA4G.js → chunk-JPJSOS4H.js} +1 -1
- package/dist/cli/chunks/{chunk-NW4YPUPN.js → chunk-JQXAWTS5.js} +3 -3
- package/dist/cli/chunks/{chunk-II2RP3MY.js → chunk-K7ZFBGLE.js} +2 -2
- package/dist/cli/chunks/chunk-KBHSID6C.js +62 -0
- package/dist/cli/chunks/{chunk-KZAVYHH7.js → chunk-KHDE4KT5.js} +4 -4
- package/dist/cli/chunks/{chunk-LEIG3KIG.js → chunk-KMCI3RGD.js} +2 -2
- package/dist/cli/chunks/{chunk-KB4S7MGB.js → chunk-LGP26FTM.js} +2 -2
- package/dist/cli/chunks/{chunk-55E62F4T.js → chunk-LLVXOXAK.js} +1 -1
- package/dist/cli/chunks/{chunk-PIYDPOW6.js → chunk-LQYAJ7RR.js} +2 -2
- package/dist/cli/chunks/{chunk-KQLJILCZ.js → chunk-LVLGRUUJ.js} +1 -1
- package/dist/cli/chunks/{chunk-PRHLV6FS.js → chunk-LYGHX4II.js} +1 -1
- package/dist/cli/chunks/{chunk-RKNKFLCQ.js → chunk-MOIKR7RU.js} +2 -2
- package/dist/cli/chunks/chunk-MSA6MD5C.js +2 -0
- package/dist/cli/chunks/{chunk-MWWTYPFL.js → chunk-MTEEFP6V.js} +2 -2
- package/dist/cli/chunks/{chunk-OR2RC7ZH.js → chunk-N6QUDQ5H.js} +2 -2
- package/dist/cli/chunks/{chunk-Z7FVGJYC.js → chunk-N7JRGAJF.js} +2 -2
- package/dist/cli/chunks/{chunk-WCUXA3NV.js → chunk-NNIAUDHF.js} +1 -1
- package/dist/cli/chunks/{chunk-SQCACQUM.js → chunk-NUCVMWDJ.js} +2 -2
- package/dist/cli/chunks/{chunk-N57M7UPQ.js → chunk-NUDDFJYU.js} +2 -2
- package/dist/cli/chunks/{chunk-GIU26D5G.js → chunk-NX6FOAS4.js} +1 -1
- package/dist/cli/chunks/{chunk-ZYCPTARG.js → chunk-O34674VM.js} +2 -2
- package/dist/cli/chunks/{chunk-PJFQGNRW.js → chunk-OIGWREK7.js} +1 -1
- package/dist/cli/chunks/{chunk-DQ247474.js → chunk-OS56PKRO.js} +2 -2
- package/dist/cli/chunks/{chunk-OF7674H5.js → chunk-P4CHYYJN.js} +2 -2
- package/dist/cli/chunks/{chunk-VLELNETG.js → chunk-P6A35LKJ.js} +2 -2
- package/dist/cli/chunks/{chunk-GOFP47XU.js → chunk-PA6SUNDD.js} +1 -1
- package/dist/cli/chunks/{chunk-O45CEMVF.js → chunk-PGDDPZ7W.js} +1 -1
- package/dist/cli/chunks/{chunk-ESMSH7HG.js → chunk-PLYGIUFO.js} +2 -2
- package/dist/cli/chunks/{chunk-EEHEMDNV.js → chunk-POZ3S4UO.js} +2 -2
- package/dist/cli/chunks/{chunk-NQJLUY2K.js → chunk-PSAXLKDZ.js} +2 -2
- package/dist/cli/chunks/{chunk-HGY62IYZ.js → chunk-PTBW2QXE.js} +2 -2
- package/dist/cli/chunks/{chunk-PI55PHUL.js → chunk-PW3JLQGH.js} +2 -2
- package/dist/cli/chunks/{chunk-GOHWEQEP.js → chunk-PX7MVV6F.js} +2 -2
- package/dist/cli/chunks/{chunk-SJ26ZR75.js → chunk-Q4RU4XG6.js} +2 -2
- package/dist/cli/chunks/{chunk-XF4F5ZXO.js → chunk-QQA4N3YT.js} +4 -4
- package/dist/cli/chunks/chunk-QSO5RFJ4.js +15 -0
- package/dist/cli/chunks/{chunk-Z6FK7T7J.js → chunk-R2GHZ2QG.js} +2 -2
- package/dist/cli/chunks/{chunk-VDPQ7NVG.js → chunk-R5FSKAS3.js} +1 -1
- package/dist/cli/chunks/{chunk-5DESO7E4.js → chunk-R5LDNZVB.js} +2 -2
- package/dist/cli/chunks/{chunk-X5JMTHXC.js → chunk-RBNSZFVL.js} +3 -3
- package/dist/cli/chunks/{chunk-TM6LLT4G.js → chunk-RDSO3R2R.js} +3 -3
- package/dist/cli/chunks/{chunk-27REOPQK.js → chunk-SZO6JIFM.js} +2 -2
- package/dist/cli/chunks/{chunk-IU5SILCS.js → chunk-TGSL4OOT.js} +2 -2
- package/dist/cli/chunks/{chunk-4FP4PJ45.js → chunk-THW6LF5I.js} +2 -2
- package/dist/cli/chunks/{chunk-FBXWU37F.js → chunk-TMM5NKPI.js} +1 -1
- package/dist/cli/chunks/{chunk-VZO4V4R4.js → chunk-TWNXZOJY.js} +2 -2
- package/dist/cli/chunks/{chunk-X67O2KUE.js → chunk-U63JEFF5.js} +7 -7
- package/dist/cli/chunks/{chunk-IUFNB6I6.js → chunk-UHQA6EH6.js} +2 -2
- package/dist/cli/chunks/{chunk-XLP44YGX.js → chunk-UN2MXDJT.js} +2 -2
- package/dist/cli/chunks/{chunk-CTNDSP2M.js → chunk-UNLH7NPY.js} +1 -1
- package/dist/cli/chunks/{chunk-EPSF2ERW.js → chunk-V4QQTPZF.js} +2 -2
- package/dist/cli/chunks/{chunk-UAEP2ZUQ.js → chunk-V5MS6XNT.js} +2 -2
- package/dist/cli/chunks/{chunk-XEI5LLHX.js → chunk-VK5I4JSN.js} +2 -2
- package/dist/cli/chunks/{chunk-W37WY3OL.js → chunk-VSP2IB5N.js} +2 -2
- package/dist/cli/chunks/{chunk-PD2ZSCEH.js → chunk-WA553ALQ.js} +1 -1
- package/dist/cli/chunks/{chunk-TFFEB7XD.js → chunk-X3CHYV7G.js} +2 -2
- package/dist/cli/chunks/{chunk-MPVOZKUP.js → chunk-X75OYPS6.js} +1 -1
- package/dist/cli/chunks/{chunk-C75V5PTW.js → chunk-XF2TKGSC.js} +1 -1
- package/dist/cli/chunks/{chunk-Y7VWCP35.js → chunk-XLDEWLP4.js} +1 -1
- package/dist/cli/chunks/{chunk-26SNR2EK.js → chunk-XRH2D6JV.js} +3 -3
- package/dist/cli/chunks/{chunk-MANWLRAW.js → chunk-XZPAKAFJ.js} +1 -1
- package/dist/cli/chunks/{chunk-6XVP6BGM.js → chunk-Y2QZK46R.js} +2 -2
- package/dist/cli/chunks/{chunk-6BHRSGR7.js → chunk-YL7CAOQG.js} +3 -3
- package/dist/cli/chunks/{chunk-SPTCNM45.js → chunk-YOVQBSTW.js} +2 -2
- package/dist/cli/chunks/{chunk-2Q73TQUQ.js → chunk-YQUZGPUQ.js} +1 -1
- package/dist/cli/chunks/{chunk-YZGA4ELM.js → chunk-YRRYKR7U.js} +2 -2
- package/dist/cli/chunks/{chunk-NAAPL2HK.js → chunk-Z6SAS2NU.js} +1 -1
- package/dist/cli/chunks/{ci-DK4FGREO.js → ci-MWQVCZ2W.js} +2 -2
- package/dist/cli/chunks/{ci-output-HQBBQQES.js → ci-output-ZCH4IZ7H.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-MJCS46DN.js → circuit-breaker-N3VSQM5X.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-IIQT52H4.js → claude-flow-setup-TSJFOGXN.js} +2 -2
- package/dist/cli/chunks/client-IEN43WBH.js +2 -0
- package/dist/cli/chunks/{cline-installer-7SPKUNNZ.js → cline-installer-OHKWAB4I.js} +2 -2
- package/dist/cli/chunks/{code-V2B4FP3X.js → code-3UTIL3QR.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-IRGAI76Y.js → code-index-extractor-TVG2V2NY.js} +2 -2
- package/dist/cli/chunks/{codex-installer-PDFCYRU6.js → codex-installer-L6ZOTOO2.js} +2 -2
- package/dist/cli/chunks/{completions-TAJ6N7YZ.js → completions-SFRB664X.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-JHQKQKBG.js → complexity-analyzer-HDZKVO6D.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-DESZXCLC.js → continuedev-installer-HKLZR3UO.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-OQPXBLWS.js → copilot-installer-5P3LX3C5.js} +2 -2
- package/dist/cli/chunks/core-handlers-PBITKHVP.js +2 -0
- package/dist/cli/chunks/{cost-tracker-KHDFSCAJ.js → cost-tracker-MZR5RB6E.js} +2 -2
- package/dist/cli/chunks/{coverage-T7EENIDE.js → coverage-L6V6NFIM.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-JGCWQ7BO.js +2 -0
- package/dist/cli/chunks/{cursor-installer-X6BFU5QU.js → cursor-installer-FD6DT23Y.js} +2 -2
- package/dist/cli/chunks/{daemon-UTPP4JCG.js → daemon-HTSRODRG.js} +4 -4
- package/dist/cli/chunks/{daemon-22NOG5XI.js → daemon-I5ESGZGX.js} +3 -3
- package/dist/cli/chunks/{dag-attention-scheduler-XI6DG3FW.js → dag-attention-scheduler-JPTHWB2Q.js} +2 -2
- package/dist/cli/chunks/{detect-7IMQGJ5I.js → detect-RTUZDBEZ.js} +2 -2
- package/dist/cli/chunks/{dist-node-YMLM4K7J.js → dist-node-5HLWHNYA.js} +2 -2
- package/dist/cli/chunks/{domain-handler-LRTJGTEH.js → domain-handler-R7IPUX54.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-HZJ3WUCT.js → domain-transfer-E3I2LMCB.js} +2 -2
- package/dist/cli/chunks/dream-52MPUF5Q.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-QSRN7Z5Q.js → embed-and-insert-pattern-BXUWG73R.js} +2 -2
- package/dist/cli/chunks/{eval-JVVVQVV6.js → eval-3ZFM75YA.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-ORZN3ROJ.js → experience-capture-middleware-NJ3BT657.js} +3 -3
- package/dist/cli/chunks/{fast-paths-LUFARZR5.js → fast-paths-Q3V5C5IM.js} +2 -2
- package/dist/cli/chunks/{feature-flags-ZHQESXIP.js → feature-flags-D3JGPHXY.js} +2 -2
- package/dist/cli/chunks/{feature-flags-2XC4ECLW.js → feature-flags-XZGJNPZ7.js} +2 -2
- package/dist/cli/chunks/file-discovery-MZOYXIOS.js +2 -0
- package/dist/cli/chunks/{fleet-FUQ6G4SB.js → fleet-FG3EBA75.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-A4E6OKGD.js → gnn-wrapper-PKZLZHL2.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-3JKQORXA.js → heartbeat-handler-YZTRVH75.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-LMAEJQYQ.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-DGGDYJEL.js +2 -0
- package/dist/cli/chunks/hnsw-index-KA7WDTHX.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-AHKFKM2J.js → hnsw-legacy-bridge-WONHB63F.js} +2 -2
- package/dist/cli/chunks/hnswlib-node-Q4VPSJJM.js +2 -0
- package/dist/cli/chunks/{hooks-JNW5ZB2E.js → hooks-RWX5ZZCE.js} +47 -47
- package/dist/cli/chunks/hybrid-router-Q6JQTV55.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-3DTAMNSJ.js → hypergraph-engine-G6N24L5G.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-ZV4AZRGF.js → hypergraph-handler-4RGOLL6F.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-7LFSGIQP.js +2 -0
- package/dist/cli/chunks/{init-handler-NPOUX47N.js → init-handler-L7DZAHXO.js} +12 -12
- package/dist/cli/chunks/init-wizard-T4K44J6D.js +2 -0
- package/dist/cli/chunks/kernel-TGHK6X7F.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-D35TR6LG.js → kilocode-installer-G7PUCUDZ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-OHHTQENO.js → kiro-installer-H6234HEB.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-MV3OSGCB.js +2 -0
- package/dist/cli/chunks/learning-346CA4DH.js +119 -0
- package/dist/cli/chunks/{llm-router-XLTE52H5.js → llm-router-ATNRDTEM.js} +4 -4
- package/dist/cli/chunks/llm-router-service-OOCNAPJO.js +2 -0
- package/dist/cli/chunks/{load-BHMK4FIL.js → load-3L2CK4ML.js} +2 -2
- package/dist/cli/chunks/load-test-4OZPYWL4.js +2 -0
- package/dist/cli/chunks/{mcp-V4MAYT7C.js → mcp-JJ4ZDUJB.js} +2 -2
- package/dist/cli/chunks/{memory-PDA7MQ7E.js → memory-U3K2Y777.js} +5 -5
- package/dist/cli/chunks/memory-backend-LMRIHJQY.js +2 -0
- package/dist/cli/chunks/memory-handlers-J6CVQ5DS.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-KECHOXKD.js → multi-model-executor-DPCU4CSM.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-LWSCQOOZ.js → opencode-installer-KNUCUSRG.js} +2 -2
- package/dist/cli/chunks/{orchestrator-ENEBTEUW.js → orchestrator-DJV2NUWD.js} +11 -11
- package/dist/cli/chunks/pattern-null-store-AQWPHLRW.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-XIHGXYZZ.js → pattern-usage-recorder-TQ7KECBB.js} +2 -2
- package/dist/cli/chunks/{pipeline-GQOJM3LU.js → pipeline-JG57VFOB.js} +2 -2
- package/dist/cli/chunks/{platform-L56TGXGZ.js → platform-L7LOBG4E.js} +2 -2
- package/dist/cli/chunks/{plugin-SZ6PZKYX.js → plugin-ATBPEU2K.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-SID5FQFW.js → prime-radiant-advanced-wasm-XCX7CNVW.js} +2 -2
- package/dist/cli/chunks/protocol-executor-FWUT6L6K.js +2 -0
- package/dist/cli/chunks/{protocol-handler-5MMNVVPX.js → protocol-handler-DOFLSB4N.js} +2 -2
- package/dist/cli/chunks/{prove-DJ6BQ2AK.js → prove-CDBMRPBD.js} +2 -2
- package/dist/cli/chunks/provider-manager-4PY7IR3V.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-M4XVWRPY.js +2 -0
- package/dist/cli/chunks/quality-5CMQBYP3.js +7 -0
- package/dist/cli/chunks/{quality-gate-CVHVSORK.js → quality-gate-LU66IWRT.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-KSRI42QZ.js +2 -0
- package/dist/cli/chunks/{real-embeddings-DN2MEJVM.js → real-embeddings-3B7AXYOP.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-LTAQJWIH.js → roocode-installer-GF4YJW7E.js} +2 -2
- package/dist/cli/chunks/router-F2TCXNSG.js +2 -0
- package/dist/cli/chunks/routing-feedback-VHOWXUY7.js +2 -0
- package/dist/cli/chunks/{routing-handler-PSWR2UCT.js → routing-handler-PWQMWFND.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-VTP6Y7PN.js → ruvector-commands-SMD6KSBD.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-EBUMXPRO.js → rvf-dual-writer-M5TEJ56X.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-5N7GHMD3.js → rvf-migration-adapter-EHLWMZYI.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-GQKDBNRR.js → rvf-migration-coordinator-GMVLX3FX.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-XG3LFOYW.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-LR3SYGQK.js → rvf-store-integrity-PDADEHAZ.js} +2 -2
- package/dist/cli/chunks/safe-db-CTHJ3SXC.js +2 -0
- package/dist/cli/chunks/schedule-LLYADLGL.js +2 -0
- package/dist/cli/chunks/scheduler-72YIGDIX.js +2 -0
- package/dist/cli/chunks/{security-YDWLYXYD.js → security-PSMBTUSM.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-I3HQY7DE.js → shared-rvf-adapter-DP2Z4YLV.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-2UADEA5N.js → shared-rvf-dual-writer-UOU6ORBJ.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-N7OO3ZOE.js +2 -0
- package/dist/cli/chunks/{status-handler-QRHI3F4V.js → status-handler-T565F47D.js} +2 -2
- package/dist/cli/chunks/{structural-health-FWKE63CM.js → structural-health-54WNSZ7Y.js} +2 -2
- package/dist/cli/chunks/{sync-2QRCT5MT.js → sync-5ZGYF7JF.js} +2 -2
- package/dist/cli/chunks/{sync-E32MBAOF.js → sync-EXADT5IZ.js} +2 -2
- package/dist/cli/chunks/{task-handler-C7BKMOCL.js → task-handler-JXWQZDEX.js} +2 -2
- package/dist/cli/chunks/{task-handlers-PADWLLDO.js → task-handlers-UKHRILMM.js} +3 -3
- package/dist/cli/chunks/test-3SU56PMM.js +33 -0
- package/dist/cli/chunks/{test-scheduling-5WKIWH4H.js → test-scheduling-CZZ4KKWM.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-6SKOJM3U.js → token-bootstrap-RSIAPUIV.js} +2 -2
- package/dist/cli/chunks/{token-usage-V6JW55RV.js → token-usage-7HW43ORO.js} +2 -2
- package/dist/cli/chunks/{transformers-3UPFBYSB.js → transformers-A5REG7OI.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-UCY4S2DU.js → tree-sitter-wasm-parser-F43MC7E5.js} +2 -2
- package/dist/cli/chunks/{types-XNMNQGET.js → types-DEOHTTJ3.js} +2 -2
- package/dist/cli/chunks/unified-memory-Q55MJWAM.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-4BEKV2K5.js +2 -0
- package/dist/cli/chunks/unified-persistence-IIB5MR67.js +2 -0
- package/dist/cli/chunks/{upgrade-MVTMTOPL.js → upgrade-7NKNCL2I.js} +2 -2
- package/dist/cli/chunks/{validate-OJWR2AGZ.js → validate-SN2UY7CT.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-2RGSF2K2.js → validate-swarm-YITFMCXY.js} +2 -2
- package/dist/cli/chunks/{vibium-O3ZLAEEZ.js → vibium-AZNIG6O7.js} +2 -2
- package/dist/cli/chunks/visual-security-F4FUP6KV.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-6VPASTI4.js → web-tree-sitter-DY4YXPMR.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-CINHOW3N.js → windsurf-installer-HXD4BK7N.js} +2 -2
- package/dist/cli/chunks/witness-chain-SQ5LCKUQ.js +2 -0
- package/dist/cli/chunks/{witness-chain-2NXW7FT7.js → witness-chain-UV7BOO6T.js} +2 -2
- package/dist/cli/chunks/{witness-key-manager-ODW4DJWT.js → witness-key-manager-BCNW3SZH.js} +2 -2
- package/dist/cli/chunks/{workflow-BFGS2GAU.js → workflow-R3SSSWA5.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-Z4PZXWVY.js +2 -0
- package/dist/cli/chunks/{wrappers-VEVVSVMS.js → wrappers-6JUXYAML.js} +2 -2
- package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +16 -27
- package/dist/cli/commands/learning.js +66 -0
- package/dist/cli/commands/quality.d.ts +12 -0
- package/dist/cli/commands/quality.js +50 -74
- package/dist/cli/commands/test.js +33 -4
- package/dist/cli/handlers/init-handler.d.ts +2 -0
- package/dist/cli/handlers/init-handler.js +4 -1
- package/dist/cli/utils/file-discovery.d.ts +1 -0
- package/dist/cli/utils/file-discovery.js +13 -1
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +5 -0
- package/dist/domains/quality-assessment/index.d.ts +1 -0
- package/dist/domains/quality-assessment/index.js +1 -0
- package/dist/domains/quality-assessment/quality-evidence.d.ts +41 -0
- package/dist/domains/quality-assessment/quality-evidence.js +115 -0
- package/dist/domains/test-execution/coordinator.d.ts +1 -0
- package/dist/domains/test-execution/coordinator.js +11 -4
- package/dist/domains/test-execution/interfaces.d.ts +2 -0
- package/dist/domains/test-execution/services/retry-handler.js +3 -3
- package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
- package/dist/domains/test-execution/services/test-executor.js +93 -30
- package/dist/domains/test-generation/gates/test-quality-gate.d.ts +8 -2
- package/dist/domains/test-generation/gates/test-quality-gate.js +93 -4
- package/dist/domains/test-generation/generators/base-test-generator.js +0 -15
- package/dist/domains/test-generation/generators/jest-vitest-generator.js +17 -26
- package/dist/domains/test-generation/services/test-generator.js +7 -2
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/07-hooks.js +3 -1
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/init/settings-merge.d.ts +3 -1
- package/dist/init/settings-merge.js +9 -3
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +2 -0
- package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +14 -0
- package/dist/integrations/embeddings/index/HNSWIndex.js +2 -0
- package/dist/kernel/hybrid-backend.d.ts +1 -1
- package/dist/kernel/hybrid-backend.js +2 -2
- package/dist/kernel/interfaces.d.ts +2 -2
- package/dist/kernel/memory-backend.d.ts +1 -1
- package/dist/kernel/memory-backend.js +3 -1
- package/dist/kernel/unified-memory.d.ts +1 -1
- package/dist/kernel/unified-memory.js +19 -4
- package/dist/learning/real-embeddings.js +20 -4
- package/dist/learning/sqlite-persistence.d.ts +3 -2
- package/dist/learning/sqlite-persistence.js +7 -8
- package/dist/mcp/bundle.js +453 -472
- package/dist/mcp/handlers/memory-handlers.js +2 -5
- package/dist/mcp/tools/quality-assessment/evaluate.d.ts +7 -0
- package/dist/mcp/tools/quality-assessment/evaluate.js +72 -20
- package/dist/mcp/tools/security-compliance/scan.js +8 -1
- package/package.json +2 -2
- package/dist/cli/chunks/adapter-JISQ35YY.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-TVTNP76S.js +0 -2
- package/dist/cli/chunks/base-WBCYKM45.js +0 -2
- package/dist/cli/chunks/better-sqlite3-FXJFG2WH.js +0 -2
- package/dist/cli/chunks/browser-workflow-4JM3IWCS.js +0 -2
- package/dist/cli/chunks/chunk-344CLTV7.js +0 -62
- package/dist/cli/chunks/chunk-6VNUASTQ.js +0 -15
- package/dist/cli/chunks/chunk-CW7LDLJ2.js +0 -2
- package/dist/cli/chunks/chunk-HGBVGEUE.js +0 -2
- package/dist/cli/chunks/chunk-JJ5YIKTJ.js +0 -12
- package/dist/cli/chunks/chunk-QGH54HTH.js +0 -2
- package/dist/cli/chunks/chunk-TCYSMSBO.js +0 -2
- package/dist/cli/chunks/chunk-YQI6SOUO.js +0 -2
- package/dist/cli/chunks/client-FNDZB4TY.js +0 -2
- package/dist/cli/chunks/core-handlers-S37RHLKP.js +0 -2
- package/dist/cli/chunks/cross-domain-router-7ZHDB2V3.js +0 -2
- package/dist/cli/chunks/dream-BEVYNIOO.js +0 -2
- package/dist/cli/chunks/file-discovery-UHXZQ7GS.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-K4YLB3X4.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-PPR3LTMA.js +0 -2
- package/dist/cli/chunks/hnsw-index-ZSKFT4LZ.js +0 -2
- package/dist/cli/chunks/hybrid-router-4SXBHTOY.js +0 -2
- package/dist/cli/chunks/impact-analyzer-55GE7EQD.js +0 -2
- package/dist/cli/chunks/init-wizard-EUQLSGI6.js +0 -2
- package/dist/cli/chunks/kernel-BSGSVYPM.js +0 -2
- package/dist/cli/chunks/knowledge-graph-OITIVT5J.js +0 -2
- package/dist/cli/chunks/learning-24PCHLWU.js +0 -117
- package/dist/cli/chunks/llm-router-service-RUPU52AR.js +0 -2
- package/dist/cli/chunks/load-test-ZV3C55ZE.js +0 -2
- package/dist/cli/chunks/memory-backend-S3KCPHCF.js +0 -2
- package/dist/cli/chunks/memory-handlers-X5BLXOSH.js +0 -2
- package/dist/cli/chunks/pattern-null-store-ILVDKSCX.js +0 -2
- package/dist/cli/chunks/protocol-executor-GDRHCW3Q.js +0 -2
- package/dist/cli/chunks/provider-manager-BS4MVCSH.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-P3ARGHDN.js +0 -2
- package/dist/cli/chunks/quality-WKC4JCB3.js +0 -7
- package/dist/cli/chunks/queen-coordinator-GI7GNVDM.js +0 -2
- package/dist/cli/chunks/router-YU6MLJBV.js +0 -2
- package/dist/cli/chunks/routing-feedback-D6B2SK5V.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-M7ZVRN5Z.js +0 -2
- package/dist/cli/chunks/safe-db-3OHTLXG7.js +0 -2
- package/dist/cli/chunks/schedule-H43ADREQ.js +0 -2
- package/dist/cli/chunks/scheduler-CGSXNEPJ.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-V6U5FKVK.js +0 -2
- package/dist/cli/chunks/test-KX4UKHSX.js +0 -33
- package/dist/cli/chunks/unified-memory-H2J5BHPY.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-LFGIWMTS.js +0 -2
- package/dist/cli/chunks/unified-persistence-F6W7EXU5.js +0 -2
- package/dist/cli/chunks/visual-security-EHVU32UE.js +0 -2
- package/dist/cli/chunks/witness-chain-BIICGRHC.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-PVTYPYY4.js +0 -2
|
@@ -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.13.
|
|
2
|
-
import"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.13.6");process.exit(0)}
|
|
2
|
+
import"./chunk-X3CHYV7G.js";import{b as $}from"./chunk-XLDEWLP4.js";import{d as R}from"./chunk-7225UNNY.js";import{b as k,c as C,d as b}from"./chunk-6QZSF6RL.js";import{c as W}from"./chunk-2VUXU22M.js";import"./chunk-JDADNBWS.js";import"./chunk-6UPQD42K.js";import"./chunk-ISOTSVI7.js";import{Command as O}from"commander";import o from"chalk";function P(d,a){let m=d.indexOf("=");return m>0&&(a[d.substring(0,m)]=d.substring(m+1)),a}function x(d,a,m){let y=new O("workflow").description("Manage QE workflows and pipelines (ADR-041)");return y.command("run <file>").description("Execute a QE pipeline from YAML file").option("-w, --watch","Watch execution progress").option("-v, --verbose","Show detailed output").option("--params <json>","Additional parameters as JSON","{}").action(async(t,l)=>{if(!await m())return;let e=await import("fs"),c=(await import("path")).resolve(t);try{console.log(o.blue(`
|
|
3
3
|
Running workflow from: ${t}
|
|
4
4
|
`));let s=k(c);if(!s.success||!s.workflow){console.log(o.red("Failed to parse pipeline:"));for(let w of s.errors)console.log(o.red(` ${w}`));await a(1)}let r={...W(l.params,"params")};if(s.pipeline){for(let w of s.pipeline.stages)if(w.params)for(let[S,h]of Object.entries(w.params))r[S]=h}if(!d.workflowOrchestrator.getWorkflow(s.workflow.id)){let w=d.workflowOrchestrator.registerWorkflow(s.workflow);w.success||(console.log(o.red(`Failed to register workflow: ${w.error.message}`)),await a(1))}let n=await d.workflowOrchestrator.executeWorkflow(s.workflow.id,r);if(!n.success){console.log(o.red(`Failed to start workflow: ${n.error.message}`)),await a(1);return}let p=n.value;if(console.log(o.cyan(` Execution ID: ${p}`)),console.log(o.gray(` Workflow: ${s.workflow.name}`)),console.log(o.gray(` Stages: ${s.workflow.steps.length}`)),console.log(""),l.watch){console.log(o.blue(`Workflow Progress:
|
|
5
5
|
`));let w,S=Date.now();for(;;){let g=d.workflowOrchestrator.getWorkflowStatus(p);if(!g)break;if(!w||w.progress!==g.progress||w.status!==g.status||JSON.stringify(w.currentSteps)!==JSON.stringify(g.currentSteps)){process.stdout.write("\r\x1B[K");let v="\u2588".repeat(Math.floor(g.progress/5))+"\u2591".repeat(20-Math.floor(g.progress/5)),D=g.status==="completed"?o.green:g.status==="failed"?o.red:g.status==="running"?o.yellow:o.gray;console.log(` [${v}] ${g.progress}% - ${D(g.status)}`),g.currentSteps.length>0&&l.verbose&&console.log(o.gray(` Running: ${g.currentSteps.join(", ")}`)),w=g}if(g.status==="completed"||g.status==="failed"||g.status==="cancelled")break;await new Promise(v=>setTimeout(v,500))}let h=d.workflowOrchestrator.getWorkflowStatus(p);if(h){console.log("");let g=h.duration||Date.now()-S;h.status==="completed"?(console.log(o.green("Workflow completed successfully")),console.log(o.gray(` Duration: ${$(g)}`)),console.log(o.gray(` Completed: ${h.completedSteps.length} stages`)),h.skippedSteps.length>0&&console.log(o.yellow(` Skipped: ${h.skippedSteps.length} stages`))):h.status==="failed"?(console.log(o.red("Workflow failed")),console.log(o.red(` Error: ${h.error}`)),console.log(o.gray(` Failed stages: ${h.failedSteps.join(", ")}`))):console.log(o.yellow(`Workflow ${h.status}`))}}else console.log(o.green("Workflow execution started")),console.log(o.gray(` Use 'aqe workflow status ${p}' to check progress`));console.log(""),await a(0)}catch(s){console.error(o.red(`
|
|
@@ -35,10 +35,10 @@ Workflow cancelled: ${t}
|
|
|
35
35
|
`)):console.log(o.red(`
|
|
36
36
|
Failed to cancel workflow: ${l.error.message}
|
|
37
37
|
`)),await a(l.success?0:1)}catch(l){console.error(o.red(`
|
|
38
|
-
Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-
|
|
38
|
+
Failed to cancel workflow:`),l),await a(1)}}),y.command("browser-list").description("List available browser workflow templates").action(async()=>{try{let{BrowserWorkflowTool:t}=await import("./browser-workflow-DHIPXEGO.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
|
|
39
39
|
Browser Workflow Templates:
|
|
40
40
|
`));for(let u of e.data.availableTemplates)console.log(` ${o.cyan(u)}`);console.log("")}else console.log(o.red(`Failed: ${e.error||"Unknown error"}`));await a(0)}catch(t){console.error(o.red(`
|
|
41
|
-
Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-
|
|
41
|
+
Failed:`),t),await a(1)}}),y.command("browser-load [template]").description("Load and validate a browser workflow template or inline YAML").option("--yaml <yaml>","Inline YAML workflow definition").option("-v, --var <key=value>","Variable override (repeatable)",P,{}).option("-F, --format <format>","Output format (text|json)","text").option("-o, --output <path>","Write output to file").action(async(t,l)=>{try{let{BrowserWorkflowTool:e}=await import("./browser-workflow-DHIPXEGO.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-ZCH4IZ7H.js"),s=new e,f={variables:l.var||{}};if(l.yaml)f.workflowYaml=l.yaml;else if(t)if(t.endsWith(".yaml")||t.endsWith(".yml")){let i=await import("fs"),p=(await import("path")).resolve(t);i.existsSync(p)||(console.log(o.red(`
|
|
42
42
|
File not found: ${p}
|
|
43
43
|
`)),await a(1)),f.workflowYaml=i.readFileSync(p,"utf-8")}else f.templateName=t;else console.log(o.red(`
|
|
44
44
|
Provide a template name or --yaml. Use "workflow browser-list" to see templates.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.13.6");process.exit(0)}
|
|
2
|
+
import{a,b,c,d}from"./chunk-V4QQTPZF.js";import"./chunk-DR2M2SI2.js";import"./chunk-FH6H4KOZ.js";import"./chunk-GV3C224P.js";import"./chunk-E7MD5LHC.js";import"./chunk-GA7PUAMT.js";import"./chunk-F66FYZQF.js";import"./chunk-SZO6JIFM.js";import"./chunk-2VUXU22M.js";import"./chunk-JDADNBWS.js";import"./chunk-6UPQD42K.js";import"./chunk-XF2TKGSC.js";import"./chunk-5CMZDVUR.js";import"./chunk-N6QUDQ5H.js";import"./chunk-PW3JLQGH.js";import"./chunk-PX7MVV6F.js";import"./chunk-Q4RU4XG6.js";import"./chunk-OS56PKRO.js";import"./chunk-CVXEOTIK.js";import"./chunk-YRRYKR7U.js";import"./chunk-7NYCYSGW.js";import"./chunk-ISOTSVI7.js";export{b as DEFAULT_WORKFLOW_CONFIG,a as WorkflowEvents,c as WorkflowOrchestrator,d as createWorkflowOrchestrator};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.13.
|
|
2
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-
|
|
1
|
+
import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.13.6");process.exit(0)}
|
|
2
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v as L,w as M,x as N}from"./chunk-TWNXZOJY.js";import{a as v,b as w,c as x,d as y,e as z,f as A,g as B,h as C,i as D,j as E,k as F,l as G,m as H,n as I,o as J,p as K}from"./chunk-R5LDNZVB.js";import"./chunk-FH6H4KOZ.js";import"./chunk-GV3C224P.js";import"./chunk-E7MD5LHC.js";import"./chunk-GA7PUAMT.js";import"./chunk-F66FYZQF.js";import"./chunk-SZO6JIFM.js";import"./chunk-2VUXU22M.js";import"./chunk-6UPQD42K.js";import"./chunk-5CMZDVUR.js";import"./chunk-N6QUDQ5H.js";import"./chunk-PW3JLQGH.js";import"./chunk-PX7MVV6F.js";import"./chunk-Q4RU4XG6.js";import"./chunk-OS56PKRO.js";import"./chunk-CVXEOTIK.js";import"./chunk-YRRYKR7U.js";import"./chunk-7NYCYSGW.js";import"./chunk-ISOTSVI7.js";export{z as GNNLayerFactory,i as QEFlashAttention,x as QEGNNEmbeddingIndex,y as QEGNNIndexFactory,a as QESONA,e as QE_FLASH_ATTENTION_CONFIG,g as QE_PERFORMANCE_TARGETS,f as QE_SONA_CONFIG,A as TensorCompressionFactory,u as batchComputeAttention,K as batchDifferentiableSearch,M as checkRuvectorPackagesAvailable,c as createDomainQESONA,j as createQEFlashAttention,b as createQESONA,D as getDifferentiableSearch,F as getGetCompressionLevel,E as getHierarchicalForward,G as getInit,h as getOptimalBlockConfig,k as getQEFlashAttentionConfig,n as getRuvectorDotProductAttention,m as getRuvectorFlashAttention,p as getRuvectorHyperbolicAttention,B as getRuvectorLayer,q as getRuvectorLinearAttention,r as getRuvectorMoEAttention,o as getRuvectorMultiHeadAttention,L as getRuvectorPackageVersions,C as getTensorCompress,l as getWorkloadTypes,N as initAllRuvectorPackages,w as initGNN,d as isAttentionAvailable,v as isGNNAvailable,s as toFloat32Array,H as toFloat32ArrayGNN,J as toIEmbedding,t as toNumberArrayAttn,I as toNumberArrayGNN};
|
|
@@ -14,6 +14,18 @@ export const DREAM_STATE_KEY = 'dream-scheduler:hook-state';
|
|
|
14
14
|
export const DREAM_INTERVAL_MS = 3600000; // 1 hour between auto-dreams
|
|
15
15
|
export const DREAM_EXPERIENCE_THRESHOLD = 20; // experiences before triggering
|
|
16
16
|
export const DREAM_MIN_GAP_MS = 300000; // 5 minutes minimum between dreams
|
|
17
|
+
/** Persist the vector before a short-lived hook process is allowed to exit. */
|
|
18
|
+
async function persistCapturedExperienceEmbedding(db, id, text) {
|
|
19
|
+
try {
|
|
20
|
+
const { computeRealEmbedding } = await import('../../../learning/real-embeddings.js');
|
|
21
|
+
const embedding = await computeRealEmbedding(text.slice(0, 512));
|
|
22
|
+
db.prepare('UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?').run(Buffer.from(new Float32Array(embedding).buffer), embedding.length, id);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
// Capture remains fail-soft, but the failure is observable for diagnostics.
|
|
26
|
+
console.error(chalk.dim(`[hooks] embedding persistence: ${error instanceof Error ? error.message : 'unknown'}`));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
17
29
|
/**
|
|
18
30
|
* Check if a dream cycle should be triggered and run it if so.
|
|
19
31
|
* Called from post-task hook after recording each experience.
|
|
@@ -215,20 +227,8 @@ export async function persistCommandExperience(opts) {
|
|
|
215
227
|
started_at, completed_at, source)
|
|
216
228
|
VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'), ?)
|
|
217
229
|
`).run(id, opts.task.slice(0, 500), opts.agent, opts.domain, opts.success ? 1 : 0, quality, durationMs, opts.source);
|
|
218
|
-
//
|
|
219
|
-
|
|
220
|
-
// Without this, hook-side writes accumulate as "ghosts" until the next
|
|
221
|
-
// restart catches them.
|
|
222
|
-
void (async () => {
|
|
223
|
-
try {
|
|
224
|
-
const { computeRealEmbedding } = await import('../../../learning/real-embeddings.js');
|
|
225
|
-
const text = `${opts.domain}: ${opts.task}`.slice(0, 512);
|
|
226
|
-
const embedding = await computeRealEmbedding(text);
|
|
227
|
-
db.prepare(`UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?`)
|
|
228
|
-
.run(Buffer.from(new Float32Array(embedding).buffer), embedding.length, id);
|
|
229
|
-
}
|
|
230
|
-
catch { /* fail-soft */ }
|
|
231
|
-
})();
|
|
230
|
+
// Hook processes are short-lived, so this must settle before returning.
|
|
231
|
+
await persistCapturedExperienceEmbedding(db, id, `${opts.domain}: ${opts.task}`);
|
|
232
232
|
}
|
|
233
233
|
catch (error) {
|
|
234
234
|
// Best-effort — don't fail the hook
|
|
@@ -548,19 +548,8 @@ export async function persistTaskOutcome(opts) {
|
|
|
548
548
|
console.error(chalk.dim(`[hooks] post-task insight apply: ${err instanceof Error ? err.message : 'unknown'}`));
|
|
549
549
|
}
|
|
550
550
|
}
|
|
551
|
-
//
|
|
552
|
-
|
|
553
|
-
// site — without this, post-task writes are ghosts until next-boot backfill.
|
|
554
|
-
void (async () => {
|
|
555
|
-
try {
|
|
556
|
-
const { computeRealEmbedding } = await import('../../../learning/real-embeddings.js');
|
|
557
|
-
const text = `${opts.domain ?? 'general'}: ${taskField}`.slice(0, 512);
|
|
558
|
-
const embedding = await computeRealEmbedding(text);
|
|
559
|
-
db.prepare(`UPDATE captured_experiences SET embedding = ?, embedding_dimension = ? WHERE id = ?`)
|
|
560
|
-
.run(Buffer.from(new Float32Array(embedding).buffer), embedding.length, experienceId);
|
|
561
|
-
}
|
|
562
|
-
catch { /* fail-soft */ }
|
|
563
|
-
})();
|
|
551
|
+
// Hook processes are short-lived, so this must settle before returning.
|
|
552
|
+
await persistCapturedExperienceEmbedding(db, experienceId, `${opts.domain ?? 'general'}: ${taskField}`);
|
|
564
553
|
return {
|
|
565
554
|
experienceId,
|
|
566
555
|
qualityScore,
|
|
@@ -20,6 +20,7 @@ import { QE_DOMAIN_LIST } from '../../learning/qe-patterns.js';
|
|
|
20
20
|
import { createLearningMetricsTracker, } from '../../learning/metrics-tracker.js';
|
|
21
21
|
import { createRegretTracker, } from '../../learning/regret-tracker.js';
|
|
22
22
|
import { openDatabase } from '../../shared/safe-db.js';
|
|
23
|
+
import { createSQLitePatternStore } from '../../learning/sqlite-persistence.js';
|
|
23
24
|
// Extracted helpers
|
|
24
25
|
import { initializeLearningSystem, printJson, printSuccess, printError, printInfo, displayDashboard, getDbPath, compressFile, decompressFile, verifyDatabaseIntegrity, getSchemaVersion, padRight, EXPORT_FORMAT_VERSION, DOMAIN_MAPPING, PATTERN_TYPE_MAPPING, } from './learning-helpers.js';
|
|
25
26
|
// ============================================================================
|
|
@@ -63,12 +64,77 @@ Examples:
|
|
|
63
64
|
registerExportFullCommand(learning);
|
|
64
65
|
registerImportMergeCommand(learning);
|
|
65
66
|
registerDreamCommand(learning);
|
|
67
|
+
registerBackfillEmbeddingsCommand(learning);
|
|
66
68
|
registerRepairCommand(learning);
|
|
67
69
|
registerHealthCommand(learning);
|
|
68
70
|
registerLoopHealthCommand(learning);
|
|
69
71
|
return learning;
|
|
70
72
|
}
|
|
71
73
|
// ============================================================================
|
|
74
|
+
// Subcommand: backfill-embeddings
|
|
75
|
+
// ============================================================================
|
|
76
|
+
function registerBackfillEmbeddingsCommand(learning) {
|
|
77
|
+
learning
|
|
78
|
+
.command('backfill-embeddings')
|
|
79
|
+
.description('Generate embeddings for learned patterns that are missing vectors')
|
|
80
|
+
.option('-b, --batch-size <n>', 'Patterns per embedding batch', '32')
|
|
81
|
+
.option('--dry-run', 'Report missing embeddings without writing')
|
|
82
|
+
.option('--json', 'Output as JSON')
|
|
83
|
+
.action(async (options) => {
|
|
84
|
+
const batchSize = Number(options.batchSize);
|
|
85
|
+
if (!Number.isInteger(batchSize) || batchSize <= 0) {
|
|
86
|
+
throw new Error('batch size must be a positive integer');
|
|
87
|
+
}
|
|
88
|
+
const store = createSQLitePatternStore();
|
|
89
|
+
try {
|
|
90
|
+
await store.initialize();
|
|
91
|
+
const before = store.getGhostPatternCount();
|
|
92
|
+
if (options.dryRun) {
|
|
93
|
+
if (options.json) {
|
|
94
|
+
printJson({ dryRun: true, batchSize, ...before });
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log(chalk.bold('\nPattern Embedding Backfill (dry run)\n'));
|
|
98
|
+
console.log(` Patterns: ${before.total}`);
|
|
99
|
+
console.log(` Missing embeddings: ${before.withoutEmbeddings}`);
|
|
100
|
+
if (before.sampleGhostIds.length > 0) {
|
|
101
|
+
console.log(` Sample IDs: ${before.sampleGhostIds.join(', ')}`);
|
|
102
|
+
}
|
|
103
|
+
console.log('');
|
|
104
|
+
}
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const result = await store.backfillEmbeddings(batchSize);
|
|
108
|
+
const after = store.getGhostPatternCount();
|
|
109
|
+
const output = {
|
|
110
|
+
...result,
|
|
111
|
+
batchSize,
|
|
112
|
+
missingBefore: before.withoutEmbeddings,
|
|
113
|
+
missingAfter: after.withoutEmbeddings,
|
|
114
|
+
};
|
|
115
|
+
if (options.json) {
|
|
116
|
+
printJson(output);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
printSuccess('Pattern embedding backfill complete.');
|
|
120
|
+
console.log(` Processed: ${result.processed}`);
|
|
121
|
+
console.log(` Skipped: ${result.skipped}`);
|
|
122
|
+
console.log(` Errors: ${result.errors}`);
|
|
123
|
+
console.log(` Remaining missing: ${after.withoutEmbeddings}`);
|
|
124
|
+
console.log(` Method: ${result.method}`);
|
|
125
|
+
console.log('');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
printError(`backfill-embeddings failed: ${error instanceof Error ? error.message : 'unknown'}`);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
store.close();
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
// ============================================================================
|
|
72
138
|
// Subcommand: stats
|
|
73
139
|
// ============================================================================
|
|
74
140
|
function registerStatsCommand(learning) {
|
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
* Supports --format and --output for CI/CD pipeline integration.
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
|
+
import type { MemoryBackend } from '../../kernel/interfaces.js';
|
|
8
9
|
import type { CLIContext } from '../handlers/interfaces.js';
|
|
10
|
+
import { type QualityGateResult } from '../utils/ci-output.js';
|
|
11
|
+
import { type QualityEvidenceValues } from '../../domains/quality-assessment/quality-evidence.js';
|
|
12
|
+
export declare function loadQualityEvidence(memory: MemoryBackend): Promise<QualityEvidenceValues>;
|
|
13
|
+
export declare function evaluateMeasuredQualityEvidence(measured: QualityEvidenceValues): QualityGateResult;
|
|
14
|
+
/**
|
|
15
|
+
* Published quality command exit contract:
|
|
16
|
+
* 0 = passed with more than five percentage points of headroom
|
|
17
|
+
* 1 = one or more measured checks failed
|
|
18
|
+
* 2 = passed, but at least one measured check has less than five points of headroom
|
|
19
|
+
*/
|
|
20
|
+
export declare function getMeasuredQualityExitCode(result: QualityGateResult): 0 | 1 | 2;
|
|
9
21
|
export declare function createQualityCommand(context: CLIContext, cleanupAndExit: (code: number) => Promise<never>, ensureInitialized: () => Promise<boolean>): Command;
|
|
10
22
|
//# sourceMappingURL=quality.d.ts.map
|
|
@@ -7,6 +7,35 @@
|
|
|
7
7
|
import { Command } from 'commander';
|
|
8
8
|
import chalk from 'chalk';
|
|
9
9
|
import { writeOutput, toJSON, qualityGateToMarkdown } from '../utils/ci-output.js';
|
|
10
|
+
import { evaluateQualityEvidence, loadQualityEvidence as loadCanonicalQualityEvidence, } from '../../domains/quality-assessment/quality-evidence.js';
|
|
11
|
+
export async function loadQualityEvidence(memory) {
|
|
12
|
+
return loadCanonicalQualityEvidence(memory);
|
|
13
|
+
}
|
|
14
|
+
export function evaluateMeasuredQualityEvidence(measured) {
|
|
15
|
+
const evaluation = evaluateQualityEvidence(measured);
|
|
16
|
+
return {
|
|
17
|
+
passed: evaluation.passed,
|
|
18
|
+
score: 'N/A',
|
|
19
|
+
checks: evaluation.checks,
|
|
20
|
+
recommendations: evaluation.recommendations,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Published quality command exit contract:
|
|
25
|
+
* 0 = passed with more than five percentage points of headroom
|
|
26
|
+
* 1 = one or more measured checks failed
|
|
27
|
+
* 2 = passed, but at least one measured check has less than five points of headroom
|
|
28
|
+
*/
|
|
29
|
+
export function getMeasuredQualityExitCode(result) {
|
|
30
|
+
if (!result.passed)
|
|
31
|
+
return 1;
|
|
32
|
+
return result.checks.some(check => (check.direction !== 'max'
|
|
33
|
+
&&
|
|
34
|
+
typeof check.value === 'number'
|
|
35
|
+
&& typeof check.threshold === 'number'
|
|
36
|
+
&& check.value >= check.threshold
|
|
37
|
+
&& check.value < check.threshold + 5)) ? 2 : 0;
|
|
38
|
+
}
|
|
10
39
|
export function createQualityCommand(context, cleanupAndExit, ensureInitialized) {
|
|
11
40
|
const qualityCmd = new Command('quality')
|
|
12
41
|
.description('Quality assessment shortcut')
|
|
@@ -24,85 +53,32 @@ export function createQualityCommand(context, cleanupAndExit, ensureInitialized)
|
|
|
24
53
|
if (format === 'text') {
|
|
25
54
|
console.log(chalk.blue(`\n Running quality gate evaluation...\n`));
|
|
26
55
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
56
|
+
const measured = await loadQualityEvidence(context.kernel.memory);
|
|
57
|
+
const gateResult = evaluateMeasuredQualityEvidence(measured);
|
|
58
|
+
if (format === 'json') {
|
|
59
|
+
writeOutput(toJSON(gateResult), options.output);
|
|
31
60
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const defaultThresholds = {
|
|
44
|
-
coverage: { min: 80 },
|
|
45
|
-
testsPassing: { min: 95 },
|
|
46
|
-
criticalBugs: { max: 0 },
|
|
47
|
-
codeSmells: { max: 20 },
|
|
48
|
-
securityVulnerabilities: { max: 0 },
|
|
49
|
-
technicalDebt: { max: 5 },
|
|
50
|
-
duplications: { max: 5 },
|
|
51
|
-
};
|
|
52
|
-
const result = await qualityAPI.evaluateGate({
|
|
53
|
-
gateName: 'standard',
|
|
54
|
-
metrics: defaultMetrics,
|
|
55
|
-
thresholds: defaultThresholds,
|
|
56
|
-
});
|
|
57
|
-
if (result.success && result.value) {
|
|
58
|
-
const assessment = result.value;
|
|
59
|
-
const gateResult = {
|
|
60
|
-
passed: assessment.passed ?? assessment.meetsThreshold ?? true,
|
|
61
|
-
score: assessment.score ?? assessment.grade ?? 'N/A',
|
|
62
|
-
checks: assessment.checks || [],
|
|
63
|
-
recommendations: assessment.recommendations || [],
|
|
64
|
-
};
|
|
65
|
-
if (format === 'json') {
|
|
66
|
-
writeOutput(toJSON(gateResult), options.output);
|
|
67
|
-
}
|
|
68
|
-
else if (format === 'markdown') {
|
|
69
|
-
writeOutput(qualityGateToMarkdown(gateResult), options.output);
|
|
61
|
+
else if (format === 'markdown') {
|
|
62
|
+
writeOutput(qualityGateToMarkdown(gateResult), options.output);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const statusIcon = gateResult.passed ? chalk.green('✓ PASSED') : chalk.red('✗ FAILED');
|
|
66
|
+
console.log(` Quality Gate: ${statusIcon}`);
|
|
67
|
+
console.log(` Score: ${chalk.cyan(gateResult.score)}\n`);
|
|
68
|
+
console.log(chalk.cyan(' Checks:'));
|
|
69
|
+
for (const check of gateResult.checks) {
|
|
70
|
+
const icon = check.passed ? chalk.green('✓') : chalk.red('✗');
|
|
71
|
+
console.log(` ${icon} ${check.name}: ${check.value} (threshold: ${check.threshold})`);
|
|
70
72
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
console.log(` Score: ${chalk.cyan(gateResult.score)}\n`);
|
|
76
|
-
if (gateResult.checks.length > 0) {
|
|
77
|
-
console.log(chalk.cyan(' Checks:'));
|
|
78
|
-
for (const check of gateResult.checks) {
|
|
79
|
-
const icon = check.passed ? chalk.green('✓') : chalk.red('✗');
|
|
80
|
-
console.log(` ${icon} ${check.name}: ${check.value} (threshold: ${check.threshold})`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (gateResult.recommendations && gateResult.recommendations.length > 0) {
|
|
84
|
-
console.log(chalk.cyan('\n Recommendations:'));
|
|
85
|
-
for (const rec of gateResult.recommendations) {
|
|
86
|
-
console.log(chalk.gray(` - ${rec}`));
|
|
87
|
-
}
|
|
73
|
+
if (gateResult.recommendations && gateResult.recommendations.length > 0) {
|
|
74
|
+
console.log(chalk.cyan('\n Recommendations:'));
|
|
75
|
+
for (const rec of gateResult.recommendations) {
|
|
76
|
+
console.log(chalk.gray(` - ${rec}`));
|
|
88
77
|
}
|
|
89
|
-
console.log('');
|
|
90
|
-
}
|
|
91
|
-
// Exit codes: 1 = gate failed, 2 = warning (score within 5% of threshold), 0 = passed
|
|
92
|
-
if (!gateResult.passed) {
|
|
93
|
-
await cleanupAndExit(1);
|
|
94
78
|
}
|
|
95
|
-
|
|
96
|
-
if (!isNaN(scoreNum) && scoreNum < 100 && scoreNum >= 95) {
|
|
97
|
-
// Score is within 5% of perfect — warn
|
|
98
|
-
await cleanupAndExit(2);
|
|
99
|
-
}
|
|
100
|
-
await cleanupAndExit(0);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
console.log(chalk.red(`Quality gate failed: ${result.error?.message || 'Unknown error'}`));
|
|
104
|
-
await cleanupAndExit(1);
|
|
79
|
+
console.log('');
|
|
105
80
|
}
|
|
81
|
+
await cleanupAndExit(getMeasuredQualityExitCode(gateResult));
|
|
106
82
|
}
|
|
107
83
|
}
|
|
108
84
|
catch (error) {
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
import chalk from 'chalk';
|
|
8
|
-
import { walkSourceFiles } from '../utils/file-discovery.js';
|
|
8
|
+
import { filterTestFilesForFramework, walkSourceFiles } from '../utils/file-discovery.js';
|
|
9
9
|
import { writeOutput, toJSON, toJUnit, testRunToMarkdown } from '../utils/ci-output.js';
|
|
10
|
+
import { writeQualityEvidence } from '../../domains/quality-assessment/quality-evidence.js';
|
|
10
11
|
export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
11
12
|
const testCmd = new Command('test')
|
|
12
13
|
.description('Test generation, execution, scheduling, and load testing')
|
|
@@ -52,6 +53,20 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
52
53
|
if (result.success && result.value) {
|
|
53
54
|
const generated = result.value;
|
|
54
55
|
const format = options.format;
|
|
56
|
+
const rejected = generated.tests.filter(test => test.qualityGateResult?.passed !== true);
|
|
57
|
+
if (rejected.length > 0) {
|
|
58
|
+
const details = rejected.map(test => {
|
|
59
|
+
const issues = test.qualityGateResult?.issues
|
|
60
|
+
?.map(issue => issue.description)
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.join('; ') || 'missing passing quality evidence';
|
|
63
|
+
return `${test.sourceFile}: ${issues}`;
|
|
64
|
+
});
|
|
65
|
+
console.error(chalk.red(`Generation rejected ${rejected.length} invalid or unvalidated test artifact(s):`));
|
|
66
|
+
for (const detail of details)
|
|
67
|
+
console.error(chalk.red(` - ${detail}`));
|
|
68
|
+
await cleanupAndExit(1);
|
|
69
|
+
}
|
|
55
70
|
if (format === 'json') {
|
|
56
71
|
writeOutput(toJSON(generated), options.output);
|
|
57
72
|
}
|
|
@@ -105,7 +120,8 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
105
120
|
const path = await import('path');
|
|
106
121
|
const targetPath = path.resolve(target || '.');
|
|
107
122
|
// Fix #280: Use shared file discovery supporting all languages
|
|
108
|
-
const
|
|
123
|
+
const discoveredTestFiles = walkSourceFiles(targetPath, { testsOnly: true });
|
|
124
|
+
const testFiles = filterTestFilesForFramework(discoveredTestFiles, options.framework);
|
|
109
125
|
if (testFiles.length === 0) {
|
|
110
126
|
console.log(chalk.yellow('No test files found'));
|
|
111
127
|
return;
|
|
@@ -113,12 +129,27 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
113
129
|
console.log(chalk.gray(` Found ${testFiles.length} test files\n`));
|
|
114
130
|
const result = await testExecAPI.runTests({
|
|
115
131
|
testFiles,
|
|
132
|
+
framework: options.framework,
|
|
116
133
|
parallel: true,
|
|
117
134
|
retryCount: 2,
|
|
118
135
|
});
|
|
119
136
|
if (result.success && result.value) {
|
|
120
137
|
const run = result.value;
|
|
121
138
|
const format = options.format;
|
|
139
|
+
const total = run.passed + run.failed + run.skipped;
|
|
140
|
+
await context.kernel.memory.set('test-run:latest', {
|
|
141
|
+
passed: run.passed,
|
|
142
|
+
failed: run.failed,
|
|
143
|
+
skipped: run.skipped,
|
|
144
|
+
duration: run.duration,
|
|
145
|
+
measuredAt: new Date().toISOString(),
|
|
146
|
+
}, { namespace: 'test-execution', persist: true });
|
|
147
|
+
await writeQualityEvidence(context.kernel.memory, {
|
|
148
|
+
testsPassing: total > 0 ? (run.passed / total) * 100 : 0,
|
|
149
|
+
}, {
|
|
150
|
+
measuredAt: new Date().toISOString(),
|
|
151
|
+
source: 'aqe test execute',
|
|
152
|
+
});
|
|
122
153
|
if (format === 'json') {
|
|
123
154
|
writeOutput(toJSON(run), options.output);
|
|
124
155
|
}
|
|
@@ -130,7 +161,6 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
130
161
|
}
|
|
131
162
|
else {
|
|
132
163
|
// Default text output
|
|
133
|
-
const total = run.passed + run.failed + run.skipped;
|
|
134
164
|
console.log(chalk.green(`Test run complete`));
|
|
135
165
|
console.log(`\n Results:`);
|
|
136
166
|
console.log(` Total: ${chalk.white(total)}`);
|
|
@@ -143,7 +173,6 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
143
173
|
if (run.failed > 0) {
|
|
144
174
|
await cleanupAndExit(1);
|
|
145
175
|
}
|
|
146
|
-
const total = run.passed + run.failed + run.skipped;
|
|
147
176
|
if (total > 0 && run.skipped / total > 0.2) {
|
|
148
177
|
await cleanupAndExit(2);
|
|
149
178
|
}
|
|
@@ -104,6 +104,8 @@ interface InitOptions {
|
|
|
104
104
|
noGovernance?: boolean;
|
|
105
105
|
/** commander negatable flag: `--no-claude` sets this to false (#532). */
|
|
106
106
|
claude?: boolean;
|
|
107
|
+
/** commander negatable flag: `--no-statusline` sets this to false (#591). */
|
|
108
|
+
statusline?: boolean;
|
|
107
109
|
modular?: boolean;
|
|
108
110
|
}
|
|
109
111
|
export declare function createInitHandler(cleanupAndExit: (code: number) => Promise<never>): InitHandler;
|
|
@@ -31,6 +31,7 @@ export class InitHandler {
|
|
|
31
31
|
.option('-m, --max-agents <number>', 'Maximum concurrent agents', '15')
|
|
32
32
|
.option('--memory <backend>', 'Memory backend (sqlite|agentdb|hybrid|memory). "memory" = database-free, in-memory only.', 'hybrid')
|
|
33
33
|
.option('--no-database', 'Database-free install: alias for `--memory memory`. Skips the SQLite database phase and runs any MCP server in-memory — nothing is written to .agentic-qe/.')
|
|
34
|
+
.option('--no-statusline', 'Do not install AQE\'s Claude Code status line; remove an existing AQE-owned status line while preserving custom ones')
|
|
34
35
|
.option('--lazy', 'Enable lazy loading of domains')
|
|
35
36
|
.option('--wizard', 'Run interactive setup wizard')
|
|
36
37
|
.option('--auto', 'Auto-configure based on project analysis')
|
|
@@ -122,7 +123,8 @@ export class InitHandler {
|
|
|
122
123
|
// silently falls through to runStandardInit and installs the full Claude
|
|
123
124
|
// surface it was meant to suppress.
|
|
124
125
|
const noClaudeRequested = options.claude === false;
|
|
125
|
-
|
|
126
|
+
const noStatusLineRequested = options.statusline === false;
|
|
127
|
+
if (options.modular || platformRequested || databaseFree || noClaudeRequested || noStatusLineRequested) {
|
|
126
128
|
console.log(chalk.blue('\n Agentic QE v3 Initialization\n'));
|
|
127
129
|
await this.runModularInit(options, context);
|
|
128
130
|
return;
|
|
@@ -184,6 +186,7 @@ export class InitHandler {
|
|
|
184
186
|
noMcp: options.noMcp && !options.withMcp,
|
|
185
187
|
noGovernance: options.noGovernance,
|
|
186
188
|
noClaude,
|
|
189
|
+
noStatusLine: options.statusline === false,
|
|
187
190
|
memoryBackend: memoryOnly ? 'memory' : undefined,
|
|
188
191
|
});
|
|
189
192
|
console.log(chalk.white(' Analyzing project...\n'));
|
|
@@ -25,4 +25,5 @@ export interface WalkOptions {
|
|
|
25
25
|
* @returns Array of absolute file paths
|
|
26
26
|
*/
|
|
27
27
|
export declare function walkSourceFiles(targetPath: string, options?: WalkOptions): string[];
|
|
28
|
+
export declare function filterTestFilesForFramework(testFiles: string[], framework: string): string[];
|
|
28
29
|
//# sourceMappingURL=file-discovery.d.ts.map
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Fixes #280: CLI commands previously only found .ts files.
|
|
8
8
|
*/
|
|
9
|
-
import { existsSync, readdirSync, statSync } from 'fs';
|
|
9
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
|
|
10
10
|
import { join, extname } from 'path';
|
|
11
11
|
// ============================================================================
|
|
12
12
|
// Source File Extensions by Language
|
|
@@ -102,4 +102,16 @@ export function walkSourceFiles(targetPath, options = {}) {
|
|
|
102
102
|
walk(targetPath, 0);
|
|
103
103
|
return result;
|
|
104
104
|
}
|
|
105
|
+
export function filterTestFilesForFramework(testFiles, framework) {
|
|
106
|
+
if (framework !== 'node' && framework !== 'node-test')
|
|
107
|
+
return testFiles;
|
|
108
|
+
return testFiles.filter(file => {
|
|
109
|
+
try {
|
|
110
|
+
return !/@playwright\/test|require\(\s*['"]playwright['"]\s*\)/.test(readFileSync(file, 'utf8'));
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
105
117
|
//# sourceMappingURL=file-discovery.js.map
|
|
@@ -8,6 +8,7 @@ import { LoggerFactory } from '../../../logging/index.js';
|
|
|
8
8
|
import { ok, err } from '../../../shared/types';
|
|
9
9
|
import { toError } from '../../../shared/error-utils.js';
|
|
10
10
|
import { safeJsonParse } from '../../../shared/safe-json.js';
|
|
11
|
+
import { writeQualityEvidence } from '../../quality-assessment/quality-evidence.js';
|
|
11
12
|
const DEFAULT_CONFIG = {
|
|
12
13
|
defaultThreshold: 80,
|
|
13
14
|
enableLLMAnalysis: true, // On by default - opt-out
|
|
@@ -451,6 +452,10 @@ Provide thoughtful, specific analysis based on the coverage data. Do not include
|
|
|
451
452
|
}
|
|
452
453
|
// Store latest snapshot
|
|
453
454
|
await this.memory.set('coverage:latest', summary, { persist: true });
|
|
455
|
+
await writeQualityEvidence(this.memory, { coverage: summary.line }, {
|
|
456
|
+
measuredAt: new Date().toISOString(),
|
|
457
|
+
source: 'coverage-analysis',
|
|
458
|
+
});
|
|
454
459
|
// Store historical snapshot
|
|
455
460
|
const timestamp = Date.now();
|
|
456
461
|
await this.memory.set(`coverage:history:${timestamp}`, summary, {
|
|
@@ -9,6 +9,7 @@ export { QualityAssessmentCoordinator, type IQualityAssessmentCoordinator, type
|
|
|
9
9
|
export { QualityGateService, type IQualityGateService, type QualityGateConfig, } from './services/quality-gate';
|
|
10
10
|
export { QualityAnalyzerService, type IQualityAnalyzerService, type QualityAnalyzerConfig, } from './services/quality-analyzer';
|
|
11
11
|
export { DeploymentAdvisorService, type IDeploymentAdvisorService, type DeploymentAdvisorConfig, type DeploymentAccuracy, } from './services/deployment-advisor';
|
|
12
|
+
export { DEFAULT_QUALITY_EVIDENCE_MAX_AGE_MS, DEFAULT_QUALITY_THRESHOLDS, QUALITY_EVIDENCE_NAMESPACE, QUALITY_METRICS, evaluateQualityEvidence, loadQualityEvidence, writeQualityEvidence, type EvaluatedQualityCheck, type QualityEvidenceRecord, type QualityEvidenceValues, type QualityMetricName, type QualityThreshold, } from './quality-evidence.js';
|
|
12
13
|
export { CoherenceGateService, createCoherenceGateService, type CoherenceGateResult, type CoherenceGateServiceConfig, } from './services/coherence-gate';
|
|
13
14
|
export * from './coherence';
|
|
14
15
|
export type { QualityAssessmentAPI, GateEvaluationRequest, QualityAnalysisRequest, DeploymentRequest, ComplexityRequest, GateResult, GateCheck, QualityReport, QualityMetricDetail, QualityTrend, Recommendation, DeploymentAdvice, ComplexityReport, FileComplexity, ComplexitySummary, ComplexityHotspot, QualityMetrics, GateThresholds, } from './interfaces';
|
|
@@ -18,6 +18,7 @@ export { QualityAssessmentCoordinator, } from './coordinator';
|
|
|
18
18
|
export { QualityGateService, } from './services/quality-gate';
|
|
19
19
|
export { QualityAnalyzerService, } from './services/quality-analyzer';
|
|
20
20
|
export { DeploymentAdvisorService, } from './services/deployment-advisor';
|
|
21
|
+
export { DEFAULT_QUALITY_EVIDENCE_MAX_AGE_MS, DEFAULT_QUALITY_THRESHOLDS, QUALITY_EVIDENCE_NAMESPACE, QUALITY_METRICS, evaluateQualityEvidence, loadQualityEvidence, writeQualityEvidence, } from './quality-evidence.js';
|
|
21
22
|
// ============================================================================
|
|
22
23
|
// Coherence-Gated Quality Gates (ADR-030)
|
|
23
24
|
// ============================================================================
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { MemoryBackend } from '../../kernel/interfaces.js';
|
|
2
|
+
export declare const QUALITY_EVIDENCE_NAMESPACE = "quality-assessment";
|
|
3
|
+
export declare const DEFAULT_QUALITY_EVIDENCE_MAX_AGE_MS: number;
|
|
4
|
+
export declare const QUALITY_METRICS: readonly ["coverage", "testsPassing", "criticalBugs", "codeSmells", "securityVulnerabilities", "technicalDebt", "duplications"];
|
|
5
|
+
export type QualityMetricName = typeof QUALITY_METRICS[number];
|
|
6
|
+
export type QualityEvidenceValues = Record<QualityMetricName, number>;
|
|
7
|
+
export interface QualityEvidenceRecord {
|
|
8
|
+
schemaVersion: 1;
|
|
9
|
+
metric: QualityMetricName;
|
|
10
|
+
value: number;
|
|
11
|
+
measuredAt: string;
|
|
12
|
+
source: string;
|
|
13
|
+
}
|
|
14
|
+
export interface QualityThreshold {
|
|
15
|
+
direction: 'min' | 'max';
|
|
16
|
+
value: number;
|
|
17
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
18
|
+
}
|
|
19
|
+
export declare const DEFAULT_QUALITY_THRESHOLDS: Record<QualityMetricName, QualityThreshold>;
|
|
20
|
+
export interface EvaluatedQualityCheck {
|
|
21
|
+
name: QualityMetricName;
|
|
22
|
+
passed: boolean;
|
|
23
|
+
value: number;
|
|
24
|
+
threshold: number;
|
|
25
|
+
direction: 'min' | 'max';
|
|
26
|
+
severity: QualityThreshold['severity'];
|
|
27
|
+
}
|
|
28
|
+
export declare function writeQualityEvidence(memory: MemoryBackend, values: Partial<QualityEvidenceValues>, metadata: {
|
|
29
|
+
measuredAt: string;
|
|
30
|
+
source: string;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
export declare function loadQualityEvidence(memory: MemoryBackend, options?: {
|
|
33
|
+
now?: number;
|
|
34
|
+
maxAgeMs?: number;
|
|
35
|
+
}): Promise<QualityEvidenceValues>;
|
|
36
|
+
export declare function evaluateQualityEvidence(values: QualityEvidenceValues): {
|
|
37
|
+
passed: boolean;
|
|
38
|
+
checks: EvaluatedQualityCheck[];
|
|
39
|
+
recommendations: string[];
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=quality-evidence.d.ts.map
|