agentic-qe 3.15.14 → 3.15.15

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 (376) hide show
  1. package/.claude/agents/v3/templates/qx-report-template.html +1 -1
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/CHANGELOG.md +46 -0
  4. package/assets/agents/v3/templates/qx-report-template.html +1 -1
  5. package/assets/skills/skills-manifest.json +1 -1
  6. package/dist/cli/bundle.js +6 -6
  7. package/dist/cli/chunks/adapter-QU6INSKP.js +2 -0
  8. package/dist/cli/chunks/agent-booster-wasm-EUF4XVUC.js +2 -0
  9. package/dist/cli/chunks/{agent-handler-P3IY7XEE.js → agent-handler-MOX6PSIQ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-WWKC2H3G.js → agent-memory-branch-AEXKIGDG.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-PAJPENJD.js +2 -0
  12. package/dist/cli/chunks/{arena-EIV5OALF.js → arena-IQ5ZZDRF.js} +2 -2
  13. package/dist/cli/chunks/{arena-4BMFF6BS.js → arena-M7GA3CVG.js} +4 -4
  14. package/dist/cli/chunks/{audit-DNTI453H.js → audit-4IPBMKWB.js} +3 -3
  15. package/dist/cli/chunks/base-OTGSN6IC.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-TQBQGNC6.js → better-sqlite3-IKDKJ2IE.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-HY57CNAO.js → brain-handler-5NQUDH4W.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-THPMZPHQ.js → branch-enumerator-KSXELWRC.js} +2 -2
  19. package/dist/cli/chunks/{browser-O6JJOZCK.js → browser-6LACARWE.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-WLZGR6SB.js +2 -0
  21. package/dist/cli/chunks/{chunk-7724KXM2.js → chunk-22UKJGGN.js} +3 -3
  22. package/dist/cli/chunks/{chunk-3XACRXBY.js → chunk-27HE2BHC.js} +2 -2
  23. package/dist/cli/chunks/{chunk-3TF27MG5.js → chunk-2CKERSMB.js} +2 -2
  24. package/dist/cli/chunks/{chunk-TOJF3ZG4.js → chunk-2IIXCEMS.js} +2 -2
  25. package/dist/cli/chunks/{chunk-3FITMWWJ.js → chunk-2LUTPMBO.js} +2 -2
  26. package/dist/cli/chunks/{chunk-MB4UKUBV.js → chunk-2ZFLULL4.js} +2 -2
  27. package/dist/cli/chunks/{chunk-6NIGSY5L.js → chunk-337Z52QM.js} +2 -2
  28. package/dist/cli/chunks/{chunk-4T7XV5KQ.js → chunk-3CYNZFKH.js} +1 -1
  29. package/dist/cli/chunks/chunk-3HVFIITW.js +2 -0
  30. package/dist/cli/chunks/{chunk-2QLE6NDW.js → chunk-3J3RNJNX.js} +1 -1
  31. package/dist/cli/chunks/{chunk-E3QIQMMN.js → chunk-4ATQP3PR.js} +1 -1
  32. package/dist/cli/chunks/{chunk-EIEEST4T.js → chunk-4D4CWP72.js} +2 -2
  33. package/dist/cli/chunks/{chunk-WCM6WE7G.js → chunk-4HKAD25N.js} +3 -3
  34. package/dist/cli/chunks/{chunk-HEDGFKC5.js → chunk-4X3SWKBA.js} +2 -2
  35. package/dist/cli/chunks/{chunk-IQRPR4KB.js → chunk-5AFVEWMT.js} +2 -2
  36. package/dist/cli/chunks/{chunk-VCVRZD4Y.js → chunk-5C62XMJR.js} +3 -3
  37. package/dist/cli/chunks/{chunk-UDSB3XCG.js → chunk-5G4UFTV4.js} +2 -2
  38. package/dist/cli/chunks/{chunk-BNG4J3CE.js → chunk-5I7357KS.js} +2 -2
  39. package/dist/cli/chunks/{chunk-DRLSJJIC.js → chunk-5KA5TVPR.js} +2 -2
  40. package/dist/cli/chunks/{chunk-WZQADC5R.js → chunk-5PTAFGJT.js} +2 -2
  41. package/dist/cli/chunks/{chunk-M2TG7VDK.js → chunk-6BRQPHMZ.js} +1 -1
  42. package/dist/cli/chunks/{chunk-J35JWDJE.js → chunk-6KCSKGVY.js} +1 -1
  43. package/dist/cli/chunks/{chunk-QUZ745UQ.js → chunk-6LE362LZ.js} +2 -2
  44. package/dist/cli/chunks/{chunk-L752CNG3.js → chunk-6NBRMD25.js} +3 -3
  45. package/dist/cli/chunks/{chunk-56NSE3LJ.js → chunk-6RBTS3NF.js} +2 -2
  46. package/dist/cli/chunks/{chunk-E7OR6V3V.js → chunk-6YVMX2TC.js} +2 -2
  47. package/dist/cli/chunks/{chunk-WKI46WWN.js → chunk-73PBAWAF.js} +2 -2
  48. package/dist/cli/chunks/{chunk-HSDWPQQY.js → chunk-74YG72NQ.js} +3 -3
  49. package/dist/cli/chunks/{chunk-5PLBQZ5J.js → chunk-76P32JVU.js} +1 -1
  50. package/dist/cli/chunks/{chunk-FTYRPEJS.js → chunk-7ACCBHRB.js} +1 -1
  51. package/dist/cli/chunks/{chunk-O3ERGUXH.js → chunk-7BLZHFKD.js} +1 -1
  52. package/dist/cli/chunks/{chunk-BM3EJLMV.js → chunk-7O45RQHF.js} +2 -2
  53. package/dist/cli/chunks/{chunk-JSSU4RIK.js → chunk-7XB3FCKM.js} +2 -2
  54. package/dist/cli/chunks/{chunk-7TH4PJSU.js → chunk-AHMWD6JG.js} +2 -2
  55. package/dist/cli/chunks/{chunk-X7CUI7KH.js → chunk-AJPROCDW.js} +2 -2
  56. package/dist/cli/chunks/{chunk-TW6Z6W4X.js → chunk-AKZO6GGG.js} +13 -13
  57. package/dist/cli/chunks/{chunk-L7PC675Y.js → chunk-AOKKUB5F.js} +1 -1
  58. package/dist/cli/chunks/{chunk-UNYTHZDZ.js → chunk-AP2W7Z3A.js} +1 -1
  59. package/dist/cli/chunks/{chunk-VG32EEUG.js → chunk-BBRROA3Z.js} +2 -2
  60. package/dist/cli/chunks/{chunk-2IJO3657.js → chunk-BDKEAGQ2.js} +2 -2
  61. package/dist/cli/chunks/{chunk-YEFTK4HD.js → chunk-BFQTLF5X.js} +2 -2
  62. package/dist/cli/chunks/{chunk-JB7R77SH.js → chunk-BLL2XU7A.js} +2 -2
  63. package/dist/cli/chunks/{chunk-UMHFTQTR.js → chunk-BP5T3OEV.js} +2 -2
  64. package/dist/cli/chunks/{chunk-C3OIBFAA.js → chunk-BQ47GQPK.js} +2 -2
  65. package/dist/cli/chunks/{chunk-IDBA5GK2.js → chunk-BU4UQR36.js} +2 -2
  66. package/dist/cli/chunks/{chunk-U6IOQKCT.js → chunk-BZULJMGH.js} +2 -2
  67. package/dist/cli/chunks/{chunk-X6NJOT3V.js → chunk-C4KLXFJP.js} +1 -1
  68. package/dist/cli/chunks/{chunk-KJ5A54ZH.js → chunk-C4RTAVC6.js} +2 -2
  69. package/dist/cli/chunks/{chunk-ZUE524JL.js → chunk-C5CXL3JP.js} +2 -2
  70. package/dist/cli/chunks/{chunk-YE54T2NQ.js → chunk-CAOUV5GZ.js} +2 -2
  71. package/dist/cli/chunks/{chunk-7MISCSL5.js → chunk-CBK5CT6T.js} +2 -2
  72. package/dist/cli/chunks/{chunk-Z54G2YOL.js → chunk-DEKR3CTS.js} +2 -2
  73. package/dist/cli/chunks/{chunk-57DRT6UA.js → chunk-DKX4GNRU.js} +2 -2
  74. package/dist/cli/chunks/{chunk-HTVGHHX2.js → chunk-DUKE27HC.js} +2 -2
  75. package/dist/cli/chunks/{chunk-O756AOUX.js → chunk-DURD37JZ.js} +2 -2
  76. package/dist/cli/chunks/{chunk-OGEIHS76.js → chunk-E3MRDIZF.js} +1 -1
  77. package/dist/cli/chunks/{chunk-N736GLWZ.js → chunk-E56PVVWC.js} +2 -2
  78. package/dist/cli/chunks/{chunk-GY4P7KAI.js → chunk-E5G4WZ2T.js} +1 -1
  79. package/dist/cli/chunks/{chunk-JI67T6Q2.js → chunk-EBTNMQSS.js} +2 -2
  80. package/dist/cli/chunks/{chunk-P2TPH3TC.js → chunk-EFUJDMNC.js} +2 -2
  81. package/dist/cli/chunks/{chunk-7T6L3LFN.js → chunk-EKP2SC77.js} +2 -2
  82. package/dist/cli/chunks/{chunk-WRC3HLUY.js → chunk-EMSZVUYA.js} +3 -3
  83. package/dist/cli/chunks/{chunk-NZQYJCO6.js → chunk-ERN56H6S.js} +1 -1
  84. package/dist/cli/chunks/{chunk-INGXD5IX.js → chunk-FOOW4JVS.js} +2 -2
  85. package/dist/cli/chunks/{chunk-PGN4TARY.js → chunk-FTRSS64D.js} +2 -2
  86. package/dist/cli/chunks/{chunk-LTGQJYYO.js → chunk-G242G224.js} +2 -2
  87. package/dist/cli/chunks/{chunk-ARRBXCII.js → chunk-G6RDCCFV.js} +2 -2
  88. package/dist/cli/chunks/{chunk-7SQTLUEN.js → chunk-GCHYOPRZ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-G7HGUQAE.js → chunk-GGQGCT4Y.js} +2 -2
  90. package/dist/cli/chunks/{chunk-AYLEH2UF.js → chunk-GKSMRBHU.js} +1 -1
  91. package/dist/cli/chunks/{chunk-JO26SG47.js → chunk-GQABPCQE.js} +2 -2
  92. package/dist/cli/chunks/{chunk-O2AAYJUV.js → chunk-GV2QE5TO.js} +1 -1
  93. package/dist/cli/chunks/{chunk-K2SMP4OD.js → chunk-H5DER3JY.js} +1 -1
  94. package/dist/cli/chunks/{chunk-HAYKLXCT.js → chunk-HH4ED4F7.js} +11 -11
  95. package/dist/cli/chunks/{chunk-L5VSLPMW.js → chunk-HL2ANKN3.js} +2 -2
  96. package/dist/cli/chunks/{chunk-USAKCGHC.js → chunk-HTZSRMHW.js} +2 -2
  97. package/dist/cli/chunks/{chunk-MR2OPUSA.js → chunk-IXL5ZHWJ.js} +1 -1
  98. package/dist/cli/chunks/{chunk-6P4Q4RTC.js → chunk-J3FP5UGL.js} +1 -1
  99. package/dist/cli/chunks/{chunk-6OI5SK7M.js → chunk-JCQGJGGZ.js} +1 -1
  100. package/dist/cli/chunks/{chunk-NKOLILT7.js → chunk-JCZCJE6X.js} +2 -2
  101. package/dist/cli/chunks/{chunk-VGZOPQQY.js → chunk-JKJOB65O.js} +1 -1
  102. package/dist/cli/chunks/{chunk-43XHGWYH.js → chunk-JUDUBQHA.js} +2 -2
  103. package/dist/cli/chunks/{chunk-NHEG2DLN.js → chunk-JW74KRBC.js} +2 -2
  104. package/dist/cli/chunks/{chunk-ZJGFQK27.js → chunk-K3WZICFA.js} +1 -1
  105. package/dist/cli/chunks/{chunk-5Y7UFHJD.js → chunk-K3XBQC3R.js} +1 -1
  106. package/dist/cli/chunks/{chunk-JJHLGGPP.js → chunk-KCQNFBBR.js} +1 -1
  107. package/dist/cli/chunks/{chunk-U4TML2VD.js → chunk-KJBPB7P5.js} +2 -2
  108. package/dist/cli/chunks/{chunk-6O63ZTVX.js → chunk-KLTMOXIK.js} +2 -2
  109. package/dist/cli/chunks/{chunk-XMCSKYDE.js → chunk-L32JNNKL.js} +1 -1
  110. package/dist/cli/chunks/{chunk-UPWLMIDY.js → chunk-LB2LGEDP.js} +2 -2
  111. package/dist/cli/chunks/{chunk-4RPBODN5.js → chunk-LHMQIZ6B.js} +2 -2
  112. package/dist/cli/chunks/{chunk-RE6JTSDM.js → chunk-LJMYRTJ7.js} +1 -1
  113. package/dist/cli/chunks/{chunk-57FX3GP6.js → chunk-LNX74WHQ.js} +1 -1
  114. package/dist/cli/chunks/{chunk-52KOPIMI.js → chunk-LTQVUAPH.js} +2 -2
  115. package/dist/cli/chunks/{chunk-H3C5FJRH.js → chunk-LVABQNRF.js} +2 -2
  116. package/dist/cli/chunks/{chunk-V3MGY76S.js → chunk-LYJHUNBK.js} +2 -2
  117. package/dist/cli/chunks/{chunk-QNQE3EOH.js → chunk-M4CJCPCQ.js} +2 -2
  118. package/dist/cli/chunks/{chunk-D5GB5PUU.js → chunk-M4WMSCAE.js} +1 -1
  119. package/dist/cli/chunks/{chunk-TWOV3I3A.js → chunk-MIA447GY.js} +1 -1
  120. package/dist/cli/chunks/{chunk-CAZM63TP.js → chunk-MPFPWJTH.js} +2 -2
  121. package/dist/cli/chunks/{chunk-BPDAQB3F.js → chunk-MV55NXTD.js} +2 -2
  122. package/dist/cli/chunks/{chunk-EC65UZ77.js → chunk-NQS3BWS6.js} +1 -1
  123. package/dist/cli/chunks/{chunk-DSQESXL4.js → chunk-NWIIYHT6.js} +2 -2
  124. package/dist/cli/chunks/{chunk-4WLIOPHX.js → chunk-O6EWL5DQ.js} +2 -2
  125. package/dist/cli/chunks/{chunk-QP2HLKTS.js → chunk-OBDONJQM.js} +2 -2
  126. package/dist/cli/chunks/{chunk-BQJ7CV53.js → chunk-OLZH5LRT.js} +12 -12
  127. package/dist/cli/chunks/{chunk-H4LYXLAT.js → chunk-OQG3UQQ7.js} +1 -1
  128. package/dist/cli/chunks/{chunk-E2JLAW3U.js → chunk-PFQCV6YS.js} +3 -3
  129. package/dist/cli/chunks/{chunk-JAOCHPYX.js → chunk-PS6UMZVK.js} +2 -2
  130. package/dist/cli/chunks/{chunk-K7GFYFBO.js → chunk-PXATBHWN.js} +2 -2
  131. package/dist/cli/chunks/{chunk-CPPYZYXC.js → chunk-PYPS65P7.js} +2 -2
  132. package/dist/cli/chunks/{chunk-HHBF2BZC.js → chunk-Q6I4SIUU.js} +4 -4
  133. package/dist/cli/chunks/{chunk-QP6GL3O5.js → chunk-QFGYH6HD.js} +1 -1
  134. package/dist/cli/chunks/{chunk-BBYJBZHG.js → chunk-QGBGSQ2E.js} +2 -2
  135. package/dist/cli/chunks/{chunk-XTZGAG6P.js → chunk-QRKTBSZT.js} +2 -2
  136. package/dist/cli/chunks/{chunk-FJOIBZUB.js → chunk-R6LHJ7ME.js} +2 -2
  137. package/dist/cli/chunks/{chunk-Z2S7DNFP.js → chunk-RBKUU7WF.js} +2 -2
  138. package/dist/cli/chunks/{chunk-PWQWKYBG.js → chunk-RDMRY7CT.js} +1 -1
  139. package/dist/cli/chunks/{chunk-65EE2EST.js → chunk-RIRZHOS2.js} +2 -2
  140. package/dist/cli/chunks/{chunk-D3ZZ2NLL.js → chunk-SHRI7TKJ.js} +2 -2
  141. package/dist/cli/chunks/{chunk-CIINJHOX.js → chunk-SJCKCSN3.js} +1 -1
  142. package/dist/cli/chunks/{chunk-X6Q2N5S5.js → chunk-SON6ZRH3.js} +2 -2
  143. package/dist/cli/chunks/{chunk-2UZBLC5H.js → chunk-SZAZQZWI.js} +2 -2
  144. package/dist/cli/chunks/{chunk-2W5MQDHM.js → chunk-T4GE7MPI.js} +2 -2
  145. package/dist/cli/chunks/{chunk-JK6PMLQQ.js → chunk-T66PPF4D.js} +2 -2
  146. package/dist/cli/chunks/{chunk-OLUOVNUF.js → chunk-T67R2MUN.js} +2 -2
  147. package/dist/cli/chunks/{chunk-O32BFQV4.js → chunk-TDQWTSBS.js} +2 -2
  148. package/dist/cli/chunks/{chunk-YGOSSVY5.js → chunk-TODNOP7C.js} +2 -2
  149. package/dist/cli/chunks/{chunk-WBC6WB32.js → chunk-TX2CHQD7.js} +2 -2
  150. package/dist/cli/chunks/{chunk-FHPNWHY7.js → chunk-TZIHDJZD.js} +2 -2
  151. package/dist/cli/chunks/{chunk-WUGXXNK4.js → chunk-U62OUXBF.js} +1 -1
  152. package/dist/cli/chunks/{chunk-A2T56XVL.js → chunk-UAQZI6N4.js} +2 -2
  153. package/dist/cli/chunks/{chunk-MKYOE7NE.js → chunk-UE2J6MA5.js} +1 -1
  154. package/dist/cli/chunks/{chunk-K7RT6ITZ.js → chunk-UGYM4U44.js} +1 -1
  155. package/dist/cli/chunks/{chunk-7QUSNBAA.js → chunk-UJABDXST.js} +2 -2
  156. package/dist/cli/chunks/{chunk-VJBJRFUO.js → chunk-UORB2QDU.js} +9 -9
  157. package/dist/cli/chunks/{chunk-O5CEL447.js → chunk-UQPA33UK.js} +2 -2
  158. package/dist/cli/chunks/{chunk-7MUO4DEH.js → chunk-UUBIQR6A.js} +3 -3
  159. package/dist/cli/chunks/{chunk-WCPSR4MJ.js → chunk-UXIY4IAI.js} +2 -2
  160. package/dist/cli/chunks/{chunk-UFP7SN5V.js → chunk-VCXI4XC4.js} +2 -2
  161. package/dist/cli/chunks/{chunk-OCN53CCK.js → chunk-VMAM46HQ.js} +2 -2
  162. package/dist/cli/chunks/{chunk-MQXWG55U.js → chunk-VY4U6DPO.js} +3 -3
  163. package/dist/cli/chunks/{chunk-M5JEA6ZY.js → chunk-W27AJ5B4.js} +2 -2
  164. package/dist/cli/chunks/{chunk-YGC5QKQ4.js → chunk-W5ZJG2OU.js} +2 -2
  165. package/dist/cli/chunks/{chunk-AJVLVF7V.js → chunk-W62OOK7A.js} +2 -2
  166. package/dist/cli/chunks/{chunk-WM2QRIRD.js → chunk-WNTA4YKE.js} +2 -2
  167. package/dist/cli/chunks/{chunk-7Y3LXH57.js → chunk-WUOOX7UG.js} +2 -2
  168. package/dist/cli/chunks/{chunk-PCQZIAXB.js → chunk-WVXJ2QIG.js} +2 -2
  169. package/dist/cli/chunks/{chunk-PNRPVQGI.js → chunk-X33CWRDF.js} +2 -2
  170. package/dist/cli/chunks/{chunk-TSP6SU5V.js → chunk-XG4F4XH4.js} +2 -2
  171. package/dist/cli/chunks/{chunk-V6SE2ZU2.js → chunk-XH4JMX5O.js} +1 -1
  172. package/dist/cli/chunks/{chunk-R5RRWLRI.js → chunk-XHHWABJV.js} +2 -2
  173. package/dist/cli/chunks/{chunk-DLTB5KCR.js → chunk-XHLYGXYE.js} +2 -2
  174. package/dist/cli/chunks/{chunk-NPCXGX7N.js → chunk-XIVVTYM2.js} +2 -2
  175. package/dist/cli/chunks/{chunk-E7QTWGPI.js → chunk-XM6ZVFM5.js} +10 -10
  176. package/dist/cli/chunks/{chunk-XN3KCKAM.js → chunk-XWIAZG3C.js} +2 -2
  177. package/dist/cli/chunks/{chunk-J6ASX536.js → chunk-Y2OX6KGN.js} +2 -2
  178. package/dist/cli/chunks/{chunk-HV43NX4A.js → chunk-YUS6TWAL.js} +2 -2
  179. package/dist/cli/chunks/{chunk-2HPNGK7A.js → chunk-ZIPAB5J6.js} +2 -2
  180. package/dist/cli/chunks/{chunk-XSPMLJCQ.js → chunk-ZSOMUTNL.js} +1 -1
  181. package/dist/cli/chunks/{chunk-IRPNEXOU.js → chunk-ZWBGYJ7K.js} +2 -2
  182. package/dist/cli/chunks/{chunk-5Z4MO2F3.js → chunk-ZYJB6FML.js} +1 -1
  183. package/dist/cli/chunks/{ci-UMA2SMNW.js → ci-UCUJOSBW.js} +2 -2
  184. package/dist/cli/chunks/{ci-config-UQSILJFQ.js → ci-config-2XILD3XG.js} +2 -2
  185. package/dist/cli/chunks/{ci-output-U6YZLLKH.js → ci-output-BL6KWOHW.js} +2 -2
  186. package/dist/cli/chunks/{circuit-breaker-ATYQP6X2.js → circuit-breaker-5XLIOXE5.js} +2 -2
  187. package/dist/cli/chunks/{claude-flow-setup-6YHFD7AN.js → claude-flow-setup-4IMP6ACS.js} +2 -2
  188. package/dist/cli/chunks/client-KKRNPX4F.js +2 -0
  189. package/dist/cli/chunks/{cline-installer-EPE7IOZE.js → cline-installer-RYLHCDK7.js} +2 -2
  190. package/dist/cli/chunks/{code-NUEJ4XYO.js → code-WY3GJXHX.js} +3 -3
  191. package/dist/cli/chunks/{code-index-extractor-D4DBT6OL.js → code-index-extractor-Y4MZBZCW.js} +2 -2
  192. package/dist/cli/chunks/{codex-installer-633SM4LR.js → codex-installer-SCJ3T3DX.js} +4 -4
  193. package/dist/cli/chunks/{completions-WUKVIW3L.js → completions-CN2DXQFU.js} +2 -2
  194. package/dist/cli/chunks/{complexity-analyzer-F73ACR5H.js → complexity-analyzer-7MDPPIBH.js} +2 -2
  195. package/dist/cli/chunks/{continuedev-installer-QH42TKMS.js → continuedev-installer-GCEJRK34.js} +2 -2
  196. package/dist/cli/chunks/{copilot-installer-Y3XC7BTT.js → copilot-installer-BHPDSELY.js} +2 -2
  197. package/dist/cli/chunks/core-handlers-47MPMED7.js +2 -0
  198. package/dist/cli/chunks/{cost-tracker-57QPV7E3.js → cost-tracker-VO5MFWR6.js} +2 -2
  199. package/dist/cli/chunks/{coverage-IBCHMBCR.js → coverage-LYFQYNH6.js} +3 -3
  200. package/dist/cli/chunks/cross-domain-router-U6MBFHEC.js +2 -0
  201. package/dist/cli/chunks/{cursor-installer-F4UYQHIN.js → cursor-installer-KP4HA7TV.js} +2 -2
  202. package/dist/cli/chunks/{daemon-XR4Q6YZF.js → daemon-7RC7TS57.js} +3 -3
  203. package/dist/cli/chunks/{daemon-BYYPIJ7G.js → daemon-AXLVPKVO.js} +4 -4
  204. package/dist/cli/chunks/{dag-attention-scheduler-ZR5ZD3TW.js → dag-attention-scheduler-NKA44RSR.js} +2 -2
  205. package/dist/cli/chunks/{detect-GEGYURLL.js → detect-CMYAJWYF.js} +2 -2
  206. package/dist/cli/chunks/{dist-node-JU3KT2JO.js → dist-node-EN3PYEGW.js} +2 -2
  207. package/dist/cli/chunks/{domain-handler-7QI3FJGE.js → domain-handler-EXSZCX7A.js} +2 -2
  208. package/dist/cli/chunks/{domain-plugins-O2YRM2PD.js → domain-plugins-HCQFSNL7.js} +2 -2
  209. package/dist/cli/chunks/{domain-transfer-7J3S2OS6.js → domain-transfer-3LGSNTPO.js} +2 -2
  210. package/dist/cli/chunks/dream-76L6EEN7.js +2 -0
  211. package/dist/cli/chunks/{embed-and-insert-pattern-URES5Q6J.js → embed-and-insert-pattern-B6MNHICW.js} +2 -2
  212. package/dist/cli/chunks/{eval-RVMCIUOR.js → eval-OQELIWJK.js} +2 -2
  213. package/dist/cli/chunks/{experience-capture-middleware-SYJQSBKE.js → experience-capture-middleware-SUFILYPW.js} +3 -3
  214. package/dist/cli/chunks/{fast-paths-QUKPKWKZ.js → fast-paths-UV4NDEWM.js} +2 -2
  215. package/dist/cli/chunks/{feature-flags-K7JXNKJI.js → feature-flags-CKTYX67J.js} +2 -2
  216. package/dist/cli/chunks/{feature-flags-5JCSKL2P.js → feature-flags-H7H33B6C.js} +2 -2
  217. package/dist/cli/chunks/file-discovery-VSFKZ3LJ.js +2 -0
  218. package/dist/cli/chunks/{fleet-II4Q6HXK.js → fleet-ZJBCAKRG.js} +3 -3
  219. package/dist/cli/chunks/{gnn-wrapper-M7VO2EMS.js → gnn-wrapper-RUE2QZRG.js} +2 -2
  220. package/dist/cli/chunks/{heartbeat-handler-ND5CY26N.js → heartbeat-handler-XRV327M7.js} +4 -4
  221. package/dist/cli/chunks/heartbeat-scheduler-NIK3KKEH.js +2 -0
  222. package/dist/cli/chunks/hnsw-adapter-WJG7LUJJ.js +2 -0
  223. package/dist/cli/chunks/hnsw-index-D6PRI5HC.js +2 -0
  224. package/dist/cli/chunks/{hnsw-legacy-bridge-N3AUUUU7.js → hnsw-legacy-bridge-UJID6ZZ4.js} +2 -2
  225. package/dist/cli/chunks/{hnswlib-node-NZY3E5EN.js → hnswlib-node-WS43R4AX.js} +2 -2
  226. package/dist/cli/chunks/{hooks-QVJDTII5.js → hooks-YZNJKXAJ.js} +10 -10
  227. package/dist/cli/chunks/hybrid-backend-RIUR3I7F.js +2 -0
  228. package/dist/cli/chunks/{hypergraph-engine-ZRY6MTDV.js → hypergraph-engine-XQJSIMTS.js} +2 -2
  229. package/dist/cli/chunks/{hypergraph-handler-56DO4XZQ.js → hypergraph-handler-ZD2NYXMR.js} +3 -3
  230. package/dist/cli/chunks/impact-analyzer-C36YYTJ5.js +2 -0
  231. package/dist/cli/chunks/{init-guard-DTF4EVUY.js → init-guard-DSRUAVRT.js} +2 -2
  232. package/dist/cli/chunks/{init-handler-M6CNQHMX.js → init-handler-RJU5QMAP.js} +6 -6
  233. package/dist/cli/chunks/init-wizard-JCKNGIGT.js +2 -0
  234. package/dist/cli/chunks/kernel-F7ILJTYD.js +2 -0
  235. package/dist/cli/chunks/{kilocode-installer-IJN7XKBH.js → kilocode-installer-BCPOCVMC.js} +2 -2
  236. package/dist/cli/chunks/{kiro-installer-UKKPGPDC.js → kiro-installer-GFCWCB2S.js} +2 -2
  237. package/dist/cli/chunks/knowledge-graph-VTXDBHB2.js +2 -0
  238. package/dist/cli/chunks/{learning-W2HETWQ4.js → learning-FZTD72CF.js} +3 -3
  239. package/dist/cli/chunks/{llm-router-Y546K4VX.js → llm-router-GJVKGRJL.js} +4 -4
  240. package/dist/cli/chunks/llm-router-service-TNOWQINA.js +2 -0
  241. package/dist/cli/chunks/{load-MKAB2AXE.js → load-YKTPOYBE.js} +2 -2
  242. package/dist/cli/chunks/load-test-FPVBK2EV.js +2 -0
  243. package/dist/cli/chunks/{mcp-AZKUS6K3.js → mcp-LT6R2IKS.js} +2 -2
  244. package/dist/cli/chunks/{memory-ZDOQN2KU.js → memory-4HKKOLRY.js} +5 -5
  245. package/dist/cli/chunks/memory-backend-2QE7O67A.js +2 -0
  246. package/dist/cli/chunks/{memory-handlers-3SQVY7FE.js → memory-handlers-X4CMVBXB.js} +2 -2
  247. package/dist/cli/chunks/{multi-model-executor-WWVXDHG4.js → multi-model-executor-2YPM2WTK.js} +2 -2
  248. package/dist/cli/chunks/{opencode-installer-YUJNXXWS.js → opencode-installer-WBAJMH5K.js} +2 -2
  249. package/dist/cli/chunks/{orchestrator-Z6PWPLRE.js → orchestrator-5W5WVMVJ.js} +17 -17
  250. package/dist/cli/chunks/pattern-null-store-UI35ORHW.js +2 -0
  251. package/dist/cli/chunks/{pattern-usage-recorder-TPWPX32U.js → pattern-usage-recorder-GXRMNPAZ.js} +2 -2
  252. package/dist/cli/chunks/{pipeline-4BBGTE4M.js → pipeline-2NA4DRDA.js} +2 -2
  253. package/dist/cli/chunks/{platform-5GSHXCV5.js → platform-BGERNQ5V.js} +2 -2
  254. package/dist/cli/chunks/{plugin-OFDVF5HS.js → plugin-L4EPVENR.js} +2 -2
  255. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NC6MUYGJ.js → prime-radiant-advanced-wasm-RTQRTPTM.js} +2 -2
  256. package/dist/cli/chunks/project-root-S7WDFTMU.js +2 -0
  257. package/dist/cli/chunks/protocol-executor-OPANXQVB.js +2 -0
  258. package/dist/cli/chunks/{protocol-handler-MPOAAEPA.js → protocol-handler-SYQXM6JK.js} +2 -2
  259. package/dist/cli/chunks/{prove-CDKMAIVM.js → prove-5O7GPJCU.js} +2 -2
  260. package/dist/cli/chunks/qe-reasoning-bank-3OTF4DYQ.js +2 -0
  261. package/dist/cli/chunks/{quality-ZH4F7R7R.js → quality-KIIDHGNF.js} +2 -2
  262. package/dist/cli/chunks/{quality-gate-IDRMW6OE.js → quality-gate-H65VECD3.js} +3 -3
  263. package/dist/cli/chunks/queen-coordinator-WTYH4TAN.js +2 -0
  264. package/dist/cli/chunks/{real-embeddings-I2UVNNB3.js → real-embeddings-DYIOLKQ3.js} +2 -2
  265. package/dist/cli/chunks/{ref-validation-Z5GCGVXK.js → ref-validation-CSBJOMZM.js} +2 -2
  266. package/dist/cli/chunks/{roocode-installer-IZ2S7PH2.js → roocode-installer-G7OVYXEN.js} +2 -2
  267. package/dist/cli/chunks/router-DBBW4NC2.js +2 -0
  268. package/dist/cli/chunks/routing-feedback-W35QHCL4.js +2 -0
  269. package/dist/cli/chunks/{routing-handler-NAX35VUW.js → routing-handler-ZNZPPI5Y.js} +2 -2
  270. package/dist/cli/chunks/{ruvector-commands-5YW2SOFF.js → ruvector-commands-C6IG3OY3.js} +2 -2
  271. package/dist/cli/chunks/rvf-dual-writer-X3NSL25Z.js +2 -0
  272. package/dist/cli/chunks/rvf-migration-adapter-TZR7GDOK.js +2 -0
  273. package/dist/cli/chunks/{rvf-migration-coordinator-VUIZHTVG.js → rvf-migration-coordinator-4ATTHGHD.js} +2 -2
  274. package/dist/cli/chunks/rvf-native-adapter-HD25ZYV5.js +2 -0
  275. package/dist/cli/chunks/{rvf-store-integrity-IPGCAT6C.js → rvf-store-integrity-3G6LFLT3.js} +2 -2
  276. package/dist/cli/chunks/safe-db-ZS2QKANY.js +2 -0
  277. package/dist/cli/chunks/schedule-ZH6VNA32.js +2 -0
  278. package/dist/cli/chunks/scheduler-T6CD74B6.js +2 -0
  279. package/dist/cli/chunks/{security-3IH4BO5Z.js → security-A3IMVLFM.js} +3 -3
  280. package/dist/cli/chunks/{shared-rvf-adapter-ABY7PAY2.js → shared-rvf-adapter-VHWQ6US5.js} +2 -2
  281. package/dist/cli/chunks/{shared-rvf-dual-writer-6KENLN2W.js → shared-rvf-dual-writer-JB3QS7IG.js} +2 -2
  282. package/dist/cli/chunks/sqlite-persistence-47WU5EKZ.js +2 -0
  283. package/dist/cli/chunks/{standalone-memory-RLFAUGOW.js → standalone-memory-DDNXCSBD.js} +2 -2
  284. package/dist/cli/chunks/{status-handler-FCOZBPE5.js → status-handler-2HK7XPEK.js} +2 -2
  285. package/dist/cli/chunks/{structural-health-4RDA5UUM.js → structural-health-DSJVLEPV.js} +2 -2
  286. package/dist/cli/chunks/{sync-54LUAUTK.js → sync-3MUV6S5E.js} +2 -2
  287. package/dist/cli/chunks/{sync-KGEEXXCC.js → sync-NTUR53PI.js} +2 -2
  288. package/dist/cli/chunks/{task-handler-K3OXHYKU.js → task-handler-74MZN2EO.js} +2 -2
  289. package/dist/cli/chunks/{task-handlers-6H7L2UT4.js → task-handlers-VJR6EHRZ.js} +3 -3
  290. package/dist/cli/chunks/{test-S7IG6EIX.js → test-O6FK3FVF.js} +4 -4
  291. package/dist/cli/chunks/test-runner-process-2NPW3UDQ.js +2 -0
  292. package/dist/cli/chunks/{test-scheduling-7XYXI4L2.js → test-scheduling-Q6QEEOS6.js} +3 -3
  293. package/dist/cli/chunks/{token-bootstrap-3QMABE45.js → token-bootstrap-TTRCECLP.js} +2 -2
  294. package/dist/cli/chunks/{token-usage-Y2YTPOFE.js → token-usage-YEEFWSSI.js} +2 -2
  295. package/dist/cli/chunks/{transformers-UCJ3HHHC.js → transformers-BZCHJJJT.js} +2 -2
  296. package/dist/cli/chunks/tree-sitter-wasm-parser-RZAND65G.js +2 -0
  297. package/dist/cli/chunks/{types-6CMFPETH.js → types-4AOKZYOX.js} +2 -2
  298. package/dist/cli/chunks/unified-memory-FZ5K2C7W.js +2 -0
  299. package/dist/cli/chunks/unified-memory-hnsw-VREWX56M.js +2 -0
  300. package/dist/cli/chunks/unified-persistence-YZGMKX6B.js +2 -0
  301. package/dist/cli/chunks/{upgrade-K25DN6WU.js → upgrade-2MWW6BT2.js} +2 -2
  302. package/dist/cli/chunks/{validate-T4V3TBY3.js → validate-PAEV3GT5.js} +2 -2
  303. package/dist/cli/chunks/{validate-swarm-XSRC576T.js → validate-swarm-ZIXACK5K.js} +2 -2
  304. package/dist/cli/chunks/visual-security-GXGSFBVA.js +2 -0
  305. package/dist/cli/chunks/{web-tree-sitter-YOZXHRTN.js → web-tree-sitter-VLTXZFAB.js} +2 -2
  306. package/dist/cli/chunks/{windsurf-installer-ITPU2IYL.js → windsurf-installer-VELMLOZF.js} +2 -2
  307. package/dist/cli/chunks/witness-chain-MRJKVCOW.js +2 -0
  308. package/dist/cli/chunks/witness-chain-WWHJKITG.js +2 -0
  309. package/dist/cli/chunks/{witness-chain-repair-YUG7E3UX.js → witness-chain-repair-5SAXPETG.js} +2 -2
  310. package/dist/cli/chunks/{witness-chain-verifier-DTDSVKOG.js → witness-chain-verifier-MIDWD4JS.js} +2 -2
  311. package/dist/cli/chunks/{witness-key-manager-EWACWGAW.js → witness-key-manager-OSVCWOB2.js} +2 -2
  312. package/dist/cli/chunks/{workflow-ZIQ4FV42.js → workflow-MK7A7QCX.js} +4 -4
  313. package/dist/cli/chunks/workflow-orchestrator-SG7DV72E.js +2 -0
  314. package/dist/cli/chunks/{wrappers-PW2O27LL.js → wrappers-5QFMCKXL.js} +2 -2
  315. package/dist/init/init-wizard-hooks.d.ts +1 -1
  316. package/dist/init/init-wizard-hooks.js +7 -8
  317. package/dist/init/phases/08-mcp.js +9 -0
  318. package/dist/init/settings-merge.d.ts +13 -0
  319. package/dist/init/settings-merge.js +49 -2
  320. package/dist/integrations/agent-booster-wasm/agent_booster_wasm.js +849 -0
  321. package/dist/integrations/agent-booster-wasm/agent_booster_wasm_bg.wasm +0 -0
  322. package/dist/integrations/agent-booster-wasm/index.d.ts +8 -0
  323. package/dist/integrations/agent-booster-wasm/index.js +25 -2
  324. package/dist/integrations/agent-booster-wasm/package.json +16 -0
  325. package/dist/learning/dream/dream-engine.d.ts +3 -2
  326. package/dist/learning/dream/dream-engine.js +42 -24
  327. package/dist/learning/dream/dream-lock-retry.d.ts +38 -0
  328. package/dist/learning/dream/dream-lock-retry.js +66 -0
  329. package/dist/learning/dream/speculative-dreamer.js +1 -1
  330. package/dist/mcp/bundle.js +419 -419
  331. package/package.json +4 -2
  332. package/dist/cli/chunks/adapter-23KA2YW7.js +0 -2
  333. package/dist/cli/chunks/agent-booster-wasm-2DLAEZK6.js +0 -2
  334. package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +0 -2
  335. package/dist/cli/chunks/base-XPWGYDKD.js +0 -2
  336. package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +0 -2
  337. package/dist/cli/chunks/chunk-YKQWIXUY.js +0 -2
  338. package/dist/cli/chunks/client-E43GWLQH.js +0 -2
  339. package/dist/cli/chunks/core-handlers-R5A3SQDY.js +0 -2
  340. package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +0 -2
  341. package/dist/cli/chunks/dream-6C4NURSE.js +0 -2
  342. package/dist/cli/chunks/file-discovery-J5IE5KP7.js +0 -2
  343. package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +0 -2
  344. package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +0 -2
  345. package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +0 -2
  346. package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +0 -2
  347. package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +0 -2
  348. package/dist/cli/chunks/init-wizard-RTLCRWDT.js +0 -2
  349. package/dist/cli/chunks/kernel-2OWIGGGT.js +0 -2
  350. package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +0 -2
  351. package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +0 -2
  352. package/dist/cli/chunks/load-test-D6QYNIVT.js +0 -2
  353. package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +0 -2
  354. package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +0 -2
  355. package/dist/cli/chunks/project-root-DDGBWDP6.js +0 -2
  356. package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +0 -2
  357. package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +0 -2
  358. package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +0 -2
  359. package/dist/cli/chunks/router-FT5WJPUH.js +0 -2
  360. package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +0 -2
  361. package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +0 -2
  362. package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +0 -2
  363. package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +0 -2
  364. package/dist/cli/chunks/safe-db-TDZKUOZJ.js +0 -2
  365. package/dist/cli/chunks/schedule-CRKTRY2A.js +0 -2
  366. package/dist/cli/chunks/scheduler-6ZBDVQWN.js +0 -2
  367. package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +0 -2
  368. package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +0 -2
  369. package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +0 -2
  370. package/dist/cli/chunks/unified-memory-QARWQKJ2.js +0 -2
  371. package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +0 -2
  372. package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +0 -2
  373. package/dist/cli/chunks/visual-security-O4ALMCXQ.js +0 -2
  374. package/dist/cli/chunks/witness-chain-B3YW5NMS.js +0 -2
  375. package/dist/cli/chunks/witness-chain-PIYR72HJ.js +0 -2
  376. package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +0 -2
@@ -41,6 +41,14 @@ export interface TransformOptions {
41
41
  maxChunks?: number;
42
42
  allowFallback?: boolean;
43
43
  }
44
+ /**
45
+ * Locate the wasm-bindgen glue (#1241). A relative require resolved against
46
+ * the bundle's directory (dist/mcp/ or dist/cli/chunks/), where the glue does
47
+ * not exist, so WASM never loaded from the published package. Look next to
48
+ * this module first (unbundled src/ or dist/), then in the copy the build
49
+ * places under dist/integrations/agent-booster-wasm/ in the package root.
50
+ */
51
+ export declare function resolveWasmGlue(metaUrl?: string): string | null;
44
52
  /**
45
53
  * Map file extension to Language enum
46
54
  */
@@ -8,7 +8,11 @@
8
8
  * Accuracy: 81% (13/16 test cases)
9
9
  */
10
10
  import { createRequire } from 'module';
11
+ import { existsSync } from 'fs';
12
+ import { dirname, join } from 'path';
13
+ import { fileURLToPath } from 'url';
11
14
  import { LoggerFactory } from '../../logging/index.js';
15
+ import { findPackageRoot } from '../../init/find-package-root.js';
12
16
  const logger = LoggerFactory.create('agent-booster-wasm');
13
17
  // Language constants (const object instead of enum for ESM compatibility)
14
18
  // This pattern works consistently across tsx dev mode, node, and bundled builds
@@ -45,6 +49,21 @@ const LanguageNames = {
45
49
  let wasmModule = null;
46
50
  let wasmBooster = null;
47
51
  let loadError = null;
52
+ const GLUE_FILE = 'agent_booster_wasm.js';
53
+ /**
54
+ * Locate the wasm-bindgen glue (#1241). A relative require resolved against
55
+ * the bundle's directory (dist/mcp/ or dist/cli/chunks/), where the glue does
56
+ * not exist, so WASM never loaded from the published package. Look next to
57
+ * this module first (unbundled src/ or dist/), then in the copy the build
58
+ * places under dist/integrations/agent-booster-wasm/ in the package root.
59
+ */
60
+ export function resolveWasmGlue(metaUrl = import.meta.url) {
61
+ const candidates = [join(dirname(fileURLToPath(metaUrl)), GLUE_FILE)];
62
+ const root = findPackageRoot(metaUrl);
63
+ if (root)
64
+ candidates.push(join(root, 'dist', 'integrations', 'agent-booster-wasm', GLUE_FILE));
65
+ return candidates.find((p) => existsSync(p)) ?? null;
66
+ }
48
67
  /**
49
68
  * Load the WASM module
50
69
  */
@@ -54,9 +73,13 @@ async function loadWasm() {
54
73
  if (loadError)
55
74
  return false;
56
75
  try {
57
- // Use createRequire for ESM compatibility
76
+ const gluePath = resolveWasmGlue();
77
+ if (!gluePath) {
78
+ throw new Error(`${GLUE_FILE} not found next to the module or under dist/integrations/agent-booster-wasm/`);
79
+ }
80
+ // The glue is CommonJS (it reads the .wasm via __dirname), so load it with require.
58
81
  const require = createRequire(import.meta.url);
59
- wasmModule = require('./agent_booster_wasm.js');
82
+ wasmModule = require(gluePath);
60
83
  if (!wasmModule) {
61
84
  throw new Error('WASM module loaded but is null');
62
85
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "agent-booster-wasm",
3
+ "collaborators": [
4
+ "Agent Booster Team"
5
+ ],
6
+ "description": "WebAssembly bindings for agent-booster",
7
+ "version": "0.1.0",
8
+ "license": "MIT",
9
+ "files": [
10
+ "agent_booster_wasm_bg.wasm",
11
+ "agent_booster_wasm.js",
12
+ "agent_booster_wasm.d.ts"
13
+ ],
14
+ "main": "agent_booster_wasm.js",
15
+ "types": "agent_booster_wasm.d.ts"
16
+ }
@@ -212,9 +212,10 @@ export declare class DreamEngine {
212
212
  * #1060: write the results of a `dream(…, { commit: false })` run, in the
213
213
  * same single transaction a normal dream uses. Returns the commit duration
214
214
  * in ms. Throws (and writes nothing) if the engine is closed or the write
215
- * fails.
215
+ * fails. #1253: async, because a locked database is retried without
216
+ * blocking the process.
216
217
  */
217
- commitDreamResult(result: DreamCycleResult): number;
218
+ commitDreamResult(result: DreamCycleResult): Promise<number>;
218
219
  /**
219
220
  * Commit a computed dream, then record it in the witness chain (#1060) and
220
221
  * run the default retention steps (#1239).
@@ -31,6 +31,7 @@ import { v4 as uuidv4 } from 'uuid';
31
31
  import { getUnifiedPersistence } from '../../kernel/unified-persistence.js';
32
32
  import { registerStoreCloser } from '../../kernel/process-lifecycle.js';
33
33
  import { ConceptGraph } from './concept-graph.js';
34
+ import { DREAM_LOCK_WAIT_MS, DREAM_SHUTDOWN_LOCK_WAIT_MS, isBusyError, retryWhileBusy, withBusyTimeout, } from './dream-lock-retry.js';
34
35
  import { SpreadingActivation, } from './spreading-activation.js';
35
36
  import { InsightGenerator, } from './insight-generator.js';
36
37
  import { DEFAULT_VALIDATION_THRESHOLDS, } from './rvcow-branch-manager.js';
@@ -277,16 +278,14 @@ export class DreamEngine {
277
278
  await this.persistence.initialize();
278
279
  }
279
280
  this.db = this.persistence.getDatabase();
280
- // ADR-001 Option C: dynamic-import paths in checkAndTriggerDream() open
281
- // a fresh handle that the hook/worker busy_timeout pragmas never reach.
282
- // 60s patient timeout here keeps dream cycles from failing under WAL
283
- // contention from MCP workers (was 71% failure rate observed).
284
- try {
285
- this.db.pragma('busy_timeout = 60000');
286
- }
287
- catch { /* fail-soft */ }
288
- // Migrate legacy schema: rename 'duration' → 'duration_ms' if needed
289
- this.migrateSchema();
281
+ // #1253: no 60 s busy_timeout on this shared connection. better-sqlite3
282
+ // waits synchronously, so it froze the whole process (the MCP event loop)
283
+ // while another writer held the database. Dream writes instead wait
284
+ // briefly per attempt and retry asynchronously (dream-lock-retry.ts),
285
+ // which keeps the patience that avoided failures under contention (#1060).
286
+ // Migrate legacy schema: rename 'duration' → 'duration_ms' if needed.
287
+ // #1253: a short lock wait only; migrateSchema() logs and carries on.
288
+ withBusyTimeout(this.db, DREAM_LOCK_WAIT_MS, () => this.migrateSchema());
290
289
  // Initialize concept graph (shares same unified persistence)
291
290
  this.graph = new ConceptGraph();
292
291
  await this.graph.initialize();
@@ -296,9 +295,19 @@ export class DreamEngine {
296
295
  'committed in one short transaction instead of a SAVEPOINT held across the dream');
297
296
  }
298
297
  // #1060: a process that exited mid-dream left its cycle 'running'.
299
- const abandoned = markAbandonedCycles(this.db, Math.max(this.config.maxDurationMs, MAX_TOOL_DREAM_MS) + ABANDONED_CYCLE_GRACE_MS);
300
- if (abandoned > 0) {
301
- dreamLogger.info('Marked abandoned dream cycles as interrupted', { abandoned });
298
+ // #1253: housekeeping, so a locked database skips it after a short
299
+ // wait instead of blocking the process; the next initialize() retries.
300
+ const db = this.db;
301
+ try {
302
+ const abandoned = withBusyTimeout(db, DREAM_LOCK_WAIT_MS, () => markAbandonedCycles(db, Math.max(this.config.maxDurationMs, MAX_TOOL_DREAM_MS) + ABANDONED_CYCLE_GRACE_MS));
303
+ if (abandoned > 0) {
304
+ dreamLogger.info('Marked abandoned dream cycles as interrupted', { abandoned });
305
+ }
306
+ }
307
+ catch (error) {
308
+ if (!isBusyError(error))
309
+ throw error;
310
+ dreamLogger.warn('Abandoned dream cycle sweep skipped: database is locked', { error: toErrorMessage(error) });
302
311
  }
303
312
  this.initialized = true;
304
313
  this.closing = false;
@@ -433,7 +442,7 @@ export class DreamEngine {
433
442
  let committed = false;
434
443
  try {
435
444
  if (commitResults)
436
- await this.saveCycle(cycle);
445
+ await this.saveCycle(cycle, live);
437
446
  if (!live())
438
447
  throw new Error('Dream cycle cancelled');
439
448
  // 1. Check we have enough concepts
@@ -483,7 +492,7 @@ export class DreamEngine {
483
492
  committed = true; // nothing to record: the caller decides
484
493
  return { ...result, pending: computed };
485
494
  }
486
- const commit = this.commitComputed(db, computed);
495
+ const commit = await this.commitComputed(db, computed, live);
487
496
  committed = true;
488
497
  result.commitDurationMs = commit.durationMs;
489
498
  result.retention = commit.retention;
@@ -499,7 +508,7 @@ export class DreamEngine {
499
508
  cycle.durationMs = Date.now() - startTime;
500
509
  if (commitResults && this.db === db) {
501
510
  try {
502
- this.updateCycleSync(cycle);
511
+ await retryWhileBusy(db, () => this.updateCycleSync(cycle), { shouldContinue: () => this.db === db });
503
512
  }
504
513
  catch { /* best effort */ }
505
514
  }
@@ -528,9 +537,10 @@ export class DreamEngine {
528
537
  * #1060: write the results of a `dream(…, { commit: false })` run, in the
529
538
  * same single transaction a normal dream uses. Returns the commit duration
530
539
  * in ms. Throws (and writes nothing) if the engine is closed or the write
531
- * fails.
540
+ * fails. #1253: async, because a locked database is retried without
541
+ * blocking the process.
532
542
  */
533
- commitDreamResult(result) {
543
+ async commitDreamResult(result) {
534
544
  this.ensureInitialized();
535
545
  if (this.closing) {
536
546
  throw new Error('Dream engine is closing; nothing is committed');
@@ -538,7 +548,8 @@ export class DreamEngine {
538
548
  if (!result.pending) {
539
549
  throw new Error('Dream result has nothing pending to commit (it was already committed)');
540
550
  }
541
- const commit = this.commitComputed(this.db, result.pending);
551
+ const db = this.db;
552
+ const commit = await this.commitComputed(db, result.pending, () => !this.closing && this.db === db);
542
553
  result.pending = undefined;
543
554
  result.commitDurationMs = commit.durationMs;
544
555
  result.retention = commit.retention;
@@ -548,8 +559,12 @@ export class DreamEngine {
548
559
  * Commit a computed dream, then record it in the witness chain (#1060) and
549
560
  * run the default retention steps (#1239).
550
561
  */
551
- commitComputed(db, computed) {
552
- const commit = commitDream(db, computed);
562
+ async commitComputed(db, computed, live) {
563
+ // #1253: retry a locked database asynchronously; each attempt is short.
564
+ const commit = await retryWhileBusy(db, () => commitDream(db, computed), {
565
+ shouldContinue: live,
566
+ cancelledError: () => new Error('Dream cycle cancelled'),
567
+ });
553
568
  try {
554
569
  this._witnessChain?.append('DREAM_COMMIT', {
555
570
  cycleId: computed.cycle.id,
@@ -613,7 +628,9 @@ export class DreamEngine {
613
628
  cycle.endTime = new Date();
614
629
  cycle.durationMs = Date.now() - startTime;
615
630
  try {
616
- this.updateCycleSync(cycle);
631
+ // #1253: a short wait only; if the database stays locked, the
632
+ // abandoned-cycle sweep marks the cycle interrupted later.
633
+ withBusyTimeout(this.db, DREAM_SHUTDOWN_LOCK_WAIT_MS, () => this.updateCycleSync(cycle));
617
634
  }
618
635
  catch {
619
636
  // Best effort during shutdown
@@ -912,16 +929,17 @@ export class DreamEngine {
912
929
  // ==========================================================================
913
930
  // Persistence
914
931
  // ==========================================================================
915
- async saveCycle(cycle) {
932
+ async saveCycle(cycle, live) {
916
933
  if (!this.db)
917
934
  return;
935
+ const db = this.db;
918
936
  const stmt = this.db.prepare(`
919
937
  INSERT INTO dream_cycles
920
938
  (id, start_time, end_time, duration_ms, concepts_processed, associations_found,
921
939
  insights_generated, status, error, created_at)
922
940
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
923
941
  `);
924
- 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());
942
+ await retryWhileBusy(db, () => 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()), { shouldContinue: live, cancelledError: () => new Error('Dream cycle cancelled') });
925
943
  }
926
944
  updateCycleSync(cycle) {
927
945
  if (!this.db)
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Lock waits for dream writes (#1253).
3
+ *
4
+ * better-sqlite3 waits for a locked database synchronously, so a long
5
+ * busy_timeout freezes the whole process: in the MCP server that is the event
6
+ * loop and every tool call. Dream writes therefore wait only briefly per
7
+ * attempt and retry asynchronously, so other work runs between attempts.
8
+ */
9
+ import type { Database as DatabaseType } from 'better-sqlite3';
10
+ /** Longest a single dream write attempt blocks the process on a locked database. */
11
+ export declare const DREAM_LOCK_WAIT_MS = 200;
12
+ /** Total time a dream write keeps retrying a locked database before it fails. */
13
+ export declare const DREAM_LOCK_RETRY_BUDGET_MS = 60000;
14
+ /** True for SQLite "database is locked" / "busy" failures. */
15
+ export declare function isBusyError(error: unknown): boolean;
16
+ /** Run `fn` with a temporary busy_timeout, restoring the connection's previous value. */
17
+ export declare function withBusyTimeout<T>(db: DatabaseType, timeoutMs: number, fn: () => T): T;
18
+ export interface RetryWhileBusyOptions {
19
+ /** Synchronous wait per attempt (default DREAM_LOCK_WAIT_MS). */
20
+ waitMs?: number;
21
+ /** Total retry time before the busy error is thrown (default DREAM_LOCK_RETRY_BUDGET_MS). */
22
+ budgetMs?: number;
23
+ /** Checked before every attempt; when false, `cancelledError` is thrown instead of retrying. */
24
+ shouldContinue?: () => boolean;
25
+ cancelledError?: () => Error;
26
+ /** Injectable for tests. */
27
+ sleep?: (ms: number) => Promise<void>;
28
+ now?: () => number;
29
+ }
30
+ /**
31
+ * Run a synchronous write, retrying while the database is locked. Each attempt
32
+ * blocks for at most `waitMs`; between attempts the event loop is free. Errors
33
+ * other than a busy database are thrown at once.
34
+ */
35
+ export declare function retryWhileBusy<T>(db: DatabaseType, fn: () => T, options?: RetryWhileBusyOptions): Promise<T>;
36
+ /** Wait for the synchronous best-effort write made while a dream is interrupted at shutdown. */
37
+ export declare const DREAM_SHUTDOWN_LOCK_WAIT_MS = 1000;
38
+ //# sourceMappingURL=dream-lock-retry.d.ts.map
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Lock waits for dream writes (#1253).
3
+ *
4
+ * better-sqlite3 waits for a locked database synchronously, so a long
5
+ * busy_timeout freezes the whole process: in the MCP server that is the event
6
+ * loop and every tool call. Dream writes therefore wait only briefly per
7
+ * attempt and retry asynchronously, so other work runs between attempts.
8
+ */
9
+ /** Longest a single dream write attempt blocks the process on a locked database. */
10
+ export const DREAM_LOCK_WAIT_MS = 200;
11
+ /** Total time a dream write keeps retrying a locked database before it fails. */
12
+ export const DREAM_LOCK_RETRY_BUDGET_MS = 60_000;
13
+ /** Longest pause between attempts; the pause doubles from 25 ms up to this. */
14
+ const MAX_BACKOFF_MS = 1000;
15
+ /** True for SQLite "database is locked" / "busy" failures. */
16
+ export function isBusyError(error) {
17
+ const code = error?.code;
18
+ if (typeof code === 'string' && /^SQLITE_(BUSY|LOCKED)/.test(code))
19
+ return true;
20
+ const message = error instanceof Error ? error.message : String(error);
21
+ return /database is locked|database table is locked|SQLITE_BUSY/i.test(message);
22
+ }
23
+ /** Run `fn` with a temporary busy_timeout, restoring the connection's previous value. */
24
+ export function withBusyTimeout(db, timeoutMs, fn) {
25
+ const previous = db.pragma('busy_timeout', { simple: true });
26
+ db.pragma(`busy_timeout = ${timeoutMs}`);
27
+ try {
28
+ return fn();
29
+ }
30
+ finally {
31
+ try {
32
+ db.pragma(`busy_timeout = ${previous}`);
33
+ }
34
+ catch { /* connection closed */ }
35
+ }
36
+ }
37
+ /**
38
+ * Run a synchronous write, retrying while the database is locked. Each attempt
39
+ * blocks for at most `waitMs`; between attempts the event loop is free. Errors
40
+ * other than a busy database are thrown at once.
41
+ */
42
+ export async function retryWhileBusy(db, fn, options = {}) {
43
+ const waitMs = options.waitMs ?? DREAM_LOCK_WAIT_MS;
44
+ const budgetMs = options.budgetMs ?? DREAM_LOCK_RETRY_BUDGET_MS;
45
+ const sleep = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
46
+ const now = options.now ?? Date.now;
47
+ const started = now();
48
+ let backoff = 25;
49
+ for (;;) {
50
+ if (options.shouldContinue && !options.shouldContinue()) {
51
+ throw options.cancelledError?.() ?? new Error('Cancelled while waiting for a locked database');
52
+ }
53
+ try {
54
+ return withBusyTimeout(db, waitMs, fn);
55
+ }
56
+ catch (error) {
57
+ if (!isBusyError(error) || now() - started + backoff >= budgetMs)
58
+ throw error;
59
+ }
60
+ await sleep(backoff);
61
+ backoff = Math.min(backoff * 2, MAX_BACKOFF_MS);
62
+ }
63
+ }
64
+ /** Wait for the synchronous best-effort write made while a dream is interrupted at shutdown. */
65
+ export const DREAM_SHUTDOWN_LOCK_WAIT_MS = 1000;
66
+ //# sourceMappingURL=dream-lock-retry.js.map
@@ -117,7 +117,7 @@ export class SpeculativeDreamer {
117
117
  let commitDurationMs;
118
118
  if (winner?.result) {
119
119
  try {
120
- commitDurationMs = this.engine.commitDreamResult(winner.result);
120
+ commitDurationMs = await this.engine.commitDreamResult(winner.result);
121
121
  winner.selected = true;
122
122
  }
123
123
  catch (error) {