agentic-qe 3.13.4 → 3.13.5

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 (369) 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/CHANGELOG.md +48 -0
  8. package/assets/skills/skills-manifest.json +1 -1
  9. package/dist/cli/bundle.js +5 -5
  10. package/dist/cli/chunks/adapter-QGJAFSG5.js +2 -0
  11. package/dist/cli/chunks/{agent-booster-wasm-PR3RQWXF.js → agent-booster-wasm-XDKGG2GP.js} +2 -2
  12. package/dist/cli/chunks/{agent-handler-J5EPFBSZ.js → agent-handler-CTPXGR5P.js} +2 -2
  13. package/dist/cli/chunks/{agent-memory-branch-CCHI6QAA.js → agent-memory-branch-MG5OV7AY.js} +2 -2
  14. package/dist/cli/chunks/aqe-learning-engine-ZU735SG7.js +2 -0
  15. package/dist/cli/chunks/{arena-KMKBGSMY.js → arena-FAHVOHNG.js} +2 -2
  16. package/dist/cli/chunks/{arena-SI7IPVZ3.js → arena-NYO4EUNQ.js} +4 -4
  17. package/dist/cli/chunks/{audit-ZDKR3HT6.js → audit-6544RL5D.js} +3 -3
  18. package/dist/cli/chunks/base-EKTX2PRE.js +2 -0
  19. package/dist/cli/chunks/{hnswlib-node-BP5CZGMD.js → better-sqlite3-MTEONNCQ.js} +2 -2
  20. package/dist/cli/chunks/{brain-handler-MSYMTM5B.js → brain-handler-DPKCUQUC.js} +3 -3
  21. package/dist/cli/chunks/{branch-enumerator-FRAHCBTO.js → branch-enumerator-SU2KHC2C.js} +2 -2
  22. package/dist/cli/chunks/{browser-4KHKVNYC.js → browser-ITDN72YJ.js} +2 -2
  23. package/dist/cli/chunks/browser-workflow-BUPIMI3E.js +2 -0
  24. package/dist/cli/chunks/{chunk-NAAPL2HK.js → chunk-23AO43XW.js} +1 -1
  25. package/dist/cli/chunks/{chunk-7YAHECC5.js → chunk-2CF3XZAS.js} +2 -2
  26. package/dist/cli/chunks/{chunk-RLZZTFEN.js → chunk-2KPGJ4LO.js} +2 -2
  27. package/dist/cli/chunks/{chunk-NW4YPUPN.js → chunk-2QI3OJAC.js} +3 -3
  28. package/dist/cli/chunks/{chunk-WUXCL65V.js → chunk-2RZ2S6YR.js} +2 -2
  29. package/dist/cli/chunks/{chunk-Y7VWCP35.js → chunk-2XZWYKXQ.js} +1 -1
  30. package/dist/cli/chunks/{chunk-RCRKCMN5.js → chunk-3EWWP3AO.js} +1 -1
  31. package/dist/cli/chunks/{chunk-6CZUQA4G.js → chunk-3XKCC7LE.js} +1 -1
  32. package/dist/cli/chunks/chunk-42KQE5H6.js +12 -0
  33. package/dist/cli/chunks/{chunk-EPSF2ERW.js → chunk-43BXSNKU.js} +2 -2
  34. package/dist/cli/chunks/{chunk-Z7FVGJYC.js → chunk-4E2NA2GY.js} +2 -2
  35. package/dist/cli/chunks/{chunk-E7FCVH32.js → chunk-4Z7JP7CD.js} +2 -2
  36. package/dist/cli/chunks/{chunk-LUAYTM77.js → chunk-54C3OHES.js} +1 -1
  37. package/dist/cli/chunks/{chunk-RKNKFLCQ.js → chunk-557BFPDB.js} +2 -2
  38. package/dist/cli/chunks/{chunk-27FWRWOB.js → chunk-5I5KMIFY.js} +2 -2
  39. package/dist/cli/chunks/{chunk-N57M7UPQ.js → chunk-5YIGAWBO.js} +2 -2
  40. package/dist/cli/chunks/{chunk-LEIG3KIG.js → chunk-64GTU5LR.js} +2 -2
  41. package/dist/cli/chunks/{chunk-CQP6BDSF.js → chunk-6BEMH5K5.js} +1 -1
  42. package/dist/cli/chunks/{chunk-GOHWEQEP.js → chunk-6H3I36DL.js} +2 -2
  43. package/dist/cli/chunks/{chunk-AROPZPNG.js → chunk-6L5V3JGJ.js} +1 -1
  44. package/dist/cli/chunks/{chunk-55E62F4T.js → chunk-6RV3W2UZ.js} +1 -1
  45. package/dist/cli/chunks/{chunk-KDICUKYX.js → chunk-6ZCAZ3TR.js} +2 -2
  46. package/dist/cli/chunks/{chunk-HGY62IYZ.js → chunk-74QRMQFR.js} +2 -2
  47. package/dist/cli/chunks/{chunk-PFQLB4XP.js → chunk-76OWM3ZO.js} +2 -2
  48. package/dist/cli/chunks/{chunk-YZGA4ELM.js → chunk-7A4EXSMN.js} +2 -2
  49. package/dist/cli/chunks/{chunk-ZAT65V6I.js → chunk-7BLXINIL.js} +2 -2
  50. package/dist/cli/chunks/{chunk-2Q73TQUQ.js → chunk-7LR4VP2I.js} +1 -1
  51. package/dist/cli/chunks/{chunk-27REOPQK.js → chunk-7M4X6WTF.js} +2 -2
  52. package/dist/cli/chunks/{chunk-A2G26WU4.js → chunk-7PHF2JM3.js} +1 -1
  53. package/dist/cli/chunks/{chunk-L3UTZEVW.js → chunk-7SQXEYII.js} +2 -2
  54. package/dist/cli/chunks/{chunk-DQ247474.js → chunk-AAGOBPIJ.js} +2 -2
  55. package/dist/cli/chunks/{chunk-UAEP2ZUQ.js → chunk-AJYJFIKO.js} +2 -2
  56. package/dist/cli/chunks/{chunk-VLELNETG.js → chunk-AKYOY5KR.js} +2 -2
  57. package/dist/cli/chunks/{chunk-XBSBVPSM.js → chunk-AKZ6PWHM.js} +2 -2
  58. package/dist/cli/chunks/{chunk-FBXWU37F.js → chunk-APMLMLSL.js} +1 -1
  59. package/dist/cli/chunks/{chunk-SQCACQUM.js → chunk-AX4XIG4G.js} +2 -2
  60. package/dist/cli/chunks/{chunk-OU2YHXJY.js → chunk-BAJK26EI.js} +2 -2
  61. package/dist/cli/chunks/{chunk-SPTCNM45.js → chunk-BI6OTPC6.js} +2 -2
  62. package/dist/cli/chunks/chunk-BKI5NFQ5.js +2 -0
  63. package/dist/cli/chunks/{chunk-PI55PHUL.js → chunk-BUN4WBPW.js} +2 -2
  64. package/dist/cli/chunks/{chunk-JDADACZZ.js → chunk-BX5MY65W.js} +1 -1
  65. package/dist/cli/chunks/{chunk-XEI5LLHX.js → chunk-CD4YWKJ2.js} +2 -2
  66. package/dist/cli/chunks/{chunk-LJSHQU2P.js → chunk-CHFZHORO.js} +5 -5
  67. package/dist/cli/chunks/{chunk-SJ26ZR75.js → chunk-CPIAZGHF.js} +2 -2
  68. package/dist/cli/chunks/{chunk-EUIUWZF4.js → chunk-D4P6BKGF.js} +3 -3
  69. package/dist/cli/chunks/{chunk-RO4BYINM.js → chunk-DFBJPOJR.js} +2 -2
  70. package/dist/cli/chunks/{chunk-X67O2KUE.js → chunk-DIRFXY3J.js} +7 -7
  71. package/dist/cli/chunks/chunk-DK7MV2W3.js +2 -0
  72. package/dist/cli/chunks/chunk-DVYNBMMP.js +62 -0
  73. package/dist/cli/chunks/{chunk-XF4F5ZXO.js → chunk-EGI6SKQD.js} +2 -2
  74. package/dist/cli/chunks/{chunk-WSQE3VZB.js → chunk-ELC3UEML.js} +1 -1
  75. package/dist/cli/chunks/chunk-ELKWYWTD.js +2 -0
  76. package/dist/cli/chunks/{chunk-QXF6EQFP.js → chunk-EPMUAKU2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-UOO7P2AK.js → chunk-EROQSNGD.js} +2 -2
  78. package/dist/cli/chunks/{chunk-26SNR2EK.js → chunk-EXXWOOUL.js} +3 -3
  79. package/dist/cli/chunks/{chunk-WCUXA3NV.js → chunk-FQPYD6YE.js} +1 -1
  80. package/dist/cli/chunks/{chunk-UNMWI4QU.js → chunk-FW6OPDA6.js} +1 -1
  81. package/dist/cli/chunks/{chunk-NQJLUY2K.js → chunk-FYWTMDID.js} +2 -2
  82. package/dist/cli/chunks/{chunk-N7LIYK7Z.js → chunk-G47WJMHM.js} +1 -1
  83. package/dist/cli/chunks/{chunk-6XVP6BGM.js → chunk-G73XY2NK.js} +2 -2
  84. package/dist/cli/chunks/{chunk-KQLJILCZ.js → chunk-GHSP4AC5.js} +1 -1
  85. package/dist/cli/chunks/{chunk-7EL5QEMJ.js → chunk-GITS44TM.js} +2 -2
  86. package/dist/cli/chunks/{chunk-NAZFAGJ5.js → chunk-GUO6JZMS.js} +2 -2
  87. package/dist/cli/chunks/{chunk-C3AF5Z55.js → chunk-GWBV26SE.js} +2 -2
  88. package/dist/cli/chunks/{chunk-ERKYIV25.js → chunk-HBYVYLBN.js} +2 -2
  89. package/dist/cli/chunks/{chunk-O45CEMVF.js → chunk-HMNBNGNO.js} +1 -1
  90. package/dist/cli/chunks/{chunk-ZYCPTARG.js → chunk-HZV3J4VQ.js} +2 -2
  91. package/dist/cli/chunks/{chunk-5IVXM3TE.js → chunk-IC5JGTM4.js} +1 -1
  92. package/dist/cli/chunks/{chunk-IUFNB6I6.js → chunk-IS3P5VBL.js} +2 -2
  93. package/dist/cli/chunks/{chunk-EEHEMDNV.js → chunk-JID7JO7K.js} +2 -2
  94. package/dist/cli/chunks/{chunk-4HVVVVUF.js → chunk-JOJ2UFHM.js} +2 -2
  95. package/dist/cli/chunks/{chunk-3RSF7POD.js → chunk-JTUTZUED.js} +2 -2
  96. package/dist/cli/chunks/{chunk-VDPQ7NVG.js → chunk-JX5IY2YK.js} +1 -1
  97. package/dist/cli/chunks/{chunk-KE656E6T.js → chunk-K55D3PAR.js} +3 -3
  98. package/dist/cli/chunks/{chunk-ISGKDLZ7.js → chunk-KAVYTFAS.js} +2 -2
  99. package/dist/cli/chunks/{chunk-5DESO7E4.js → chunk-KRCIC4JK.js} +2 -2
  100. package/dist/cli/chunks/{chunk-ESMSH7HG.js → chunk-L6H4MWVN.js} +2 -2
  101. package/dist/cli/chunks/{chunk-U52IQFMP.js → chunk-L6I2Q6UQ.js} +1 -1
  102. package/dist/cli/chunks/{chunk-MWWTYPFL.js → chunk-LARAXKTZ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-FZ4MUDHZ.js → chunk-LELWVGN6.js} +1 -1
  104. package/dist/cli/chunks/chunk-M7456ZW5.js +2 -0
  105. package/dist/cli/chunks/{chunk-GOFP47XU.js → chunk-MF6OT43N.js} +1 -1
  106. package/dist/cli/chunks/{chunk-TO7FTPRV.js → chunk-MX35PIGJ.js} +2 -2
  107. package/dist/cli/chunks/{chunk-LASZCR5G.js → chunk-ND7IWTVQ.js} +2 -2
  108. package/dist/cli/chunks/{chunk-KB4S7MGB.js → chunk-NFE4RV2Q.js} +2 -2
  109. package/dist/cli/chunks/{chunk-O74V7MB4.js → chunk-NVZ3QROA.js} +2 -2
  110. package/dist/cli/chunks/{chunk-NQVF4M7L.js → chunk-OF5UL3FA.js} +1 -1
  111. package/dist/cli/chunks/{chunk-MP3RCZ75.js → chunk-OGUPLNRY.js} +1 -1
  112. package/dist/cli/chunks/{chunk-Q4VZXT6X.js → chunk-OJZ5LI3O.js} +1 -1
  113. package/dist/cli/chunks/{chunk-LIMFWEUI.js → chunk-OQ4HOHBI.js} +2 -2
  114. package/dist/cli/chunks/{chunk-HN2DD2DQ.js → chunk-OUWZTYRZ.js} +2 -2
  115. package/dist/cli/chunks/{chunk-5RVWL2U3.js → chunk-PDOL3FGO.js} +3 -3
  116. package/dist/cli/chunks/{chunk-FJSL7TWU.js → chunk-PEHSTLU7.js} +1 -1
  117. package/dist/cli/chunks/{chunk-MPVOZKUP.js → chunk-PKCVQ2I4.js} +1 -1
  118. package/dist/cli/chunks/{chunk-XTHRSBMJ.js → chunk-PNDWHSZO.js} +2 -2
  119. package/dist/cli/chunks/{chunk-BQRCNRTJ.js → chunk-PSD2L2JB.js} +2 -2
  120. package/dist/cli/chunks/{chunk-PJFQGNRW.js → chunk-Q3J5OTZ2.js} +1 -1
  121. package/dist/cli/chunks/{chunk-IU5SILCS.js → chunk-QHX7VLVT.js} +2 -2
  122. package/dist/cli/chunks/{chunk-GNFKG2LX.js → chunk-QIHKSRUZ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-6XCULO27.js → chunk-QLD2WVWN.js} +2 -2
  124. package/dist/cli/chunks/{chunk-GIU26D5G.js → chunk-R4VDRE75.js} +1 -1
  125. package/dist/cli/chunks/{chunk-JBHGMLN7.js → chunk-RDHBUCKQ.js} +182 -201
  126. package/dist/cli/chunks/{chunk-X5JMTHXC.js → chunk-RGBYJAKQ.js} +3 -3
  127. package/dist/cli/chunks/{chunk-MANWLRAW.js → chunk-RKXN5TVS.js} +1 -1
  128. package/dist/cli/chunks/{chunk-56QR72EB.js → chunk-S2EUFKHL.js} +2 -2
  129. package/dist/cli/chunks/{chunk-44SYMJ4T.js → chunk-SN57SNLU.js} +2 -2
  130. package/dist/cli/chunks/{chunk-6BHRSGR7.js → chunk-SQDHFTGQ.js} +3 -3
  131. package/dist/cli/chunks/{chunk-OR2RC7ZH.js → chunk-THQ5ZBWP.js} +2 -2
  132. package/dist/cli/chunks/{chunk-W37WY3OL.js → chunk-TU5S33SD.js} +2 -2
  133. package/dist/cli/chunks/{chunk-4FP4PJ45.js → chunk-U5GGDJ44.js} +2 -2
  134. package/dist/cli/chunks/{chunk-VOAXVNO5.js → chunk-UGER2PGN.js} +4 -4
  135. package/dist/cli/chunks/{chunk-5R26MAMK.js → chunk-UUFLYBUO.js} +2 -2
  136. package/dist/cli/chunks/{chunk-UQFMQOZB.js → chunk-UWM4CCK7.js} +1 -1
  137. package/dist/cli/chunks/{chunk-C75V5PTW.js → chunk-V2T7QEPV.js} +1 -1
  138. package/dist/cli/chunks/{chunk-PIYDPOW6.js → chunk-VE5STFDP.js} +2 -2
  139. package/dist/cli/chunks/{chunk-75CFWCQV.js → chunk-VNRWJ5JZ.js} +2 -2
  140. package/dist/cli/chunks/{chunk-PD2ZSCEH.js → chunk-VRV7CXEM.js} +1 -1
  141. package/dist/cli/chunks/{chunk-IN5KRJSE.js → chunk-W7H46LAX.js} +1 -1
  142. package/dist/cli/chunks/{chunk-TCYSMSBO.js → chunk-WAELEQP5.js} +2 -2
  143. package/dist/cli/chunks/{chunk-OU3SYEYJ.js → chunk-WDDU4I5Z.js} +1 -1
  144. package/dist/cli/chunks/{chunk-XLP44YGX.js → chunk-WLY2J6JP.js} +2 -2
  145. package/dist/cli/chunks/{chunk-GGZB2ZBB.js → chunk-WSSFH23M.js} +1 -1
  146. package/dist/cli/chunks/{chunk-II2RP3MY.js → chunk-WZI2REDL.js} +2 -2
  147. package/dist/cli/chunks/{chunk-6VNUASTQ.js → chunk-X53GJW2E.js} +2 -2
  148. package/dist/cli/chunks/{chunk-QENUKXPP.js → chunk-XACF7ZLM.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VZO4V4R4.js → chunk-XNGYWOAK.js} +2 -2
  150. package/dist/cli/chunks/{chunk-KO3UQYGY.js → chunk-YFD6K7AS.js} +75 -75
  151. package/dist/cli/chunks/{chunk-TFFEB7XD.js → chunk-YG45ZONW.js} +2 -2
  152. package/dist/cli/chunks/{chunk-6GNVVQW3.js → chunk-YGMCRJSC.js} +2 -2
  153. package/dist/cli/chunks/{chunk-Z6FK7T7J.js → chunk-YIEMVVUH.js} +2 -2
  154. package/dist/cli/chunks/{chunk-OF7674H5.js → chunk-YSWI3APU.js} +2 -2
  155. package/dist/cli/chunks/{chunk-CTNDSP2M.js → chunk-YU4U3BUY.js} +1 -1
  156. package/dist/cli/chunks/{chunk-SFRYDGLF.js → chunk-Z5YNYVFO.js} +1 -1
  157. package/dist/cli/chunks/{chunk-IVZA5XTW.js → chunk-ZE3WS57T.js} +2 -2
  158. package/dist/cli/chunks/{chunk-KZAVYHH7.js → chunk-ZMA5OWIQ.js} +4 -4
  159. package/dist/cli/chunks/{chunk-TM6LLT4G.js → chunk-ZOD37GNG.js} +3 -3
  160. package/dist/cli/chunks/{chunk-GRMKN44A.js → chunk-ZQ7XQLLV.js} +3 -3
  161. package/dist/cli/chunks/{chunk-ITQCSIYG.js → chunk-ZUIPUO7Q.js} +1 -1
  162. package/dist/cli/chunks/{chunk-PRHLV6FS.js → chunk-ZWLFEZQC.js} +1 -1
  163. package/dist/cli/chunks/{ci-DK4FGREO.js → ci-IRCNFD32.js} +2 -2
  164. package/dist/cli/chunks/{ci-output-HQBBQQES.js → ci-output-NFOUNDJ2.js} +2 -2
  165. package/dist/cli/chunks/{circuit-breaker-MJCS46DN.js → circuit-breaker-GB7SQRD2.js} +2 -2
  166. package/dist/cli/chunks/{claude-flow-setup-IIQT52H4.js → claude-flow-setup-STFKPPVL.js} +2 -2
  167. package/dist/cli/chunks/client-M4WF22UT.js +2 -0
  168. package/dist/cli/chunks/{cline-installer-7SPKUNNZ.js → cline-installer-MLKKIHIV.js} +2 -2
  169. package/dist/cli/chunks/{code-V2B4FP3X.js → code-ZRCJC42H.js} +2 -2
  170. package/dist/cli/chunks/{code-index-extractor-IRGAI76Y.js → code-index-extractor-VWDYYQY2.js} +2 -2
  171. package/dist/cli/chunks/{codex-installer-PDFCYRU6.js → codex-installer-I5BTWYQV.js} +2 -2
  172. package/dist/cli/chunks/{completions-TAJ6N7YZ.js → completions-5JCAFTQV.js} +2 -2
  173. package/dist/cli/chunks/{complexity-analyzer-JHQKQKBG.js → complexity-analyzer-6JLLAPGO.js} +2 -2
  174. package/dist/cli/chunks/{continuedev-installer-DESZXCLC.js → continuedev-installer-YBOLMUZR.js} +2 -2
  175. package/dist/cli/chunks/{copilot-installer-OQPXBLWS.js → copilot-installer-GDBJZBXS.js} +2 -2
  176. package/dist/cli/chunks/core-handlers-3MNFXL44.js +2 -0
  177. package/dist/cli/chunks/{cost-tracker-KHDFSCAJ.js → cost-tracker-NEAVGEZI.js} +2 -2
  178. package/dist/cli/chunks/{coverage-T7EENIDE.js → coverage-DXS5XNAA.js} +3 -3
  179. package/dist/cli/chunks/cross-domain-router-Q5X6ZLJY.js +2 -0
  180. package/dist/cli/chunks/{cursor-installer-X6BFU5QU.js → cursor-installer-3KEMFIFA.js} +2 -2
  181. package/dist/cli/chunks/{daemon-22NOG5XI.js → daemon-FT2J6VY4.js} +3 -3
  182. package/dist/cli/chunks/{daemon-UTPP4JCG.js → daemon-JN377KTA.js} +4 -4
  183. package/dist/cli/chunks/{dag-attention-scheduler-XI6DG3FW.js → dag-attention-scheduler-EJFEWFXI.js} +2 -2
  184. package/dist/cli/chunks/{detect-7IMQGJ5I.js → detect-E5MN6N3L.js} +2 -2
  185. package/dist/cli/chunks/{dist-node-YMLM4K7J.js → dist-node-ZFSAQMFD.js} +2 -2
  186. package/dist/cli/chunks/{domain-handler-LRTJGTEH.js → domain-handler-S7VFZ2MY.js} +2 -2
  187. package/dist/cli/chunks/{domain-transfer-HZJ3WUCT.js → domain-transfer-LGHT3FN4.js} +2 -2
  188. package/dist/cli/chunks/dream-5QB6JABW.js +2 -0
  189. package/dist/cli/chunks/{embed-and-insert-pattern-QSRN7Z5Q.js → embed-and-insert-pattern-OVQS6IKK.js} +2 -2
  190. package/dist/cli/chunks/{eval-JVVVQVV6.js → eval-45UWDD2R.js} +2 -2
  191. package/dist/cli/chunks/{experience-capture-middleware-ORZN3ROJ.js → experience-capture-middleware-XDRJSNPY.js} +3 -3
  192. package/dist/cli/chunks/{fast-paths-LUFARZR5.js → fast-paths-VEDCJL75.js} +2 -2
  193. package/dist/cli/chunks/{feature-flags-ZHQESXIP.js → feature-flags-NOTQVBLP.js} +2 -2
  194. package/dist/cli/chunks/{feature-flags-2XC4ECLW.js → feature-flags-TGA3NWVL.js} +2 -2
  195. package/dist/cli/chunks/file-discovery-AHMR6IGX.js +2 -0
  196. package/dist/cli/chunks/{fleet-FUQ6G4SB.js → fleet-CQBUCH2S.js} +3 -3
  197. package/dist/cli/chunks/{gnn-wrapper-A4E6OKGD.js → gnn-wrapper-SOZCIONJ.js} +2 -2
  198. package/dist/cli/chunks/{heartbeat-handler-3JKQORXA.js → heartbeat-handler-6XNV4DGM.js} +4 -4
  199. package/dist/cli/chunks/heartbeat-scheduler-ZRLIMPKO.js +2 -0
  200. package/dist/cli/chunks/hnsw-adapter-R4VAEQ2B.js +2 -0
  201. package/dist/cli/chunks/hnsw-index-GTUOS6DF.js +2 -0
  202. package/dist/cli/chunks/{hnsw-legacy-bridge-AHKFKM2J.js → hnsw-legacy-bridge-UILVP37N.js} +2 -2
  203. package/dist/cli/chunks/hnswlib-node-OHJQOSAH.js +2 -0
  204. package/dist/cli/chunks/{hooks-JNW5ZB2E.js → hooks-QVDOGEHG.js} +10 -10
  205. package/dist/cli/chunks/hybrid-router-CYEXFWDT.js +2 -0
  206. package/dist/cli/chunks/{hypergraph-engine-3DTAMNSJ.js → hypergraph-engine-YMVPBXZS.js} +2 -2
  207. package/dist/cli/chunks/{hypergraph-handler-ZV4AZRGF.js → hypergraph-handler-SHUNZXUK.js} +3 -3
  208. package/dist/cli/chunks/impact-analyzer-HMJ7LAXR.js +2 -0
  209. package/dist/cli/chunks/{init-handler-NPOUX47N.js → init-handler-JE5FYJAV.js} +12 -12
  210. package/dist/cli/chunks/init-wizard-OIK6S3PQ.js +2 -0
  211. package/dist/cli/chunks/kernel-NZCGR72Y.js +2 -0
  212. package/dist/cli/chunks/{kilocode-installer-D35TR6LG.js → kilocode-installer-TVP4YOOK.js} +2 -2
  213. package/dist/cli/chunks/{kiro-installer-OHHTQENO.js → kiro-installer-XBSGANX7.js} +2 -2
  214. package/dist/cli/chunks/knowledge-graph-HA7XW46B.js +2 -0
  215. package/dist/cli/chunks/{learning-24PCHLWU.js → learning-O4ZXQVRE.js} +3 -3
  216. package/dist/cli/chunks/{llm-router-XLTE52H5.js → llm-router-FXXJHARR.js} +4 -4
  217. package/dist/cli/chunks/llm-router-service-FVGQSXYC.js +2 -0
  218. package/dist/cli/chunks/{load-BHMK4FIL.js → load-IVF6G2SK.js} +2 -2
  219. package/dist/cli/chunks/load-test-IQTO35GE.js +2 -0
  220. package/dist/cli/chunks/{mcp-V4MAYT7C.js → mcp-VXSDVG3H.js} +2 -2
  221. package/dist/cli/chunks/{memory-PDA7MQ7E.js → memory-BINJV3M6.js} +5 -5
  222. package/dist/cli/chunks/memory-backend-YGSOJ7SI.js +2 -0
  223. package/dist/cli/chunks/{memory-handlers-X5BLXOSH.js → memory-handlers-BJNFJZFP.js} +2 -2
  224. package/dist/cli/chunks/{multi-model-executor-KECHOXKD.js → multi-model-executor-RJHYK6JI.js} +2 -2
  225. package/dist/cli/chunks/{opencode-installer-LWSCQOOZ.js → opencode-installer-VCTF5ETL.js} +2 -2
  226. package/dist/cli/chunks/{orchestrator-ENEBTEUW.js → orchestrator-5SKZ2BOK.js} +11 -11
  227. package/dist/cli/chunks/pattern-null-store-4WN5O2PF.js +2 -0
  228. package/dist/cli/chunks/{pattern-usage-recorder-XIHGXYZZ.js → pattern-usage-recorder-AY2DAOQO.js} +2 -2
  229. package/dist/cli/chunks/{pipeline-GQOJM3LU.js → pipeline-EMBMC75N.js} +2 -2
  230. package/dist/cli/chunks/{platform-L56TGXGZ.js → platform-GADIFXCI.js} +2 -2
  231. package/dist/cli/chunks/{plugin-SZ6PZKYX.js → plugin-Q234ZAAY.js} +2 -2
  232. package/dist/cli/chunks/{prime-radiant-advanced-wasm-SID5FQFW.js → prime-radiant-advanced-wasm-CXXKYB2P.js} +2 -2
  233. package/dist/cli/chunks/protocol-executor-EYTJXPXY.js +2 -0
  234. package/dist/cli/chunks/{protocol-handler-5MMNVVPX.js → protocol-handler-ZZRFBVNA.js} +2 -2
  235. package/dist/cli/chunks/{prove-DJ6BQ2AK.js → prove-7674ATXK.js} +2 -2
  236. package/dist/cli/chunks/provider-manager-TM3JHYLL.js +2 -0
  237. package/dist/cli/chunks/qe-reasoning-bank-6JLFP3HE.js +2 -0
  238. package/dist/cli/chunks/quality-QCIGVN2S.js +7 -0
  239. package/dist/cli/chunks/{quality-gate-CVHVSORK.js → quality-gate-AKV564GE.js} +3 -3
  240. package/dist/cli/chunks/queen-coordinator-OKGOKGHI.js +2 -0
  241. package/dist/cli/chunks/{real-embeddings-DN2MEJVM.js → real-embeddings-74POUVMX.js} +2 -2
  242. package/dist/cli/chunks/{roocode-installer-LTAQJWIH.js → roocode-installer-INBL5AG7.js} +2 -2
  243. package/dist/cli/chunks/router-J45OF4SP.js +2 -0
  244. package/dist/cli/chunks/routing-feedback-VTZFH57X.js +2 -0
  245. package/dist/cli/chunks/{routing-handler-PSWR2UCT.js → routing-handler-C7HMM7RL.js} +2 -2
  246. package/dist/cli/chunks/{ruvector-commands-VTP6Y7PN.js → ruvector-commands-PT6LRVCW.js} +2 -2
  247. package/dist/cli/chunks/{rvf-dual-writer-EBUMXPRO.js → rvf-dual-writer-PRKROTP3.js} +2 -2
  248. package/dist/cli/chunks/{rvf-migration-adapter-5N7GHMD3.js → rvf-migration-adapter-ZI2XW4UX.js} +2 -2
  249. package/dist/cli/chunks/{rvf-migration-coordinator-GQKDBNRR.js → rvf-migration-coordinator-5JTGP35V.js} +2 -2
  250. package/dist/cli/chunks/rvf-native-adapter-BDPUBFNP.js +2 -0
  251. package/dist/cli/chunks/{rvf-store-integrity-LR3SYGQK.js → rvf-store-integrity-3B5TZTFR.js} +2 -2
  252. package/dist/cli/chunks/safe-db-FHJBWJIB.js +2 -0
  253. package/dist/cli/chunks/schedule-LP7YYT4P.js +2 -0
  254. package/dist/cli/chunks/scheduler-BOZWGKJG.js +2 -0
  255. package/dist/cli/chunks/{security-YDWLYXYD.js → security-IMIWSAHW.js} +3 -3
  256. package/dist/cli/chunks/{shared-rvf-adapter-I3HQY7DE.js → shared-rvf-adapter-UDKJNX6I.js} +2 -2
  257. package/dist/cli/chunks/{shared-rvf-dual-writer-2UADEA5N.js → shared-rvf-dual-writer-FQOBQ6S5.js} +2 -2
  258. package/dist/cli/chunks/sqlite-persistence-TDM36AHF.js +2 -0
  259. package/dist/cli/chunks/{status-handler-QRHI3F4V.js → status-handler-7WON7M7F.js} +2 -2
  260. package/dist/cli/chunks/{structural-health-FWKE63CM.js → structural-health-JTKTO3A4.js} +2 -2
  261. package/dist/cli/chunks/{sync-2QRCT5MT.js → sync-6ABYTAOL.js} +2 -2
  262. package/dist/cli/chunks/{sync-E32MBAOF.js → sync-UJSHBY3B.js} +2 -2
  263. package/dist/cli/chunks/{task-handler-C7BKMOCL.js → task-handler-5TZNOCCB.js} +2 -2
  264. package/dist/cli/chunks/{task-handlers-PADWLLDO.js → task-handlers-G7ZUGBHM.js} +3 -3
  265. package/dist/cli/chunks/test-BSJ6MVTG.js +33 -0
  266. package/dist/cli/chunks/{test-scheduling-5WKIWH4H.js → test-scheduling-OSJJXIYQ.js} +3 -3
  267. package/dist/cli/chunks/{token-bootstrap-6SKOJM3U.js → token-bootstrap-MRNFR4YI.js} +2 -2
  268. package/dist/cli/chunks/{token-usage-V6JW55RV.js → token-usage-YQN7ND7G.js} +2 -2
  269. package/dist/cli/chunks/{transformers-3UPFBYSB.js → transformers-QL3AG25C.js} +2 -2
  270. package/dist/cli/chunks/{tree-sitter-wasm-parser-UCY4S2DU.js → tree-sitter-wasm-parser-BECZRRZP.js} +2 -2
  271. package/dist/cli/chunks/{types-XNMNQGET.js → types-FQSNLPWS.js} +2 -2
  272. package/dist/cli/chunks/unified-memory-6PHUOZRH.js +2 -0
  273. package/dist/cli/chunks/unified-memory-hnsw-WYSFH3PS.js +2 -0
  274. package/dist/cli/chunks/unified-persistence-QBGHDCCO.js +2 -0
  275. package/dist/cli/chunks/{upgrade-MVTMTOPL.js → upgrade-2ICXXV6D.js} +2 -2
  276. package/dist/cli/chunks/{validate-OJWR2AGZ.js → validate-LPAUH2F4.js} +2 -2
  277. package/dist/cli/chunks/{validate-swarm-2RGSF2K2.js → validate-swarm-VWVE2GM7.js} +2 -2
  278. package/dist/cli/chunks/{vibium-O3ZLAEEZ.js → vibium-U3LBEI4K.js} +2 -2
  279. package/dist/cli/chunks/visual-security-LH7DRCDS.js +2 -0
  280. package/dist/cli/chunks/{web-tree-sitter-6VPASTI4.js → web-tree-sitter-QGZXQPXU.js} +2 -2
  281. package/dist/cli/chunks/{windsurf-installer-CINHOW3N.js → windsurf-installer-GGLQJWUI.js} +2 -2
  282. package/dist/cli/chunks/witness-chain-2BDZOPJ2.js +2 -0
  283. package/dist/cli/chunks/{witness-chain-2NXW7FT7.js → witness-chain-47A2AXUS.js} +2 -2
  284. package/dist/cli/chunks/{witness-key-manager-ODW4DJWT.js → witness-key-manager-FVS7UOWM.js} +2 -2
  285. package/dist/cli/chunks/{workflow-BFGS2GAU.js → workflow-KIZPLTYW.js} +4 -4
  286. package/dist/cli/chunks/workflow-orchestrator-UYOPFK2T.js +2 -0
  287. package/dist/cli/chunks/{wrappers-VEVVSVMS.js → wrappers-ER6XCMT6.js} +2 -2
  288. package/dist/cli/commands/quality.d.ts +12 -0
  289. package/dist/cli/commands/quality.js +50 -74
  290. package/dist/cli/commands/test.js +33 -4
  291. package/dist/cli/handlers/init-handler.d.ts +2 -0
  292. package/dist/cli/handlers/init-handler.js +4 -1
  293. package/dist/cli/utils/file-discovery.d.ts +1 -0
  294. package/dist/cli/utils/file-discovery.js +13 -1
  295. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +5 -0
  296. package/dist/domains/quality-assessment/index.d.ts +1 -0
  297. package/dist/domains/quality-assessment/index.js +1 -0
  298. package/dist/domains/quality-assessment/quality-evidence.d.ts +41 -0
  299. package/dist/domains/quality-assessment/quality-evidence.js +115 -0
  300. package/dist/domains/test-execution/coordinator.d.ts +1 -0
  301. package/dist/domains/test-execution/coordinator.js +11 -4
  302. package/dist/domains/test-execution/interfaces.d.ts +2 -0
  303. package/dist/domains/test-execution/services/retry-handler.js +3 -3
  304. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  305. package/dist/domains/test-execution/services/test-executor.js +93 -30
  306. package/dist/domains/test-generation/gates/test-quality-gate.d.ts +8 -2
  307. package/dist/domains/test-generation/gates/test-quality-gate.js +93 -4
  308. package/dist/domains/test-generation/generators/base-test-generator.js +0 -15
  309. package/dist/domains/test-generation/generators/jest-vitest-generator.js +17 -26
  310. package/dist/domains/test-generation/services/test-generator.js +7 -2
  311. package/dist/init/orchestrator.js +1 -0
  312. package/dist/init/phases/07-hooks.js +3 -1
  313. package/dist/init/phases/phase-interface.d.ts +2 -0
  314. package/dist/init/settings-merge.d.ts +3 -1
  315. package/dist/init/settings-merge.js +9 -3
  316. package/dist/integrations/embeddings/index/HNSWIndex.js +2 -0
  317. package/dist/learning/real-embeddings.js +19 -3
  318. package/dist/mcp/bundle.js +453 -472
  319. package/dist/mcp/tools/quality-assessment/evaluate.d.ts +7 -0
  320. package/dist/mcp/tools/quality-assessment/evaluate.js +72 -20
  321. package/dist/mcp/tools/security-compliance/scan.js +8 -1
  322. package/package.json +2 -2
  323. package/dist/cli/chunks/adapter-JISQ35YY.js +0 -2
  324. package/dist/cli/chunks/aqe-learning-engine-TVTNP76S.js +0 -2
  325. package/dist/cli/chunks/base-WBCYKM45.js +0 -2
  326. package/dist/cli/chunks/better-sqlite3-FXJFG2WH.js +0 -2
  327. package/dist/cli/chunks/browser-workflow-4JM3IWCS.js +0 -2
  328. package/dist/cli/chunks/chunk-344CLTV7.js +0 -62
  329. package/dist/cli/chunks/chunk-CW7LDLJ2.js +0 -2
  330. package/dist/cli/chunks/chunk-HGBVGEUE.js +0 -2
  331. package/dist/cli/chunks/chunk-JJ5YIKTJ.js +0 -12
  332. package/dist/cli/chunks/chunk-QGH54HTH.js +0 -2
  333. package/dist/cli/chunks/chunk-YQI6SOUO.js +0 -2
  334. package/dist/cli/chunks/client-FNDZB4TY.js +0 -2
  335. package/dist/cli/chunks/core-handlers-S37RHLKP.js +0 -2
  336. package/dist/cli/chunks/cross-domain-router-7ZHDB2V3.js +0 -2
  337. package/dist/cli/chunks/dream-BEVYNIOO.js +0 -2
  338. package/dist/cli/chunks/file-discovery-UHXZQ7GS.js +0 -2
  339. package/dist/cli/chunks/heartbeat-scheduler-K4YLB3X4.js +0 -2
  340. package/dist/cli/chunks/hnsw-adapter-PPR3LTMA.js +0 -2
  341. package/dist/cli/chunks/hnsw-index-ZSKFT4LZ.js +0 -2
  342. package/dist/cli/chunks/hybrid-router-4SXBHTOY.js +0 -2
  343. package/dist/cli/chunks/impact-analyzer-55GE7EQD.js +0 -2
  344. package/dist/cli/chunks/init-wizard-EUQLSGI6.js +0 -2
  345. package/dist/cli/chunks/kernel-BSGSVYPM.js +0 -2
  346. package/dist/cli/chunks/knowledge-graph-OITIVT5J.js +0 -2
  347. package/dist/cli/chunks/llm-router-service-RUPU52AR.js +0 -2
  348. package/dist/cli/chunks/load-test-ZV3C55ZE.js +0 -2
  349. package/dist/cli/chunks/memory-backend-S3KCPHCF.js +0 -2
  350. package/dist/cli/chunks/pattern-null-store-ILVDKSCX.js +0 -2
  351. package/dist/cli/chunks/protocol-executor-GDRHCW3Q.js +0 -2
  352. package/dist/cli/chunks/provider-manager-BS4MVCSH.js +0 -2
  353. package/dist/cli/chunks/qe-reasoning-bank-P3ARGHDN.js +0 -2
  354. package/dist/cli/chunks/quality-WKC4JCB3.js +0 -7
  355. package/dist/cli/chunks/queen-coordinator-GI7GNVDM.js +0 -2
  356. package/dist/cli/chunks/router-YU6MLJBV.js +0 -2
  357. package/dist/cli/chunks/routing-feedback-D6B2SK5V.js +0 -2
  358. package/dist/cli/chunks/rvf-native-adapter-M7ZVRN5Z.js +0 -2
  359. package/dist/cli/chunks/safe-db-3OHTLXG7.js +0 -2
  360. package/dist/cli/chunks/schedule-H43ADREQ.js +0 -2
  361. package/dist/cli/chunks/scheduler-CGSXNEPJ.js +0 -2
  362. package/dist/cli/chunks/sqlite-persistence-V6U5FKVK.js +0 -2
  363. package/dist/cli/chunks/test-KX4UKHSX.js +0 -33
  364. package/dist/cli/chunks/unified-memory-H2J5BHPY.js +0 -2
  365. package/dist/cli/chunks/unified-memory-hnsw-LFGIWMTS.js +0 -2
  366. package/dist/cli/chunks/unified-persistence-F6W7EXU5.js +0 -2
  367. package/dist/cli/chunks/visual-security-EHVU32UE.js +0 -2
  368. package/dist/cli/chunks/witness-chain-BIICGRHC.js +0 -2
  369. package/dist/cli/chunks/workflow-orchestrator-PVTYPYY4.js +0 -2
@@ -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
@@ -0,0 +1,115 @@
1
+ export const QUALITY_EVIDENCE_NAMESPACE = 'quality-assessment';
2
+ export const DEFAULT_QUALITY_EVIDENCE_MAX_AGE_MS = 24 * 60 * 60 * 1000;
3
+ export const QUALITY_METRICS = [
4
+ 'coverage',
5
+ 'testsPassing',
6
+ 'criticalBugs',
7
+ 'codeSmells',
8
+ 'securityVulnerabilities',
9
+ 'technicalDebt',
10
+ 'duplications',
11
+ ];
12
+ export const DEFAULT_QUALITY_THRESHOLDS = {
13
+ coverage: { direction: 'min', value: 80, severity: 'high' },
14
+ testsPassing: { direction: 'min', value: 95, severity: 'critical' },
15
+ criticalBugs: { direction: 'max', value: 0, severity: 'critical' },
16
+ codeSmells: { direction: 'max', value: 20, severity: 'medium' },
17
+ securityVulnerabilities: { direction: 'max', value: 0, severity: 'critical' },
18
+ technicalDebt: { direction: 'max', value: 5, severity: 'medium' },
19
+ duplications: { direction: 'max', value: 5, severity: 'low' },
20
+ };
21
+ function evidenceKey(metric) {
22
+ return `quality-evidence:${metric}:latest`;
23
+ }
24
+ function parseMeasuredAt(measuredAt, now, maxAgeMs) {
25
+ if (typeof measuredAt !== 'string') {
26
+ throw new Error('Measured quality evidence is malformed: measuredAt is required.');
27
+ }
28
+ const timestamp = Date.parse(measuredAt);
29
+ if (!Number.isFinite(timestamp)) {
30
+ throw new Error('Measured quality evidence is malformed: measuredAt is invalid.');
31
+ }
32
+ if (timestamp > now + 60_000) {
33
+ throw new Error('Measured quality evidence is malformed: measuredAt is in the future.');
34
+ }
35
+ if (now - timestamp > maxAgeMs) {
36
+ throw new Error('Measured quality evidence is stale. Run the relevant quality analyzers again.');
37
+ }
38
+ return timestamp;
39
+ }
40
+ function validateRecord(record, metric, now, maxAgeMs) {
41
+ if (!record || typeof record !== 'object') {
42
+ throw new Error(`No measured quality evidence found for ${metric}.`);
43
+ }
44
+ const candidate = record;
45
+ if (candidate.schemaVersion !== 1
46
+ || candidate.metric !== metric
47
+ || !Number.isFinite(candidate.value)
48
+ || candidate.value < 0
49
+ || typeof candidate.source !== 'string'
50
+ || candidate.source.trim().length === 0) {
51
+ throw new Error(`Measured quality evidence for ${metric} is malformed or incomplete.`);
52
+ }
53
+ parseMeasuredAt(candidate.measuredAt, now, maxAgeMs);
54
+ }
55
+ export async function writeQualityEvidence(memory, values, metadata) {
56
+ const now = Date.now();
57
+ parseMeasuredAt(metadata.measuredAt, now, Number.POSITIVE_INFINITY);
58
+ if (metadata.source.trim().length === 0) {
59
+ throw new Error('Quality evidence source is required.');
60
+ }
61
+ for (const metric of QUALITY_METRICS) {
62
+ const value = values[metric];
63
+ if (value === undefined)
64
+ continue;
65
+ if (!Number.isFinite(value) || value < 0) {
66
+ throw new Error(`Quality evidence value for ${metric} must be a non-negative finite number.`);
67
+ }
68
+ const record = {
69
+ schemaVersion: 1,
70
+ metric,
71
+ value,
72
+ measuredAt: metadata.measuredAt,
73
+ source: metadata.source,
74
+ };
75
+ await memory.set(evidenceKey(metric), record, {
76
+ namespace: QUALITY_EVIDENCE_NAMESPACE,
77
+ persist: true,
78
+ });
79
+ }
80
+ }
81
+ export async function loadQualityEvidence(memory, options = {}) {
82
+ const now = options.now ?? Date.now();
83
+ const maxAgeMs = options.maxAgeMs ?? DEFAULT_QUALITY_EVIDENCE_MAX_AGE_MS;
84
+ const values = {};
85
+ for (const metric of QUALITY_METRICS) {
86
+ const record = await memory.get(evidenceKey(metric), {
87
+ namespace: QUALITY_EVIDENCE_NAMESPACE,
88
+ });
89
+ validateRecord(record, metric, now, maxAgeMs);
90
+ values[metric] = record.value;
91
+ }
92
+ return values;
93
+ }
94
+ export function evaluateQualityEvidence(values) {
95
+ const checks = QUALITY_METRICS.map((name) => {
96
+ const threshold = DEFAULT_QUALITY_THRESHOLDS[name];
97
+ const value = values[name];
98
+ return {
99
+ name,
100
+ value,
101
+ threshold: threshold.value,
102
+ direction: threshold.direction,
103
+ severity: threshold.severity,
104
+ passed: threshold.direction === 'min' ? value >= threshold.value : value <= threshold.value,
105
+ };
106
+ });
107
+ return {
108
+ passed: checks.every((check) => check.passed),
109
+ checks,
110
+ recommendations: checks
111
+ .filter((check) => !check.passed)
112
+ .map((check) => `${check.name} failed its measured ${check.direction} threshold.`),
113
+ };
114
+ }
115
+ //# sourceMappingURL=quality-evidence.js.map
@@ -20,6 +20,7 @@ import type { WeakVertex } from '../../coordination/mincut/interfaces';
20
20
  import { BaseDomainCoordinator, type BaseDomainCoordinatorConfig } from '../base-domain-coordinator.js';
21
21
  import type { InfraHealingOrchestrator } from '../../strange-loop/infra-healing/infra-healing-orchestrator.js';
22
22
  import { type TestNode, type TestOptimizationResult } from './services/mincut-test-optimizer.js';
23
+ export declare function calculateRetryStrategyConfidence(testCount: number): number;
23
24
  /**
24
25
  * Configuration for the test execution coordinator
25
26
  */
@@ -16,6 +16,12 @@ import { createDomainFinding, } from '../../coordination/consensus/domain-findin
16
16
  import { BaseDomainCoordinator, } from '../base-domain-coordinator.js';
17
17
  import { toError } from '../../shared/error-utils.js';
18
18
  import { createMinCutTestOptimizer, } from './services/mincut-test-optimizer.js';
19
+ // ============================================================================
20
+ // Coordinator Configuration
21
+ // ============================================================================
22
+ export function calculateRetryStrategyConfidence(testCount) {
23
+ return Math.min(1, 0.7 + (testCount / 100));
24
+ }
19
25
  const DEFAULT_COORDINATOR_CONFIG = {
20
26
  simulateForTesting: false,
21
27
  enablePrioritization: true,
@@ -127,9 +133,11 @@ export class TestExecutionCoordinator extends BaseDomainCoordinator {
127
133
  failed: 0, skipped: 0, duration: 0, failedTests: [],
128
134
  });
129
135
  }
130
- const framework = this.detectFramework(testsToRun);
136
+ const framework = request.framework ?? this.detectFramework(testsToRun);
131
137
  const workers = request.workers ?? Math.min(4, Math.max(1, testsToRun.length));
132
- const timeout = request.timeout ?? 60000;
138
+ // Batched runners own internal parallelism, so the timeout applies to the
139
+ // whole discovered suite rather than one file.
140
+ const timeout = request.timeout ?? Math.max(60000, testsToRun.length * 2000);
133
141
  // Use parallel execution by default (unless explicitly disabled)
134
142
  if (request.parallel !== false && testsToRun.length > 1) {
135
143
  const result = await this.executeParallel({
@@ -473,8 +481,7 @@ export class TestExecutionCoordinator extends BaseDomainCoordinator {
473
481
  testCount: testsToRetry.length,
474
482
  maxRetries: request.maxRetries,
475
483
  backoffType: request.backoff ?? 'exponential',
476
- }, 0.7 + (testsToRetry.length / 100) // Higher confidence for larger batches
477
- );
484
+ }, calculateRetryStrategyConfidence(testsToRetry.length));
478
485
  if (!isStrategyVerified) {
479
486
  logger.warn(`Retry strategy not verified, proceeding with reduced retries`);
480
487
  request = { ...request, maxRetries: Math.max(1, Math.floor(request.maxRetries / 2)) };
@@ -37,6 +37,8 @@ export type TestExecutionAPI = ITestExecutionAPI;
37
37
  export interface ISimpleTestRequest {
38
38
  /** Test files to execute */
39
39
  testFiles: string[];
40
+ /** Explicit test framework; auto-detected when omitted */
41
+ framework?: string;
40
42
  /** Run tests in parallel (default: true) */
41
43
  parallel?: boolean;
42
44
  /** Number of retry attempts for failed tests (default: 0) */
@@ -339,7 +339,7 @@ export class RetryHandlerService {
339
339
  // vitest run --reporter=json testFile -t "testName"
340
340
  {
341
341
  const vitestArgs = ['vitest', 'run', '--reporter=json', testFile];
342
- if (testName) {
342
+ if (testName && testName !== testFile) {
343
343
  vitestArgs.push('-t', testName);
344
344
  }
345
345
  return { command: npx, args: vitestArgs };
@@ -348,7 +348,7 @@ export class RetryHandlerService {
348
348
  // jest --json testFile -t "testName"
349
349
  {
350
350
  const jestArgs = ['jest', '--json', '--testPathPattern', testFile];
351
- if (testName) {
351
+ if (testName && testName !== testFile) {
352
352
  jestArgs.push('-t', testName);
353
353
  }
354
354
  return { command: npx, args: jestArgs };
@@ -357,7 +357,7 @@ export class RetryHandlerService {
357
357
  // mocha --reporter json testFile --grep "testName"
358
358
  {
359
359
  const mochaArgs = ['mocha', '--reporter', 'json', testFile];
360
- if (testName) {
360
+ if (testName && testName !== testFile) {
361
361
  mochaArgs.push('--grep', testName);
362
362
  }
363
363
  return { command: npx, args: mochaArgs };
@@ -105,6 +105,7 @@ export declare class TestExecutorService implements ITestExecutionService {
105
105
  private validateParallelRequest;
106
106
  private runTests;
107
107
  private executeTestFile;
108
+ private executeTestFiles;
108
109
  /**
109
110
  * Spawn actual test runner process (vitest, jest, mocha)
110
111
  */
@@ -117,6 +118,10 @@ export declare class TestExecutorService implements ITestExecutionService {
117
118
  * Parse test runner output to extract results
118
119
  */
119
120
  private parseTestOutput;
121
+ /**
122
+ * Parse the TAP or spec summary emitted by Node's built-in test runner.
123
+ */
124
+ private parseNodeTestOutput;
120
125
  /**
121
126
  * Parse vitest JSON output
122
127
  */