agentic-qe 3.15.14 → 3.15.16

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 (513) 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 +136 -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/audit/witness-chain.d.ts +7 -0
  7. package/dist/audit/witness-chain.js +10 -0
  8. package/dist/cli/bundle.js +6 -6
  9. package/dist/cli/chunks/adapter-6CQ2PIP5.js +2 -0
  10. package/dist/cli/chunks/agent-booster-wasm-45NWEKVS.js +2 -0
  11. package/dist/cli/chunks/{agent-handler-P3IY7XEE.js → agent-handler-LVHMYFEF.js} +2 -2
  12. package/dist/cli/chunks/{agent-memory-branch-WWKC2H3G.js → agent-memory-branch-YDWOJFEQ.js} +2 -2
  13. package/dist/cli/chunks/aqe-learning-engine-73RR52VS.js +2 -0
  14. package/dist/cli/chunks/{arena-EIV5OALF.js → arena-CZKHXDDS.js} +2 -2
  15. package/dist/cli/chunks/{arena-4BMFF6BS.js → arena-ELDZH3CZ.js} +4 -4
  16. package/dist/cli/chunks/{audit-DNTI453H.js → audit-5MT4T47Z.js} +3 -3
  17. package/dist/cli/chunks/base-SMCMMVGP.js +2 -0
  18. package/dist/cli/chunks/{better-sqlite3-TQBQGNC6.js → better-sqlite3-6TGYPC2B.js} +2 -2
  19. package/dist/cli/chunks/{brain-handler-HY57CNAO.js → brain-handler-HQWZFO52.js} +3 -3
  20. package/dist/cli/chunks/{branch-enumerator-THPMZPHQ.js → branch-enumerator-WVILM4SO.js} +2 -2
  21. package/dist/cli/chunks/{browser-O6JJOZCK.js → browser-RX5ALU3H.js} +2 -2
  22. package/dist/cli/chunks/browser-workflow-A2MEZ66K.js +2 -0
  23. package/dist/cli/chunks/{chunk-CIINJHOX.js → chunk-24OX5TQJ.js} +1 -1
  24. package/dist/cli/chunks/{chunk-6P4Q4RTC.js → chunk-24QHCVX6.js} +1 -1
  25. package/dist/cli/chunks/{chunk-U6IOQKCT.js → chunk-2H4XH6FT.js} +2 -2
  26. package/dist/cli/chunks/{chunk-OGEIHS76.js → chunk-2YZ4G6NW.js} +1 -1
  27. package/dist/cli/chunks/chunk-32BPDLRZ.js +27 -0
  28. package/dist/cli/chunks/{chunk-5PLBQZ5J.js → chunk-32GN3JKR.js} +1 -1
  29. package/dist/cli/chunks/{chunk-AJVLVF7V.js → chunk-3HD7E6HN.js} +2 -2
  30. package/dist/cli/chunks/{chunk-X7CUI7KH.js → chunk-4D4DENG6.js} +2 -2
  31. package/dist/cli/chunks/{chunk-E2JLAW3U.js → chunk-4LQFBY5L.js} +6 -6
  32. package/dist/cli/chunks/{chunk-E3QIQMMN.js → chunk-4NFQLP6R.js} +1 -1
  33. package/dist/cli/chunks/{chunk-7Y3LXH57.js → chunk-525CFDUE.js} +2 -2
  34. package/dist/cli/chunks/chunk-5B5QPCNU.js +65 -0
  35. package/dist/cli/chunks/{chunk-X6Q2N5S5.js → chunk-5JZRZI4S.js} +2 -2
  36. package/dist/cli/chunks/{chunk-MB4UKUBV.js → chunk-5LAVKGLH.js} +2 -2
  37. package/dist/cli/chunks/chunk-5NNNEWLS.js +755 -0
  38. package/dist/cli/chunks/{chunk-NKOLILT7.js → chunk-5PBLPQ5T.js} +2 -2
  39. package/dist/cli/chunks/chunk-5QO3R3TU.js +6 -0
  40. package/dist/cli/chunks/{chunk-7T6L3LFN.js → chunk-5SPCGMBB.js} +2 -2
  41. package/dist/cli/chunks/{chunk-2QLE6NDW.js → chunk-5V3TI2LG.js} +1 -1
  42. package/dist/cli/chunks/{chunk-A2T56XVL.js → chunk-5VZL4UVN.js} +2 -2
  43. package/dist/cli/chunks/{chunk-TWOV3I3A.js → chunk-63GMRQ25.js} +1 -1
  44. package/dist/cli/chunks/{chunk-YGOSSVY5.js → chunk-63ZKI4PX.js} +6 -6
  45. package/dist/cli/chunks/{chunk-FHPNWHY7.js → chunk-67Z5R7RJ.js} +2 -2
  46. package/dist/cli/chunks/{chunk-PCQZIAXB.js → chunk-6DPYNAOK.js} +2 -2
  47. package/dist/cli/chunks/{chunk-WCM6WE7G.js → chunk-6ICX3FEG.js} +3 -3
  48. package/dist/cli/chunks/{chunk-JB7R77SH.js → chunk-6XXZDV2C.js} +2 -2
  49. package/dist/cli/chunks/{chunk-FJOIBZUB.js → chunk-6ZBXSOX6.js} +2 -2
  50. package/dist/cli/chunks/{chunk-WZQADC5R.js → chunk-72XSEQMW.js} +2 -2
  51. package/dist/cli/chunks/{chunk-AYLEH2UF.js → chunk-7TE5ONQQ.js} +1 -1
  52. package/dist/cli/chunks/{chunk-7QUSNBAA.js → chunk-A5GBXCP5.js} +2 -2
  53. package/dist/cli/chunks/{chunk-7724KXM2.js → chunk-AAMLQ2LF.js} +3 -3
  54. package/dist/cli/chunks/chunk-AG2EWGXS.js +21 -0
  55. package/dist/cli/chunks/{chunk-2UZBLC5H.js → chunk-AGRV5B3T.js} +2 -2
  56. package/dist/cli/chunks/{chunk-V6SE2ZU2.js → chunk-AJMJNQMP.js} +1 -1
  57. package/dist/cli/chunks/{chunk-2HPNGK7A.js → chunk-AR67RJPY.js} +2 -2
  58. package/dist/cli/chunks/{chunk-G7HGUQAE.js → chunk-ASEOFRIG.js} +2 -2
  59. package/dist/cli/chunks/{chunk-7TH4PJSU.js → chunk-BEKDKVQT.js} +2 -2
  60. package/dist/cli/chunks/{chunk-M5JEA6ZY.js → chunk-BY5OF7OH.js} +2 -2
  61. package/dist/cli/chunks/{chunk-OLUOVNUF.js → chunk-C5FP5GW3.js} +2 -2
  62. package/dist/cli/chunks/{chunk-R5RRWLRI.js → chunk-C6D5AHBO.js} +2 -2
  63. package/dist/cli/chunks/{chunk-K7GFYFBO.js → chunk-CAKMOVZ6.js} +2 -2
  64. package/dist/cli/chunks/{chunk-6NIGSY5L.js → chunk-CEYSYSK5.js} +2 -2
  65. package/dist/cli/chunks/{chunk-U4TML2VD.js → chunk-CGGUM2YJ.js} +2 -2
  66. package/dist/cli/chunks/{chunk-YE54T2NQ.js → chunk-CJSHWQXP.js} +2 -2
  67. package/dist/cli/chunks/{chunk-7SQTLUEN.js → chunk-CRPIYUTJ.js} +2 -2
  68. package/dist/cli/chunks/{chunk-65EE2EST.js → chunk-D6COXLYE.js} +2 -2
  69. package/dist/cli/chunks/{chunk-4WLIOPHX.js → chunk-DTMAS2GB.js} +2 -2
  70. package/dist/cli/chunks/{chunk-E7QTWGPI.js → chunk-DVYHMDFR.js} +470 -411
  71. package/dist/cli/chunks/chunk-DXD6K2ZP.js +3 -0
  72. package/dist/cli/chunks/{chunk-HSDWPQQY.js → chunk-E3D4GPLP.js} +3 -3
  73. package/dist/cli/chunks/{chunk-JJHLGGPP.js → chunk-EA4YQVKS.js} +1 -1
  74. package/dist/cli/chunks/{chunk-EIEEST4T.js → chunk-EGYE5UPQ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-O756AOUX.js → chunk-EK7OLYOZ.js} +2 -2
  76. package/dist/cli/chunks/{chunk-57DRT6UA.js → chunk-F742SZAX.js} +2 -2
  77. package/dist/cli/chunks/{chunk-6OI5SK7M.js → chunk-FBDVGRSC.js} +1 -1
  78. package/dist/cli/chunks/{chunk-H3C5FJRH.js → chunk-FDDC72IA.js} +2 -2
  79. package/dist/cli/chunks/{chunk-IQRPR4KB.js → chunk-FL64OUBA.js} +2 -2
  80. package/dist/cli/chunks/{chunk-BNG4J3CE.js → chunk-FLNAW7C4.js} +2 -2
  81. package/dist/cli/chunks/{chunk-C3OIBFAA.js → chunk-G5RHFBAY.js} +2 -2
  82. package/dist/cli/chunks/{chunk-NPCXGX7N.js → chunk-GAHNO6JJ.js} +2 -2
  83. package/dist/cli/chunks/{chunk-PNRPVQGI.js → chunk-GFWHUQSF.js} +2 -2
  84. package/dist/cli/chunks/{chunk-OCN53CCK.js → chunk-GJYHWYXR.js} +2 -2
  85. package/dist/cli/chunks/{chunk-5Z4MO2F3.js → chunk-GQ6TUIKY.js} +1 -1
  86. package/dist/cli/chunks/{chunk-N736GLWZ.js → chunk-GSKMOPL7.js} +2 -2
  87. package/dist/cli/chunks/{chunk-43XHGWYH.js → chunk-HCH4Y6XX.js} +2 -2
  88. package/dist/cli/chunks/{chunk-QP6GL3O5.js → chunk-HGWXF45W.js} +1 -1
  89. package/dist/cli/chunks/{chunk-PGN4TARY.js → chunk-HJ6ZGVTB.js} +2 -2
  90. package/dist/cli/chunks/{chunk-M2TG7VDK.js → chunk-HLUXXCHF.js} +1 -1
  91. package/dist/cli/chunks/{chunk-UMHFTQTR.js → chunk-HVRRLYX6.js} +4 -4
  92. package/dist/cli/chunks/{chunk-L7PC675Y.js → chunk-I7MQIM2U.js} +1 -1
  93. package/dist/cli/chunks/{chunk-JSSU4RIK.js → chunk-IESR7TNB.js} +2 -2
  94. package/dist/cli/chunks/{chunk-H4LYXLAT.js → chunk-IHRXZZQM.js} +1 -1
  95. package/dist/cli/chunks/{chunk-HV43NX4A.js → chunk-IOKYCMTJ.js} +6 -6
  96. package/dist/cli/chunks/{chunk-NZQYJCO6.js → chunk-IOQ6ZQ5W.js} +1 -1
  97. package/dist/cli/chunks/{chunk-JO26SG47.js → chunk-IOYG4VFL.js} +2 -2
  98. package/dist/cli/chunks/{chunk-6O63ZTVX.js → chunk-IUBJVHNB.js} +2 -2
  99. package/dist/cli/chunks/{chunk-XSPMLJCQ.js → chunk-J442IZLE.js} +1 -1
  100. package/dist/cli/chunks/{chunk-LTGQJYYO.js → chunk-J4ELZNLY.js} +2 -2
  101. package/dist/cli/chunks/chunk-J7I6PABJ.js +153 -0
  102. package/dist/cli/chunks/chunk-JDIYMZCQ.js +2 -0
  103. package/dist/cli/chunks/{chunk-TOJF3ZG4.js → chunk-JHQCRRJI.js} +2 -2
  104. package/dist/cli/chunks/{chunk-QUZ745UQ.js → chunk-JQ3DYUMS.js} +2 -2
  105. package/dist/cli/chunks/{chunk-P2TPH3TC.js → chunk-KITOPKRG.js} +2 -2
  106. package/dist/cli/chunks/{chunk-QNQE3EOH.js → chunk-KKU2QGSJ.js} +2 -2
  107. package/dist/cli/chunks/chunk-KL7OKSU2.js +4 -0
  108. package/dist/cli/chunks/{chunk-L5VSLPMW.js → chunk-KNSRL6NO.js} +2 -2
  109. package/dist/cli/chunks/{chunk-INGXD5IX.js → chunk-KPRCB5LT.js} +2 -2
  110. package/dist/cli/chunks/{chunk-GY4P7KAI.js → chunk-KQYJ4VQ5.js} +1 -1
  111. package/dist/cli/chunks/{chunk-Z2S7DNFP.js → chunk-KU2AUFGX.js} +2 -2
  112. package/dist/cli/chunks/{chunk-O5CEL447.js → chunk-KVF4NXGQ.js} +2 -2
  113. package/dist/cli/chunks/{chunk-2IJO3657.js → chunk-KXCLACFG.js} +2 -2
  114. package/dist/cli/chunks/{chunk-ZJGFQK27.js → chunk-L2DWPVNJ.js} +1 -1
  115. package/dist/cli/chunks/{chunk-E7OR6V3V.js → chunk-L6QSTQME.js} +2 -2
  116. package/dist/cli/chunks/{chunk-RE6JTSDM.js → chunk-LE4QJREF.js} +1 -1
  117. package/dist/cli/chunks/{chunk-DSQESXL4.js → chunk-LKTTUHLF.js} +2 -2
  118. package/dist/cli/chunks/{chunk-YGC5QKQ4.js → chunk-LQLPB2T6.js} +2 -2
  119. package/dist/cli/chunks/{chunk-VGZOPQQY.js → chunk-LRSX2FJM.js} +1 -1
  120. package/dist/cli/chunks/chunk-M4FRQ4TE.js +12 -0
  121. package/dist/cli/chunks/chunk-M7WJCTG3.js +2 -0
  122. package/dist/cli/chunks/{chunk-56NSE3LJ.js → chunk-MAFQV4U4.js} +2 -2
  123. package/dist/cli/chunks/{chunk-MKYOE7NE.js → chunk-MD43XRX5.js} +1 -1
  124. package/dist/cli/chunks/{chunk-3TF27MG5.js → chunk-MI5MFHRA.js} +2 -2
  125. package/dist/cli/chunks/{chunk-JK6PMLQQ.js → chunk-MO55CVMT.js} +32 -32
  126. package/dist/cli/chunks/{chunk-X6NJOT3V.js → chunk-N7HL5PHH.js} +1 -1
  127. package/dist/cli/chunks/chunk-NAEWCFQT.js +14 -0
  128. package/dist/cli/chunks/{chunk-WUGXXNK4.js → chunk-NDJ7P2EP.js} +1 -1
  129. package/dist/cli/chunks/{chunk-D5GB5PUU.js → chunk-NO3IV5Q5.js} +1 -1
  130. package/dist/cli/chunks/{chunk-3XACRXBY.js → chunk-NQXXI77K.js} +2 -2
  131. package/dist/cli/chunks/{chunk-EC65UZ77.js → chunk-NVEWF4JV.js} +1 -1
  132. package/dist/cli/chunks/{chunk-JI67T6Q2.js → chunk-NZU4ACBZ.js} +2 -2
  133. package/dist/cli/chunks/chunk-O5W3FIO6.js +63 -0
  134. package/dist/cli/chunks/{chunk-YEFTK4HD.js → chunk-OAEE6JWQ.js} +2 -2
  135. package/dist/cli/chunks/{chunk-JAOCHPYX.js → chunk-OCV2XEWQ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-IDBA5GK2.js → chunk-P3EYRILV.js} +2 -2
  137. package/dist/cli/chunks/{chunk-4RPBODN5.js → chunk-PEQDY4BO.js} +2 -2
  138. package/dist/cli/chunks/{chunk-CPPYZYXC.js → chunk-PF7RBAYL.js} +2 -2
  139. package/dist/cli/chunks/{chunk-WCPSR4MJ.js → chunk-PHT5N7SC.js} +2 -2
  140. package/dist/cli/chunks/{chunk-O2AAYJUV.js → chunk-PINSJCM3.js} +1 -1
  141. package/dist/cli/chunks/{chunk-HEDGFKC5.js → chunk-PPUZWYUG.js} +2 -2
  142. package/dist/cli/chunks/{chunk-XMCSKYDE.js → chunk-QPEOLAAS.js} +1 -1
  143. package/dist/cli/chunks/{chunk-7MUO4DEH.js → chunk-QQWBWEJS.js} +18 -18
  144. package/dist/cli/chunks/{chunk-UFP7SN5V.js → chunk-QVDCVD5D.js} +2 -2
  145. package/dist/cli/chunks/{chunk-NHEG2DLN.js → chunk-RJIEG3NA.js} +2 -2
  146. package/dist/cli/chunks/{chunk-KJ5A54ZH.js → chunk-RV74I3YO.js} +2 -2
  147. package/dist/cli/chunks/{chunk-UDSB3XCG.js → chunk-S75SOOZL.js} +2 -2
  148. package/dist/cli/chunks/{chunk-BPDAQB3F.js → chunk-SASBO5Y5.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VJBJRFUO.js → chunk-SDLWKRVL.js} +9 -9
  150. package/dist/cli/chunks/{chunk-J6ASX536.js → chunk-SHKOCGNK.js} +2 -2
  151. package/dist/cli/chunks/{chunk-J35JWDJE.js → chunk-SI6DPU5D.js} +1 -1
  152. package/dist/cli/chunks/{chunk-V3MGY76S.js → chunk-SJ6Y4725.js} +2 -2
  153. package/dist/cli/chunks/{chunk-FTYRPEJS.js → chunk-SR52XP5F.js} +1 -1
  154. package/dist/cli/chunks/{chunk-ZUE524JL.js → chunk-SSUAAX3F.js} +2 -2
  155. package/dist/cli/chunks/{chunk-VG32EEUG.js → chunk-SSYAQZXA.js} +2 -2
  156. package/dist/cli/chunks/{chunk-HTVGHHX2.js → chunk-SUDMM5SO.js} +2 -2
  157. package/dist/cli/chunks/{chunk-K2SMP4OD.js → chunk-TIUKLYAI.js} +1 -1
  158. package/dist/cli/chunks/{chunk-VCVRZD4Y.js → chunk-TVGI32MB.js} +33 -33
  159. package/dist/cli/chunks/{chunk-CAZM63TP.js → chunk-U2A7NHZA.js} +2 -2
  160. package/dist/cli/chunks/{chunk-WBC6WB32.js → chunk-UE5ZOZR2.js} +2 -2
  161. package/dist/cli/chunks/{chunk-BQJ7CV53.js → chunk-UHEOGZLX.js} +12 -12
  162. package/dist/cli/chunks/chunk-UNGBRZDK.js +12 -0
  163. package/dist/cli/chunks/{chunk-XN3KCKAM.js → chunk-V5NHZV7S.js} +2 -2
  164. package/dist/cli/chunks/{chunk-UNYTHZDZ.js → chunk-VJCIEHEF.js} +1 -1
  165. package/dist/cli/chunks/{chunk-5Y7UFHJD.js → chunk-VMDFFTCK.js} +1 -1
  166. package/dist/cli/chunks/chunk-VSIKHWZ4.js +29 -0
  167. package/dist/cli/chunks/{chunk-UPWLMIDY.js → chunk-VWPM27GU.js} +2 -2
  168. package/dist/cli/chunks/{chunk-USAKCGHC.js → chunk-VXFLJNCA.js} +2 -2
  169. package/dist/cli/chunks/{chunk-WKI46WWN.js → chunk-W5HQUIML.js} +2 -2
  170. package/dist/cli/chunks/{chunk-Z54G2YOL.js → chunk-WP4RETKG.js} +2 -2
  171. package/dist/cli/chunks/{chunk-IRPNEXOU.js → chunk-XIIQ5QTT.js} +2 -2
  172. package/dist/cli/chunks/{chunk-O32BFQV4.js → chunk-XIQW7EFL.js} +2 -2
  173. package/dist/cli/chunks/{chunk-TW6Z6W4X.js → chunk-XWUWX7BV.js} +13 -13
  174. package/dist/cli/chunks/{chunk-57FX3GP6.js → chunk-Y4PFUMOU.js} +1 -1
  175. package/dist/cli/chunks/chunk-YAPLJR7K.js +2 -0
  176. package/dist/cli/chunks/{chunk-4T7XV5KQ.js → chunk-YLMNVLDK.js} +1 -1
  177. package/dist/cli/chunks/{chunk-TSP6SU5V.js → chunk-YNMJEDN5.js} +2 -2
  178. package/dist/cli/chunks/{chunk-PWQWKYBG.js → chunk-YPBSUGMI.js} +1 -1
  179. package/dist/cli/chunks/{chunk-QP2HLKTS.js → chunk-YRAX7SFJ.js} +2 -2
  180. package/dist/cli/chunks/{chunk-O3ERGUXH.js → chunk-YTHTQPWR.js} +1 -1
  181. package/dist/cli/chunks/{chunk-MR2OPUSA.js → chunk-YU2BDRSD.js} +1 -1
  182. package/dist/cli/chunks/chunk-ZB3LEFYG.js +2 -0
  183. package/dist/cli/chunks/{chunk-2W5MQDHM.js → chunk-ZFL436FN.js} +2 -2
  184. package/dist/cli/chunks/{chunk-7MISCSL5.js → chunk-ZJH5MU2I.js} +2 -2
  185. package/dist/cli/chunks/{chunk-52KOPIMI.js → chunk-ZQ2XW3IP.js} +2 -2
  186. package/dist/cli/chunks/chunk-ZR2TKVXQ.js +14 -0
  187. package/dist/cli/chunks/{ci-UMA2SMNW.js → ci-MFUR4CWV.js} +2 -2
  188. package/dist/cli/chunks/{ci-config-UQSILJFQ.js → ci-config-PNDLQ6XV.js} +2 -2
  189. package/dist/cli/chunks/{ci-output-U6YZLLKH.js → ci-output-PFZ4M7NC.js} +2 -2
  190. package/dist/cli/chunks/{circuit-breaker-ATYQP6X2.js → circuit-breaker-5HH6NLZN.js} +2 -2
  191. package/dist/cli/chunks/{claude-flow-setup-6YHFD7AN.js → claude-flow-setup-QCKYLGLC.js} +2 -2
  192. package/dist/cli/chunks/client-MHQRTZM4.js +2 -0
  193. package/dist/cli/chunks/{cline-installer-EPE7IOZE.js → cline-installer-EASVPFXR.js} +2 -2
  194. package/dist/cli/chunks/{code-NUEJ4XYO.js → code-UJXDVYRK.js} +4 -3
  195. package/dist/cli/chunks/{code-index-extractor-D4DBT6OL.js → code-index-extractor-BZJ3UDP4.js} +2 -2
  196. package/dist/cli/chunks/{codex-installer-633SM4LR.js → codex-installer-XSQZUVOZ.js} +4 -4
  197. package/dist/cli/chunks/{completions-WUKVIW3L.js → completions-OWOOJFI2.js} +2 -2
  198. package/dist/cli/chunks/{complexity-analyzer-F73ACR5H.js → complexity-analyzer-KP5TOHDT.js} +2 -2
  199. package/dist/cli/chunks/{continuedev-installer-QH42TKMS.js → continuedev-installer-IFKQXLHM.js} +2 -2
  200. package/dist/cli/chunks/{copilot-installer-Y3XC7BTT.js → copilot-installer-IGJ6KGQY.js} +2 -2
  201. package/dist/cli/chunks/core-handlers-UAK3LLJE.js +2 -0
  202. package/dist/cli/chunks/{cost-tracker-57QPV7E3.js → cost-tracker-MMDDNKZB.js} +2 -2
  203. package/dist/cli/chunks/{coverage-IBCHMBCR.js → coverage-LUH2B7NT.js} +3 -3
  204. package/dist/cli/chunks/cross-domain-router-WTRZQPNQ.js +2 -0
  205. package/dist/cli/chunks/{cursor-installer-F4UYQHIN.js → cursor-installer-4YLM5GWM.js} +2 -2
  206. package/dist/cli/chunks/daemon-CAVZ7OFV.js +18 -0
  207. package/dist/cli/chunks/{daemon-XR4Q6YZF.js → daemon-MZKVM4CJ.js} +3 -3
  208. package/dist/cli/chunks/{dag-attention-scheduler-ZR5ZD3TW.js → dag-attention-scheduler-X4CYW665.js} +2 -2
  209. package/dist/cli/chunks/{detect-GEGYURLL.js → detect-7BM2XINO.js} +2 -2
  210. package/dist/cli/chunks/{dist-node-JU3KT2JO.js → dist-node-Y5APLEYB.js} +2 -2
  211. package/dist/cli/chunks/{domain-handler-7QI3FJGE.js → domain-handler-X3ZRJNAH.js} +2 -2
  212. package/dist/cli/chunks/{domain-plugins-O2YRM2PD.js → domain-plugins-2UW5KQJB.js} +2 -2
  213. package/dist/cli/chunks/{domain-transfer-7J3S2OS6.js → domain-transfer-35W4CIBV.js} +2 -2
  214. package/dist/cli/chunks/dream-EJY24JN6.js +2 -0
  215. package/dist/cli/chunks/embed-and-insert-pattern-COG4C7ZI.js +3 -0
  216. package/dist/cli/chunks/embedding-space-SBM2MZD2.js +2 -0
  217. package/dist/cli/chunks/{eval-RVMCIUOR.js → eval-4QA2SROK.js} +2 -2
  218. package/dist/cli/chunks/experience-capture-middleware-Z6BF6KYM.js +40 -0
  219. package/dist/cli/chunks/{fast-paths-QUKPKWKZ.js → fast-paths-FIORX6GN.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-K7JXNKJI.js → feature-flags-6LYI2T4G.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-5JCSKL2P.js → feature-flags-ZOO7LMIC.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-UZSFSS4V.js +2 -0
  223. package/dist/cli/chunks/{fleet-II4Q6HXK.js → fleet-7WF53H4F.js} +3 -3
  224. package/dist/cli/chunks/{gnn-wrapper-M7VO2EMS.js → gnn-wrapper-KJ6B7BRM.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-ND5CY26N.js → heartbeat-handler-DEKKMOVW.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-NVR356I7.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-LFMPLUJU.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-POCPMVJH.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-N3AUUUU7.js → hnsw-legacy-bridge-L27WS27N.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-NZY3E5EN.js → hnswlib-node-4YOQC6L4.js} +2 -2
  231. package/dist/cli/chunks/{hooks-QVJDTII5.js → hooks-TAOKV4EJ.js} +23 -22
  232. package/dist/cli/chunks/hybrid-backend-4STAO7CV.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-ZRY6MTDV.js → hypergraph-engine-BODRJLHL.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-56DO4XZQ.js → hypergraph-handler-RKMYJNTU.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-3VIIISBQ.js +2 -0
  236. package/dist/cli/chunks/{init-guard-DTF4EVUY.js → init-guard-MXHSLSB2.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-M6CNQHMX.js → init-handler-HUE57IFW.js} +6 -6
  238. package/dist/cli/chunks/init-wizard-PL6QN6RQ.js +2 -0
  239. package/dist/cli/chunks/kernel-CCDWT7KS.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-IJN7XKBH.js → kilocode-installer-S333IKYQ.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-UKKPGPDC.js → kiro-installer-WM5DLQWC.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-KFOMEN3H.js +2 -0
  243. package/dist/cli/chunks/{learning-W2HETWQ4.js → learning-LNHMQLH5.js} +3 -3
  244. package/dist/cli/chunks/{llm-router-Y546K4VX.js → llm-router-EWFXYZZR.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-7NBE2EX6.js +2 -0
  246. package/dist/cli/chunks/{load-MKAB2AXE.js → load-FGYGWVDK.js} +2 -2
  247. package/dist/cli/chunks/load-test-UNZUWY3F.js +2 -0
  248. package/dist/cli/chunks/{mcp-AZKUS6K3.js → mcp-2FHNAAOM.js} +2 -2
  249. package/dist/cli/chunks/{memory-ZDOQN2KU.js → memory-DZMQ73AB.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-DFGKWA2Q.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-MP426XRJ.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-WWVXDHG4.js → multi-model-executor-6F2UAEUW.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-YUJNXXWS.js → opencode-installer-XY3BGOTZ.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-Z6PWPLRE.js → orchestrator-B4CNKUOS.js} +17 -17
  255. package/dist/cli/chunks/pattern-null-store-SSVF5TE5.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-TPWPX32U.js → pattern-usage-recorder-R4GUFNMD.js} +2 -2
  257. package/dist/cli/chunks/{pipeline-4BBGTE4M.js → pipeline-FG5RKVRO.js} +2 -2
  258. package/dist/cli/chunks/{platform-5GSHXCV5.js → platform-3BT4KEVJ.js} +2 -2
  259. package/dist/cli/chunks/{plugin-OFDVF5HS.js → plugin-WI4RIN7O.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NC6MUYGJ.js → prime-radiant-advanced-wasm-7ECDNQFS.js} +2 -2
  261. package/dist/cli/chunks/project-root-BEANNYWU.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-FQVIHXZ7.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-MPOAAEPA.js → protocol-handler-WNODKPGW.js} +2 -2
  264. package/dist/cli/chunks/{prove-CDKMAIVM.js → prove-5RHAEPYZ.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-5TFYSE24.js +2 -0
  266. package/dist/cli/chunks/{quality-ZH4F7R7R.js → quality-WPHR7BGQ.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-IDRMW6OE.js → quality-gate-4RKTEZMX.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-Y2OUL7IN.js +2 -0
  269. package/dist/cli/chunks/real-embeddings-OXLYU7JW.js +2 -0
  270. package/dist/cli/chunks/{ref-validation-Z5GCGVXK.js → ref-validation-TPAWHOHH.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-IZ2S7PH2.js → roocode-installer-7AVHFNDI.js} +2 -2
  272. package/dist/cli/chunks/router-EP34O3KB.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-FJCRKXNG.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-NAX35VUW.js → routing-handler-YKEDVJSH.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-5YW2SOFF.js → ruvector-commands-JUAMM354.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-ILITJSFG.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-XF6W4C2N.js +2 -0
  278. package/dist/cli/chunks/rvf-migration-coordinator-CMKG56AR.js +2 -0
  279. package/dist/cli/chunks/rvf-native-adapter-7YFW6S4Y.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-IPGCAT6C.js → rvf-store-integrity-VJDUIRTX.js} +2 -2
  281. package/dist/cli/chunks/safe-db-TCAU4FUT.js +2 -0
  282. package/dist/cli/chunks/schedule-NB5KV435.js +2 -0
  283. package/dist/cli/chunks/scheduler-JKXGKVK6.js +2 -0
  284. package/dist/cli/chunks/{security-3IH4BO5Z.js → security-ORDN3RD2.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-ABY7PAY2.js → shared-rvf-adapter-CF4BCIO7.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-6KENLN2W.js → shared-rvf-dual-writer-C32UBR6D.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-IXCNZRTW.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-RLFAUGOW.js → standalone-memory-OXRJYZXN.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-FCOZBPE5.js → status-handler-BCX5D4HY.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-4RDA5UUM.js → structural-health-LFG7RUU6.js} +2 -2
  291. package/dist/cli/chunks/sync-OSF7C2NL.js +2 -0
  292. package/dist/cli/chunks/{sync-KGEEXXCC.js → sync-YJEE2K2L.js} +2 -2
  293. package/dist/cli/chunks/task-handler-6LXKPTXJ.js +64 -0
  294. package/dist/cli/chunks/{task-handlers-6H7L2UT4.js → task-handlers-CILP36I7.js} +4 -4
  295. package/dist/cli/chunks/{test-S7IG6EIX.js → test-SD457QJ6.js} +4 -4
  296. package/dist/cli/chunks/test-runner-process-VKD65QQU.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-7XYXI4L2.js → test-scheduling-ISI2O4Q5.js} +3 -3
  298. package/dist/cli/chunks/token-bootstrap-VUELSBOS.js +2 -0
  299. package/dist/cli/chunks/{token-usage-Y2YTPOFE.js → token-usage-XOC5KG7S.js} +2 -2
  300. package/dist/cli/chunks/{transformers-UCJ3HHHC.js → transformers-LSLQAARK.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-YAIPHRIL.js +2 -0
  302. package/dist/cli/chunks/{types-6CMFPETH.js → types-5BLCGLCR.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-GI76TXFV.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-GXJ5BTZO.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-OP7FDQPD.js +2 -0
  306. package/dist/cli/chunks/{upgrade-K25DN6WU.js → upgrade-RQJYLK3J.js} +2 -2
  307. package/dist/cli/chunks/{validate-T4V3TBY3.js → validate-QBHWXXCK.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-XSRC576T.js → validate-swarm-IKXBKFB5.js} +2 -2
  309. package/dist/cli/chunks/visual-security-GZ2MOKWB.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-YOZXHRTN.js → web-tree-sitter-ZF6FIE5R.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-ITPU2IYL.js → windsurf-installer-HQGDZT5D.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-DCHCAMSQ.js +2 -0
  313. package/dist/cli/chunks/witness-chain-P3XXXA62.js +2 -0
  314. package/dist/cli/chunks/witness-chain-repair-PUX2NFDL.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-verifier-DTDSVKOG.js → witness-chain-verifier-PX2OQ6XT.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-EWACWGAW.js → witness-key-manager-RXYQNFJB.js} +2 -2
  317. package/dist/cli/chunks/{workflow-ZIQ4FV42.js → workflow-FBKCA4H6.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-P2APAJAA.js +2 -0
  319. package/dist/cli/chunks/wrappers-TWSKBTWD.js +2 -0
  320. package/dist/cli/commands/code.js +4 -0
  321. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +10 -2
  322. package/dist/cli/handlers/task-handler.d.ts +5 -0
  323. package/dist/cli/handlers/task-handler.js +21 -1
  324. package/dist/cli/utils/task-result.d.ts +11 -0
  325. package/dist/cli/utils/task-result.js +39 -0
  326. package/dist/coordination/handlers/test-execution-handlers.js +92 -58
  327. package/dist/coordination/mincut/mincut-persistence.js +29 -25
  328. package/dist/domains/code-intelligence/coordinator.d.ts +4 -0
  329. package/dist/domains/code-intelligence/coordinator.js +46 -13
  330. package/dist/domains/code-intelligence/interfaces.d.ts +10 -1
  331. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +32 -7
  332. package/dist/domains/code-intelligence/services/semantic-analyzer.js +112 -53
  333. package/dist/domains/learning-optimization/services/learning-coordinator.js +1 -1
  334. package/dist/domains/quality-assessment/coordinator.js +2 -1
  335. package/dist/domains/test-execution/coordinator.js +10 -5
  336. package/dist/domains/test-execution/interfaces.d.ts +12 -0
  337. package/dist/domains/test-execution/plugin.js +6 -2
  338. package/dist/domains/test-execution/services/retry-handler.d.ts +2 -0
  339. package/dist/domains/test-execution/services/retry-handler.js +14 -9
  340. package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
  341. package/dist/domains/test-execution/services/test-executor.js +28 -9
  342. package/dist/domains/visual-accessibility/coordinator.d.ts +15 -7
  343. package/dist/domains/visual-accessibility/coordinator.js +15 -7
  344. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -3
  345. package/dist/domains/visual-accessibility/services/accessibility-contrast.d.ts +39 -0
  346. package/dist/domains/visual-accessibility/services/accessibility-contrast.js +93 -0
  347. package/dist/domains/visual-accessibility/services/accessibility-tester-browser.d.ts +18 -3
  348. package/dist/domains/visual-accessibility/services/accessibility-tester-browser.js +50 -40
  349. package/dist/domains/visual-accessibility/services/accessibility-tester-checks.d.ts +27 -0
  350. package/dist/domains/visual-accessibility/services/accessibility-tester-checks.js +137 -0
  351. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +5 -0
  352. package/dist/domains/visual-accessibility/services/accessibility-tester.js +43 -24
  353. package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.d.ts +2 -3
  354. package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.js +8 -14
  355. package/dist/feedback/coverage-learner.js +13 -9
  356. package/dist/feedback/test-outcome-tracker.js +13 -9
  357. package/dist/governance/witness-chain.d.ts +5 -0
  358. package/dist/governance/witness-chain.js +22 -6
  359. package/dist/init/init-wizard-hooks.d.ts +1 -1
  360. package/dist/init/init-wizard-hooks.js +7 -8
  361. package/dist/init/phases/08-mcp.js +9 -0
  362. package/dist/init/settings-merge.d.ts +13 -0
  363. package/dist/init/settings-merge.js +49 -2
  364. package/dist/integrations/agent-booster-wasm/agent_booster_wasm.js +849 -0
  365. package/dist/integrations/agent-booster-wasm/agent_booster_wasm_bg.wasm +0 -0
  366. package/dist/integrations/agent-booster-wasm/index.d.ts +8 -0
  367. package/dist/integrations/agent-booster-wasm/index.js +25 -2
  368. package/dist/integrations/agent-booster-wasm/package.json +16 -0
  369. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +22 -0
  370. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +115 -45
  371. package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.d.ts +6 -0
  372. package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.js +51 -33
  373. package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +17 -9
  374. package/dist/integrations/embeddings/cache/EmbeddingCache.d.ts +8 -0
  375. package/dist/integrations/embeddings/cache/EmbeddingCache.js +24 -10
  376. package/dist/integrations/ruvector/delta-tracker.d.ts +11 -0
  377. package/dist/integrations/ruvector/delta-tracker.js +16 -0
  378. package/dist/integrations/ruvector/sona-persistence.d.ts +10 -0
  379. package/dist/integrations/ruvector/sona-persistence.js +49 -24
  380. package/dist/kernel/unified-memory.d.ts +24 -0
  381. package/dist/kernel/unified-memory.js +63 -8
  382. package/dist/learning/aqe-learning-engine.js +1 -1
  383. package/dist/learning/dream/dream-engine.d.ts +3 -2
  384. package/dist/learning/dream/dream-engine.js +42 -24
  385. package/dist/learning/dream/dream-lock-retry.d.ts +38 -0
  386. package/dist/learning/dream/dream-lock-retry.js +66 -0
  387. package/dist/learning/dream/speculative-dreamer.js +1 -1
  388. package/dist/learning/embed-and-insert-pattern.js +4 -2
  389. package/dist/learning/embedder-endpoint-client.d.ts +31 -0
  390. package/dist/learning/embedder-endpoint-client.js +103 -10
  391. package/dist/learning/embedding-space.d.ts +12 -0
  392. package/dist/learning/embedding-space.js +17 -0
  393. package/dist/learning/experience-capture-middleware.js +25 -13
  394. package/dist/learning/experience-capture.js +1 -1
  395. package/dist/learning/experience-consolidation.d.ts +18 -0
  396. package/dist/learning/experience-consolidation.js +55 -8
  397. package/dist/learning/experience-space-verification.d.ts +71 -0
  398. package/dist/learning/experience-space-verification.js +147 -0
  399. package/dist/learning/pattern-lifecycle.d.ts +40 -4
  400. package/dist/learning/pattern-lifecycle.js +153 -76
  401. package/dist/learning/pattern-null-store.d.ts +5 -0
  402. package/dist/learning/pattern-null-store.js +8 -0
  403. package/dist/learning/pattern-promotion.js +6 -3
  404. package/dist/learning/pattern-store.d.ts +6 -0
  405. package/dist/learning/pattern-store.js +19 -6
  406. package/dist/learning/qe-reasoning-bank.js +2 -2
  407. package/dist/learning/real-embeddings.js +3 -1
  408. package/dist/learning/real-qe-reasoning-bank.d.ts +5 -0
  409. package/dist/learning/real-qe-reasoning-bank.js +77 -47
  410. package/dist/learning/rvf-pattern-store.js +6 -2
  411. package/dist/learning/sqlite-persistence.d.ts +6 -0
  412. package/dist/learning/sqlite-persistence.js +10 -0
  413. package/dist/mcp/bundle.js +642 -571
  414. package/dist/mcp/entry.js +4 -0
  415. package/dist/mcp/handlers/domain-handler-configs.js +2 -0
  416. package/dist/mcp/handlers/trajectory-judge.js +1 -1
  417. package/dist/mcp/protocol-server.js +1 -0
  418. package/dist/mcp/tools/visual-accessibility/index.js +8 -2
  419. package/dist/mcp/types.d.ts +6 -0
  420. package/dist/optimization/session-cache.d.ts +17 -1
  421. package/dist/optimization/session-cache.js +40 -36
  422. package/dist/planning/goap-planner.d.ts +6 -0
  423. package/dist/planning/goap-planner.js +35 -19
  424. package/dist/planning/plan-executor.js +24 -15
  425. package/dist/routing/co-execution-repository.js +12 -9
  426. package/dist/routing/routing-feedback.d.ts +8 -0
  427. package/dist/routing/routing-feedback.js +46 -24
  428. package/dist/routing/routing-outcomes-migration.js +7 -2
  429. package/dist/shared/llm/spend-ledger.d.ts +9 -0
  430. package/dist/shared/llm/spend-ledger.js +64 -39
  431. package/dist/shared/sqlite-lock-wait.d.ts +27 -0
  432. package/dist/shared/sqlite-lock-wait.js +37 -0
  433. package/dist/shared/sqlite-write-queue.d.ts +28 -0
  434. package/dist/shared/sqlite-write-queue.js +38 -0
  435. package/dist/shared/test-runner-project.d.ts +69 -0
  436. package/dist/shared/test-runner-project.js +186 -0
  437. package/dist/skills/security-visual-testing/index.d.ts +3 -1
  438. package/dist/skills/security-visual-testing/index.js +49 -35
  439. package/dist/skills/security-visual-testing/types.d.ts +19 -3
  440. package/dist/workers/workers/heartbeat-scheduler.js +5 -5
  441. package/dist/workers/workers/learning-consolidation.js +8 -7
  442. package/package.json +4 -2
  443. package/dist/cli/chunks/adapter-23KA2YW7.js +0 -2
  444. package/dist/cli/chunks/agent-booster-wasm-2DLAEZK6.js +0 -2
  445. package/dist/cli/chunks/aqe-learning-engine-MUICAXW5.js +0 -2
  446. package/dist/cli/chunks/base-XPWGYDKD.js +0 -2
  447. package/dist/cli/chunks/browser-workflow-UMQVBVGK.js +0 -2
  448. package/dist/cli/chunks/chunk-3FITMWWJ.js +0 -21
  449. package/dist/cli/chunks/chunk-ARRBXCII.js +0 -4
  450. package/dist/cli/chunks/chunk-BBYJBZHG.js +0 -14
  451. package/dist/cli/chunks/chunk-BM3EJLMV.js +0 -153
  452. package/dist/cli/chunks/chunk-D3ZZ2NLL.js +0 -62
  453. package/dist/cli/chunks/chunk-DLTB5KCR.js +0 -2
  454. package/dist/cli/chunks/chunk-DRLSJJIC.js +0 -6
  455. package/dist/cli/chunks/chunk-HAYKLXCT.js +0 -744
  456. package/dist/cli/chunks/chunk-HHBF2BZC.js +0 -65
  457. package/dist/cli/chunks/chunk-K7RT6ITZ.js +0 -2
  458. package/dist/cli/chunks/chunk-L752CNG3.js +0 -13
  459. package/dist/cli/chunks/chunk-MQXWG55U.js +0 -12
  460. package/dist/cli/chunks/chunk-WM2QRIRD.js +0 -14
  461. package/dist/cli/chunks/chunk-WRC3HLUY.js +0 -29
  462. package/dist/cli/chunks/chunk-XTZGAG6P.js +0 -27
  463. package/dist/cli/chunks/chunk-YKQWIXUY.js +0 -2
  464. package/dist/cli/chunks/client-E43GWLQH.js +0 -2
  465. package/dist/cli/chunks/core-handlers-R5A3SQDY.js +0 -2
  466. package/dist/cli/chunks/cross-domain-router-LLYVPZF6.js +0 -2
  467. package/dist/cli/chunks/daemon-BYYPIJ7G.js +0 -18
  468. package/dist/cli/chunks/dream-6C4NURSE.js +0 -2
  469. package/dist/cli/chunks/embed-and-insert-pattern-URES5Q6J.js +0 -3
  470. package/dist/cli/chunks/experience-capture-middleware-SYJQSBKE.js +0 -40
  471. package/dist/cli/chunks/file-discovery-J5IE5KP7.js +0 -2
  472. package/dist/cli/chunks/heartbeat-scheduler-FC5PBTMN.js +0 -2
  473. package/dist/cli/chunks/hnsw-adapter-47UIVOBG.js +0 -2
  474. package/dist/cli/chunks/hnsw-index-3AKVLOZQ.js +0 -2
  475. package/dist/cli/chunks/hybrid-backend-YAOSNX47.js +0 -2
  476. package/dist/cli/chunks/impact-analyzer-4FMJXM4M.js +0 -2
  477. package/dist/cli/chunks/init-wizard-RTLCRWDT.js +0 -2
  478. package/dist/cli/chunks/kernel-2OWIGGGT.js +0 -2
  479. package/dist/cli/chunks/knowledge-graph-25XXKDJN.js +0 -2
  480. package/dist/cli/chunks/llm-router-service-G3EIN4UB.js +0 -2
  481. package/dist/cli/chunks/load-test-D6QYNIVT.js +0 -2
  482. package/dist/cli/chunks/memory-backend-LDFFZMEQ.js +0 -2
  483. package/dist/cli/chunks/memory-handlers-3SQVY7FE.js +0 -2
  484. package/dist/cli/chunks/pattern-null-store-KDVRM7PW.js +0 -2
  485. package/dist/cli/chunks/project-root-DDGBWDP6.js +0 -2
  486. package/dist/cli/chunks/protocol-executor-KBOLLCWA.js +0 -2
  487. package/dist/cli/chunks/qe-reasoning-bank-GRXBT7FC.js +0 -2
  488. package/dist/cli/chunks/queen-coordinator-L2QWMJ5Q.js +0 -2
  489. package/dist/cli/chunks/real-embeddings-I2UVNNB3.js +0 -2
  490. package/dist/cli/chunks/router-FT5WJPUH.js +0 -2
  491. package/dist/cli/chunks/routing-feedback-EO2MKOUX.js +0 -2
  492. package/dist/cli/chunks/rvf-dual-writer-WHBFQJVU.js +0 -2
  493. package/dist/cli/chunks/rvf-migration-adapter-YT3APF2I.js +0 -2
  494. package/dist/cli/chunks/rvf-migration-coordinator-VUIZHTVG.js +0 -2
  495. package/dist/cli/chunks/rvf-native-adapter-37PUFKQD.js +0 -2
  496. package/dist/cli/chunks/safe-db-TDZKUOZJ.js +0 -2
  497. package/dist/cli/chunks/schedule-CRKTRY2A.js +0 -2
  498. package/dist/cli/chunks/scheduler-6ZBDVQWN.js +0 -2
  499. package/dist/cli/chunks/sqlite-persistence-FFJQAIKW.js +0 -2
  500. package/dist/cli/chunks/sync-54LUAUTK.js +0 -2
  501. package/dist/cli/chunks/task-handler-K3OXHYKU.js +0 -62
  502. package/dist/cli/chunks/test-runner-process-OTQDAJLN.js +0 -2
  503. package/dist/cli/chunks/token-bootstrap-3QMABE45.js +0 -2
  504. package/dist/cli/chunks/tree-sitter-wasm-parser-D6JTTHTP.js +0 -2
  505. package/dist/cli/chunks/unified-memory-QARWQKJ2.js +0 -2
  506. package/dist/cli/chunks/unified-memory-hnsw-LHY3DXCP.js +0 -2
  507. package/dist/cli/chunks/unified-persistence-WEYYGLHM.js +0 -2
  508. package/dist/cli/chunks/visual-security-O4ALMCXQ.js +0 -2
  509. package/dist/cli/chunks/witness-chain-B3YW5NMS.js +0 -2
  510. package/dist/cli/chunks/witness-chain-PIYR72HJ.js +0 -2
  511. package/dist/cli/chunks/witness-chain-repair-YUG7E3UX.js +0 -2
  512. package/dist/cli/chunks/workflow-orchestrator-3ZN2BCGY.js +0 -2
  513. package/dist/cli/chunks/wrappers-PW2O27LL.js +0 -2
@@ -10,6 +10,7 @@ import { QE_AGENT_REGISTRY } from './qe-agent-registry.js';
10
10
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
11
11
  import { safeJsonParse } from '../shared/safe-json.js';
12
12
  import { toErrorMessage } from '../shared/error-utils.js';
13
+ import { isBusyError } from '../learning/dream/dream-lock-retry.js';
13
14
  import { EMACalibrator } from './calibration/index.js';
14
15
  import { AutoEscalationTracker } from './escalation/index.js';
15
16
  import { ensureRoutingOutcomesAdr095Columns } from './routing-outcomes-migration.js';
@@ -141,10 +142,11 @@ export class RoutingFeedbackCollector {
141
142
  * Persist a single outcome to the database
142
143
  */
143
144
  persistOutcome(outcome) {
144
- if (!this.db)
145
- return;
146
- try {
147
- const database = this.db.getDatabase();
145
+ const modelTier = this.inferTier(outcome.usedAgent);
146
+ const advisorJson = outcome.advisorConsultation
147
+ ? JSON.stringify(outcome.advisorConsultation)
148
+ : null;
149
+ this.persistInBackground('outcome', (database) => {
148
150
  // Ensure schema columns exist for databases created before ADR-092
149
151
  // and ADR-095. Runs once per process via the flag; new databases have
150
152
  // columns from unified-memory-schemas.ts CREATE TABLE.
@@ -156,17 +158,17 @@ export class RoutingFeedbackCollector {
156
158
  try {
157
159
  database.prepare(col).run();
158
160
  }
159
- catch { /* column already exists */ }
161
+ catch (error) {
162
+ // Column already exists. A locked database is retried instead (#1274).
163
+ if (isBusyError(error))
164
+ throw error;
165
+ }
160
166
  }
161
167
  // ADR-095: routing exploration columns via shared helper so all
162
168
  // writer paths agree on the column set.
163
169
  ensureRoutingOutcomesAdr095Columns(database);
164
170
  RoutingFeedbackCollector.schemaMigrated = true;
165
171
  }
166
- const modelTier = this.inferTier(outcome.usedAgent);
167
- const advisorJson = outcome.advisorConsultation
168
- ? JSON.stringify(outcome.advisorConsultation)
169
- : null;
170
172
  database.prepare(`
171
173
  INSERT OR REPLACE INTO routing_outcomes (
172
174
  id, task_json, decision_json, used_agent,
@@ -174,13 +176,30 @@ export class RoutingFeedbackCollector {
174
176
  duration_ms, error, model_tier, advisor_consultation_json
175
177
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
176
178
  `).run(outcome.id, JSON.stringify(outcome.task), JSON.stringify(outcome.decision), outcome.usedAgent, outcome.followedRecommendation ? 1 : 0, outcome.outcome.success ? 1 : 0, outcome.outcome.qualityScore, outcome.outcome.durationMs, outcome.outcome.error || null, modelTier, advisorJson);
179
+ }, () => {
177
180
  this.persistCount++;
178
181
  if (this.persistCount % RoutingFeedbackCollector.RETENTION_CLEANUP_INTERVAL === 0) {
179
- this.enforceRetention(database);
182
+ this.enforceRetention();
180
183
  }
184
+ });
185
+ }
186
+ /**
187
+ * Queue a write on the shared connection without blocking the caller
188
+ * (#1274). recordOutcome runs after every routed task, so a locked
189
+ * memory.db must not freeze the MCP server's event loop. Writes keep their
190
+ * call order and the connection's full busy_timeout budget; with the
191
+ * database unlocked and nothing queued the write runs at once, as before.
192
+ */
193
+ persistInBackground(what, write, onPersisted) {
194
+ if (!this.db)
195
+ return;
196
+ const warn = (error) => console.warn(`[RoutingFeedbackCollector] Failed to persist ${what}:`, toErrorMessage(error));
197
+ try {
198
+ const database = this.db.getDatabase();
199
+ this.db.writeWhenUnlocked(() => write(database)).then(onPersisted, warn);
181
200
  }
182
201
  catch (error) {
183
- console.warn('[RoutingFeedbackCollector] Failed to persist outcome:', toErrorMessage(error));
202
+ warn(error);
184
203
  }
185
204
  }
186
205
  /**
@@ -228,18 +247,15 @@ export class RoutingFeedbackCollector {
228
247
  /**
229
248
  * Delete oldest rows beyond retention limit
230
249
  */
231
- enforceRetention(database) {
232
- try {
233
- const maxRows = this.maxOutcomes * 2;
250
+ enforceRetention() {
251
+ const maxRows = this.maxOutcomes * 2;
252
+ this.persistInBackground('retention cleanup', (database) => {
234
253
  database.prepare(`
235
254
  DELETE FROM routing_outcomes WHERE id NOT IN (
236
255
  SELECT id FROM routing_outcomes ORDER BY created_at DESC LIMIT ?
237
256
  )
238
257
  `).run(maxRows);
239
- }
240
- catch (error) {
241
- console.warn('[RoutingFeedbackCollector] Retention cleanup failed:', toErrorMessage(error));
242
- }
258
+ });
243
259
  }
244
260
  /**
245
261
  * Load persisted EMA calibrator state from the database
@@ -268,14 +284,17 @@ export class RoutingFeedbackCollector {
268
284
  persistCalibratorState() {
269
285
  if (!this.db || !this.calibrator)
270
286
  return;
287
+ let serialized;
271
288
  try {
272
- const database = this.db.getDatabase();
273
- const serialized = JSON.stringify(this.calibrator.serialize());
274
- database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:ema_calibrator_state', serialized);
289
+ serialized = JSON.stringify(this.calibrator.serialize());
275
290
  }
276
291
  catch (error) {
277
292
  console.warn('[RoutingFeedbackCollector] Failed to persist calibrator state:', toErrorMessage(error));
293
+ return;
278
294
  }
295
+ this.persistInBackground('calibrator state', (database) => {
296
+ database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:ema_calibrator_state', serialized);
297
+ });
279
298
  }
280
299
  /**
281
300
  * Load persisted economic routing state from the database
@@ -304,14 +323,17 @@ export class RoutingFeedbackCollector {
304
323
  persistEconomicState() {
305
324
  if (!this.db || !this.economicModel)
306
325
  return;
326
+ let serialized;
307
327
  try {
308
- const database = this.db.getDatabase();
309
- const serialized = JSON.stringify(this.economicModel.serializeEstimates());
310
- database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:economic_quality_estimates', serialized);
328
+ serialized = JSON.stringify(this.economicModel.serializeEstimates());
311
329
  }
312
330
  catch (error) {
313
331
  console.warn('[RoutingFeedbackCollector] Failed to persist economic state:', toErrorMessage(error));
332
+ return;
314
333
  }
334
+ this.persistInBackground('economic state', (database) => {
335
+ database.prepare(`INSERT OR REPLACE INTO kv_store (key, value, updated_at) VALUES (?, ?, datetime('now'))`).run('routing:economic_quality_estimates', serialized);
336
+ });
315
337
  }
316
338
  /**
317
339
  * Connect to router for automatic performance updates
@@ -13,6 +13,7 @@
13
13
  * Callers run this before INSERTing rows that reference the new columns.
14
14
  * A process-local flag prevents repeated migration attempts.
15
15
  */
16
+ import { isBusyError } from '../learning/dream/dream-lock-retry.js';
16
17
  let migrated = false;
17
18
  /**
18
19
  * Add the ADR-095 columns to routing_outcomes if they don't already exist.
@@ -34,11 +35,15 @@ export function ensureRoutingOutcomesAdr095Columns(db) {
34
35
  try {
35
36
  db.prepare(stmt).run();
36
37
  }
37
- catch {
38
+ catch (error) {
38
39
  // Column already exists, or table doesn't exist yet. Both are
39
40
  // acceptable — ALTER is additive, and a missing table means the
40
41
  // unified schema hasn't been applied yet (caller's INSERT will fail
41
- // separately with a clearer error).
42
+ // separately with a clearer error). A locked database is not (#1274):
43
+ // rethrow so a retrying caller migrates on its next attempt instead of
44
+ // marking the migration done without the columns.
45
+ if (isBusyError(error))
46
+ throw error;
42
47
  }
43
48
  }
44
49
  // Index on exploration for the bucket-comparison queries used by
@@ -64,8 +64,17 @@ export declare class SqliteSpendLedger implements SpendLedger {
64
64
  * drop ALL spend — bypassing the budget cap (the #557 class).
65
65
  */
66
66
  private hasAgentColumn;
67
+ /**
68
+ * Charges queued but not yet in the table (#1283). record() queues its
69
+ * INSERT so a locked memory.db does not freeze the MCP server; until the row
70
+ * lands, the spend reads below count it from here, so the ADR-123 budget cap
71
+ * never under-counts. Each entry leaves this set in the same synchronous
72
+ * step that inserts its row, so a charge is never counted twice.
73
+ */
74
+ private readonly pending;
67
75
  constructor(db: DatabaseType);
68
76
  record(entry: SpendEntry): void;
77
+ private insert;
69
78
  spentSince(windowMs: number, nowMs?: number): number;
70
79
  spentByAgentSince(windowMs: number, nowMs?: number): Record<string, number>;
71
80
  }
@@ -18,6 +18,7 @@
18
18
  * cross-process pattern.
19
19
  */
20
20
  import { createSafeRecord } from '../utils/safe-record.js';
21
+ import { writeWhenUnlockedOn } from '../sqlite-write-queue.js';
21
22
  /** Bucket used for charges recorded without an agent context. */
22
23
  export const UNATTRIBUTED_AGENT = '(unattributed)';
23
24
  const CREATE_TABLE_SQL = `
@@ -49,6 +50,14 @@ export class SqliteSpendLedger {
49
50
  * drop ALL spend — bypassing the budget cap (the #557 class).
50
51
  */
51
52
  hasAgentColumn = false;
53
+ /**
54
+ * Charges queued but not yet in the table (#1283). record() queues its
55
+ * INSERT so a locked memory.db does not freeze the MCP server; until the row
56
+ * lands, the spend reads below count it from here, so the ADR-123 budget cap
57
+ * never under-counts. Each entry leaves this set in the same synchronous
58
+ * step that inserts its row, so a charge is never counted twice.
59
+ */
60
+ pending = new Set();
52
61
  constructor(db) {
53
62
  this.db = db;
54
63
  // Additive schema only — CREATE TABLE/INDEX IF NOT EXISTS never drops data.
@@ -70,45 +79,52 @@ export class SqliteSpendLedger {
70
79
  }
71
80
  }
72
81
  record(entry) {
73
- try {
74
- if (this.hasAgentColumn) {
75
- this.db
76
- .prepare(`INSERT INTO llm_spend
77
- (ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id, agent_type)
78
- VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id, @agent_type)`)
79
- .run({
80
- ts: Date.now(),
81
- provider: entry.provider,
82
- model: entry.model,
83
- cost_usd: entry.costUsd,
84
- cost_source: entry.costSource,
85
- prompt_tokens: entry.promptTokens,
86
- completion_tokens: entry.completionTokens,
87
- request_id: entry.requestId,
88
- agent_type: entry.agent ?? null,
89
- });
90
- }
91
- else {
92
- // Column absent (migration couldn't run) — still record spend so the
93
- // budget cap holds; just without per-agent attribution.
94
- this.db
95
- .prepare(`INSERT INTO llm_spend
96
- (ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id)
97
- VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id)`)
98
- .run({
99
- ts: Date.now(),
100
- provider: entry.provider,
101
- model: entry.model,
102
- cost_usd: entry.costUsd,
103
- cost_source: entry.costSource,
104
- prompt_tokens: entry.promptTokens,
105
- completion_tokens: entry.completionTokens,
106
- request_id: entry.requestId,
107
- });
108
- }
109
- }
110
- catch {
82
+ const ts = Date.now();
83
+ const charge = { ts, costUsd: entry.costUsd, agent: entry.agent ?? UNATTRIBUTED_AGENT };
84
+ this.pending.add(charge);
85
+ writeWhenUnlockedOn(this.db, () => {
86
+ this.insert(entry, ts);
87
+ this.pending.delete(charge);
88
+ }).catch(() => {
111
89
  // A ledger write must never break a generation call.
90
+ this.pending.delete(charge);
91
+ });
92
+ }
93
+ insert(entry, ts) {
94
+ if (this.hasAgentColumn) {
95
+ this.db
96
+ .prepare(`INSERT INTO llm_spend
97
+ (ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id, agent_type)
98
+ VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id, @agent_type)`)
99
+ .run({
100
+ ts,
101
+ provider: entry.provider,
102
+ model: entry.model,
103
+ cost_usd: entry.costUsd,
104
+ cost_source: entry.costSource,
105
+ prompt_tokens: entry.promptTokens,
106
+ completion_tokens: entry.completionTokens,
107
+ request_id: entry.requestId,
108
+ agent_type: entry.agent ?? null,
109
+ });
110
+ }
111
+ else {
112
+ // Column absent (migration couldn't run) — still record spend so the
113
+ // budget cap holds; just without per-agent attribution.
114
+ this.db
115
+ .prepare(`INSERT INTO llm_spend
116
+ (ts, provider, model, cost_usd, cost_source, prompt_tokens, completion_tokens, request_id)
117
+ VALUES (@ts, @provider, @model, @cost_usd, @cost_source, @prompt_tokens, @completion_tokens, @request_id)`)
118
+ .run({
119
+ ts,
120
+ provider: entry.provider,
121
+ model: entry.model,
122
+ cost_usd: entry.costUsd,
123
+ cost_source: entry.costSource,
124
+ prompt_tokens: entry.promptTokens,
125
+ completion_tokens: entry.completionTokens,
126
+ request_id: entry.requestId,
127
+ });
112
128
  }
113
129
  }
114
130
  spentSince(windowMs, nowMs = Date.now()) {
@@ -116,7 +132,12 @@ export class SqliteSpendLedger {
116
132
  const row = this.db
117
133
  .prepare(`SELECT COALESCE(SUM(cost_usd), 0) AS total FROM llm_spend WHERE ts >= ?`)
118
134
  .get(nowMs - windowMs);
119
- return row?.total ?? 0;
135
+ let total = row?.total ?? 0;
136
+ for (const charge of this.pending) {
137
+ if (charge.ts >= nowMs - windowMs)
138
+ total += charge.costUsd;
139
+ }
140
+ return total;
120
141
  }
121
142
  catch {
122
143
  return 0;
@@ -131,6 +152,10 @@ export class SqliteSpendLedger {
131
152
  const out = createSafeRecord();
132
153
  for (const r of rows)
133
154
  out[r.agent] = r.total;
155
+ for (const charge of this.pending) {
156
+ if (charge.ts >= nowMs - windowMs)
157
+ out[charge.agent] = (out[charge.agent] ?? 0) + charge.costUsd;
158
+ }
134
159
  return out;
135
160
  }
136
161
  catch {
@@ -0,0 +1,27 @@
1
+ /**
2
+ * How long one attempt of an asynchronously retried write may wait for a
3
+ * SQLite lock (#1263).
4
+ *
5
+ * better-sqlite3 waits for a locked database synchronously, inside the call,
6
+ * for up to the connection's busy_timeout (5 s by default). In a one-shot CLI
7
+ * command that is the patience we want. In the MCP server it freezes the event
8
+ * loop: while another process held memory.db's write lock, background writes
9
+ * blocked for 5 s each, back to back, and stopped all tool calls for 10-15 s.
10
+ *
11
+ * The MCP server sets this cap. Writes routed through
12
+ * UnifiedMemoryManager.writeWhenUnlocked then wait at most the cap per
13
+ * attempt and retry asynchronously until the connection's busy_timeout has
14
+ * passed. Connections keep their busy_timeout, so writes not routed that way
15
+ * keep their full (blocking) patience.
16
+ *
17
+ * Dependency-free so any module can read it.
18
+ */
19
+ /** Longest one retried write attempt blocks the MCP server's event loop on a locked database. */
20
+ export declare const INTERACTIVE_LOCK_WAIT_MS = 200;
21
+ /** Set the per-attempt wait for asynchronously retried writes (null: no cap). */
22
+ export declare function setLockWaitCap(ms: number | null): void;
23
+ /** The current cap, or null when retried writes wait the full busy_timeout per attempt. */
24
+ export declare function getLockWaitCap(): number | null;
25
+ /** The per-attempt wait for a requested busy_timeout, honouring the process cap. */
26
+ export declare function capBusyTimeout(requestedMs: number): number;
27
+ //# sourceMappingURL=sqlite-lock-wait.d.ts.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * How long one attempt of an asynchronously retried write may wait for a
3
+ * SQLite lock (#1263).
4
+ *
5
+ * better-sqlite3 waits for a locked database synchronously, inside the call,
6
+ * for up to the connection's busy_timeout (5 s by default). In a one-shot CLI
7
+ * command that is the patience we want. In the MCP server it freezes the event
8
+ * loop: while another process held memory.db's write lock, background writes
9
+ * blocked for 5 s each, back to back, and stopped all tool calls for 10-15 s.
10
+ *
11
+ * The MCP server sets this cap. Writes routed through
12
+ * UnifiedMemoryManager.writeWhenUnlocked then wait at most the cap per
13
+ * attempt and retry asynchronously until the connection's busy_timeout has
14
+ * passed. Connections keep their busy_timeout, so writes not routed that way
15
+ * keep their full (blocking) patience.
16
+ *
17
+ * Dependency-free so any module can read it.
18
+ */
19
+ /** Longest one retried write attempt blocks the MCP server's event loop on a locked database. */
20
+ export const INTERACTIVE_LOCK_WAIT_MS = 200;
21
+ let lockWaitCapMs = null;
22
+ /** Set the per-attempt wait for asynchronously retried writes (null: no cap). */
23
+ export function setLockWaitCap(ms) {
24
+ if (ms !== null && (!Number.isFinite(ms) || ms < 0)) {
25
+ throw new RangeError(`Lock wait cap must be a non-negative number of ms, got ${ms}`);
26
+ }
27
+ lockWaitCapMs = ms === null ? null : Math.floor(ms);
28
+ }
29
+ /** The current cap, or null when retried writes wait the full busy_timeout per attempt. */
30
+ export function getLockWaitCap() {
31
+ return lockWaitCapMs;
32
+ }
33
+ /** The per-attempt wait for a requested busy_timeout, honouring the process cap. */
34
+ export function capBusyTimeout(requestedMs) {
35
+ return lockWaitCapMs === null ? requestedMs : Math.min(requestedMs, lockWaitCapMs);
36
+ }
37
+ //# sourceMappingURL=sqlite-lock-wait.js.map
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Which SQLite connections have a write queue (#1283).
3
+ *
4
+ * UnifiedMemoryManager registers its shared memory.db connection here while it
5
+ * is open, with its writeWhenUnlocked queue. Modules that hold only the raw
6
+ * connection route writes through `writeWhenUnlockedOn` without importing
7
+ * unified-memory's sqlite graph: on a registered connection the write is
8
+ * queued (FIFO, retried asynchronously under the MCP server's lock wait cap,
9
+ * full busy_timeout budget), so a locked memory.db does not freeze the event
10
+ * loop. A write on any other connection runs now, as it always did.
11
+ *
12
+ * Dependency-free so any module can import it.
13
+ */
14
+ /** A connection's FIFO write queue: runs `fn` when the database is unlocked. */
15
+ export type WriteQueue = <T>(fn: () => T) => Promise<T>;
16
+ /** Route writes on `db` through `queue` until unregistered. */
17
+ export declare function registerWriteQueue(db: object, queue: WriteQueue): void;
18
+ /** Stop routing writes on `db` (the connection is closing). */
19
+ export declare function unregisterWriteQueue(db: object): void;
20
+ /** True when writes on `db` are queued. */
21
+ export declare function hasWriteQueue(db: object | null | undefined): boolean;
22
+ /**
23
+ * Run a write on `db`: queued when `db` has a write queue, otherwise at once.
24
+ * With the queue empty and the database unlocked a queued write also runs at
25
+ * once, so callers see the same result as a direct write.
26
+ */
27
+ export declare function writeWhenUnlockedOn<T>(db: object | null | undefined, fn: () => T): Promise<T>;
28
+ //# sourceMappingURL=sqlite-write-queue.d.ts.map
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Which SQLite connections have a write queue (#1283).
3
+ *
4
+ * UnifiedMemoryManager registers its shared memory.db connection here while it
5
+ * is open, with its writeWhenUnlocked queue. Modules that hold only the raw
6
+ * connection route writes through `writeWhenUnlockedOn` without importing
7
+ * unified-memory's sqlite graph: on a registered connection the write is
8
+ * queued (FIFO, retried asynchronously under the MCP server's lock wait cap,
9
+ * full busy_timeout budget), so a locked memory.db does not freeze the event
10
+ * loop. A write on any other connection runs now, as it always did.
11
+ *
12
+ * Dependency-free so any module can import it.
13
+ */
14
+ const queues = new WeakMap();
15
+ /** Route writes on `db` through `queue` until unregistered. */
16
+ export function registerWriteQueue(db, queue) {
17
+ queues.set(db, queue);
18
+ }
19
+ /** Stop routing writes on `db` (the connection is closing). */
20
+ export function unregisterWriteQueue(db) {
21
+ queues.delete(db);
22
+ }
23
+ /** True when writes on `db` are queued. */
24
+ export function hasWriteQueue(db) {
25
+ return db != null && queues.has(db);
26
+ }
27
+ /**
28
+ * Run a write on `db`: queued when `db` has a write queue, otherwise at once.
29
+ * With the queue empty and the database unlocked a queued write also runs at
30
+ * once, so callers see the same result as a direct write.
31
+ */
32
+ export function writeWhenUnlockedOn(db, fn) {
33
+ const queue = db != null ? queues.get(db) : undefined;
34
+ if (queue)
35
+ return queue(fn);
36
+ return new Promise((resolve) => resolve(fn()));
37
+ }
38
+ //# sourceMappingURL=sqlite-write-queue.js.map
@@ -0,0 +1,69 @@
1
+ /**
2
+ * #1247: the runner project a test file belongs to.
3
+ *
4
+ * Vitest and Jest load their configuration (setup files, aliases, include
5
+ * patterns, environment) from the directory they are started in. In a
6
+ * monorepo whose packages have their own config (`apps/webapp/vitest.config.ts`)
7
+ * a run started at the repository root never loads that package's setup, so
8
+ * the package's tests fail or produce no report. Each test file is therefore
9
+ * run from the nearest directory, at or above it, with runner configuration,
10
+ * but never from above the project root. Only real configuration counts, so a
11
+ * workspace package without its own config runs from the root that defines
12
+ * its project.
13
+ *
14
+ * A run from the current working directory is kept whenever that directory is
15
+ * already inside the file's runner project (a single-project repository, or a
16
+ * server started inside the package), so those runs behave as before.
17
+ */
18
+ import { Result } from './types';
19
+ /**
20
+ * Files whose presence makes a directory a Vitest or Jest project. A root
21
+ * workspace file (`vitest.workspace.*`) counts too: its packages run from it.
22
+ */
23
+ export declare const RUNNER_CONFIG_FILES: readonly string[];
24
+ export interface RunnerProjectOptions {
25
+ /** Directory runs start in today; defaults to process.cwd(). */
26
+ cwd?: string;
27
+ /** Highest directory the search may reach; defaults to findProjectRoot(). */
28
+ boundary?: string;
29
+ /** Directories already checked, so files that share a directory check it once. */
30
+ checked?: Map<string, boolean>;
31
+ }
32
+ /** A set of test files that run together from one directory. */
33
+ export interface RunnerProjectGroup {
34
+ cwd: string;
35
+ files: string[];
36
+ }
37
+ /** True when `dir` holds a Vitest or Jest configuration. */
38
+ export declare function isRunnerProjectDir(dir: string): boolean;
39
+ /**
40
+ * The nearest directory at or above `file` with runner configuration, searching no
41
+ * higher than `boundary`. Undefined when the file lies outside the boundary or
42
+ * no directory on the way has runner configuration.
43
+ */
44
+ export declare function findRunnerProjectDir(file: string, boundary: string, cwd?: string, checked?: Map<string, boolean>): string | undefined;
45
+ /**
46
+ * Directory to start the runner in for `file`: its runner project, unless the
47
+ * current directory is already inside that project (or none is found), in
48
+ * which case the current directory is kept.
49
+ */
50
+ export declare function runnerCwdFor(file: string, options?: RunnerProjectOptions): string;
51
+ /**
52
+ * Group `files` by the directory each must run from, in first-seen order.
53
+ * Files keep the spelling they were given.
54
+ */
55
+ export declare function groupByRunnerProject(files: readonly string[], options?: RunnerProjectOptions): RunnerProjectGroup[];
56
+ /** Test files to run, and the directory to run them from when the caller named one. */
57
+ export interface TestRunTargets {
58
+ testFiles: string[];
59
+ projectRoot?: string;
60
+ }
61
+ /**
62
+ * Handler-side check for an execute-tests payload. `testFiles` must name
63
+ * files or directories inside the project (#1126). An explicit `projectRoot`
64
+ * must be a directory inside the project, checked by realpath so `..`, an
65
+ * outside absolute path or a symlink pointing out is refused; relative test
66
+ * files are then read from it, and every path is returned absolute.
67
+ */
68
+ export declare function requireTestRunTargets(taskType: string, testFiles: unknown, projectRoot: unknown): Promise<Result<TestRunTargets, Error>>;
69
+ //# sourceMappingURL=test-runner-project.d.ts.map