agentic-qe 3.15.6 → 3.15.8

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 (441) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +263 -0
  3. package/README.md +2 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +8 -6
  6. package/dist/cli/chunks/adapter-FC4EY447.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-SY7UCLBL.js → agent-booster-wasm-W3V5P7LE.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-KAMYBU3S.js → agent-handler-2NQFHAWE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-2CAW3KUM.js → agent-memory-branch-457ECHHK.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +2 -0
  11. package/dist/cli/chunks/{arena-QCCVIOAH.js → arena-IYBQ3GPY.js} +4 -4
  12. package/dist/cli/chunks/{arena-4OFLJ3R2.js → arena-JV3WSEHU.js} +2 -2
  13. package/dist/cli/chunks/{audit-RBDQJQJB.js → audit-5OS3T3K6.js} +3 -3
  14. package/dist/cli/chunks/base-2XML4WH7.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-5JRACCDQ.js → better-sqlite3-IQKBFVAO.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-W4QIIRT4.js → brain-handler-KA3SGAFM.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-IBNGI572.js → branch-enumerator-QZDU2VOQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-GMSCVAOI.js → browser-ZL7OLKJQ.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +2 -0
  20. package/dist/cli/chunks/{chunk-6HWARQWV.js → chunk-22DOS3PM.js} +2 -2
  21. package/dist/cli/chunks/{chunk-VCONCVSY.js → chunk-2DPHFCMW.js} +2 -2
  22. package/dist/cli/chunks/{chunk-ALCIUWFC.js → chunk-2GSAAUW3.js} +1 -1
  23. package/dist/cli/chunks/{chunk-AX26QJ6T.js → chunk-2JCLACCS.js} +2 -2
  24. package/dist/cli/chunks/{chunk-7XTANLTN.js → chunk-2QRGIEQV.js} +1 -1
  25. package/dist/cli/chunks/{chunk-MP3FSUNB.js → chunk-2UN4JOTN.js} +2 -2
  26. package/dist/cli/chunks/{chunk-CR66HNAE.js → chunk-2ZRNXEVI.js} +1 -1
  27. package/dist/cli/chunks/{chunk-WKDWRRDT.js → chunk-3LFLO2WK.js} +2 -2
  28. package/dist/cli/chunks/{chunk-QLYO3H7E.js → chunk-3N627QRU.js} +2 -2
  29. package/dist/cli/chunks/{chunk-VVF337SV.js → chunk-4C3RYBTT.js} +2 -2
  30. package/dist/cli/chunks/{chunk-MQCTLTGE.js → chunk-4C7KE2EL.js} +2 -2
  31. package/dist/cli/chunks/{chunk-AUN4FG7V.js → chunk-4GUVVGJX.js} +1 -1
  32. package/dist/cli/chunks/{chunk-ZOUEQ6DL.js → chunk-4GYFONJB.js} +1 -1
  33. package/dist/cli/chunks/{chunk-24ZSGYC6.js → chunk-4I35ARWW.js} +1 -1
  34. package/dist/cli/chunks/{chunk-6MXAJBEA.js → chunk-4NTLGGXO.js} +1 -1
  35. package/dist/cli/chunks/{chunk-EF5UHDCG.js → chunk-4TZLZRZ4.js} +1 -1
  36. package/dist/cli/chunks/{chunk-RD5BYLN7.js → chunk-4YUBWU3E.js} +1 -1
  37. package/dist/cli/chunks/{chunk-7TVIX4WL.js → chunk-52YRSWPS.js} +2 -2
  38. package/dist/cli/chunks/{chunk-LAY7NCQK.js → chunk-5DZDLOY6.js} +3 -3
  39. package/dist/cli/chunks/{chunk-34MDMFET.js → chunk-5MBNRTT5.js} +2 -2
  40. package/dist/cli/chunks/{chunk-VAYZ5QIE.js → chunk-5ONJ7AV6.js} +1 -1
  41. package/dist/cli/chunks/{chunk-RV6HSMKJ.js → chunk-5YOO5QSE.js} +1 -1
  42. package/dist/cli/chunks/{chunk-BUTGIVKW.js → chunk-62T7U25U.js} +1 -1
  43. package/dist/cli/chunks/{chunk-66NW3ZB4.js → chunk-6CKTLVYV.js} +2 -2
  44. package/dist/cli/chunks/{chunk-TUDENMAE.js → chunk-6E7EOHMN.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GVRFSXY6.js → chunk-6GIC2263.js} +2 -2
  46. package/dist/cli/chunks/{chunk-KIDOBLUO.js → chunk-767SR7WH.js} +2 -2
  47. package/dist/cli/chunks/{chunk-NBUXM5X6.js → chunk-7C6FMLQR.js} +2 -2
  48. package/dist/cli/chunks/{chunk-4POOJYXA.js → chunk-7CVMT64N.js} +1 -1
  49. package/dist/cli/chunks/{chunk-R363XXGH.js → chunk-7DHSHD5B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-IEPWO4XP.js → chunk-7H3GNRNA.js} +2 -2
  51. package/dist/cli/chunks/{chunk-DQNUPEY5.js → chunk-7SLEUVPZ.js} +2 -2
  52. package/dist/cli/chunks/{chunk-YNG7E26C.js → chunk-7XGM7Q2N.js} +2 -2
  53. package/dist/cli/chunks/{chunk-5MT7DMD7.js → chunk-A2UGPKCS.js} +2 -2
  54. package/dist/cli/chunks/{chunk-2CIDFR2H.js → chunk-A6GCO6ZU.js} +2 -2
  55. package/dist/cli/chunks/{chunk-XFPQIWEH.js → chunk-BEVWCF3Q.js} +3 -3
  56. package/dist/cli/chunks/{chunk-LCCTJ2PC.js → chunk-BLZEOGQE.js} +2 -2
  57. package/dist/cli/chunks/{chunk-6R3FBFCJ.js → chunk-BQUIZ5QT.js} +2 -2
  58. package/dist/cli/chunks/{chunk-ZUTFHGEO.js → chunk-BTMEOZYY.js} +1 -1
  59. package/dist/cli/chunks/{chunk-FU7LNUD7.js → chunk-CDLG3Q2O.js} +2 -2
  60. package/dist/cli/chunks/{chunk-NYS2GUNO.js → chunk-CQ3SBRDP.js} +2 -2
  61. package/dist/cli/chunks/chunk-CQ5G64EA.js +3 -0
  62. package/dist/cli/chunks/{chunk-JCE76MPP.js → chunk-CRUQ6RXU.js} +2 -2
  63. package/dist/cli/chunks/{chunk-XBFQJZWX.js → chunk-D4IBIMWI.js} +2 -2
  64. package/dist/cli/chunks/{chunk-LZWJ5BMP.js → chunk-D4O3TJI7.js} +2 -2
  65. package/dist/cli/chunks/{chunk-AUOSHM63.js → chunk-DAFMHM64.js} +2 -2
  66. package/dist/cli/chunks/{chunk-V3OLS2NG.js → chunk-DCYUHCPK.js} +2 -2
  67. package/dist/cli/chunks/{chunk-F7A2UBZO.js → chunk-DKFSCJEF.js} +2 -2
  68. package/dist/cli/chunks/{chunk-5LST62QR.js → chunk-DN3AKAPY.js} +2 -2
  69. package/dist/cli/chunks/{chunk-OQ4S6B7P.js → chunk-DY37YMMQ.js} +1 -1
  70. package/dist/cli/chunks/{chunk-XQ53PZEF.js → chunk-EUVSSIGR.js} +3 -3
  71. package/dist/cli/chunks/{chunk-6WOZUSSN.js → chunk-FAYXES7R.js} +2 -2
  72. package/dist/cli/chunks/{chunk-GNYOHZVV.js → chunk-FEN2DHFM.js} +1 -1
  73. package/dist/cli/chunks/{chunk-BAYGQRNP.js → chunk-FEPFXXI7.js} +2 -2
  74. package/dist/cli/chunks/{chunk-DLSFT6PO.js → chunk-FJAO4UX2.js} +2 -2
  75. package/dist/cli/chunks/{chunk-22OZIJAD.js → chunk-FWXNFPLS.js} +2 -2
  76. package/dist/cli/chunks/{chunk-X33F7NXH.js → chunk-G6CLO74Q.js} +3 -3
  77. package/dist/cli/chunks/{chunk-HAN4MS5T.js → chunk-G77Q22EN.js} +2 -2
  78. package/dist/cli/chunks/{chunk-5DH5QI7G.js → chunk-GENNJRNK.js} +3 -3
  79. package/dist/cli/chunks/{chunk-LMAEMVPA.js → chunk-GGSTLKY5.js} +1 -1
  80. package/dist/cli/chunks/{chunk-EJ4KZFZN.js → chunk-GSOK4M6V.js} +1 -1
  81. package/dist/cli/chunks/{chunk-DA7DGDTI.js → chunk-HI6OBDDY.js} +2 -2
  82. package/dist/cli/chunks/{chunk-XZ46CI35.js → chunk-HNGNRIZZ.js} +2 -2
  83. package/dist/cli/chunks/{chunk-CLAMMGY3.js → chunk-HXCGV5UJ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-5UPIL62W.js → chunk-I4U7YCXG.js} +3 -3
  85. package/dist/cli/chunks/{chunk-RFDFET3O.js → chunk-I77D65X5.js} +2 -2
  86. package/dist/cli/chunks/{chunk-HEGGV2PT.js → chunk-IJSFZO7P.js} +2 -2
  87. package/dist/cli/chunks/{chunk-GWM4M5NF.js → chunk-IMSRWNWF.js} +1 -1
  88. package/dist/cli/chunks/{chunk-B7RHBKHL.js → chunk-J6LL25QJ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-KYVIOC3C.js → chunk-J7FLNP5L.js} +2 -2
  90. package/dist/cli/chunks/{chunk-YLNYPQDR.js → chunk-J7RCI25Q.js} +1 -1
  91. package/dist/cli/chunks/{chunk-72MQCZSM.js → chunk-JFWQFB3S.js} +2 -2
  92. package/dist/cli/chunks/{chunk-SV5BUYHH.js → chunk-JLTGO5BB.js} +2 -2
  93. package/dist/cli/chunks/{chunk-CCL436IU.js → chunk-JWPYMRIX.js} +14 -6
  94. package/dist/cli/chunks/{chunk-ONPPBLRB.js → chunk-K4N2MBCE.js} +2 -2
  95. package/dist/cli/chunks/{chunk-7SAMMQVS.js → chunk-K5R3WUJP.js} +1 -1
  96. package/dist/cli/chunks/{chunk-GI5HWS4H.js → chunk-KITKQUBX.js} +1 -1
  97. package/dist/cli/chunks/{chunk-7TJZDRDU.js → chunk-KJNUETCB.js} +1 -1
  98. package/dist/cli/chunks/{chunk-JYKQVYX2.js → chunk-KMVFBYJO.js} +2 -2
  99. package/dist/cli/chunks/{chunk-ZSBD4FUX.js → chunk-KMZW2P3R.js} +2 -2
  100. package/dist/cli/chunks/{chunk-PEMSXSP2.js → chunk-KNHLOANK.js} +2 -2
  101. package/dist/cli/chunks/{chunk-47Q7JL3V.js → chunk-KNQUHGNY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-A7ANPS4E.js → chunk-KVMKYUOE.js} +2 -2
  103. package/dist/cli/chunks/{chunk-XBEI2JBA.js → chunk-LHRVSK44.js} +2 -2
  104. package/dist/cli/chunks/{chunk-AJT3XDRD.js → chunk-LPSMVBB3.js} +2 -2
  105. package/dist/cli/chunks/{chunk-ORBODZSO.js → chunk-LVHZK7GW.js} +2 -2
  106. package/dist/cli/chunks/{chunk-ZTB32K5N.js → chunk-LZWBUVCK.js} +3 -3
  107. package/dist/cli/chunks/{chunk-OPDZBRIL.js → chunk-MMY52Y6R.js} +2 -2
  108. package/dist/cli/chunks/{chunk-MQTA6KIO.js → chunk-MUDBF2JC.js} +1 -1
  109. package/dist/cli/chunks/{chunk-GFB6BZWU.js → chunk-MV4S3TEC.js} +2 -2
  110. package/dist/cli/chunks/{chunk-UB6DQGWM.js → chunk-NF63NHJH.js} +2 -2
  111. package/dist/cli/chunks/{chunk-D5N2O5EH.js → chunk-NHOMVBCI.js} +2 -2
  112. package/dist/cli/chunks/{chunk-3NJ7O3OH.js → chunk-NLYUC63R.js} +2 -2
  113. package/dist/cli/chunks/{chunk-4CLDYT36.js → chunk-NQDYOF35.js} +2 -2
  114. package/dist/cli/chunks/{chunk-ORFL3YXB.js → chunk-NW7HTOSN.js} +2 -2
  115. package/dist/cli/chunks/{chunk-FQ5N666N.js → chunk-NWFBF3KT.js} +1 -1
  116. package/dist/cli/chunks/{chunk-P7DXVL2S.js → chunk-NZATJ2C6.js} +2 -2
  117. package/dist/cli/chunks/{chunk-HOEWMEF2.js → chunk-O4RRVTXN.js} +2 -2
  118. package/dist/cli/chunks/{chunk-4KOVHQXK.js → chunk-OCLAMZJG.js} +2 -2
  119. package/dist/cli/chunks/{chunk-TLUIO37P.js → chunk-OJWEZYLR.js} +2 -2
  120. package/dist/cli/chunks/{chunk-A74J23QB.js → chunk-OWBFVAEH.js} +2 -2
  121. package/dist/cli/chunks/{chunk-6T6AHVLF.js → chunk-P2EA62YS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-TL5GV3PR.js → chunk-P4UT4LBE.js} +3 -3
  123. package/dist/cli/chunks/{chunk-IVJIHZSM.js → chunk-PICEGWGB.js} +1 -1
  124. package/dist/cli/chunks/{chunk-ITIJ23K2.js → chunk-PIEKGKW6.js} +2 -2
  125. package/dist/cli/chunks/{chunk-2ZTWPMTK.js → chunk-PJGQ2TKN.js} +2 -2
  126. package/dist/cli/chunks/{chunk-KCB6P463.js → chunk-PPIM7B5G.js} +2 -2
  127. package/dist/cli/chunks/{chunk-L2TDHJR3.js → chunk-PUYQ6EKC.js} +2 -2
  128. package/dist/cli/chunks/{chunk-2IWPJUVV.js → chunk-PWA6XBW4.js} +8 -8
  129. package/dist/cli/chunks/{chunk-XPB5BVU6.js → chunk-PZ7FJ4UG.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SOSJWM3E.js → chunk-QFYUZYRA.js} +4 -4
  131. package/dist/cli/chunks/{chunk-RUTO67PT.js → chunk-R2NHGESM.js} +2 -2
  132. package/dist/cli/chunks/{chunk-K55EAWZ5.js → chunk-RG42LDOB.js} +2 -2
  133. package/dist/cli/chunks/{chunk-JAPBSSFY.js → chunk-RSMPJWQH.js} +1 -1
  134. package/dist/cli/chunks/{chunk-46HBVDMU.js → chunk-SFPGLUXS.js} +1 -1
  135. package/dist/cli/chunks/{chunk-TVLOED6O.js → chunk-SHEVM5PF.js} +2 -2
  136. package/dist/cli/chunks/{chunk-6RDVY26I.js → chunk-SJMZZMHP.js} +2 -2
  137. package/dist/cli/chunks/{chunk-3DJNKNBR.js → chunk-ST7ASEJO.js} +57 -57
  138. package/dist/cli/chunks/{chunk-QS5KZYUZ.js → chunk-SWY6KGMF.js} +2 -2
  139. package/dist/cli/chunks/{chunk-UHHMAKPE.js → chunk-T2TDTBFV.js} +1 -1
  140. package/dist/cli/chunks/{chunk-5HAPS6VD.js → chunk-TC52M542.js} +2 -2
  141. package/dist/cli/chunks/chunk-TMNEK7TP.js +2 -0
  142. package/dist/cli/chunks/{chunk-ELI4GDQO.js → chunk-U3BWBP6B.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CZBIREL5.js → chunk-U7CIY3YR.js} +2 -2
  144. package/dist/cli/chunks/{chunk-X2DR27AY.js → chunk-UDCYQLTD.js} +2 -2
  145. package/dist/cli/chunks/{chunk-CEXNW5TR.js → chunk-UKKFZJME.js} +1 -1
  146. package/dist/cli/chunks/{chunk-5NC7QEJ6.js → chunk-UQLAN5TX.js} +4 -4
  147. package/dist/cli/chunks/{chunk-BIXRTOH3.js → chunk-UTFMMZ57.js} +3 -3
  148. package/dist/cli/chunks/{chunk-YXU35GGD.js → chunk-UTNKMPTC.js} +1 -1
  149. package/dist/cli/chunks/{chunk-HZFK2Z2Z.js → chunk-V4QJ3MMT.js} +1 -1
  150. package/dist/cli/chunks/{chunk-LJCEDTUM.js → chunk-V7VZSNDK.js} +3 -3
  151. package/dist/cli/chunks/{chunk-RLB7K7QP.js → chunk-VKFVJCIH.js} +1 -1
  152. package/dist/cli/chunks/{chunk-5GIJU2ZY.js → chunk-VQRBBR27.js} +2 -2
  153. package/dist/cli/chunks/{chunk-Q2RBOC7V.js → chunk-VVK4ECVJ.js} +2 -2
  154. package/dist/cli/chunks/{chunk-624QRKQX.js → chunk-VWRNG3UK.js} +1 -1
  155. package/dist/cli/chunks/{chunk-F3KS3TAB.js → chunk-VWSGWYRB.js} +2 -2
  156. package/dist/cli/chunks/{chunk-I7WAW7TM.js → chunk-W5A36V3Z.js} +2 -2
  157. package/dist/cli/chunks/chunk-WAWKAYPY.js +2 -0
  158. package/dist/cli/chunks/{chunk-NMY4KTWA.js → chunk-WLXGUQOZ.js} +2 -2
  159. package/dist/cli/chunks/{chunk-7VTKR44N.js → chunk-X3HM7SV4.js} +2 -2
  160. package/dist/cli/chunks/chunk-X6VYQVUM.js +2 -0
  161. package/dist/cli/chunks/{chunk-ZL5LJT7D.js → chunk-X7ZQIFES.js} +2 -2
  162. package/dist/cli/chunks/{chunk-5VUIXDY2.js → chunk-XOOBLZXR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-L4D3TPFP.js → chunk-XZQVC3GD.js} +1 -1
  164. package/dist/cli/chunks/{chunk-BO7UFNYV.js → chunk-Y5ZBF7MA.js} +2 -2
  165. package/dist/cli/chunks/{chunk-ULCHPPW2.js → chunk-YNQPHRUZ.js} +1 -1
  166. package/dist/cli/chunks/{chunk-ZCP4P6O2.js → chunk-YRH7KMTU.js} +2 -2
  167. package/dist/cli/chunks/{chunk-QLKUCMZC.js → chunk-YTYS2XSY.js} +1 -1
  168. package/dist/cli/chunks/{chunk-JPJEAK4G.js → chunk-YUP3APSN.js} +1 -1
  169. package/dist/cli/chunks/{chunk-BXATKI5S.js → chunk-YVWMJZ6O.js} +2 -2
  170. package/dist/cli/chunks/{chunk-PS6WFCA4.js → chunk-Z3LDUPLQ.js} +2 -2
  171. package/dist/cli/chunks/{chunk-FOJRPEIP.js → chunk-ZBI7PJFX.js} +2 -2
  172. package/dist/cli/chunks/{chunk-NHRF3V4B.js → chunk-ZG7UKWBB.js} +2 -2
  173. package/dist/cli/chunks/{chunk-7XUB7U6Z.js → chunk-ZOHS32SI.js} +2 -2
  174. package/dist/cli/chunks/{chunk-RHIQ6QO5.js → chunk-ZOVAZTXE.js} +430 -430
  175. package/dist/cli/chunks/{chunk-7QVPMH25.js → chunk-ZWMFKZEQ.js} +2 -2
  176. package/dist/cli/chunks/{ci-GEJCXMBK.js → ci-7NUCRGWO.js} +2 -2
  177. package/dist/cli/chunks/{ci-config-2ZVV4OXL.js → ci-config-VQVECCFI.js} +2 -2
  178. package/dist/cli/chunks/{ci-output-E45OGVPR.js → ci-output-P7GQ6TKF.js} +2 -2
  179. package/dist/cli/chunks/{circuit-breaker-X73ITYZC.js → circuit-breaker-5YP6N6HE.js} +2 -2
  180. package/dist/cli/chunks/{claude-flow-setup-W4PPH46C.js → claude-flow-setup-W5H7CMU6.js} +2 -2
  181. package/dist/cli/chunks/client-RFUSQRUZ.js +2 -0
  182. package/dist/cli/chunks/{cline-installer-NUEPMWDE.js → cline-installer-OYANSZ54.js} +2 -2
  183. package/dist/cli/chunks/{code-6WQHBS7G.js → code-OMT4UEZI.js} +3 -3
  184. package/dist/cli/chunks/{code-index-extractor-BXQIFIFT.js → code-index-extractor-M2JEWKNF.js} +2 -2
  185. package/dist/cli/chunks/{codex-installer-Z337R2KH.js → codex-installer-YBS6N5O3.js} +2 -2
  186. package/dist/cli/chunks/{completions-F5DMYFHV.js → completions-U7GS5RG6.js} +2 -2
  187. package/dist/cli/chunks/{complexity-analyzer-W2SYPZDI.js → complexity-analyzer-QSXPIUIU.js} +2 -2
  188. package/dist/cli/chunks/{continuedev-installer-ZCHUIFTN.js → continuedev-installer-W5TTT743.js} +2 -2
  189. package/dist/cli/chunks/{copilot-installer-M5JNODXF.js → copilot-installer-KC2RT24C.js} +2 -2
  190. package/dist/cli/chunks/core-handlers-ZC7QB432.js +2 -0
  191. package/dist/cli/chunks/{cost-tracker-LSYTHBHV.js → cost-tracker-OQPVR6V4.js} +2 -2
  192. package/dist/cli/chunks/{coverage-PGMRS5SS.js → coverage-TCO2A2NX.js} +3 -3
  193. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +2 -0
  194. package/dist/cli/chunks/{cursor-installer-XPUA73UW.js → cursor-installer-MH7GWD4L.js} +2 -2
  195. package/dist/cli/chunks/daemon-JER6HE2J.js +12 -0
  196. package/dist/cli/chunks/{daemon-ITKDIYMW.js → daemon-UJEARJZ2.js} +3 -3
  197. package/dist/cli/chunks/{dag-attention-scheduler-T55AXLD6.js → dag-attention-scheduler-F3SUJU5O.js} +2 -2
  198. package/dist/cli/chunks/{detect-DR7J6K4O.js → detect-5QTCRB32.js} +2 -2
  199. package/dist/cli/chunks/{dist-node-LAJJBOUT.js → dist-node-XKZPHDBO.js} +2 -2
  200. package/dist/cli/chunks/{domain-handler-OMSHCRMK.js → domain-handler-V3UEADKW.js} +2 -2
  201. package/dist/cli/chunks/{domain-plugins-EQXSKC5K.js → domain-plugins-7PES4UHZ.js} +2 -2
  202. package/dist/cli/chunks/{domain-transfer-FKRAGVSW.js → domain-transfer-NF7UJW7B.js} +2 -2
  203. package/dist/cli/chunks/dream-VALD726W.js +2 -0
  204. package/dist/cli/chunks/{embed-and-insert-pattern-JZFPCNL3.js → embed-and-insert-pattern-D2HWORHF.js} +2 -2
  205. package/dist/cli/chunks/{eval-JSNNASBW.js → eval-UF2UBAUC.js} +2 -2
  206. package/dist/cli/chunks/{experience-capture-middleware-UPD3IZBK.js → experience-capture-middleware-2OUCEHHM.js} +3 -3
  207. package/dist/cli/chunks/{fast-paths-YNMIBS2E.js → fast-paths-KV5DKKHC.js} +2 -2
  208. package/dist/cli/chunks/{feature-flags-SRLXDKBI.js → feature-flags-6YWMTNO5.js} +2 -2
  209. package/dist/cli/chunks/{feature-flags-VIR7O4L7.js → feature-flags-MTW6NMR3.js} +2 -2
  210. package/dist/cli/chunks/file-discovery-VL73ASNI.js +2 -0
  211. package/dist/cli/chunks/{fleet-K2ED46EL.js → fleet-GJ66QFXK.js} +3 -3
  212. package/dist/cli/chunks/{gnn-wrapper-QCU4ZRYW.js → gnn-wrapper-52V6ANOY.js} +2 -2
  213. package/dist/cli/chunks/{heartbeat-handler-YYQI4WZM.js → heartbeat-handler-X7NHNRC7.js} +4 -4
  214. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +2 -0
  215. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +2 -0
  216. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +2 -0
  217. package/dist/cli/chunks/{hnsw-legacy-bridge-C5TJSWTZ.js → hnsw-legacy-bridge-DZBE3KMK.js} +2 -2
  218. package/dist/cli/chunks/{hnswlib-node-SE3MJJYS.js → hnswlib-node-2AWWUJAZ.js} +2 -2
  219. package/dist/cli/chunks/{hooks-C572SRDH.js → hooks-XLPVROL3.js} +10 -10
  220. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +2 -0
  221. package/dist/cli/chunks/{hypergraph-engine-35A6G3M5.js → hypergraph-engine-6TI7YP6P.js} +2 -2
  222. package/dist/cli/chunks/{hypergraph-handler-U2756CWI.js → hypergraph-handler-DBIBBOXS.js} +3 -3
  223. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +2 -0
  224. package/dist/cli/chunks/init-guard-OSO6MIDD.js +2 -0
  225. package/dist/cli/chunks/init-handler-7S7IHMUF.js +88 -0
  226. package/dist/cli/chunks/init-wizard-VH34J4TL.js +2 -0
  227. package/dist/cli/chunks/kernel-KJD24NO7.js +2 -0
  228. package/dist/cli/chunks/{kilocode-installer-32PX5YH7.js → kilocode-installer-2KBRFXMA.js} +2 -2
  229. package/dist/cli/chunks/{kiro-installer-C4ROMMUS.js → kiro-installer-5VFR4OQZ.js} +2 -2
  230. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +2 -0
  231. package/dist/cli/chunks/{learning-GEPVZGJQ.js → learning-G5NHL3DV.js} +20 -20
  232. package/dist/cli/chunks/{llm-router-XRKTTJTX.js → llm-router-4EAPPMHS.js} +4 -4
  233. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +2 -0
  234. package/dist/cli/chunks/{load-XVH6HW7E.js → load-UYMZPEY6.js} +2 -2
  235. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +2 -0
  236. package/dist/cli/chunks/{mcp-IULSTM4Z.js → mcp-NOTDZBW5.js} +2 -2
  237. package/dist/cli/chunks/{memory-6K7IAU4T.js → memory-QL53YIHP.js} +5 -5
  238. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +2 -0
  239. package/dist/cli/chunks/{memory-handlers-CG6DRLAW.js → memory-handlers-YFFYRSM6.js} +2 -2
  240. package/dist/cli/chunks/{multi-model-executor-VZDUYPLX.js → multi-model-executor-PDDDXF2B.js} +2 -2
  241. package/dist/cli/chunks/{opencode-installer-QUTXKNH4.js → opencode-installer-75D2SKOT.js} +2 -2
  242. package/dist/cli/chunks/{orchestrator-PCKKUWOP.js → orchestrator-3WIZBV4T.js} +5 -5
  243. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +2 -0
  244. package/dist/cli/chunks/{pattern-usage-recorder-PX5HQVRL.js → pattern-usage-recorder-TEX2JGHA.js} +2 -2
  245. package/dist/cli/chunks/{pipeline-O562GTOG.js → pipeline-7ATPA6LU.js} +2 -2
  246. package/dist/cli/chunks/{platform-PM7Q2AZS.js → platform-WPSKRJE7.js} +2 -2
  247. package/dist/cli/chunks/{plugin-OTYTFGPY.js → plugin-UUFOVVMU.js} +2 -2
  248. package/dist/cli/chunks/{prime-radiant-advanced-wasm-6CFXTHC2.js → prime-radiant-advanced-wasm-PDFSYWKZ.js} +2 -2
  249. package/dist/cli/chunks/project-root-SRTA6TBL.js +2 -0
  250. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +2 -0
  251. package/dist/cli/chunks/{protocol-handler-PPGNSAOS.js → protocol-handler-3VRYRIQB.js} +2 -2
  252. package/dist/cli/chunks/{prove-WQ3BKRZG.js → prove-2NAUROGF.js} +2 -2
  253. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +2 -0
  254. package/dist/cli/chunks/{quality-C5WUU3AA.js → quality-ZIEI2WGA.js} +2 -2
  255. package/dist/cli/chunks/{quality-gate-WSSRKD5U.js → quality-gate-KWJO4SWQ.js} +3 -3
  256. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +2 -0
  257. package/dist/cli/chunks/{real-embeddings-CFQE7IRQ.js → real-embeddings-TSZ4UIAE.js} +2 -2
  258. package/dist/cli/chunks/{ref-validation-DHKHXVZT.js → ref-validation-DWFFRETJ.js} +2 -2
  259. package/dist/cli/chunks/{roocode-installer-3PPODABV.js → roocode-installer-XTZHLUBO.js} +2 -2
  260. package/dist/cli/chunks/router-AUD4GATI.js +2 -0
  261. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +2 -0
  262. package/dist/cli/chunks/{routing-handler-JNXTGT6T.js → routing-handler-GG525TDM.js} +2 -2
  263. package/dist/cli/chunks/{ruvector-commands-6YLROPVP.js → ruvector-commands-QKRJDM7Z.js} +2 -2
  264. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +2 -0
  265. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +2 -0
  266. package/dist/cli/chunks/{rvf-migration-coordinator-4DWB4WRK.js → rvf-migration-coordinator-FF52OS6Q.js} +2 -2
  267. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +2 -0
  268. package/dist/cli/chunks/{rvf-store-integrity-YKR2ZNBF.js → rvf-store-integrity-M6DXTAZ4.js} +2 -2
  269. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +2 -0
  270. package/dist/cli/chunks/schedule-44OSMGE5.js +2 -0
  271. package/dist/cli/chunks/scheduler-V3HO2QQT.js +2 -0
  272. package/dist/cli/chunks/security-EHXSW22U.js +18 -0
  273. package/dist/cli/chunks/{shared-rvf-adapter-LNRLFP5I.js → shared-rvf-adapter-6EH7UVJL.js} +2 -2
  274. package/dist/cli/chunks/{shared-rvf-dual-writer-GWU6YQNS.js → shared-rvf-dual-writer-WML274E7.js} +2 -2
  275. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +2 -0
  276. package/dist/cli/chunks/{standalone-memory-46KKBSSV.js → standalone-memory-C7QKAXS4.js} +2 -2
  277. package/dist/cli/chunks/{status-handler-35T5FTDQ.js → status-handler-VLI7MRLM.js} +2 -2
  278. package/dist/cli/chunks/{structural-health-P7QPQWLO.js → structural-health-3LPG6MQN.js} +2 -2
  279. package/dist/cli/chunks/{sync-Y43EWBSY.js → sync-4IMMQEPT.js} +2 -2
  280. package/dist/cli/chunks/{sync-W6Z4R4PL.js → sync-JFJEJBVK.js} +2 -2
  281. package/dist/cli/chunks/{task-handler-5CX3ZYT7.js → task-handler-IED3K6E4.js} +2 -2
  282. package/dist/cli/chunks/{task-handlers-DQZGOJNE.js → task-handlers-FH6DNTHW.js} +3 -3
  283. package/dist/cli/chunks/{test-TPP53VVV.js → test-GPKT3CKZ.js} +4 -4
  284. package/dist/cli/chunks/{test-scheduling-WBV4UMQH.js → test-scheduling-Z42XXZP6.js} +3 -3
  285. package/dist/cli/chunks/{token-bootstrap-GIIDXHLC.js → token-bootstrap-HMM3AHXM.js} +2 -2
  286. package/dist/cli/chunks/{token-usage-AKK37RB7.js → token-usage-6Y2ERYIY.js} +2 -2
  287. package/dist/cli/chunks/{transformers-7MASPELS.js → transformers-MB63T2XO.js} +2 -2
  288. package/dist/cli/chunks/{tree-sitter-wasm-parser-YZKD6UGB.js → tree-sitter-wasm-parser-56GDQCMR.js} +2 -2
  289. package/dist/cli/chunks/{types-AZ3BTXDP.js → types-J4J6QV3I.js} +2 -2
  290. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +2 -0
  291. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +2 -0
  292. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +2 -0
  293. package/dist/cli/chunks/{upgrade-L7OTDKEK.js → upgrade-U4XU7LFM.js} +2 -2
  294. package/dist/cli/chunks/{validate-O3QVFIGP.js → validate-B57HA4YK.js} +2 -2
  295. package/dist/cli/chunks/{validate-swarm-2UGBGLTX.js → validate-swarm-UPPA4M6T.js} +2 -2
  296. package/dist/cli/chunks/visual-security-7F5UV23J.js +2 -0
  297. package/dist/cli/chunks/{web-tree-sitter-J75IYPRO.js → web-tree-sitter-GDZMUKOZ.js} +2 -2
  298. package/dist/cli/chunks/{windsurf-installer-FQ5DBFCG.js → windsurf-installer-VJRWCHXP.js} +2 -2
  299. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +2 -0
  300. package/dist/cli/chunks/{witness-chain-I7TN4MXZ.js → witness-chain-LFASSMZK.js} +2 -2
  301. package/dist/cli/chunks/{witness-chain-repair-D3NE3NQK.js → witness-chain-repair-TPHN4DXN.js} +2 -2
  302. package/dist/cli/chunks/{witness-chain-verifier-RU2WOP5M.js → witness-chain-verifier-Z23FVABW.js} +2 -2
  303. package/dist/cli/chunks/{witness-key-manager-IHQB2FR5.js → witness-key-manager-745MJ7WO.js} +2 -2
  304. package/dist/cli/chunks/{workflow-6BWTNVV6.js → workflow-T245QNQM.js} +4 -4
  305. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +2 -0
  306. package/dist/cli/chunks/{wrappers-URVP25VU.js → wrappers-WCAYIQUX.js} +2 -2
  307. package/dist/cli/commands/learning.js +3 -2
  308. package/dist/cli/commands/security.d.ts +16 -0
  309. package/dist/cli/commands/security.js +76 -9
  310. package/dist/cli/handlers/init-guard.d.ts +21 -1
  311. package/dist/cli/handlers/init-guard.js +51 -8
  312. package/dist/cli/handlers/init-handler.js +57 -56
  313. package/dist/cli/index.js +11 -0
  314. package/dist/cli/utils/ci-output.d.ts +5 -0
  315. package/dist/cli/utils/ci-output.js +8 -0
  316. package/dist/coordination/handlers/security-handlers.js +22 -6
  317. package/dist/coordination/protocols/defect-investigation.js +7 -1
  318. package/dist/coordination/protocols/learning-consolidation.js +6 -12
  319. package/dist/coordination/protocols/security-audit.js +11 -0
  320. package/dist/coordination/result-saver.d.ts +9 -0
  321. package/dist/coordination/result-saver.js +34 -4
  322. package/dist/domains/coverage-analysis/collected-metrics.d.ts +2 -0
  323. package/dist/domains/coverage-analysis/collected-metrics.js +8 -1
  324. package/dist/domains/defect-intelligence/services/defect-predictor.js +9 -6
  325. package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
  326. package/dist/domains/learning-optimization/active-patterns.js +77 -0
  327. package/dist/domains/learning-optimization/coordinator.js +12 -9
  328. package/dist/domains/learning-optimization/services/learning-coordinator.js +15 -17
  329. package/dist/domains/quality-assessment/interfaces.d.ts +4 -0
  330. package/dist/domains/quality-assessment/quality-evidence.d.ts +1 -1
  331. package/dist/domains/quality-assessment/services/quality-analyzer.js +7 -5
  332. package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
  333. package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
  334. package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
  335. package/dist/domains/security-compliance/interfaces.d.ts +30 -0
  336. package/dist/domains/security-compliance/plugin.d.ts +7 -1
  337. package/dist/domains/security-compliance/plugin.js +19 -0
  338. package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
  339. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
  340. package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
  341. package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
  342. package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
  343. package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
  344. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
  345. package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
  346. package/dist/domains/security-compliance/services/security-auditor.js +133 -92
  347. package/dist/domains/test-execution/services/retry-handler.js +34 -7
  348. package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
  349. package/dist/domains/test-execution/services/test-executor.js +87 -7
  350. package/dist/kernel/shared-dirs.js +17 -5
  351. package/dist/learning/dream/dream-engine.d.ts +27 -1
  352. package/dist/learning/dream/dream-engine.js +56 -2
  353. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
  354. package/dist/learning/dream/rvcow-branch-manager.js +8 -0
  355. package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
  356. package/dist/learning/dream/speculative-dreamer.js +8 -0
  357. package/dist/mcp/background-workers.d.ts +15 -0
  358. package/dist/mcp/background-workers.js +71 -0
  359. package/dist/mcp/bundle.js +881 -878
  360. package/dist/mcp/entry.js +4 -49
  361. package/dist/mcp/handlers/domain-handler-configs.d.ts +4 -0
  362. package/dist/mcp/handlers/domain-handler-configs.js +5 -1
  363. package/dist/mcp/protocol-server.js +2 -1
  364. package/dist/mcp/types.d.ts +6 -0
  365. package/dist/shared/security/index.d.ts +2 -2
  366. package/dist/shared/security/index.js +1 -1
  367. package/dist/shared/security/osv-client.d.ts +79 -132
  368. package/dist/shared/security/osv-client.js +344 -167
  369. package/dist/shared/security/osv-lookup.d.ts +124 -0
  370. package/dist/shared/security/osv-lookup.js +246 -0
  371. package/dist/shared/security/osv-types.d.ts +119 -0
  372. package/dist/shared/security/osv-types.js +6 -0
  373. package/dist/workers/daemon.d.ts +5 -0
  374. package/dist/workers/daemon.js +16 -2
  375. package/dist/workers/interfaces.d.ts +6 -1
  376. package/dist/workers/namespaced-keys.d.ts +16 -0
  377. package/dist/workers/namespaced-keys.js +24 -0
  378. package/dist/workers/quality-daemon/persistent-memory.d.ts +1 -1
  379. package/dist/workers/quality-daemon/persistent-memory.js +2 -2
  380. package/dist/workers/worker-env.d.ts +45 -0
  381. package/dist/workers/worker-env.js +76 -0
  382. package/dist/workers/worker-manager.js +5 -2
  383. package/dist/workers/workers/defect-predictor.d.ts +25 -8
  384. package/dist/workers/workers/defect-predictor.js +223 -216
  385. package/dist/workers/workers/learning-consolidation.d.ts +20 -0
  386. package/dist/workers/workers/learning-consolidation.js +53 -22
  387. package/dist/workers/workers/performance-baseline.d.ts +24 -9
  388. package/dist/workers/workers/performance-baseline.js +187 -230
  389. package/dist/workers/workers/quality-gate.d.ts +11 -9
  390. package/dist/workers/workers/quality-gate.js +125 -267
  391. package/dist/workers/workers/security-scan-records.d.ts +111 -0
  392. package/dist/workers/workers/security-scan-records.js +128 -0
  393. package/dist/workers/workers/security-scan.d.ts +25 -7
  394. package/dist/workers/workers/security-scan.js +187 -164
  395. package/package.json +2 -2
  396. package/dist/cli/chunks/adapter-PP3XIXDV.js +0 -2
  397. package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +0 -2
  398. package/dist/cli/chunks/base-QSYWWPCE.js +0 -2
  399. package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +0 -2
  400. package/dist/cli/chunks/chunk-45MVRQG4.js +0 -2
  401. package/dist/cli/chunks/chunk-5VZVMO7B.js +0 -3
  402. package/dist/cli/chunks/chunk-EECF4CMA.js +0 -2
  403. package/dist/cli/chunks/client-6XKSQ4JT.js +0 -2
  404. package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +0 -2
  405. package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +0 -2
  406. package/dist/cli/chunks/daemon-QBYTCIMH.js +0 -10
  407. package/dist/cli/chunks/dream-3UABDRZJ.js +0 -2
  408. package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +0 -2
  409. package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +0 -2
  410. package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +0 -2
  411. package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +0 -2
  412. package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +0 -2
  413. package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +0 -2
  414. package/dist/cli/chunks/init-handler-PCLYQUSB.js +0 -88
  415. package/dist/cli/chunks/init-wizard-MQMDSIOF.js +0 -2
  416. package/dist/cli/chunks/kernel-MEJ5GMRH.js +0 -2
  417. package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +0 -2
  418. package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +0 -2
  419. package/dist/cli/chunks/load-test-OVXIQ3AF.js +0 -2
  420. package/dist/cli/chunks/memory-backend-TRPOMPK4.js +0 -2
  421. package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +0 -2
  422. package/dist/cli/chunks/project-root-VVSTHIP4.js +0 -2
  423. package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +0 -2
  424. package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +0 -2
  425. package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +0 -2
  426. package/dist/cli/chunks/router-HYRPWLAY.js +0 -2
  427. package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +0 -2
  428. package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +0 -2
  429. package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +0 -2
  430. package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +0 -2
  431. package/dist/cli/chunks/safe-db-KS65XDCP.js +0 -2
  432. package/dist/cli/chunks/schedule-KD2VN6GB.js +0 -2
  433. package/dist/cli/chunks/scheduler-ZH3RMUHY.js +0 -2
  434. package/dist/cli/chunks/security-PWQTGDRU.js +0 -13
  435. package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +0 -2
  436. package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +0 -2
  437. package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +0 -2
  438. package/dist/cli/chunks/unified-persistence-FM376LGE.js +0 -2
  439. package/dist/cli/chunks/visual-security-EU7Y3X46.js +0 -2
  440. package/dist/cli/chunks/witness-chain-CSEBT52D.js +0 -2
  441. package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +0 -2
@@ -7,6 +7,7 @@ import { spawn } from 'node:child_process';
7
7
  import { existsSync, mkdtempSync, readFileSync, rmSync } from 'node:fs';
8
8
  import { tmpdir } from 'node:os';
9
9
  import { join } from 'node:path';
10
+ import { isDeepStrictEqual } from 'node:util';
10
11
  import { v4 as uuidv4 } from 'uuid';
11
12
  import { ok, err } from '../../../shared/types/index.js';
12
13
  import { TEST_EXECUTION_CONSTANTS, LLM_ANALYSIS_CONSTANTS } from '../../constants.js';
@@ -305,11 +306,13 @@ Provide:
305
306
  const failedTests = [];
306
307
  const coverages = [];
307
308
  const allFileCoverages = [];
309
+ const executionResults = [];
308
310
  let passed = 0;
309
311
  let failed = 0;
310
312
  let skipped = 0;
311
313
  for (const file of testFiles) {
312
314
  const result = await this.executeTestFile(file, framework, timeout);
315
+ executionResults.push(result);
313
316
  passed += result.passed;
314
317
  failed += result.failed;
315
318
  skipped += result.skipped;
@@ -321,16 +324,61 @@ Provide:
321
324
  allFileCoverages.push(...result.fileCoverages);
322
325
  }
323
326
  }
327
+ // Separate runner invocations each have their own coverage map. Averaging
328
+ // percentages double-counts source files and misses disjoint hits (#1030).
329
+ // If any run lacks raw counters, there is no honest combined measurement.
330
+ const merged = testFiles.length > 1 && !this.config.simulateForTesting
331
+ ? this.mergeSequentialCoverage(executionResults)
332
+ : undefined;
333
+ const separateRuns = testFiles.length > 1 && !this.config.simulateForTesting;
324
334
  return {
325
335
  total: passed + failed + skipped,
326
336
  passed,
327
337
  failed,
328
338
  skipped,
329
339
  failedTests,
330
- coverage: this.aggregateCoverage(coverages),
331
- fileCoverages: allFileCoverages.length > 0 ? allFileCoverages : undefined,
340
+ coverage: separateRuns ? merged?.summary : this.aggregateCoverage(coverages),
341
+ fileCoverages: separateRuns ? merged?.perFile
342
+ : allFileCoverages.length > 0 ? allFileCoverages : undefined,
332
343
  };
333
344
  }
345
+ mergeSequentialCoverage(results) {
346
+ if (results.some(result => !result.rawCoverageMap))
347
+ return undefined;
348
+ const merged = {};
349
+ for (const result of results) {
350
+ for (const [rawPath, entry] of Object.entries(result.rawCoverageMap)) {
351
+ if (!isRecord(entry) || !isRecord(entry.statementMap) || !isRecord(entry.fnMap)
352
+ || !isRecord(entry.branchMap) || !isRecord(entry.s) || !isRecord(entry.f)
353
+ || !isRecord(entry.b))
354
+ return undefined;
355
+ const file = fileCoverageKey(rawPath);
356
+ const prior = merged[file];
357
+ if (prior) {
358
+ if (!isDeepStrictEqual(prior.statementMap, entry.statementMap)
359
+ || !isDeepStrictEqual(prior.fnMap, entry.fnMap)
360
+ || !isDeepStrictEqual(prior.branchMap, entry.branchMap))
361
+ return undefined;
362
+ for (const counter of ['s', 'f', 'b']) {
363
+ const hits = mergeHitCounts(prior[counter], entry[counter]);
364
+ if (!hits)
365
+ return undefined;
366
+ prior[counter] = hits;
367
+ }
368
+ }
369
+ else {
370
+ const s = mergeHitCounts(entry.s, entry.s);
371
+ const f = mergeHitCounts(entry.f, entry.f);
372
+ const b = mergeHitCounts(entry.b, entry.b);
373
+ if (!s || !f || !b)
374
+ return undefined;
375
+ merged[file] = { ...entry, path: file, s, f, b };
376
+ }
377
+ }
378
+ }
379
+ const coverage = this.extractCoverageFromJson({ coverageMap: merged });
380
+ return coverage.summary ? { summary: coverage.summary, perFile: coverage.perFile } : undefined;
381
+ }
334
382
  async executeTestFile(file, framework, timeout) {
335
383
  return this.executeTestFiles([file], framework, timeout);
336
384
  }
@@ -460,13 +508,14 @@ Provide:
460
508
  const parseResult = this.parseTestOutput(reportText, stderr, fileLabel, framework, code);
461
509
  // Read only this invocation's coverage artifacts. A previous or
462
510
  // concurrent run's project coverage directory is not evidence.
463
- if (parseResult.success && !parseResult.value.coverage && coverageDirectory) {
511
+ if (parseResult.success && coverageDirectory) {
464
512
  const diskCoverage = this.readCoverageFromDisk(coverageDirectory);
465
513
  if (diskCoverage) {
466
- parseResult.value.coverage = diskCoverage.summary;
467
- if (diskCoverage.perFile.length > 0) {
514
+ parseResult.value.coverage ??= diskCoverage.summary;
515
+ if (!parseResult.value.fileCoverages && diskCoverage.perFile.length > 0) {
468
516
  parseResult.value.fileCoverages = diskCoverage.perFile;
469
517
  }
518
+ parseResult.value.rawCoverageMap ??= diskCoverage.rawMap;
470
519
  }
471
520
  }
472
521
  finish(parseResult);
@@ -661,6 +710,7 @@ Provide:
661
710
  failedTests,
662
711
  coverage: covData.summary,
663
712
  fileCoverages: covData.perFile.length > 0 ? covData.perFile : undefined,
713
+ rawCoverageMap: isRecord(json.coverageMap) && !json.coverageMap.total ? json.coverageMap : undefined,
664
714
  });
665
715
  }
666
716
  catch {
@@ -715,6 +765,7 @@ Provide:
715
765
  failedTests,
716
766
  coverage: covData.summary,
717
767
  fileCoverages: covData.perFile.length > 0 ? covData.perFile : undefined,
768
+ rawCoverageMap: isRecord(json.coverageMap) && !json.coverageMap.total ? json.coverageMap : undefined,
718
769
  });
719
770
  }
720
771
  catch {
@@ -1067,8 +1118,8 @@ Provide:
1067
1118
  try {
1068
1119
  // Check common coverage output paths
1069
1120
  const candidates = [
1070
- join(coverageDirectory, 'coverage-summary.json'),
1071
1121
  join(coverageDirectory, 'coverage-final.json'),
1122
+ join(coverageDirectory, 'coverage-summary.json'),
1072
1123
  ];
1073
1124
  for (const filePath of candidates) {
1074
1125
  if (!existsSync(filePath))
@@ -1117,7 +1168,7 @@ Provide:
1117
1168
  if (typeof json === 'object' && !json.total) {
1118
1169
  const result = this.extractCoverageFromJson({ coverageMap: json });
1119
1170
  if (result.summary) {
1120
- return { summary: result.summary, perFile: result.perFile };
1171
+ return { summary: result.summary, perFile: result.perFile, rawMap: json };
1121
1172
  }
1122
1173
  }
1123
1174
  }
@@ -1216,4 +1267,33 @@ function summaryPct(metric) {
1216
1267
  return null;
1217
1268
  return metric.pct;
1218
1269
  }
1270
+ function isRecord(value) {
1271
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
1272
+ }
1273
+ /** A test covers a counter if any invocation hit it. Reject incompatible maps. */
1274
+ function mergeHitCounts(left, right) {
1275
+ if (!isRecord(left) || !isRecord(right))
1276
+ return undefined;
1277
+ const keys = Object.keys(left);
1278
+ if (!isDeepStrictEqual(keys.sort(), Object.keys(right).sort()))
1279
+ return undefined;
1280
+ const merged = {};
1281
+ for (const key of keys) {
1282
+ const a = left[key];
1283
+ const b = right[key];
1284
+ if (typeof a === 'number' && Number.isFinite(a) && a >= 0
1285
+ && typeof b === 'number' && Number.isFinite(b) && b >= 0) {
1286
+ merged[key] = Math.max(a, b);
1287
+ }
1288
+ else if (Array.isArray(a) && Array.isArray(b) && a.length === b.length
1289
+ && a.every(v => typeof v === 'number' && Number.isFinite(v) && v >= 0)
1290
+ && b.every(v => typeof v === 'number' && Number.isFinite(v) && v >= 0)) {
1291
+ merged[key] = a.map((v, i) => Math.max(v, b[i]));
1292
+ }
1293
+ else {
1294
+ return undefined;
1295
+ }
1296
+ }
1297
+ return merged;
1298
+ }
1219
1299
  //# sourceMappingURL=test-executor.js.map
@@ -145,14 +145,26 @@ export function ensureScratchRoot(dir, ctx = currentPlatformContext()) {
145
145
  writeOrigin(preferred, dir);
146
146
  return preferred;
147
147
  }
148
- catch {
148
+ catch (preferredError) {
149
149
  const uid = typeof process.getuid === 'function' ? String(process.getuid()) : 'user';
150
150
  const fallbackBase = path.join(ctx.tmpdir || os.tmpdir(), `agentic-qe-scratch-${uid}`);
151
151
  const fallback = path.join(fallbackBase, path.basename(preferred));
152
- ensurePrivateDir(fallbackBase);
153
- ensurePrivateDir(fallback);
154
- writeOrigin(fallback, dir);
155
- return fallback;
152
+ try {
153
+ ensurePrivateDir(fallbackBase);
154
+ ensurePrivateDir(fallback);
155
+ writeOrigin(fallback, dir);
156
+ return fallback;
157
+ }
158
+ catch (fallbackError) {
159
+ // Never fall back to the shared directory itself: that would mix data
160
+ // from unrelated projects. Give callers a usable diagnosis instead of
161
+ // an opaque EEXIST/ENOTDIR from the final mkdir.
162
+ const reason = (error) => error instanceof Error ? error.message : String(error);
163
+ throw new Error(`Cannot create a private AQE scratch root for "${dir}". ` +
164
+ `User cache "${preferred}" failed: ${reason(preferredError)}. ` +
165
+ `Temporary fallback "${fallback}" failed: ${reason(fallbackError)}. ` +
166
+ 'Set AQE_PROJECT_ROOT to a project directory or make the user cache writable.');
167
+ }
156
168
  }
157
169
  }
158
170
  function writeOrigin(root, dir) {
@@ -31,7 +31,21 @@ export interface DreamConfig {
31
31
  activationConfig: ActivationConfig;
32
32
  /** Insight generation configuration */
33
33
  insightConfig: InsightConfig;
34
- /** Enable RVCOW branching for reversible dream cycles (ADR-069). Default: true */
34
+ /**
35
+ * Enable RVCOW branching for reversible dream cycles (ADR-069).
36
+ * Default: false (#1060).
37
+ *
38
+ * RISK — opt in only for an isolated database connection. The branch is a
39
+ * SQLite SAVEPOINT on the process-wide shared connection, and it stays open
40
+ * for the whole asynchronous dream (up to `maxDurationMs`). Every other
41
+ * write made on that connection in the meantime (memory_store, pattern
42
+ * updates, experience capture) joins the savepoint. A discard (failed
43
+ * validation, error, cancel) rolls those foreground writes back even though
44
+ * they were already acknowledged. Branch validation only inspects
45
+ * `qe_patterns`, which `dream()` does not write, so branching adds little
46
+ * protection to a dream cycle. A compute-then-commit rework is tracked in
47
+ * #1060.
48
+ */
35
49
  enableBranching: boolean;
36
50
  /** Validation thresholds for dream branch quality checks */
37
51
  branchValidationThresholds: ValidationThresholds;
@@ -104,6 +118,8 @@ export declare class DreamEngine {
104
118
  private graph;
105
119
  private db;
106
120
  private branchManager;
121
+ /** #1060: marks the in-flight dream cycle interrupted (set while dreaming). */
122
+ private interruptActiveDream;
107
123
  private currentCycle;
108
124
  private initialized;
109
125
  private cancelled;
@@ -138,6 +154,15 @@ export declare class DreamEngine {
138
154
  * @returns Dream cycle result with insights and statistics
139
155
  */
140
156
  dream(durationMs?: number): Promise<DreamCycleResult>;
157
+ /**
158
+ * #1060: build a synchronous handler that records a still-running cycle as
159
+ * 'interrupted'. It runs from close() and from a process store closer,
160
+ * which runs before the shared database closes (closers run newest first).
161
+ * When opt-in branching left a savepoint open, the savepoint is released
162
+ * first so foreground writes made on the shared connection during the
163
+ * dream are committed rather than lost with the connection.
164
+ */
165
+ private createCycleInterrupter;
141
166
  /**
142
167
  * Load patterns as concepts for dreaming.
143
168
  *
@@ -203,6 +228,7 @@ export declare class DreamEngine {
203
228
  getCurrentCycle(): DreamCycle | null;
204
229
  private saveCycle;
205
230
  private updateCycle;
231
+ private updateCycleSync;
206
232
  private saveInsight;
207
233
  private getInsightRowById;
208
234
  /**
@@ -21,6 +21,7 @@ import { LoggerFactory } from '../../logging/index.js';
21
21
  const dreamLogger = LoggerFactory.create('dream-engine');
22
22
  import { v4 as uuidv4 } from 'uuid';
23
23
  import { getUnifiedPersistence } from '../../kernel/unified-persistence.js';
24
+ import { registerStoreCloser } from '../../kernel/process-lifecycle.js';
24
25
  import { ConceptGraph } from './concept-graph.js';
25
26
  import { SpreadingActivation, } from './spreading-activation.js';
26
27
  import { InsightGenerator, } from './insight-generator.js';
@@ -43,7 +44,8 @@ export const DEFAULT_DREAM_CONFIG = {
43
44
  minConfidence: 0.5,
44
45
  maxInsightsPerCycle: 10,
45
46
  },
46
- enableBranching: true,
47
+ // #1060: off by default; see the RISK note on DreamConfig.enableBranching.
48
+ enableBranching: false,
47
49
  branchValidationThresholds: { ...DEFAULT_VALIDATION_THRESHOLDS },
48
50
  };
49
51
  // ============================================================================
@@ -206,6 +208,8 @@ export class DreamEngine {
206
208
  graph = null;
207
209
  db = null;
208
210
  branchManager = null;
211
+ /** #1060: marks the in-flight dream cycle interrupted (set while dreaming). */
212
+ interruptActiveDream = null;
209
213
  currentCycle = null;
210
214
  initialized = false;
211
215
  cancelled = false;
@@ -344,13 +348,18 @@ export class DreamEngine {
344
348
  status: 'running',
345
349
  };
346
350
  await this.saveCycle(this.currentCycle);
347
- // ADR-069: Create RVCOW branch before dream consolidation
351
+ // ADR-069: Create RVCOW branch before dream consolidation (opt-in, #1060)
348
352
  let branch = null;
349
353
  if (this.branchManager) {
350
354
  const branchName = `dream-${this.currentCycle.id}-${Date.now()}`;
351
355
  branch = this.branchManager.createBranch(branchName);
352
356
  this.emitBranchEvent('dream:branch_created', branch);
353
357
  }
358
+ // #1060: if the engine closes or the process shuts down mid-dream, record
359
+ // the cycle as interrupted instead of leaving it 'running' forever.
360
+ const interrupt = this.createCycleInterrupter(this.currentCycle, startTime, () => branch);
361
+ this.interruptActiveDream = interrupt;
362
+ const unregisterShutdownGuard = registerStoreCloser(interrupt);
354
363
  try {
355
364
  // 1. Check we have enough concepts
356
365
  const allNodes = await this.graph.getActiveNodes(0);
@@ -458,6 +467,44 @@ export class DreamEngine {
458
467
  this.currentCycle = null;
459
468
  throw error;
460
469
  }
470
+ finally {
471
+ unregisterShutdownGuard();
472
+ if (this.interruptActiveDream === interrupt)
473
+ this.interruptActiveDream = null;
474
+ }
475
+ }
476
+ /**
477
+ * #1060: build a synchronous handler that records a still-running cycle as
478
+ * 'interrupted'. It runs from close() and from a process store closer,
479
+ * which runs before the shared database closes (closers run newest first).
480
+ * When opt-in branching left a savepoint open, the savepoint is released
481
+ * first so foreground writes made on the shared connection during the
482
+ * dream are committed rather than lost with the connection.
483
+ */
484
+ createCycleInterrupter(cycle, startTime, getBranch) {
485
+ return () => {
486
+ if (cycle.status !== 'running' || !this.db)
487
+ return;
488
+ const branch = getBranch();
489
+ if (branch && this.branchManager) {
490
+ try {
491
+ this.branchManager.mergeBranch(branch);
492
+ }
493
+ catch {
494
+ // Branch already resolved; nothing to release
495
+ }
496
+ }
497
+ cycle.status = 'interrupted';
498
+ cycle.error = 'Interrupted: engine closed or process shut down during the dream cycle';
499
+ cycle.endTime = new Date();
500
+ cycle.durationMs = Date.now() - startTime;
501
+ try {
502
+ this.updateCycleSync(cycle);
503
+ }
504
+ catch {
505
+ // Best effort during shutdown
506
+ }
507
+ };
461
508
  }
462
509
  // ==========================================================================
463
510
  // Pattern Loading
@@ -753,6 +800,9 @@ export class DreamEngine {
753
800
  stmt.run(cycle.id, cycle.startTime.toISOString(), cycle.endTime?.toISOString() ?? null, cycle.durationMs ?? null, cycle.conceptsProcessed, cycle.associationsFound, cycle.insightsGenerated, cycle.status, cycle.error ?? null, cycle.startTime.toISOString());
754
801
  }
755
802
  async updateCycle(cycle) {
803
+ this.updateCycleSync(cycle);
804
+ }
805
+ updateCycleSync(cycle) {
756
806
  if (!this.db)
757
807
  return;
758
808
  const stmt = this.db.prepare(`
@@ -815,6 +865,10 @@ export class DreamEngine {
815
865
  * Release resources (does NOT close the shared database)
816
866
  */
817
867
  async close() {
868
+ // #1060: a dream still in flight is recorded as interrupted before the
869
+ // engine lets go of the database.
870
+ this.interruptActiveDream?.();
871
+ this.interruptActiveDream = null;
818
872
  if (this.graph) {
819
873
  await this.graph.close();
820
874
  this.graph = null;
@@ -13,6 +13,14 @@
13
13
  * - mergeBranch -> RELEASE SAVEPOINT
14
14
  * - discardBranch -> ROLLBACK TO SAVEPOINT
15
15
  *
16
+ * WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
17
+ * the dream's. Use an isolated connection, or keep the branch open only
18
+ * across synchronous work. If it stays open across `await`s on the
19
+ * process-wide shared connection, foreground writes made in the meantime
20
+ * (memory_store and other acknowledged writes) join the savepoint and are
21
+ * rolled back by a discard, or lost if the connection closes before
22
+ * RELEASE. DreamEngine therefore defaults `enableBranching` to false.
23
+ *
16
24
  * @module learning/dream/rvcow-branch-manager
17
25
  */
18
26
  import type { Database as DatabaseType } from 'better-sqlite3';
@@ -13,6 +13,14 @@
13
13
  * - mergeBranch -> RELEASE SAVEPOINT
14
14
  * - discardBranch -> ROLLBACK TO SAVEPOINT
15
15
  *
16
+ * WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
17
+ * the dream's. Use an isolated connection, or keep the branch open only
18
+ * across synchronous work. If it stays open across `await`s on the
19
+ * process-wide shared connection, foreground writes made in the meantime
20
+ * (memory_store and other acknowledged writes) join the savepoint and are
21
+ * rolled back by a discard, or lost if the connection closes before
22
+ * RELEASE. DreamEngine therefore defaults `enableBranching` to false.
23
+ *
16
24
  * @module learning/dream/rvcow-branch-manager
17
25
  */
18
26
  import { existsSync, unlinkSync } from 'fs';
@@ -69,6 +69,14 @@ export declare const BUILT_IN_STRATEGIES: DreamStrategy[];
69
69
  * are executed one at a time but each in its own savepoint. The branch manager
70
70
  * ensures that failed strategies leave no trace in the database.
71
71
  *
72
+ * WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
73
+ * the dream's. Use an isolated connection, or keep the branch open only
74
+ * across synchronous work. If it stays open across `await`s on the
75
+ * process-wide shared connection, foreground writes made in the meantime
76
+ * (memory_store and other acknowledged writes) join the savepoint and are
77
+ * rolled back by a discard, or lost if the connection closes before
78
+ * RELEASE. DreamEngine therefore defaults `enableBranching` to false.
79
+ *
72
80
  * @example
73
81
  * ```typescript
74
82
  * const dreamer = new SpeculativeDreamer(db);
@@ -61,6 +61,14 @@ export const BUILT_IN_STRATEGIES = [
61
61
  * are executed one at a time but each in its own savepoint. The branch manager
62
62
  * ensures that failed strategies leave no trace in the database.
63
63
  *
64
+ * WARNING (#1060): a SAVEPOINT covers every write on its connection, not just
65
+ * the dream's. Use an isolated connection, or keep the branch open only
66
+ * across synchronous work. If it stays open across `await`s on the
67
+ * process-wide shared connection, foreground writes made in the meantime
68
+ * (memory_store and other acknowledged writes) join the savepoint and are
69
+ * rolled back by a discard, or lost if the connection closes before
70
+ * RELEASE. DreamEngine therefore defaults `enableBranching` to false.
71
+ *
64
72
  * @example
65
73
  * ```typescript
66
74
  * const dreamer = new SpeculativeDreamer(db);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Agentic QE v3 - MCP background worker startup (IMP-10, #1061)
3
+ *
4
+ * Starts the worker daemon and the QualityDaemon for the MCP server, unless
5
+ * `AQE_WORKERS_ENABLED` is set to a falsy value (`false`, `0`, `off`, `no`).
6
+ * `aqe init --no-database` writes `AQE_WORKERS_ENABLED=false` (#533); before
7
+ * #1061 the variable was written but never read.
8
+ *
9
+ * All output goes through `log`, which the MCP entry binds to the original
10
+ * stderr writer so stdout stays reserved for JSON-RPC.
11
+ */
12
+ import { type WorkerEnv } from '../workers/worker-env.js';
13
+ export type BackgroundWorkersOutcome = 'disabled' | 'started' | 'failed';
14
+ export declare function startBackgroundWorkers(log: (message: string) => void, env?: WorkerEnv): Promise<BackgroundWorkersOutcome>;
15
+ //# sourceMappingURL=background-workers.d.ts.map
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Agentic QE v3 - MCP background worker startup (IMP-10, #1061)
3
+ *
4
+ * Starts the worker daemon and the QualityDaemon for the MCP server, unless
5
+ * `AQE_WORKERS_ENABLED` is set to a falsy value (`false`, `0`, `off`, `no`).
6
+ * `aqe init --no-database` writes `AQE_WORKERS_ENABLED=false` (#533); before
7
+ * #1061 the variable was written but never read.
8
+ *
9
+ * All output goes through `log`, which the MCP entry binds to the original
10
+ * stderr writer so stdout stays reserved for JSON-RPC.
11
+ */
12
+ import { isWorkersEnabled } from '../workers/worker-env.js';
13
+ export async function startBackgroundWorkers(log, env = process.env) {
14
+ if (!isWorkersEnabled(env)) {
15
+ log(`[MCP] Background workers disabled (AQE_WORKERS_ENABLED=${env.AQE_WORKERS_ENABLED}); ` +
16
+ 'worker daemon and quality daemon not started\n');
17
+ return 'disabled';
18
+ }
19
+ // In database-free mode the workers run against the in-memory unified
20
+ // store, so they persist nothing to disk while keeping QualityDaemon/health
21
+ // functional.
22
+ try {
23
+ const { getDaemon } = await import('../workers/daemon.js');
24
+ // ADR-001 Bug A fix: use the canonical getDaemon() default. Passing
25
+ // `{ autoStart: false }` here would neuter workerManager.startAll() —
26
+ // the only call path that schedules per-worker setInterval timers, so
27
+ // workers would register but never tick. DEFAULT_CONFIG.autoStart=true
28
+ // (workers/daemon.ts) is the contracted default; matches the
29
+ // shutdownDaemon() call site in entry.ts.
30
+ const daemon = getDaemon();
31
+ await daemon.start();
32
+ const status = daemon.getStatus();
33
+ log(`[MCP] Background workers started (${status.workerManager.totalWorkers} workers)\n`);
34
+ // IMP-10: Start QualityDaemon with persistent memory (Finding 1 & 2 resolution)
35
+ try {
36
+ const { UnifiedMemoryManager } = await import('../kernel/unified-memory.js');
37
+ const { PersistentWorkerMemory } = await import('../workers/quality-daemon/persistent-memory.js');
38
+ const { isPrivateIp } = await import('../hooks/security/ssrf-guard.js');
39
+ const unifiedMemory = await UnifiedMemoryManager.getInstanceAsync();
40
+ const persistentMemory = new PersistentWorkerMemory(unifiedMemory);
41
+ const qualityDaemon = daemon.getQualityDaemon({
42
+ notifications: {
43
+ // IMP-07 SSRF guard: block private IPs in webhook URLs (Finding 5)
44
+ urlValidator: (url) => {
45
+ try {
46
+ const parsed = new URL(url);
47
+ const hostname = parsed.hostname.replace(/^\[|\]$/g, '');
48
+ return !isPrivateIp(hostname);
49
+ }
50
+ catch {
51
+ return false;
52
+ }
53
+ },
54
+ },
55
+ });
56
+ await qualityDaemon.start(persistentMemory);
57
+ log(`[MCP] Quality daemon started\n`);
58
+ }
59
+ catch (qdError) {
60
+ log(`[MCP] WARNING: Quality daemon failed to start: ${qdError}\n`);
61
+ // Non-fatal — MCP continues without quality daemon
62
+ }
63
+ return 'started';
64
+ }
65
+ catch (daemonError) {
66
+ log(`[MCP] WARNING: Background workers failed to start: ${daemonError}\n`);
67
+ // Non-fatal — MCP server continues without background workers
68
+ return 'failed';
69
+ }
70
+ }
71
+ //# sourceMappingURL=background-workers.js.map