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.
Files changed (388) hide show
  1. package/.claude/helpers/.helpers-version +1 -1
  2. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  3. package/.claude/helpers/helpers.manifest.json +6 -6
  4. package/.claude/helpers/hook-handler.cjs +565 -565
  5. package/.claude/helpers/intelligence.cjs +1058 -1058
  6. package/.claude/helpers/statusline.cjs +1022 -968
  7. package/.claude/skills/skills-manifest.json +1 -1
  8. package/CHANGELOG.md +89 -0
  9. package/assets/skills/skills-manifest.json +1 -1
  10. package/dist/cli/bundle.js +5 -5
  11. package/dist/cli/chunks/adapter-7XXMDGFO.js +2 -0
  12. package/dist/cli/chunks/{agent-booster-wasm-PR3RQWXF.js → agent-booster-wasm-TMON22NL.js} +2 -2
  13. package/dist/cli/chunks/{agent-handler-J5EPFBSZ.js → agent-handler-JOX6O26U.js} +2 -2
  14. package/dist/cli/chunks/{agent-memory-branch-CCHI6QAA.js → agent-memory-branch-AMIJIDCM.js} +2 -2
  15. package/dist/cli/chunks/aqe-learning-engine-2KGMCBJG.js +2 -0
  16. package/dist/cli/chunks/{arena-KMKBGSMY.js → arena-N6SO2CCQ.js} +2 -2
  17. package/dist/cli/chunks/{arena-SI7IPVZ3.js → arena-RKLFXDMO.js} +4 -4
  18. package/dist/cli/chunks/{audit-ZDKR3HT6.js → audit-ZJE3DUH6.js} +3 -3
  19. package/dist/cli/chunks/base-4M3VL4XK.js +2 -0
  20. package/dist/cli/chunks/{hnswlib-node-BP5CZGMD.js → better-sqlite3-5G6AR6LX.js} +2 -2
  21. package/dist/cli/chunks/{brain-handler-MSYMTM5B.js → brain-handler-QD4DZ574.js} +3 -3
  22. package/dist/cli/chunks/{branch-enumerator-FRAHCBTO.js → branch-enumerator-PG3OUYE6.js} +2 -2
  23. package/dist/cli/chunks/{browser-4KHKVNYC.js → browser-Y2DJG7HQ.js} +2 -2
  24. package/dist/cli/chunks/browser-workflow-DHIPXEGO.js +2 -0
  25. package/dist/cli/chunks/{chunk-Q4VZXT6X.js → chunk-2BUDKFIE.js} +1 -1
  26. package/dist/cli/chunks/{chunk-NQVF4M7L.js → chunk-2FTAMEOB.js} +1 -1
  27. package/dist/cli/chunks/{chunk-AROPZPNG.js → chunk-2ILX73JG.js} +1 -1
  28. package/dist/cli/chunks/{chunk-6GNVVQW3.js → chunk-2SVDR5KB.js} +2 -2
  29. package/dist/cli/chunks/{chunk-HN2DD2DQ.js → chunk-2VUXU22M.js} +2 -2
  30. package/dist/cli/chunks/{chunk-U52IQFMP.js → chunk-3OUHOJBN.js} +1 -1
  31. package/dist/cli/chunks/{chunk-BQRCNRTJ.js → chunk-3QJH5W55.js} +2 -2
  32. package/dist/cli/chunks/{chunk-OU2YHXJY.js → chunk-3TC4ZPGR.js} +2 -2
  33. package/dist/cli/chunks/{chunk-ISGKDLZ7.js → chunk-463VBHHH.js} +2 -2
  34. package/dist/cli/chunks/{chunk-IN5KRJSE.js → chunk-4VWB64OH.js} +1 -1
  35. package/dist/cli/chunks/{chunk-WSQE3VZB.js → chunk-4YFBAXRD.js} +1 -1
  36. package/dist/cli/chunks/{chunk-N7LIYK7Z.js → chunk-523XPMTU.js} +1 -1
  37. package/dist/cli/chunks/{chunk-QXF6EQFP.js → chunk-5CMZDVUR.js} +2 -2
  38. package/dist/cli/chunks/{chunk-VOAXVNO5.js → chunk-5VGQABM3.js} +4 -4
  39. package/dist/cli/chunks/{chunk-UOO7P2AK.js → chunk-5VV5MOED.js} +2 -2
  40. package/dist/cli/chunks/{chunk-5IVXM3TE.js → chunk-6FICUNAV.js} +1 -1
  41. package/dist/cli/chunks/{chunk-LASZCR5G.js → chunk-6ITWOYET.js} +2 -2
  42. package/dist/cli/chunks/{chunk-7EL5QEMJ.js → chunk-6QZSF6RL.js} +2 -2
  43. package/dist/cli/chunks/{chunk-KDICUKYX.js → chunk-6UPQD42K.js} +2 -2
  44. package/dist/cli/chunks/{chunk-LJSHQU2P.js → chunk-6VUEUYFL.js} +5 -5
  45. package/dist/cli/chunks/{chunk-75CFWCQV.js → chunk-7225UNNY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-L3UTZEVW.js → chunk-75QKZ6VX.js} +2 -2
  47. package/dist/cli/chunks/{chunk-GRMKN44A.js → chunk-7GTB7LVJ.js} +3 -3
  48. package/dist/cli/chunks/{chunk-EUIUWZF4.js → chunk-7KRZ2Q6B.js} +3 -3
  49. package/dist/cli/chunks/{chunk-ERKYIV25.js → chunk-7NYCYSGW.js} +2 -2
  50. package/dist/cli/chunks/{chunk-7YAHECC5.js → chunk-7TON6JSG.js} +2 -2
  51. package/dist/cli/chunks/chunk-ACHMNMEJ.js +2 -0
  52. package/dist/cli/chunks/{chunk-27FWRWOB.js → chunk-ADYY2GKC.js} +2 -2
  53. package/dist/cli/chunks/{chunk-NAZFAGJ5.js → chunk-AOUULKKT.js} +2 -2
  54. package/dist/cli/chunks/{chunk-XBSBVPSM.js → chunk-AU3APBY2.js} +2 -2
  55. package/dist/cli/chunks/{chunk-C3AF5Z55.js → chunk-BAOKXLIV.js} +2 -2
  56. package/dist/cli/chunks/{chunk-RO4BYINM.js → chunk-BDVZF46F.js} +2 -2
  57. package/dist/cli/chunks/{chunk-LIMFWEUI.js → chunk-BGLSIA4U.js} +2 -2
  58. package/dist/cli/chunks/{chunk-UNMWI4QU.js → chunk-BI6UU3Z3.js} +1 -1
  59. package/dist/cli/chunks/{chunk-SFRYDGLF.js → chunk-BOM5NGCR.js} +1 -1
  60. package/dist/cli/chunks/{chunk-QENUKXPP.js → chunk-CBXJ4AQS.js} +2 -2
  61. package/dist/cli/chunks/{chunk-6XCULO27.js → chunk-CKYRZ3TA.js} +2 -2
  62. package/dist/cli/chunks/{chunk-RLZZTFEN.js → chunk-CTILSLXF.js} +2 -2
  63. package/dist/cli/chunks/chunk-CVXEOTIK.js +2 -0
  64. package/dist/cli/chunks/{chunk-3RSF7POD.js → chunk-D777E2MT.js} +2 -2
  65. package/dist/cli/chunks/{chunk-FZ4MUDHZ.js → chunk-DKGDBKBJ.js} +1 -1
  66. package/dist/cli/chunks/{chunk-KO3UQYGY.js → chunk-DLBJ7IZT.js} +75 -75
  67. package/dist/cli/chunks/{chunk-56QR72EB.js → chunk-DR2M2SI2.js} +2 -2
  68. package/dist/cli/chunks/{chunk-MP3RCZ75.js → chunk-DS53MJCN.js} +1 -1
  69. package/dist/cli/chunks/{chunk-KE656E6T.js → chunk-DSIS6WQD.js} +3 -3
  70. package/dist/cli/chunks/{chunk-CQP6BDSF.js → chunk-DSTQ2OWI.js} +1 -1
  71. package/dist/cli/chunks/{chunk-WUXCL65V.js → chunk-DXM7IN2W.js} +2 -2
  72. package/dist/cli/chunks/{chunk-O74V7MB4.js → chunk-E3OKRZCH.js} +2 -2
  73. package/dist/cli/chunks/{chunk-TO7FTPRV.js → chunk-E7MD5LHC.js} +2 -2
  74. package/dist/cli/chunks/{chunk-A2G26WU4.js → chunk-EKWEJOV7.js} +1 -1
  75. package/dist/cli/chunks/chunk-EP4ORDFE.js +2 -0
  76. package/dist/cli/chunks/{chunk-5RVWL2U3.js → chunk-EVJSK56E.js} +3 -3
  77. package/dist/cli/chunks/chunk-EY44JDUL.js +12 -0
  78. package/dist/cli/chunks/{chunk-JDADACZZ.js → chunk-EYHRYIBX.js} +1 -1
  79. package/dist/cli/chunks/{chunk-FJSL7TWU.js → chunk-EYWR4Y3J.js} +1 -1
  80. package/dist/cli/chunks/{chunk-E7FCVH32.js → chunk-F66FYZQF.js} +2 -2
  81. package/dist/cli/chunks/{chunk-GNFKG2LX.js → chunk-FGQH5LOG.js} +2 -2
  82. package/dist/cli/chunks/{chunk-ZAT65V6I.js → chunk-FH6H4KOZ.js} +17 -17
  83. package/dist/cli/chunks/{chunk-OU3SYEYJ.js → chunk-FV47SYXK.js} +1 -1
  84. package/dist/cli/chunks/chunk-GA7PUAMT.js +2 -0
  85. package/dist/cli/chunks/{chunk-IVZA5XTW.js → chunk-GEH3S5DI.js} +2 -2
  86. package/dist/cli/chunks/{chunk-44SYMJ4T.js → chunk-GQCYO54W.js} +2 -2
  87. package/dist/cli/chunks/{chunk-4HVVVVUF.js → chunk-GSZL3WST.js} +2 -2
  88. package/dist/cli/chunks/{chunk-XTHRSBMJ.js → chunk-GV3C224P.js} +2 -2
  89. package/dist/cli/chunks/{chunk-JBHGMLN7.js → chunk-HBNMEYJS.js} +182 -201
  90. package/dist/cli/chunks/{chunk-LUAYTM77.js → chunk-HPRX5S74.js} +1 -1
  91. package/dist/cli/chunks/{chunk-PFQLB4XP.js → chunk-HWWMINXV.js} +2 -2
  92. package/dist/cli/chunks/{chunk-UQFMQOZB.js → chunk-IHUAEQZN.js} +1 -1
  93. package/dist/cli/chunks/{chunk-GGZB2ZBB.js → chunk-ISOTSVI7.js} +1 -1
  94. package/dist/cli/chunks/{chunk-RCRKCMN5.js → chunk-JDADNBWS.js} +1 -1
  95. package/dist/cli/chunks/{chunk-ITQCSIYG.js → chunk-JGQZ7ECC.js} +1 -1
  96. package/dist/cli/chunks/{chunk-5R26MAMK.js → chunk-JH6KUV74.js} +2 -2
  97. package/dist/cli/chunks/{chunk-6CZUQA4G.js → chunk-JPJSOS4H.js} +1 -1
  98. package/dist/cli/chunks/{chunk-NW4YPUPN.js → chunk-JQXAWTS5.js} +3 -3
  99. package/dist/cli/chunks/{chunk-II2RP3MY.js → chunk-K7ZFBGLE.js} +2 -2
  100. package/dist/cli/chunks/chunk-KBHSID6C.js +62 -0
  101. package/dist/cli/chunks/{chunk-KZAVYHH7.js → chunk-KHDE4KT5.js} +4 -4
  102. package/dist/cli/chunks/{chunk-LEIG3KIG.js → chunk-KMCI3RGD.js} +2 -2
  103. package/dist/cli/chunks/{chunk-KB4S7MGB.js → chunk-LGP26FTM.js} +2 -2
  104. package/dist/cli/chunks/{chunk-55E62F4T.js → chunk-LLVXOXAK.js} +1 -1
  105. package/dist/cli/chunks/{chunk-PIYDPOW6.js → chunk-LQYAJ7RR.js} +2 -2
  106. package/dist/cli/chunks/{chunk-KQLJILCZ.js → chunk-LVLGRUUJ.js} +1 -1
  107. package/dist/cli/chunks/{chunk-PRHLV6FS.js → chunk-LYGHX4II.js} +1 -1
  108. package/dist/cli/chunks/{chunk-RKNKFLCQ.js → chunk-MOIKR7RU.js} +2 -2
  109. package/dist/cli/chunks/chunk-MSA6MD5C.js +2 -0
  110. package/dist/cli/chunks/{chunk-MWWTYPFL.js → chunk-MTEEFP6V.js} +2 -2
  111. package/dist/cli/chunks/{chunk-OR2RC7ZH.js → chunk-N6QUDQ5H.js} +2 -2
  112. package/dist/cli/chunks/{chunk-Z7FVGJYC.js → chunk-N7JRGAJF.js} +2 -2
  113. package/dist/cli/chunks/{chunk-WCUXA3NV.js → chunk-NNIAUDHF.js} +1 -1
  114. package/dist/cli/chunks/{chunk-SQCACQUM.js → chunk-NUCVMWDJ.js} +2 -2
  115. package/dist/cli/chunks/{chunk-N57M7UPQ.js → chunk-NUDDFJYU.js} +2 -2
  116. package/dist/cli/chunks/{chunk-GIU26D5G.js → chunk-NX6FOAS4.js} +1 -1
  117. package/dist/cli/chunks/{chunk-ZYCPTARG.js → chunk-O34674VM.js} +2 -2
  118. package/dist/cli/chunks/{chunk-PJFQGNRW.js → chunk-OIGWREK7.js} +1 -1
  119. package/dist/cli/chunks/{chunk-DQ247474.js → chunk-OS56PKRO.js} +2 -2
  120. package/dist/cli/chunks/{chunk-OF7674H5.js → chunk-P4CHYYJN.js} +2 -2
  121. package/dist/cli/chunks/{chunk-VLELNETG.js → chunk-P6A35LKJ.js} +2 -2
  122. package/dist/cli/chunks/{chunk-GOFP47XU.js → chunk-PA6SUNDD.js} +1 -1
  123. package/dist/cli/chunks/{chunk-O45CEMVF.js → chunk-PGDDPZ7W.js} +1 -1
  124. package/dist/cli/chunks/{chunk-ESMSH7HG.js → chunk-PLYGIUFO.js} +2 -2
  125. package/dist/cli/chunks/{chunk-EEHEMDNV.js → chunk-POZ3S4UO.js} +2 -2
  126. package/dist/cli/chunks/{chunk-NQJLUY2K.js → chunk-PSAXLKDZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-HGY62IYZ.js → chunk-PTBW2QXE.js} +2 -2
  128. package/dist/cli/chunks/{chunk-PI55PHUL.js → chunk-PW3JLQGH.js} +2 -2
  129. package/dist/cli/chunks/{chunk-GOHWEQEP.js → chunk-PX7MVV6F.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SJ26ZR75.js → chunk-Q4RU4XG6.js} +2 -2
  131. package/dist/cli/chunks/{chunk-XF4F5ZXO.js → chunk-QQA4N3YT.js} +4 -4
  132. package/dist/cli/chunks/chunk-QSO5RFJ4.js +15 -0
  133. package/dist/cli/chunks/{chunk-Z6FK7T7J.js → chunk-R2GHZ2QG.js} +2 -2
  134. package/dist/cli/chunks/{chunk-VDPQ7NVG.js → chunk-R5FSKAS3.js} +1 -1
  135. package/dist/cli/chunks/{chunk-5DESO7E4.js → chunk-R5LDNZVB.js} +2 -2
  136. package/dist/cli/chunks/{chunk-X5JMTHXC.js → chunk-RBNSZFVL.js} +3 -3
  137. package/dist/cli/chunks/{chunk-TM6LLT4G.js → chunk-RDSO3R2R.js} +3 -3
  138. package/dist/cli/chunks/{chunk-27REOPQK.js → chunk-SZO6JIFM.js} +2 -2
  139. package/dist/cli/chunks/{chunk-IU5SILCS.js → chunk-TGSL4OOT.js} +2 -2
  140. package/dist/cli/chunks/{chunk-4FP4PJ45.js → chunk-THW6LF5I.js} +2 -2
  141. package/dist/cli/chunks/{chunk-FBXWU37F.js → chunk-TMM5NKPI.js} +1 -1
  142. package/dist/cli/chunks/{chunk-VZO4V4R4.js → chunk-TWNXZOJY.js} +2 -2
  143. package/dist/cli/chunks/{chunk-X67O2KUE.js → chunk-U63JEFF5.js} +7 -7
  144. package/dist/cli/chunks/{chunk-IUFNB6I6.js → chunk-UHQA6EH6.js} +2 -2
  145. package/dist/cli/chunks/{chunk-XLP44YGX.js → chunk-UN2MXDJT.js} +2 -2
  146. package/dist/cli/chunks/{chunk-CTNDSP2M.js → chunk-UNLH7NPY.js} +1 -1
  147. package/dist/cli/chunks/{chunk-EPSF2ERW.js → chunk-V4QQTPZF.js} +2 -2
  148. package/dist/cli/chunks/{chunk-UAEP2ZUQ.js → chunk-V5MS6XNT.js} +2 -2
  149. package/dist/cli/chunks/{chunk-XEI5LLHX.js → chunk-VK5I4JSN.js} +2 -2
  150. package/dist/cli/chunks/{chunk-W37WY3OL.js → chunk-VSP2IB5N.js} +2 -2
  151. package/dist/cli/chunks/{chunk-PD2ZSCEH.js → chunk-WA553ALQ.js} +1 -1
  152. package/dist/cli/chunks/{chunk-TFFEB7XD.js → chunk-X3CHYV7G.js} +2 -2
  153. package/dist/cli/chunks/{chunk-MPVOZKUP.js → chunk-X75OYPS6.js} +1 -1
  154. package/dist/cli/chunks/{chunk-C75V5PTW.js → chunk-XF2TKGSC.js} +1 -1
  155. package/dist/cli/chunks/{chunk-Y7VWCP35.js → chunk-XLDEWLP4.js} +1 -1
  156. package/dist/cli/chunks/{chunk-26SNR2EK.js → chunk-XRH2D6JV.js} +3 -3
  157. package/dist/cli/chunks/{chunk-MANWLRAW.js → chunk-XZPAKAFJ.js} +1 -1
  158. package/dist/cli/chunks/{chunk-6XVP6BGM.js → chunk-Y2QZK46R.js} +2 -2
  159. package/dist/cli/chunks/{chunk-6BHRSGR7.js → chunk-YL7CAOQG.js} +3 -3
  160. package/dist/cli/chunks/{chunk-SPTCNM45.js → chunk-YOVQBSTW.js} +2 -2
  161. package/dist/cli/chunks/{chunk-2Q73TQUQ.js → chunk-YQUZGPUQ.js} +1 -1
  162. package/dist/cli/chunks/{chunk-YZGA4ELM.js → chunk-YRRYKR7U.js} +2 -2
  163. package/dist/cli/chunks/{chunk-NAAPL2HK.js → chunk-Z6SAS2NU.js} +1 -1
  164. package/dist/cli/chunks/{ci-DK4FGREO.js → ci-MWQVCZ2W.js} +2 -2
  165. package/dist/cli/chunks/{ci-output-HQBBQQES.js → ci-output-ZCH4IZ7H.js} +2 -2
  166. package/dist/cli/chunks/{circuit-breaker-MJCS46DN.js → circuit-breaker-N3VSQM5X.js} +2 -2
  167. package/dist/cli/chunks/{claude-flow-setup-IIQT52H4.js → claude-flow-setup-TSJFOGXN.js} +2 -2
  168. package/dist/cli/chunks/client-IEN43WBH.js +2 -0
  169. package/dist/cli/chunks/{cline-installer-7SPKUNNZ.js → cline-installer-OHKWAB4I.js} +2 -2
  170. package/dist/cli/chunks/{code-V2B4FP3X.js → code-3UTIL3QR.js} +2 -2
  171. package/dist/cli/chunks/{code-index-extractor-IRGAI76Y.js → code-index-extractor-TVG2V2NY.js} +2 -2
  172. package/dist/cli/chunks/{codex-installer-PDFCYRU6.js → codex-installer-L6ZOTOO2.js} +2 -2
  173. package/dist/cli/chunks/{completions-TAJ6N7YZ.js → completions-SFRB664X.js} +2 -2
  174. package/dist/cli/chunks/{complexity-analyzer-JHQKQKBG.js → complexity-analyzer-HDZKVO6D.js} +2 -2
  175. package/dist/cli/chunks/{continuedev-installer-DESZXCLC.js → continuedev-installer-HKLZR3UO.js} +2 -2
  176. package/dist/cli/chunks/{copilot-installer-OQPXBLWS.js → copilot-installer-5P3LX3C5.js} +2 -2
  177. package/dist/cli/chunks/core-handlers-PBITKHVP.js +2 -0
  178. package/dist/cli/chunks/{cost-tracker-KHDFSCAJ.js → cost-tracker-MZR5RB6E.js} +2 -2
  179. package/dist/cli/chunks/{coverage-T7EENIDE.js → coverage-L6V6NFIM.js} +3 -3
  180. package/dist/cli/chunks/cross-domain-router-JGCWQ7BO.js +2 -0
  181. package/dist/cli/chunks/{cursor-installer-X6BFU5QU.js → cursor-installer-FD6DT23Y.js} +2 -2
  182. package/dist/cli/chunks/{daemon-UTPP4JCG.js → daemon-HTSRODRG.js} +4 -4
  183. package/dist/cli/chunks/{daemon-22NOG5XI.js → daemon-I5ESGZGX.js} +3 -3
  184. package/dist/cli/chunks/{dag-attention-scheduler-XI6DG3FW.js → dag-attention-scheduler-JPTHWB2Q.js} +2 -2
  185. package/dist/cli/chunks/{detect-7IMQGJ5I.js → detect-RTUZDBEZ.js} +2 -2
  186. package/dist/cli/chunks/{dist-node-YMLM4K7J.js → dist-node-5HLWHNYA.js} +2 -2
  187. package/dist/cli/chunks/{domain-handler-LRTJGTEH.js → domain-handler-R7IPUX54.js} +2 -2
  188. package/dist/cli/chunks/{domain-transfer-HZJ3WUCT.js → domain-transfer-E3I2LMCB.js} +2 -2
  189. package/dist/cli/chunks/dream-52MPUF5Q.js +2 -0
  190. package/dist/cli/chunks/{embed-and-insert-pattern-QSRN7Z5Q.js → embed-and-insert-pattern-BXUWG73R.js} +2 -2
  191. package/dist/cli/chunks/{eval-JVVVQVV6.js → eval-3ZFM75YA.js} +2 -2
  192. package/dist/cli/chunks/{experience-capture-middleware-ORZN3ROJ.js → experience-capture-middleware-NJ3BT657.js} +3 -3
  193. package/dist/cli/chunks/{fast-paths-LUFARZR5.js → fast-paths-Q3V5C5IM.js} +2 -2
  194. package/dist/cli/chunks/{feature-flags-ZHQESXIP.js → feature-flags-D3JGPHXY.js} +2 -2
  195. package/dist/cli/chunks/{feature-flags-2XC4ECLW.js → feature-flags-XZGJNPZ7.js} +2 -2
  196. package/dist/cli/chunks/file-discovery-MZOYXIOS.js +2 -0
  197. package/dist/cli/chunks/{fleet-FUQ6G4SB.js → fleet-FG3EBA75.js} +3 -3
  198. package/dist/cli/chunks/{gnn-wrapper-A4E6OKGD.js → gnn-wrapper-PKZLZHL2.js} +2 -2
  199. package/dist/cli/chunks/{heartbeat-handler-3JKQORXA.js → heartbeat-handler-YZTRVH75.js} +4 -4
  200. package/dist/cli/chunks/heartbeat-scheduler-LMAEJQYQ.js +2 -0
  201. package/dist/cli/chunks/hnsw-adapter-DGGDYJEL.js +2 -0
  202. package/dist/cli/chunks/hnsw-index-KA7WDTHX.js +2 -0
  203. package/dist/cli/chunks/{hnsw-legacy-bridge-AHKFKM2J.js → hnsw-legacy-bridge-WONHB63F.js} +2 -2
  204. package/dist/cli/chunks/hnswlib-node-Q4VPSJJM.js +2 -0
  205. package/dist/cli/chunks/{hooks-JNW5ZB2E.js → hooks-RWX5ZZCE.js} +47 -47
  206. package/dist/cli/chunks/hybrid-router-Q6JQTV55.js +2 -0
  207. package/dist/cli/chunks/{hypergraph-engine-3DTAMNSJ.js → hypergraph-engine-G6N24L5G.js} +2 -2
  208. package/dist/cli/chunks/{hypergraph-handler-ZV4AZRGF.js → hypergraph-handler-4RGOLL6F.js} +3 -3
  209. package/dist/cli/chunks/impact-analyzer-7LFSGIQP.js +2 -0
  210. package/dist/cli/chunks/{init-handler-NPOUX47N.js → init-handler-L7DZAHXO.js} +12 -12
  211. package/dist/cli/chunks/init-wizard-T4K44J6D.js +2 -0
  212. package/dist/cli/chunks/kernel-TGHK6X7F.js +2 -0
  213. package/dist/cli/chunks/{kilocode-installer-D35TR6LG.js → kilocode-installer-G7PUCUDZ.js} +2 -2
  214. package/dist/cli/chunks/{kiro-installer-OHHTQENO.js → kiro-installer-H6234HEB.js} +2 -2
  215. package/dist/cli/chunks/knowledge-graph-MV3OSGCB.js +2 -0
  216. package/dist/cli/chunks/learning-346CA4DH.js +119 -0
  217. package/dist/cli/chunks/{llm-router-XLTE52H5.js → llm-router-ATNRDTEM.js} +4 -4
  218. package/dist/cli/chunks/llm-router-service-OOCNAPJO.js +2 -0
  219. package/dist/cli/chunks/{load-BHMK4FIL.js → load-3L2CK4ML.js} +2 -2
  220. package/dist/cli/chunks/load-test-4OZPYWL4.js +2 -0
  221. package/dist/cli/chunks/{mcp-V4MAYT7C.js → mcp-JJ4ZDUJB.js} +2 -2
  222. package/dist/cli/chunks/{memory-PDA7MQ7E.js → memory-U3K2Y777.js} +5 -5
  223. package/dist/cli/chunks/memory-backend-LMRIHJQY.js +2 -0
  224. package/dist/cli/chunks/memory-handlers-J6CVQ5DS.js +2 -0
  225. package/dist/cli/chunks/{multi-model-executor-KECHOXKD.js → multi-model-executor-DPCU4CSM.js} +2 -2
  226. package/dist/cli/chunks/{opencode-installer-LWSCQOOZ.js → opencode-installer-KNUCUSRG.js} +2 -2
  227. package/dist/cli/chunks/{orchestrator-ENEBTEUW.js → orchestrator-DJV2NUWD.js} +11 -11
  228. package/dist/cli/chunks/pattern-null-store-AQWPHLRW.js +2 -0
  229. package/dist/cli/chunks/{pattern-usage-recorder-XIHGXYZZ.js → pattern-usage-recorder-TQ7KECBB.js} +2 -2
  230. package/dist/cli/chunks/{pipeline-GQOJM3LU.js → pipeline-JG57VFOB.js} +2 -2
  231. package/dist/cli/chunks/{platform-L56TGXGZ.js → platform-L7LOBG4E.js} +2 -2
  232. package/dist/cli/chunks/{plugin-SZ6PZKYX.js → plugin-ATBPEU2K.js} +2 -2
  233. package/dist/cli/chunks/{prime-radiant-advanced-wasm-SID5FQFW.js → prime-radiant-advanced-wasm-XCX7CNVW.js} +2 -2
  234. package/dist/cli/chunks/protocol-executor-FWUT6L6K.js +2 -0
  235. package/dist/cli/chunks/{protocol-handler-5MMNVVPX.js → protocol-handler-DOFLSB4N.js} +2 -2
  236. package/dist/cli/chunks/{prove-DJ6BQ2AK.js → prove-CDBMRPBD.js} +2 -2
  237. package/dist/cli/chunks/provider-manager-4PY7IR3V.js +2 -0
  238. package/dist/cli/chunks/qe-reasoning-bank-M4XVWRPY.js +2 -0
  239. package/dist/cli/chunks/quality-5CMQBYP3.js +7 -0
  240. package/dist/cli/chunks/{quality-gate-CVHVSORK.js → quality-gate-LU66IWRT.js} +3 -3
  241. package/dist/cli/chunks/queen-coordinator-KSRI42QZ.js +2 -0
  242. package/dist/cli/chunks/{real-embeddings-DN2MEJVM.js → real-embeddings-3B7AXYOP.js} +2 -2
  243. package/dist/cli/chunks/{roocode-installer-LTAQJWIH.js → roocode-installer-GF4YJW7E.js} +2 -2
  244. package/dist/cli/chunks/router-F2TCXNSG.js +2 -0
  245. package/dist/cli/chunks/routing-feedback-VHOWXUY7.js +2 -0
  246. package/dist/cli/chunks/{routing-handler-PSWR2UCT.js → routing-handler-PWQMWFND.js} +2 -2
  247. package/dist/cli/chunks/{ruvector-commands-VTP6Y7PN.js → ruvector-commands-SMD6KSBD.js} +2 -2
  248. package/dist/cli/chunks/{rvf-dual-writer-EBUMXPRO.js → rvf-dual-writer-M5TEJ56X.js} +2 -2
  249. package/dist/cli/chunks/{rvf-migration-adapter-5N7GHMD3.js → rvf-migration-adapter-EHLWMZYI.js} +2 -2
  250. package/dist/cli/chunks/{rvf-migration-coordinator-GQKDBNRR.js → rvf-migration-coordinator-GMVLX3FX.js} +2 -2
  251. package/dist/cli/chunks/rvf-native-adapter-XG3LFOYW.js +2 -0
  252. package/dist/cli/chunks/{rvf-store-integrity-LR3SYGQK.js → rvf-store-integrity-PDADEHAZ.js} +2 -2
  253. package/dist/cli/chunks/safe-db-CTHJ3SXC.js +2 -0
  254. package/dist/cli/chunks/schedule-LLYADLGL.js +2 -0
  255. package/dist/cli/chunks/scheduler-72YIGDIX.js +2 -0
  256. package/dist/cli/chunks/{security-YDWLYXYD.js → security-PSMBTUSM.js} +3 -3
  257. package/dist/cli/chunks/{shared-rvf-adapter-I3HQY7DE.js → shared-rvf-adapter-DP2Z4YLV.js} +2 -2
  258. package/dist/cli/chunks/{shared-rvf-dual-writer-2UADEA5N.js → shared-rvf-dual-writer-UOU6ORBJ.js} +2 -2
  259. package/dist/cli/chunks/sqlite-persistence-N7OO3ZOE.js +2 -0
  260. package/dist/cli/chunks/{status-handler-QRHI3F4V.js → status-handler-T565F47D.js} +2 -2
  261. package/dist/cli/chunks/{structural-health-FWKE63CM.js → structural-health-54WNSZ7Y.js} +2 -2
  262. package/dist/cli/chunks/{sync-2QRCT5MT.js → sync-5ZGYF7JF.js} +2 -2
  263. package/dist/cli/chunks/{sync-E32MBAOF.js → sync-EXADT5IZ.js} +2 -2
  264. package/dist/cli/chunks/{task-handler-C7BKMOCL.js → task-handler-JXWQZDEX.js} +2 -2
  265. package/dist/cli/chunks/{task-handlers-PADWLLDO.js → task-handlers-UKHRILMM.js} +3 -3
  266. package/dist/cli/chunks/test-3SU56PMM.js +33 -0
  267. package/dist/cli/chunks/{test-scheduling-5WKIWH4H.js → test-scheduling-CZZ4KKWM.js} +3 -3
  268. package/dist/cli/chunks/{token-bootstrap-6SKOJM3U.js → token-bootstrap-RSIAPUIV.js} +2 -2
  269. package/dist/cli/chunks/{token-usage-V6JW55RV.js → token-usage-7HW43ORO.js} +2 -2
  270. package/dist/cli/chunks/{transformers-3UPFBYSB.js → transformers-A5REG7OI.js} +2 -2
  271. package/dist/cli/chunks/{tree-sitter-wasm-parser-UCY4S2DU.js → tree-sitter-wasm-parser-F43MC7E5.js} +2 -2
  272. package/dist/cli/chunks/{types-XNMNQGET.js → types-DEOHTTJ3.js} +2 -2
  273. package/dist/cli/chunks/unified-memory-Q55MJWAM.js +2 -0
  274. package/dist/cli/chunks/unified-memory-hnsw-4BEKV2K5.js +2 -0
  275. package/dist/cli/chunks/unified-persistence-IIB5MR67.js +2 -0
  276. package/dist/cli/chunks/{upgrade-MVTMTOPL.js → upgrade-7NKNCL2I.js} +2 -2
  277. package/dist/cli/chunks/{validate-OJWR2AGZ.js → validate-SN2UY7CT.js} +2 -2
  278. package/dist/cli/chunks/{validate-swarm-2RGSF2K2.js → validate-swarm-YITFMCXY.js} +2 -2
  279. package/dist/cli/chunks/{vibium-O3ZLAEEZ.js → vibium-AZNIG6O7.js} +2 -2
  280. package/dist/cli/chunks/visual-security-F4FUP6KV.js +2 -0
  281. package/dist/cli/chunks/{web-tree-sitter-6VPASTI4.js → web-tree-sitter-DY4YXPMR.js} +2 -2
  282. package/dist/cli/chunks/{windsurf-installer-CINHOW3N.js → windsurf-installer-HXD4BK7N.js} +2 -2
  283. package/dist/cli/chunks/witness-chain-SQ5LCKUQ.js +2 -0
  284. package/dist/cli/chunks/{witness-chain-2NXW7FT7.js → witness-chain-UV7BOO6T.js} +2 -2
  285. package/dist/cli/chunks/{witness-key-manager-ODW4DJWT.js → witness-key-manager-BCNW3SZH.js} +2 -2
  286. package/dist/cli/chunks/{workflow-BFGS2GAU.js → workflow-R3SSSWA5.js} +4 -4
  287. package/dist/cli/chunks/workflow-orchestrator-Z4PZXWVY.js +2 -0
  288. package/dist/cli/chunks/{wrappers-VEVVSVMS.js → wrappers-6JUXYAML.js} +2 -2
  289. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +16 -27
  290. package/dist/cli/commands/learning.js +66 -0
  291. package/dist/cli/commands/quality.d.ts +12 -0
  292. package/dist/cli/commands/quality.js +50 -74
  293. package/dist/cli/commands/test.js +33 -4
  294. package/dist/cli/handlers/init-handler.d.ts +2 -0
  295. package/dist/cli/handlers/init-handler.js +4 -1
  296. package/dist/cli/utils/file-discovery.d.ts +1 -0
  297. package/dist/cli/utils/file-discovery.js +13 -1
  298. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +5 -0
  299. package/dist/domains/quality-assessment/index.d.ts +1 -0
  300. package/dist/domains/quality-assessment/index.js +1 -0
  301. package/dist/domains/quality-assessment/quality-evidence.d.ts +41 -0
  302. package/dist/domains/quality-assessment/quality-evidence.js +115 -0
  303. package/dist/domains/test-execution/coordinator.d.ts +1 -0
  304. package/dist/domains/test-execution/coordinator.js +11 -4
  305. package/dist/domains/test-execution/interfaces.d.ts +2 -0
  306. package/dist/domains/test-execution/services/retry-handler.js +3 -3
  307. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  308. package/dist/domains/test-execution/services/test-executor.js +93 -30
  309. package/dist/domains/test-generation/gates/test-quality-gate.d.ts +8 -2
  310. package/dist/domains/test-generation/gates/test-quality-gate.js +93 -4
  311. package/dist/domains/test-generation/generators/base-test-generator.js +0 -15
  312. package/dist/domains/test-generation/generators/jest-vitest-generator.js +17 -26
  313. package/dist/domains/test-generation/services/test-generator.js +7 -2
  314. package/dist/init/orchestrator.js +1 -0
  315. package/dist/init/phases/07-hooks.js +3 -1
  316. package/dist/init/phases/phase-interface.d.ts +2 -0
  317. package/dist/init/settings-merge.d.ts +3 -1
  318. package/dist/init/settings-merge.js +9 -3
  319. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +2 -0
  320. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +14 -0
  321. package/dist/integrations/embeddings/index/HNSWIndex.js +2 -0
  322. package/dist/kernel/hybrid-backend.d.ts +1 -1
  323. package/dist/kernel/hybrid-backend.js +2 -2
  324. package/dist/kernel/interfaces.d.ts +2 -2
  325. package/dist/kernel/memory-backend.d.ts +1 -1
  326. package/dist/kernel/memory-backend.js +3 -1
  327. package/dist/kernel/unified-memory.d.ts +1 -1
  328. package/dist/kernel/unified-memory.js +19 -4
  329. package/dist/learning/real-embeddings.js +20 -4
  330. package/dist/learning/sqlite-persistence.d.ts +3 -2
  331. package/dist/learning/sqlite-persistence.js +7 -8
  332. package/dist/mcp/bundle.js +453 -472
  333. package/dist/mcp/handlers/memory-handlers.js +2 -5
  334. package/dist/mcp/tools/quality-assessment/evaluate.d.ts +7 -0
  335. package/dist/mcp/tools/quality-assessment/evaluate.js +72 -20
  336. package/dist/mcp/tools/security-compliance/scan.js +8 -1
  337. package/package.json +2 -2
  338. package/dist/cli/chunks/adapter-JISQ35YY.js +0 -2
  339. package/dist/cli/chunks/aqe-learning-engine-TVTNP76S.js +0 -2
  340. package/dist/cli/chunks/base-WBCYKM45.js +0 -2
  341. package/dist/cli/chunks/better-sqlite3-FXJFG2WH.js +0 -2
  342. package/dist/cli/chunks/browser-workflow-4JM3IWCS.js +0 -2
  343. package/dist/cli/chunks/chunk-344CLTV7.js +0 -62
  344. package/dist/cli/chunks/chunk-6VNUASTQ.js +0 -15
  345. package/dist/cli/chunks/chunk-CW7LDLJ2.js +0 -2
  346. package/dist/cli/chunks/chunk-HGBVGEUE.js +0 -2
  347. package/dist/cli/chunks/chunk-JJ5YIKTJ.js +0 -12
  348. package/dist/cli/chunks/chunk-QGH54HTH.js +0 -2
  349. package/dist/cli/chunks/chunk-TCYSMSBO.js +0 -2
  350. package/dist/cli/chunks/chunk-YQI6SOUO.js +0 -2
  351. package/dist/cli/chunks/client-FNDZB4TY.js +0 -2
  352. package/dist/cli/chunks/core-handlers-S37RHLKP.js +0 -2
  353. package/dist/cli/chunks/cross-domain-router-7ZHDB2V3.js +0 -2
  354. package/dist/cli/chunks/dream-BEVYNIOO.js +0 -2
  355. package/dist/cli/chunks/file-discovery-UHXZQ7GS.js +0 -2
  356. package/dist/cli/chunks/heartbeat-scheduler-K4YLB3X4.js +0 -2
  357. package/dist/cli/chunks/hnsw-adapter-PPR3LTMA.js +0 -2
  358. package/dist/cli/chunks/hnsw-index-ZSKFT4LZ.js +0 -2
  359. package/dist/cli/chunks/hybrid-router-4SXBHTOY.js +0 -2
  360. package/dist/cli/chunks/impact-analyzer-55GE7EQD.js +0 -2
  361. package/dist/cli/chunks/init-wizard-EUQLSGI6.js +0 -2
  362. package/dist/cli/chunks/kernel-BSGSVYPM.js +0 -2
  363. package/dist/cli/chunks/knowledge-graph-OITIVT5J.js +0 -2
  364. package/dist/cli/chunks/learning-24PCHLWU.js +0 -117
  365. package/dist/cli/chunks/llm-router-service-RUPU52AR.js +0 -2
  366. package/dist/cli/chunks/load-test-ZV3C55ZE.js +0 -2
  367. package/dist/cli/chunks/memory-backend-S3KCPHCF.js +0 -2
  368. package/dist/cli/chunks/memory-handlers-X5BLXOSH.js +0 -2
  369. package/dist/cli/chunks/pattern-null-store-ILVDKSCX.js +0 -2
  370. package/dist/cli/chunks/protocol-executor-GDRHCW3Q.js +0 -2
  371. package/dist/cli/chunks/provider-manager-BS4MVCSH.js +0 -2
  372. package/dist/cli/chunks/qe-reasoning-bank-P3ARGHDN.js +0 -2
  373. package/dist/cli/chunks/quality-WKC4JCB3.js +0 -7
  374. package/dist/cli/chunks/queen-coordinator-GI7GNVDM.js +0 -2
  375. package/dist/cli/chunks/router-YU6MLJBV.js +0 -2
  376. package/dist/cli/chunks/routing-feedback-D6B2SK5V.js +0 -2
  377. package/dist/cli/chunks/rvf-native-adapter-M7ZVRN5Z.js +0 -2
  378. package/dist/cli/chunks/safe-db-3OHTLXG7.js +0 -2
  379. package/dist/cli/chunks/schedule-H43ADREQ.js +0 -2
  380. package/dist/cli/chunks/scheduler-CGSXNEPJ.js +0 -2
  381. package/dist/cli/chunks/sqlite-persistence-V6U5FKVK.js +0 -2
  382. package/dist/cli/chunks/test-KX4UKHSX.js +0 -33
  383. package/dist/cli/chunks/unified-memory-H2J5BHPY.js +0 -2
  384. package/dist/cli/chunks/unified-memory-hnsw-LFGIWMTS.js +0 -2
  385. package/dist/cli/chunks/unified-persistence-F6W7EXU5.js +0 -2
  386. package/dist/cli/chunks/visual-security-EHVU32UE.js +0 -2
  387. package/dist/cli/chunks/witness-chain-BIICGRHC.js +0 -2
  388. 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.4");process.exit(0)}
2
- import"./chunk-TFFEB7XD.js";import{b as $}from"./chunk-Y7VWCP35.js";import{d as R}from"./chunk-75CFWCQV.js";import{b as k,c as C,d as b}from"./chunk-7EL5QEMJ.js";import{c as W}from"./chunk-HN2DD2DQ.js";import"./chunk-RCRKCMN5.js";import"./chunk-KDICUKYX.js";import"./chunk-GGZB2ZBB.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(`
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-4JM3IWCS.js"),e=await new t().invoke({});if(e.success&&e.data){console.log(o.blue(`
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-4JM3IWCS.js"),{writeOutput:u,toJSON:c}=await import("./ci-output-HQBBQQES.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(`
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.4");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-VZO4V4R4.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-5DESO7E4.js";import"./chunk-ZAT65V6I.js";import"./chunk-XTHRSBMJ.js";import"./chunk-TO7FTPRV.js";import"./chunk-QGH54HTH.js";import"./chunk-E7FCVH32.js";import"./chunk-27REOPQK.js";import"./chunk-HN2DD2DQ.js";import"./chunk-KDICUKYX.js";import"./chunk-QXF6EQFP.js";import"./chunk-OR2RC7ZH.js";import"./chunk-PI55PHUL.js";import"./chunk-GOHWEQEP.js";import"./chunk-SJ26ZR75.js";import"./chunk-DQ247474.js";import"./chunk-HGBVGEUE.js";import"./chunk-YZGA4ELM.js";import"./chunk-ERKYIV25.js";import"./chunk-GGZB2ZBB.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};
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
- // Fire-and-forget embedding write so HNSW C is searchable from the next
219
- // boot's loadEmbeddingIndex() without waiting for the patch-350 backfill.
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
- // Fire-and-forget embedding write for the captured_experiences row inserted
552
- // inside the transaction above. Same rationale as the persistCommandExperience
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 qualityAPI = await context.kernel.getDomainAPIAsync('quality-assessment');
28
- if (!qualityAPI) {
29
- console.log(chalk.red('Quality assessment domain not available'));
30
- await cleanupAndExit(1);
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
- // Provide default metrics when user doesn't supply explicit values.
33
- // The gate service requires metrics + thresholds to evaluate.
34
- const defaultMetrics = {
35
- coverage: 0,
36
- testsPassing: 0,
37
- criticalBugs: 0,
38
- codeSmells: 0,
39
- securityVulnerabilities: 0,
40
- technicalDebt: 0,
41
- duplications: 0,
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
- else {
72
- // Text output
73
- const statusIcon = gateResult.passed ? chalk.green('✓ PASSED') : chalk.red('✗ FAILED');
74
- console.log(` Quality Gate: ${statusIcon}`);
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
- const scoreNum = parseFloat(String(gateResult.score));
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 testFiles = walkSourceFiles(targetPath, { testsOnly: true });
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
- if (options.modular || platformRequested || databaseFree || noClaudeRequested) {
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