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
@@ -214,16 +214,6 @@ ${importStatement}
214
214
  code += ` expect(() => instance.${method.name}(${paramsWithUndefined})).toThrow();\n`;
215
215
  code += ` });\n`;
216
216
  }
217
- else {
218
- // Use try-catch to handle both throwing (TypeError from property access) and non-throwing
219
- code += `\n it('should handle undefined ${param.name}', ${asyncPrefix}() => {\n`;
220
- code += ` try {\n`;
221
- code += ` ${method.isAsync ? 'await ' : ''}instance.${method.name}(${paramsWithUndefined});\n`;
222
- code += ` } catch (e) {\n`;
223
- code += ` expect(e).toBeInstanceOf(Error);\n`;
224
- code += ` }\n`;
225
- code += ` });\n`;
226
- }
227
217
  }
228
218
  }
229
219
  code += ` });\n\n`;
@@ -235,9 +225,10 @@ ${importStatement}
235
225
  generateStubTests(context) {
236
226
  const { moduleName, importPath, testType, patterns, dependencies, similarCode } = context;
237
227
  const patternComment = this.generatePatternComment(patterns);
238
- const basicOpsTest = this.generateBasicOpsTest(moduleName, patterns);
239
- const edgeCaseTest = this.generateEdgeCaseTest(moduleName, patterns);
240
- const errorHandlingTest = this.generateErrorHandlingTest(moduleName, patterns);
228
+ const moduleIdentifier = 'moduleUnderTest';
229
+ const basicOpsTest = this.generateBasicOpsTest(moduleIdentifier, patterns);
230
+ const edgeCaseTest = this.generateEdgeCaseTest(moduleIdentifier, patterns);
231
+ const errorHandlingTest = this.generateErrorHandlingTest(moduleIdentifier, patterns);
241
232
  // KG: Generate mock declarations for external (non-relative) dependencies only
242
233
  let mockDeclarations = '';
243
234
  if (dependencies && dependencies.imports.length > 0) {
@@ -264,9 +255,9 @@ ${importStatement}
264
255
  if (dependencies && dependencies.imports.length > 0) {
265
256
  depTest += `\n it('should interact with dependencies correctly', () => {\n`;
266
257
  depTest += ` // KG-informed: module depends on ${dependencies.imports.length} imports\n`;
267
- depTest += ` const instance = typeof ${moduleName} === 'function'\n`;
268
- depTest += ` ? new ${moduleName}()\n`;
269
- depTest += ` : ${moduleName};\n`;
258
+ depTest += ` const instance = typeof ${moduleIdentifier} === 'function'\n`;
259
+ depTest += ` ? new ${moduleIdentifier}()\n`;
260
+ depTest += ` : ${moduleIdentifier};\n`;
270
261
  depTest += ` expect(instance).toBeDefined();\n`;
271
262
  depTest += ` });\n`;
272
263
  }
@@ -275,21 +266,21 @@ ${importStatement}
275
266
  if (dependencies && dependencies.importedBy.length > 0) {
276
267
  callerTest += `\n it('should expose stable API for ${dependencies.importedBy.length} consumers', () => {\n`;
277
268
  callerTest += ` // KG-informed: used by ${dependencies.importedBy.slice(0, 3).join(', ')}\n`;
278
- callerTest += ` const publicKeys = Object.keys(typeof ${moduleName} === 'function'\n`;
279
- callerTest += ` ? ${moduleName}.prototype || {}\n`;
280
- callerTest += ` : ${moduleName});\n`;
269
+ callerTest += ` const publicKeys = Object.keys(typeof ${moduleIdentifier} === 'function'\n`;
270
+ callerTest += ` ? ${moduleIdentifier}.prototype || {}\n`;
271
+ callerTest += ` : ${moduleIdentifier});\n`;
281
272
  callerTest += ` expect(publicKeys.length).toBeGreaterThan(0);\n`;
282
273
  callerTest += ` });\n`;
283
274
  }
284
275
  const stubImportSource = this.framework === 'vitest' ? 'vitest' : '@jest/globals';
285
276
  const stubMockImport = this.framework === 'vitest' ? ', vi' : ', jest';
286
- return `${patternComment}import { describe, it, expect, beforeEach${stubMockImport} } from '${stubImportSource}';
287
- import { ${moduleName} } from '${importPath}';
288
- ${mockDeclarations}
289
- describe('${moduleName}', () => {
290
- ${similarityComment} describe('${testType} tests', () => {
291
- it('should be defined', () => {
292
- expect(${moduleName}).toBeDefined();
277
+ return `${patternComment}import { describe, it, expect, beforeEach${stubMockImport} } from '${stubImportSource}';
278
+ import * as ${moduleIdentifier} from '${importPath}';
279
+ ${mockDeclarations}
280
+ describe('${moduleName}', () => {
281
+ ${similarityComment} describe('${testType} tests', () => {
282
+ it('should be defined', () => {
283
+ expect(${moduleIdentifier}).toBeDefined();
293
284
  });
294
285
 
295
286
  ${basicOpsTest}
@@ -20,6 +20,7 @@ import { TestDataGeneratorService } from './test-data-generator';
20
20
  import { toError } from '../../../shared/error-utils.js';
21
21
  import { safeJsonParse } from '../../../shared/safe-json.js';
22
22
  import { TestQualityGate } from '../gates/index.js';
23
+ import { getGeneratedTestSyntaxIssues } from '../gates/test-quality-gate.js';
23
24
  import { EdgeCaseInjector } from '../pattern-injection/index.js';
24
25
  import { treeSitterRegistry } from '../../../shared/parsers/multi-language-parser.js';
25
26
  import { getLanguageFromExtension } from '../../../shared/types/test-frameworks.js';
@@ -127,7 +128,7 @@ export class TestGeneratorService {
127
128
  * Enhance generated test code using LLM
128
129
  * Adds edge cases, improves assertions, and adds documentation
129
130
  */
130
- async enhanceTestWithLLM(testCode, sourceCode, analysis, context) {
131
+ async enhanceTestWithLLM(testCode, sourceCode, analysis, sourceFilePath, context) {
131
132
  if (!this.llmRouter)
132
133
  return { code: testCode, enhanced: false };
133
134
  try {
@@ -202,6 +203,10 @@ Return ONLY the enhanced test code, no explanations.`,
202
203
  if (codeMatch) {
203
204
  enhancedCode = codeMatch[1].trim();
204
205
  }
206
+ if (getGeneratedTestSyntaxIssues(enhancedCode, sourceFilePath).length > 0) {
207
+ logger.warn('LLM enhancement produced invalid syntax, using deterministic template');
208
+ return { code: testCode, enhanced: false };
209
+ }
205
210
  // #567: only claim enhancement when the model actually returned code.
206
211
  // An empty/unusable response falls back to the template, and the caller
207
212
  // must be told that is what happened.
@@ -465,7 +470,7 @@ Return a JSON array of test suggestions, each with: { "name": "test name", "desc
465
470
  // report AI-enhanced output it did not produce.
466
471
  let llmEnhanced = false;
467
472
  if (this.isLLMEnhancementAvailable() && sourceContent) {
468
- const result = await this.enhanceTestWithLLM(testCode, sourceContent, codeAnalysis, context);
473
+ const result = await this.enhanceTestWithLLM(testCode, sourceContent, codeAnalysis, sourceFile, context);
469
474
  testCode = result.code;
470
475
  llmEnhanced = result.enhanced;
471
476
  }
@@ -51,6 +51,7 @@ export class ModularInitOrchestrator {
51
51
  noGovernance: options.noGovernance,
52
52
  noMcp: options.noMcp,
53
53
  noClaude: options.noClaude,
54
+ noStatusLine: options.noStatusLine,
54
55
  memoryBackend: options.memoryBackend,
55
56
  },
56
57
  config: {},
@@ -85,7 +85,9 @@ export class HooksPhase extends BasePhase {
85
85
  // - statusLine / includeCoAuthoredBy preserved when user-set (#362 follow-up)
86
86
  // - AQE-owned sections deep-merged so user additions survive
87
87
  const v3Sections = generateV3SettingsSections(config, projectRoot);
88
- applyV3Sections(settings, v3Sections);
88
+ applyV3Sections(settings, v3Sections, {
89
+ statusLine: !context.options.noStatusLine,
90
+ });
89
91
  // Enable MCP servers (deduplicate, replace old 'aqe' with 'agentic-qe')
90
92
  let existingMcp = settings.enabledMcpjsonServers || [];
91
93
  // Remove legacy 'aqe' entry if present (renamed to 'agentic-qe')
@@ -139,6 +139,8 @@ export interface InitOptions {
139
139
  * unchanged. Pairs naturally with `--no-database`.
140
140
  */
141
141
  noClaude?: boolean;
142
+ /** Skip AQE's Claude Code status line and remove a previously AQE-owned one. */
143
+ noStatusLine?: boolean;
142
144
  /** @deprecated Use default behavior instead — MCP is now enabled by default */
143
145
  withMcp?: boolean;
144
146
  /**
@@ -70,7 +70,9 @@ export declare function isAqeStatusLine(statusLine: unknown): boolean;
70
70
  *
71
71
  * Mutates and returns `settings`.
72
72
  */
73
- export declare function applyV3Sections(settings: Record<string, unknown>, sections: Record<string, unknown>): Record<string, unknown>;
73
+ export declare function applyV3Sections(settings: Record<string, unknown>, sections: Record<string, unknown>, options?: {
74
+ statusLine?: boolean;
75
+ }): Record<string, unknown>;
74
76
  /**
75
77
  * Generate v3-specific settings sections for settings.json.
76
78
  * These sections enable the self-learning system, status line, and permissions.
@@ -173,7 +173,7 @@ function isPlainObject(value) {
173
173
  *
174
174
  * Mutates and returns `settings`.
175
175
  */
176
- export function applyV3Sections(settings, sections) {
176
+ export function applyV3Sections(settings, sections, options = {}) {
177
177
  for (const [key, value] of Object.entries(sections)) {
178
178
  if (key === '_aqePermissions') {
179
179
  const existingPerms = settings.permissions || {};
@@ -182,6 +182,14 @@ export function applyV3Sections(settings, sections) {
182
182
  settings.permissions = { ...existingPerms, allow: merged };
183
183
  }
184
184
  else if (key === 'statusLine') {
185
+ if (options.statusLine === false) {
186
+ // Opting out removes only AQE-owned configuration. A status line from
187
+ // the user or another tool remains outside AQE's ownership boundary.
188
+ if (isAqeStatusLine(settings.statusLine)) {
189
+ delete settings.statusLine;
190
+ }
191
+ continue;
192
+ }
185
193
  // Preserve a user's (or another tool's) custom status line.
186
194
  if (settings.statusLine === undefined || isAqeStatusLine(settings.statusLine)) {
187
195
  settings.statusLine = value;
@@ -215,8 +223,6 @@ export function generateV3SettingsSections(config, projectRoot) {
215
223
  statusLine: {
216
224
  type: 'command',
217
225
  command: 'sh -c \'node "${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/statusline-v3.cjs" 2>/dev/null || echo "▊ Agentic QE v3"\'',
218
- refreshMs: 5000,
219
- enabled: true,
220
226
  },
221
227
  // permissions are union-merged in 07-hooks.ts — not set here to avoid overwriting user entries (#362)
222
228
  _aqePermissions: [
@@ -112,6 +112,7 @@ export declare class ExperienceReplay {
112
112
  private db;
113
113
  private prepared;
114
114
  private initialized;
115
+ private initializationPromise;
115
116
  private hnswIndex;
116
117
  private idToExperienceId;
117
118
  private experienceIdToHnswId;
@@ -124,6 +125,7 @@ export declare class ExperienceReplay {
124
125
  * Initialize with SQLite persistence
125
126
  */
126
127
  initialize(): Promise<void>;
128
+ private initializeOnce;
127
129
  /**
128
130
  * Ensure required schema exists.
129
131
  * Uses captured_experiences as the canonical table (written by experience-capture-middleware).
@@ -59,6 +59,7 @@ export class ExperienceReplay {
59
59
  db = null;
60
60
  prepared = new Map();
61
61
  initialized = false;
62
+ initializationPromise = null;
62
63
  // Real HNSW index for O(log n) similarity search (150x-12,500x faster than linear scan)
63
64
  hnswIndex;
64
65
  // Mapping from HNSW numeric IDs to experience string IDs
@@ -95,6 +96,19 @@ export class ExperienceReplay {
95
96
  async initialize() {
96
97
  if (this.initialized)
97
98
  return;
99
+ if (this.initializationPromise)
100
+ return this.initializationPromise;
101
+ this.initializationPromise = this.initializeOnce();
102
+ try {
103
+ await this.initializationPromise;
104
+ }
105
+ catch (error) {
106
+ // Allow a later caller to retry after a failed initialization.
107
+ this.initializationPromise = null;
108
+ throw error;
109
+ }
110
+ }
111
+ async initializeOnce() {
98
112
  this.unifiedMemory = getUnifiedMemory();
99
113
  await this.unifiedMemory.initialize();
100
114
  this.db = this.unifiedMemory.getDatabase();
@@ -9,6 +9,8 @@
9
9
  *
10
10
  * @module integrations/embeddings/index/HNSWIndex
11
11
  */
12
+ import { createRequire } from 'node:module';
13
+ const require = createRequire(import.meta.url);
12
14
  let cachedHnswlibCtor = null;
13
15
  function loadHnswlibConstructor() {
14
16
  if (cachedHnswlibCtor)
@@ -123,7 +123,7 @@ export declare class HybridMemoryBackend implements MemoryBackend {
123
123
  * Vector similarity search
124
124
  * Now uses unified memory's persistent vector storage
125
125
  */
126
- vectorSearch(embedding: number[], k: number): Promise<VectorSearchResult[]>;
126
+ vectorSearch(embedding: number[], k: number, keyPrefix?: string): Promise<VectorSearchResult[]>;
127
127
  /**
128
128
  * Store vector embedding
129
129
  * Now persists to unified memory.db
@@ -154,9 +154,9 @@ export class HybridMemoryBackend {
154
154
  * Vector similarity search
155
155
  * Now uses unified memory's persistent vector storage
156
156
  */
157
- async vectorSearch(embedding, k) {
157
+ async vectorSearch(embedding, k, keyPrefix) {
158
158
  this.ensureInitialized();
159
- const results = await this.unifiedMemory.vectorSearch(embedding, k);
159
+ const results = await this.unifiedMemory.vectorSearch(embedding, k, undefined, keyPrefix);
160
160
  // Convert to VectorSearchResult format
161
161
  return results.map(r => ({
162
162
  key: r.id,
@@ -215,8 +215,8 @@ export interface MemoryBackend extends Initializable, Disposable {
215
215
  has(key: string, options?: RetrieveOptions): Promise<boolean>;
216
216
  /** Search by pattern (`options.namespace` mirrors `get`). */
217
217
  search(pattern: string, limit?: number, options?: RetrieveOptions): Promise<string[]>;
218
- /** Vector similarity search (HNSW) */
219
- vectorSearch(embedding: number[], k: number): Promise<VectorSearchResult[]>;
218
+ /** Vector similarity search (HNSW), optionally scoped by logical key prefix. */
219
+ vectorSearch(embedding: number[], k: number, keyPrefix?: string): Promise<VectorSearchResult[]>;
220
220
  /** Store vector embedding */
221
221
  storeVector(key: string, embedding: number[], metadata?: unknown): Promise<void>;
222
222
  /**
@@ -14,7 +14,7 @@ export declare class InMemoryBackend implements MemoryBackend {
14
14
  delete(key: string, options?: RetrieveOptions): Promise<boolean>;
15
15
  has(key: string, options?: RetrieveOptions): Promise<boolean>;
16
16
  search(pattern: string, limit?: number, options?: RetrieveOptions): Promise<string[]>;
17
- vectorSearch(embedding: number[], k: number): Promise<VectorSearchResult[]>;
17
+ vectorSearch(embedding: number[], k: number, keyPrefix?: string): Promise<VectorSearchResult[]>;
18
18
  storeVector(key: string, embedding: number[], metadata?: unknown): Promise<void>;
19
19
  private buildKey;
20
20
  private cleanup;
@@ -76,9 +76,11 @@ export class InMemoryBackend {
76
76
  }
77
77
  return results;
78
78
  }
79
- async vectorSearch(embedding, k) {
79
+ async vectorSearch(embedding, k, keyPrefix) {
80
80
  const results = [];
81
81
  for (const [key, entry] of this.vectors.entries()) {
82
+ if (keyPrefix && !key.startsWith(keyPrefix))
83
+ continue;
82
84
  const score = cosineSimilarity(embedding, entry.embedding);
83
85
  results.push({ key, score, metadata: entry.metadata });
84
86
  }
@@ -157,7 +157,7 @@ export declare class UnifiedMemoryManager {
157
157
  metadata?: unknown;
158
158
  } | undefined>;
159
159
  vectorDelete(id: string): Promise<boolean>;
160
- vectorSearch(query: number[], k?: number, namespace?: string): Promise<Array<{
160
+ vectorSearch(query: number[], k?: number, namespace?: string, keyPrefix?: string): Promise<Array<{
161
161
  id: string;
162
162
  score: number;
163
163
  metadata?: unknown;
@@ -733,12 +733,24 @@ export class UnifiedMemoryManager {
733
733
  this.vectorIndex.remove(id);
734
734
  return result.changes > 0;
735
735
  }
736
- async vectorSearch(query, k = 10, namespace) {
736
+ async vectorSearch(query, k = 10, namespace, keyPrefix) {
737
737
  this.ensureInitialized();
738
738
  if (!this.vectorsLoaded) {
739
739
  await this.loadVectorIndex();
740
740
  }
741
- const results = this.vectorIndex.search(query, k * 2);
741
+ // Logical namespaces are encoded in vector ids (`namespace:key`), while
742
+ // the vectors table namespace identifies the physical backend. Widen the
743
+ // ANN query until enough logical matches are found so global top-K results
744
+ // cannot hide a valid namespaced hit.
745
+ const indexSize = this.vectorIndex.size();
746
+ let candidateCount = Math.min(indexSize, Math.max(k * 2, 1));
747
+ let results = this.vectorIndex.search(query, candidateCount);
748
+ while (keyPrefix &&
749
+ results.filter(result => result.id.startsWith(keyPrefix)).length < k &&
750
+ candidateCount < indexSize) {
751
+ candidateCount = Math.min(indexSize, candidateCount * 2);
752
+ results = this.vectorIndex.search(query, candidateCount);
753
+ }
742
754
  if (results.length === 0)
743
755
  return [];
744
756
  const ids = results.map(r => r.id);
@@ -749,7 +761,7 @@ export class UnifiedMemoryManager {
749
761
  const filteredResults = [];
750
762
  for (const result of results) {
751
763
  const row = metadataMap.get(result.id);
752
- if (row && row.namespace === namespace) {
764
+ if (row && row.namespace === namespace && (!keyPrefix || result.id.startsWith(keyPrefix))) {
753
765
  filteredResults.push({
754
766
  id: result.id, score: result.score,
755
767
  metadata: row.metadata ? safeJsonParse(row.metadata) : undefined,
@@ -760,7 +772,10 @@ export class UnifiedMemoryManager {
760
772
  }
761
773
  return filteredResults;
762
774
  }
763
- return results.slice(0, k).map(result => {
775
+ const scopedResults = keyPrefix
776
+ ? results.filter(result => result.id.startsWith(keyPrefix)).slice(0, k)
777
+ : results.slice(0, k);
778
+ return scopedResults.map(result => {
764
779
  const row = metadataMap.get(result.id);
765
780
  return {
766
781
  id: result.id, score: result.score,
@@ -137,7 +137,7 @@ async function initializeModel(config = {}) {
137
137
  catch {
138
138
  throw new Error('In-process embeddings require the optional package "@huggingface/transformers", ' +
139
139
  'which is not installed. Either run `npm install @huggingface/transformers`, or ' +
140
- 'configure an embedding endpoint (EmbeddingConfig.endpoint / AQE_EMBEDDING_ENDPOINT) ' +
140
+ 'configure an embedding endpoint (EmbeddingConfig.endpoint / AQE_EMBEDDER_ENDPOINT) ' +
141
141
  'so no local model is loaded.');
142
142
  }
143
143
  pipeline = transformers.pipeline;
@@ -237,6 +237,22 @@ export async function computeBatchEmbeddings(texts, config = {}) {
237
237
  const uncachedTexts = [];
238
238
  const uncachedIndices = [];
239
239
  const results = new Array(texts.length).fill(null);
240
+ // Match computeRealEmbedding(): non-semantic inputs are represented by a
241
+ // zero vector and must never reach the model or its cache (#585).
242
+ const semanticIndices = [];
243
+ for (let i = 0; i < texts.length; i++) {
244
+ if (isNonSemanticText(texts[i])) {
245
+ results[i] = new Array(getEmbeddingDimension()).fill(0);
246
+ }
247
+ else {
248
+ semanticIndices.push(i);
249
+ }
250
+ }
251
+ // Preserve the single-item API's no-initialization behavior when every
252
+ // input is non-semantic.
253
+ if (semanticIndices.length === 0) {
254
+ return results;
255
+ }
240
256
  // Init BEFORE cache lookup so the cache key namespace is stable.
241
257
  if (!embeddingModel) {
242
258
  await initializeModel(config);
@@ -245,7 +261,7 @@ export async function computeBatchEmbeddings(texts, config = {}) {
245
261
  throw new Error('Embedding model failed to initialize');
246
262
  }
247
263
  if (fullConfig.enableCache) {
248
- for (let i = 0; i < texts.length; i++) {
264
+ for (const i of semanticIndices) {
249
265
  const cached = embeddingCache.get(cacheKey(texts[i]));
250
266
  if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
251
267
  results[i] = cached.embedding;
@@ -257,8 +273,8 @@ export async function computeBatchEmbeddings(texts, config = {}) {
257
273
  }
258
274
  }
259
275
  else {
260
- uncachedTexts.push(...texts);
261
- for (let i = 0; i < texts.length; i++) {
276
+ for (const i of semanticIndices) {
277
+ uncachedTexts.push(texts[i]);
262
278
  uncachedIndices.push(i);
263
279
  }
264
280
  }
@@ -224,8 +224,9 @@ export declare class SQLitePatternStore {
224
224
  };
225
225
  /**
226
226
  * Backfill embeddings for patterns that don't have them.
227
- * Uses real all-MiniLM-L6-v2 transformer embeddings via @xenova/transformers.
228
- * Falls back to hash-based embeddings if ONNX is unavailable.
227
+ * Uses real all-MiniLM-L6-v2 transformer embeddings via @huggingface/transformers
228
+ * or the configured external endpoint. Refuses hash proxies because mixing
229
+ * embedding spaces makes semantic retrieval results invalid.
229
230
  * Skips bench/test patterns (id LIKE 'bench-%').
230
231
  *
231
232
  * @param batchSize - Patterns per inference batch (default: 32, matches model batch size)
@@ -923,8 +923,9 @@ export class SQLitePatternStore {
923
923
  }
924
924
  /**
925
925
  * Backfill embeddings for patterns that don't have them.
926
- * Uses real all-MiniLM-L6-v2 transformer embeddings via @xenova/transformers.
927
- * Falls back to hash-based embeddings if ONNX is unavailable.
926
+ * Uses real all-MiniLM-L6-v2 transformer embeddings via @huggingface/transformers
927
+ * or the configured external endpoint. Refuses hash proxies because mixing
928
+ * embedding spaces makes semantic retrieval results invalid.
928
929
  * Skips bench/test patterns (id LIKE 'bench-%').
929
930
  *
930
931
  * @param batchSize - Patterns per inference batch (default: 32, matches model batch size)
@@ -957,7 +958,7 @@ export class SQLitePatternStore {
957
958
  let processed = 0;
958
959
  let skipped = 0;
959
960
  let errors = 0;
960
- let method = 'transformer';
961
+ const method = 'transformer';
961
962
  // Process in batches: compute embeddings async, then insert in sync transaction
962
963
  for (let i = 0; i < patternsWithout.length; i += batchSize) {
963
964
  const batch = patternsWithout.slice(i, i + batchSize);
@@ -996,11 +997,9 @@ export class SQLitePatternStore {
996
997
  throw new Error(`[SQLitePatternStore] external embedder endpoint failed during backfill; ` +
997
998
  `aborting to protect HNSW index. Original error: ${toErrorMessage(e)}`);
998
999
  }
999
- // In-process transformer path: hash fallback is acceptable because the
1000
- // entire index in this mode is hash-based anyway.
1001
- console.warn(`[SQLitePatternStore] Transformer unavailable, falling back to hash embeddings: ${toErrorMessage(e)}`);
1002
- method = 'hash-fallback';
1003
- embeddings = textsWithIds.map(t => hashEmbedding(t.text, dimension));
1000
+ throw new Error(`[SQLitePatternStore] semantic embedding unavailable; refusing to write hash proxies. ` +
1001
+ `Install @huggingface/transformers or configure AQE_EMBEDDER_ENDPOINT. ` +
1002
+ `Original error: ${toErrorMessage(e)}`);
1004
1003
  }
1005
1004
  // Insert computed embeddings in a sync transaction
1006
1005
  const embeddingTag = method === 'transformer' ? 'transformer-backfill' : 'hash-backfill';