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
@@ -0,0 +1,186 @@
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 { existsSync, readFileSync, realpathSync, statSync } from 'node:fs';
19
+ import * as path from 'node:path';
20
+ import { findProjectRoot } from '../kernel/project-root.js';
21
+ import { CallerInputError } from './error-utils.js';
22
+ import { requirePayloadFiles, requirePayloadPath } from './io/payload-path-guard.js';
23
+ import { safeJsonParse } from './safe-json.js';
24
+ import { runnerFilePath } from './test-runner-args.js';
25
+ import { ok, err } from './types/index.js';
26
+ const CONFIG_EXTENSIONS = ['ts', 'mts', 'cts', 'js', 'mjs', 'cjs'];
27
+ /**
28
+ * Files whose presence makes a directory a Vitest or Jest project. A root
29
+ * workspace file (`vitest.workspace.*`) counts too: its packages run from it.
30
+ */
31
+ export const RUNNER_CONFIG_FILES = [
32
+ ...CONFIG_EXTENSIONS.map(ext => `vitest.config.${ext}`),
33
+ ...[...CONFIG_EXTENSIONS, 'json'].map(ext => `vitest.workspace.${ext}`),
34
+ ...CONFIG_EXTENSIONS.map(ext => `jest.config.${ext}`),
35
+ 'jest.config.json',
36
+ ];
37
+ /** Vite configs: a runner project only when they configure `test`. */
38
+ const VITE_CONFIG_FILES = CONFIG_EXTENSIONS.map(ext => `vite.config.${ext}`);
39
+ /** Largest config or package.json read while looking for a runner setup. */
40
+ const MAX_MARKER_BYTES = 1024 * 1024;
41
+ function realDir(dir) {
42
+ try {
43
+ return realpathSync(dir);
44
+ }
45
+ catch {
46
+ return path.resolve(dir);
47
+ }
48
+ }
49
+ /** True when `candidate` is `root` or lies beneath it (both absolute). */
50
+ function isWithin(root, candidate) {
51
+ const relative = path.relative(root, candidate);
52
+ return relative === '' || (relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));
53
+ }
54
+ function readSmallFile(file) {
55
+ try {
56
+ const stat = statSync(file);
57
+ if (!stat.isFile() || stat.size > MAX_MARKER_BYTES)
58
+ return undefined;
59
+ return readFileSync(file, 'utf-8');
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ /**
66
+ * True when a package.json in `dir` holds runner configuration (a top-level
67
+ * `jest` or `vitest` key). Listing a runner as a dependency or in
68
+ * `scripts.test` does not: in a workspace the packages do that while the root
69
+ * config defines their projects and setup.
70
+ */
71
+ function packageConfiguresRunner(dir) {
72
+ const text = readSmallFile(path.join(dir, 'package.json'));
73
+ if (text === undefined)
74
+ return false;
75
+ let pkg;
76
+ try {
77
+ pkg = safeJsonParse(text);
78
+ }
79
+ catch {
80
+ return false;
81
+ }
82
+ if (!pkg || typeof pkg !== 'object')
83
+ return false;
84
+ return pkg.jest !== undefined || pkg.vitest !== undefined;
85
+ }
86
+ /** True when `dir` holds a Vitest or Jest configuration. */
87
+ export function isRunnerProjectDir(dir) {
88
+ if (RUNNER_CONFIG_FILES.some(name => existsSync(path.join(dir, name))))
89
+ return true;
90
+ for (const name of VITE_CONFIG_FILES) {
91
+ const text = readSmallFile(path.join(dir, name));
92
+ if (text !== undefined && /\btest\s*:/.test(text))
93
+ return true;
94
+ }
95
+ return packageConfiguresRunner(dir);
96
+ }
97
+ /**
98
+ * The nearest directory at or above `file` with runner configuration, searching no
99
+ * higher than `boundary`. Undefined when the file lies outside the boundary or
100
+ * no directory on the way has runner configuration.
101
+ */
102
+ export function findRunnerProjectDir(file, boundary, cwd = process.cwd(), checked = new Map()) {
103
+ const root = realDir(boundary);
104
+ let dir = path.dirname(runnerFilePath(file, cwd));
105
+ if (!isWithin(root, dir))
106
+ return undefined;
107
+ for (;;) {
108
+ let isProject = checked.get(dir);
109
+ if (isProject === undefined) {
110
+ isProject = isRunnerProjectDir(dir);
111
+ checked.set(dir, isProject);
112
+ }
113
+ if (isProject)
114
+ return dir;
115
+ if (dir === root)
116
+ return undefined;
117
+ const parent = path.dirname(dir);
118
+ if (parent === dir)
119
+ return undefined;
120
+ dir = parent;
121
+ }
122
+ }
123
+ /**
124
+ * Directory to start the runner in for `file`: its runner project, unless the
125
+ * current directory is already inside that project (or none is found), in
126
+ * which case the current directory is kept.
127
+ */
128
+ export function runnerCwdFor(file, options = {}) {
129
+ const cwd = options.cwd ?? process.cwd();
130
+ const project = findRunnerProjectDir(file, options.boundary ?? findProjectRoot(), cwd, options.checked);
131
+ if (!project || isWithin(project, realDir(cwd)))
132
+ return cwd;
133
+ return project;
134
+ }
135
+ /**
136
+ * Group `files` by the directory each must run from, in first-seen order.
137
+ * Files keep the spelling they were given.
138
+ */
139
+ export function groupByRunnerProject(files, options = {}) {
140
+ const resolved = {
141
+ cwd: options.cwd ?? process.cwd(),
142
+ boundary: options.boundary ?? findProjectRoot(),
143
+ checked: options.checked ?? new Map(),
144
+ };
145
+ const groups = new Map();
146
+ for (const file of files) {
147
+ const cwd = runnerCwdFor(file, resolved);
148
+ const group = groups.get(cwd);
149
+ if (group)
150
+ group.push(file);
151
+ else
152
+ groups.set(cwd, [file]);
153
+ }
154
+ return [...groups].map(([cwd, groupFiles]) => ({ cwd, files: groupFiles }));
155
+ }
156
+ /**
157
+ * Handler-side check for an execute-tests payload. `testFiles` must name
158
+ * files or directories inside the project (#1126). An explicit `projectRoot`
159
+ * must be a directory inside the project, checked by realpath so `..`, an
160
+ * outside absolute path or a symlink pointing out is refused; relative test
161
+ * files are then read from it, and every path is returned absolute.
162
+ */
163
+ export async function requireTestRunTargets(taskType, testFiles, projectRoot) {
164
+ const fileOptions = { allowMissing: true, allowDirectory: true };
165
+ if (projectRoot === undefined) {
166
+ const confined = await requirePayloadFiles(taskType, 'testFiles', testFiles, fileOptions);
167
+ return confined.success ? ok({ testFiles: confined.value }) : confined;
168
+ }
169
+ const checked = await requirePayloadPath(taskType, 'projectRoot', projectRoot, { allowDirectory: true });
170
+ if (!checked.success)
171
+ return checked;
172
+ const root = path.resolve(realDir(process.cwd()), checked.value);
173
+ let isDirectory = false;
174
+ try {
175
+ isDirectory = statSync(root).isDirectory();
176
+ }
177
+ catch { /* reported below */ }
178
+ if (!isDirectory) {
179
+ return err(new CallerInputError(`Invalid ${taskType} payload: 'projectRoot' must be a directory inside the project.`));
180
+ }
181
+ const confined = await requirePayloadFiles(taskType, 'testFiles', testFiles, { ...fileOptions, basePath: root });
182
+ if (!confined.success)
183
+ return confined;
184
+ return ok({ testFiles: confined.value.map(file => path.resolve(root, file)), projectRoot: root });
185
+ }
186
+ //# sourceMappingURL=test-runner-project.js.map
@@ -84,7 +84,9 @@ export declare class SecurityVisualTestingSkill implements ISecurityVisualTestin
84
84
  */
85
85
  validateURLSecurity(url: string): Promise<Result<URLSecurityValidation, Error>>;
86
86
  /**
87
- * Detect PII in screenshot
87
+ * Detect PII in screenshot.
88
+ * No OCR scanner is available, so the result says the screenshot was not
89
+ * scanned (#1228): detected is null and confidence -1, never "no PII found".
88
90
  */
89
91
  detectPII(screenshotPath: string): Promise<Result<PIIDetectionResult, Error>>;
90
92
  private ensureInitialized;
@@ -142,20 +142,17 @@ export class SecurityVisualTestingSkill {
142
142
  accessibilityReport = accessibilityResult.value;
143
143
  }
144
144
  }
145
- // Step 4: Detect PII in screenshots if enabled
145
+ // Step 4: Detect PII in screenshots if enabled. #1228: no scanner exists,
146
+ // so each screenshot is reported as not scanned, never as free of PII.
146
147
  if (this.config.pii.enabled && options.detectPII !== false) {
147
- // In a real implementation, this would scan all captured screenshots
148
- // For now, we'll generate a placeholder result
149
148
  for (const url of secureUrls) {
150
- piiDetections.push({
151
- detected: false,
152
- types: [],
153
- locations: [],
154
- screenshot: { original: `${url}-screenshot.png` },
155
- confidence: 0.95,
156
- });
149
+ const screenshot = visualReport.results.find((r) => r.url === url)?.screenshot.path.value ?? '';
150
+ const detection = await this.detectPII(screenshot);
151
+ if (detection.success)
152
+ piiDetections.push(detection.value);
157
153
  }
158
154
  }
155
+ const piiScanned = piiDetections.filter((p) => p.measured);
159
156
  // Step 5: Generate recommendations
160
157
  const recommendations = this.generateRecommendations(urlValidations, visualReport, accessibilityReport, piiDetections);
161
158
  // Build report
@@ -166,7 +163,7 @@ export class SecurityVisualTestingSkill {
166
163
  visualTestsPassed: visualReport.passed,
167
164
  visualTestsFailed: visualReport.failed,
168
165
  accessibilityIssues: accessibilityReport?.totalViolations ?? 0,
169
- piiDetections: piiDetections.filter((p) => p.detected).length,
166
+ piiDetections: piiScanned.length > 0 ? piiScanned.filter((p) => p.detected === true).length : -1,
170
167
  duration: Date.now() - startTime,
171
168
  },
172
169
  urlValidations,
@@ -216,14 +213,22 @@ export class SecurityVisualTestingSkill {
216
213
  return err(new Error(`Screenshot capture failed: ${screenshotResult.error.message}`));
217
214
  }
218
215
  const screenshot = screenshotResult.value;
219
- // Step 5: Detect PII if enabled
220
- let piiDetected = false;
216
+ // Step 5: Detect PII if enabled. #1228: unscanned is null, not false.
217
+ let piiDetected = null;
218
+ let piiNotMeasuredReason = 'PII NOT MEASURED: no PII scan was requested';
221
219
  let piiTypes = [];
222
220
  let maskedPath;
223
221
  if (this.config.pii.enabled && (options.maskPII ?? this.config.pii.autoMask)) {
224
- const piiResult = await this.detectPII(screenshot.path || 'screenshot.png');
225
- if (piiResult.success && piiResult.value.detected) {
226
- piiDetected = true;
222
+ const piiResult = await this.detectPII(screenshot.path || '');
223
+ if (!piiResult.success) {
224
+ piiNotMeasuredReason = `PII NOT MEASURED: ${piiResult.error.message}`;
225
+ }
226
+ else if (!piiResult.value.measured) {
227
+ piiNotMeasuredReason = piiResult.value.notMeasuredReason;
228
+ }
229
+ else {
230
+ piiDetected = piiResult.value.detected;
231
+ piiNotMeasuredReason = undefined;
227
232
  piiTypes = piiResult.value.types;
228
233
  maskedPath = piiResult.value.screenshot.masked;
229
234
  }
@@ -242,6 +247,7 @@ export class SecurityVisualTestingSkill {
242
247
  masked: maskedPath,
243
248
  },
244
249
  piiDetected,
250
+ ...(piiNotMeasuredReason ? { piiNotMeasuredReason } : {}),
245
251
  piiTypes,
246
252
  securityValidation: validation,
247
253
  timestamp: new Date(),
@@ -270,24 +276,18 @@ export class SecurityVisualTestingSkill {
270
276
  path: result.screenshot.path.value,
271
277
  timestamp: result.screenshot.timestamp,
272
278
  }));
279
+ // #1228: a missing diff is -1 and a new baseline is `new`, not a 0% pass or a failure
273
280
  const visualRegressions = visualReport.results.map((result) => ({
274
281
  viewport: result.viewport,
275
- diffPercentage: result.diff?.diffPercentage ?? 0,
276
- status: result.status === 'passed' ? 'passed' : 'failed',
282
+ diffPercentage: result.diff?.diffPercentage ?? -1,
283
+ status: result.status,
277
284
  }));
278
- // Detect layout shifts if enabled
285
+ // #1228: element positions are not compared across viewports, so layout
286
+ // shifts are reported as not measured instead of "no shifts detected".
279
287
  const layoutShifts = [];
280
- if (options.detectLayoutShifts) {
281
- // In a real implementation, this would analyze element positions across viewports
282
- // For now, we'll generate placeholder data
283
- layoutShifts.push({
284
- viewport: options.viewports[0],
285
- affectedElements: [],
286
- score: 0,
287
- severity: 'low',
288
- description: 'No significant layout shifts detected',
289
- });
290
- }
288
+ const layoutShiftsNotMeasured = options.detectLayoutShifts
289
+ ? { layoutShiftsMeasured: false, layoutShiftsNotMeasuredReason: 'layout shift detection is not implemented: element positions were not compared across viewports' }
290
+ : {};
291
291
  // Generate recommendations
292
292
  const recommendations = [];
293
293
  if (visualReport.failed > 0) {
@@ -301,6 +301,7 @@ export class SecurityVisualTestingSkill {
301
301
  viewports: options.viewports,
302
302
  screenshots,
303
303
  layoutShifts,
304
+ ...layoutShiftsNotMeasured,
304
305
  visualRegressions,
305
306
  recommendations,
306
307
  };
@@ -367,20 +368,22 @@ export class SecurityVisualTestingSkill {
367
368
  }
368
369
  }
369
370
  /**
370
- * Detect PII in screenshot
371
+ * Detect PII in screenshot.
372
+ * No OCR scanner is available, so the result says the screenshot was not
373
+ * scanned (#1228): detected is null and confidence -1, never "no PII found".
371
374
  */
372
375
  async detectPII(screenshotPath) {
373
376
  try {
374
- // In a real implementation, this would use OCR and pattern matching
375
- // For now, we'll return a placeholder result
376
377
  const result = {
377
- detected: false,
378
+ detected: null,
378
379
  types: [],
379
380
  locations: [],
380
381
  screenshot: {
381
382
  original: screenshotPath,
382
383
  },
383
- confidence: 0.95,
384
+ confidence: -1,
385
+ measured: false,
386
+ notMeasuredReason: 'PII NOT MEASURED: no screenshot PII scanner (OCR) is available, so the screenshot was not scanned',
384
387
  };
385
388
  return ok(result);
386
389
  }
@@ -454,6 +457,17 @@ export class SecurityVisualTestingSkill {
454
457
  affectedUrls: [], // Would need to track which URLs had PII
455
458
  });
456
459
  }
460
+ // #1228: an unscanned screenshot needs a manual check, it is not clean
461
+ const piiUnscanned = piiDetections.filter((p) => !p.measured);
462
+ if (piiUnscanned.length > 0) {
463
+ recommendations.push({
464
+ type: 'pii',
465
+ severity: 'medium',
466
+ description: `PII NOT MEASURED for ${piiUnscanned.length} screenshot(s): ${piiUnscanned[0].notMeasuredReason ?? 'not scanned'}`,
467
+ action: 'Review the screenshots for PII manually before sharing them',
468
+ affectedUrls: [],
469
+ });
470
+ }
457
471
  return recommendations;
458
472
  }
459
473
  }
@@ -27,14 +27,19 @@ export interface SecurityIssue {
27
27
  * PII detection result in screenshot
28
28
  */
29
29
  export interface PIIDetectionResult {
30
- detected: boolean;
30
+ /** null when no scan ran: not scanned is not "no PII found" (#1228). */
31
+ detected: boolean | null;
31
32
  types: PIIType[];
32
33
  locations: PIILocation[];
33
34
  screenshot: {
34
35
  original: string;
35
36
  masked?: string;
36
37
  };
38
+ /** -1 when no scan ran (#1228). */
37
39
  confidence: number;
40
+ /** false when the screenshot was not scanned; see notMeasuredReason (#1228). */
41
+ measured: boolean;
42
+ notMeasuredReason?: string;
38
43
  }
39
44
  /**
40
45
  * Types of PII that can be detected
@@ -77,6 +82,7 @@ export interface SecurityVisualAuditReport {
77
82
  visualTestsPassed: number;
78
83
  visualTestsFailed: number;
79
84
  accessibilityIssues: number;
85
+ /** Screenshots with PII found; -1 when no screenshot was scanned (#1228). */
80
86
  piiDetections: number;
81
87
  duration: number;
82
88
  };
@@ -126,7 +132,9 @@ export interface PIISafeScreenshot {
126
132
  original: string;
127
133
  masked?: string;
128
134
  };
129
- piiDetected: boolean;
135
+ /** null when the screenshot was not scanned for PII (#1228). */
136
+ piiDetected: boolean | null;
137
+ piiNotMeasuredReason?: string;
130
138
  piiTypes: PIIType[];
131
139
  securityValidation: URLSecurityValidation;
132
140
  timestamp: Date;
@@ -163,10 +171,18 @@ export interface ResponsiveVisualAuditReport {
163
171
  timestamp: Date;
164
172
  }>;
165
173
  layoutShifts: LayoutShift[];
174
+ /**
175
+ * false when layout shifts were requested but not measured: an empty
176
+ * `layoutShifts` list is then not a clean result (#1228).
177
+ */
178
+ layoutShiftsMeasured?: boolean;
179
+ layoutShiftsNotMeasuredReason?: string;
166
180
  visualRegressions: Array<{
167
181
  viewport: Viewport;
182
+ /** -1 when no diff was computed, e.g. a new baseline (#1228). */
168
183
  diffPercentage: number;
169
- status: 'passed' | 'failed';
184
+ /** `new`: no baseline existed, so nothing was compared. */
185
+ status: 'passed' | 'failed' | 'new';
170
186
  }>;
171
187
  recommendations: string[];
172
188
  }
@@ -11,7 +11,7 @@
11
11
  * - Daily Markdown log entries
12
12
  */
13
13
  import { BaseWorker } from '../base-worker.js';
14
- import { createPatternLifecycleManager, } from '../../learning/pattern-lifecycle.js';
14
+ import { createPatternLifecycleManagerWhenUnlocked, } from '../../learning/pattern-lifecycle.js';
15
15
  import { getUnifiedMemory } from '../../kernel/unified-memory.js';
16
16
  import { DailyLogger } from '../../learning/daily-log.js';
17
17
  import { toErrorMessage } from '../../shared/error-utils.js';
@@ -53,7 +53,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
53
53
  const unifiedMemory = getUnifiedMemory();
54
54
  await unifiedMemory.initialize();
55
55
  const db = unifiedMemory.getDatabase();
56
- this.lifecycleManager = createPatternLifecycleManager(db, {
56
+ this.lifecycleManager = await createPatternLifecycleManagerWhenUnlocked(db, {
57
57
  promotionRewardThreshold: 0.7,
58
58
  promotionMinOccurrences: 2,
59
59
  promotionMinSuccessRate: 0.7,
@@ -117,7 +117,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
117
117
  let promoted = 0;
118
118
  let promotionChecked = 0;
119
119
  try {
120
- const promotionResult = lifecycleManager.promoteEligiblePatterns();
120
+ const promotionResult = await lifecycleManager.promoteEligiblePatternsWhenUnlocked();
121
121
  promoted = promotionResult.promoted;
122
122
  promotionChecked = promotionResult.checked;
123
123
  if (promoted > 0) {
@@ -139,7 +139,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
139
139
  let deprecated = 0;
140
140
  let deprecationChecked = 0;
141
141
  try {
142
- const deprecationResult = lifecycleManager.deprecateStalePatterns();
142
+ const deprecationResult = await lifecycleManager.deprecateStalePatternsWhenUnlocked();
143
143
  deprecated = deprecationResult.deprecated;
144
144
  deprecationChecked = deprecationResult.checked;
145
145
  if (deprecated > 0) {
@@ -163,7 +163,7 @@ export class HeartbeatSchedulerWorker extends BaseWorker {
163
163
  const daysSinceLastRun = this.lastRunTimestamp > 0
164
164
  ? (Date.now() - this.lastRunTimestamp) / (1000 * 60 * 60 * 24)
165
165
  : 1;
166
- const decayResult = lifecycleManager.applyConfidenceDecay(Math.min(daysSinceLastRun, 7));
166
+ const decayResult = await lifecycleManager.applyConfidenceDecayWhenUnlocked(Math.min(daysSinceLastRun, 7));
167
167
  decayed = decayResult.decayed;
168
168
  }
169
169
  catch (error) {
@@ -16,7 +16,7 @@ import { BaseWorker } from '../base-worker.js';
16
16
  import { ALL_DOMAINS } from '../../shared/types/index.js';
17
17
  import { TimeRange } from '../../shared/value-objects/index.js';
18
18
  import { DreamEngine } from '../../learning/dream/index.js';
19
- import { createPatternLifecycleManager, } from '../../learning/pattern-lifecycle.js';
19
+ import { createPatternLifecycleManagerWhenUnlocked, } from '../../learning/pattern-lifecycle.js';
20
20
  import { getUnifiedMemory, findProjectRoot } from '../../kernel/unified-memory.js';
21
21
  import { toErrorMessage } from '../../shared/error-utils.js';
22
22
  import { ExperienceConsolidator } from '../../learning/experience-consolidation.js';
@@ -77,7 +77,7 @@ export class LearningConsolidationWorker extends BaseWorker {
77
77
  const unifiedMemory = getUnifiedMemory();
78
78
  await unifiedMemory.initialize();
79
79
  const db = unifiedMemory.getDatabase();
80
- this.lifecycleManager = createPatternLifecycleManager(db, {
80
+ this.lifecycleManager = await createPatternLifecycleManagerWhenUnlocked(db, {
81
81
  promotionRewardThreshold: 0.7,
82
82
  promotionMinOccurrences: 2,
83
83
  promotionMinSuccessRate: 0.7,
@@ -332,7 +332,7 @@ export class LearningConsolidationWorker extends BaseWorker {
332
332
  }
333
333
  }
334
334
  // Step 3: Promote eligible patterns
335
- const promotionResult = lifecycleManager.promoteEligiblePatterns();
335
+ const promotionResult = await lifecycleManager.promoteEligiblePatternsWhenUnlocked();
336
336
  patternsPromoted = promotionResult.promoted;
337
337
  if (patternsPromoted > 0) {
338
338
  findings.push({
@@ -348,7 +348,7 @@ export class LearningConsolidationWorker extends BaseWorker {
348
348
  });
349
349
  }
350
350
  // Step 4: Deprecate underperforming patterns
351
- const deprecationResult = lifecycleManager.deprecateStalePatterns();
351
+ const deprecationResult = await lifecycleManager.deprecateStalePatternsWhenUnlocked();
352
352
  patternsDeprecated = deprecationResult.deprecated;
353
353
  if (patternsDeprecated > 0) {
354
354
  findings.push({
@@ -405,7 +405,7 @@ export class LearningConsolidationWorker extends BaseWorker {
405
405
  ? (Date.now() - this.lastRunTimestamp) / (1000 * 60 * 60 * 24)
406
406
  : 1;
407
407
  if (daysSinceLastRun >= 0.5) { // Apply decay at least twice per day
408
- const decayResult = lifecycleManager.applyConfidenceDecay(Math.min(daysSinceLastRun, 7));
408
+ const decayResult = await lifecycleManager.applyConfidenceDecayWhenUnlocked(Math.min(daysSinceLastRun, 7));
409
409
  confidenceDecayApplied = decayResult.decayed;
410
410
  }
411
411
  // Step 6: Generate lifecycle statistics finding
@@ -591,7 +591,8 @@ export class LearningConsolidationWorker extends BaseWorker {
591
591
  const { v4: uuidv4 } = await import('uuid');
592
592
  const patternId = uuidv4();
593
593
  const description = `Auto-extracted pattern from ${candidate.sourceExperiences} experiences. Avg reward: ${candidate.avgReward.toFixed(3)}`;
594
- db.prepare(`
594
+ // #1283: queued so a locked memory.db does not freeze the MCP server.
595
+ await unifiedMemory.writeWhenUnlocked(() => db.prepare(`
595
596
  INSERT INTO qe_patterns (
596
597
  id, pattern_type, qe_domain, domain, name, description,
597
598
  confidence, usage_count, success_rate, quality_score, tier,
@@ -606,7 +607,7 @@ export class LearningConsolidationWorker extends BaseWorker {
606
607
  tags: candidate.actions,
607
608
  sourceType: 'experience-extraction',
608
609
  extractedAt: new Date().toISOString(),
609
- }), Math.round(candidate.sourceExperiences * candidate.successRate));
610
+ }), Math.round(candidate.sourceExperiences * candidate.successRate)));
610
611
  // Pair the qe_patterns row with an embedding so HNSW pattern recall
611
612
  // doesn't see this as a "ghost" (ADR-058 embedding-locality). Fail-soft.
612
613
  const { ensurePatternEmbedding } = await import('../../learning/embed-and-insert-pattern.js');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.15.14",
3
+ "version": "3.15.16",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -68,8 +68,9 @@
68
68
  "scripts": {
69
69
  "preinstall": "node scripts/preinstall.cjs || true",
70
70
  "postinstall": "node scripts/postinstall.cjs",
71
- "build": "tsc && npm run build:esm && npm run build:cli && npm run build:mcp",
71
+ "build": "tsc && npm run build:esm && npm run build:wasm-assets && npm run build:cli && npm run build:mcp",
72
72
  "build:esm": "node scripts/fix-esm-specifiers.mjs",
73
+ "build:wasm-assets": "node scripts/copy-wasm-assets.mjs",
73
74
  "build:cli": "node scripts/build-cli.mjs",
74
75
  "build:mcp": "node scripts/build-mcp.mjs",
75
76
  "prepublishOnly": "node scripts/sync-agents.cjs && node scripts/prepare-assets.cjs",
@@ -301,6 +302,7 @@
301
302
  "dist/**/*.d.ts",
302
303
  "dist/**/*.json",
303
304
  "dist/**/*.node",
305
+ "dist/**/*.wasm",
304
306
  "assets/**",
305
307
  "schemas/**",
306
308
  "scripts/postinstall.cjs",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
2
- import{a,b,c}from"./chunk-HSDWPQQY.js";import"./chunk-UPWLMIDY.js";import"./chunk-MKYOE7NE.js";import"./chunk-XN3KCKAM.js";import"./chunk-L5VSLPMW.js";import"./chunk-V6SE2ZU2.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
2
- import{a as x}from"./chunk-YKQWIXUY.js";import{c as f}from"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-V6SE2ZU2.js";x();import{createRequire as w}from"module";var S=f.create("agent-booster-wasm"),t={JavaScript:0,TypeScript:1,Python:2,Rust:3,Go:4,Java:5,C:6,Cpp:7},l={ExactReplace:0,FuzzyReplace:1,InsertAfter:2,InsertBefore:3,Append:4},v={0:"JavaScript",1:"TypeScript",2:"Python",3:"Rust",4:"Go",5:"Java",6:"C",7:"Cpp"},a=null,u=null,p=null;async function g(){if(a)return!0;if(p)return!1;try{if(a=w(import.meta.url)("./agent_booster_wasm.js"),!a)throw new Error("WASM module loaded but is null");return u=new a.AgentBoosterWasm,!0}catch(e){return p=e,console.warn("[AgentBoosterWASM] Failed to load WASM module:",e),!1}}function A(e){return{".js":t.JavaScript,".mjs":t.JavaScript,".cjs":t.JavaScript,".jsx":t.JavaScript,".ts":t.TypeScript,".tsx":t.TypeScript,".mts":t.TypeScript,".cts":t.TypeScript,".py":t.Python,".rs":t.Rust,".go":t.Go,".java":t.Java,".c":t.C,".h":t.C,".cpp":t.Cpp,".cc":t.Cpp,".cxx":t.Cpp,".hpp":t.Cpp}[e.toLowerCase()]??t.JavaScript}var M=[{name:"var-to-const",detect:(e,r)=>e.includes("var ")&&r.includes("const "),apply:(e,r)=>e.replace(/\bvar\s+/g,"const ")},{name:"var-to-let",detect:(e,r)=>e.includes("var ")&&r.includes("let "),apply:(e,r)=>e.replace(/\bvar\s+/g,"let ")},{name:"add-types-function",detect:(e,r)=>e.includes("function")&&!e.includes(":")&&r.includes(":"),apply:(e,r)=>r},{name:"async-wrapper",detect:(e,r)=>!e.includes("async")&&r.includes("async")&&r.includes("await"),apply:(e,r)=>r},{name:"try-catch-wrapper",detect:(e,r)=>!e.includes("try {")&&r.includes("try {"),apply:(e,r)=>r},{name:"null-check",detect:(e,r)=>!e.includes("if (!")&&!e.includes("if (!")&&(r.includes("if (!")||r.includes("?.")),apply:(e,r)=>r},{name:"test-assertion",detect:(e,r)=>e.includes("test(")&&!e.includes("expect(")&&r.includes("expect("),apply:(e,r)=>r}];function y(e,r){for(let n of M)if(n.detect(e,r))try{return{success:!0,code:n.apply(e,r),pattern:n.name}}catch(s){S.debug("Pattern transform failed, trying next",{pattern:n.name,error:s instanceof Error?s.message:String(s)});continue}return{success:!1,code:r}}async function b(e,r,n,s={}){let o=performance.now(),{confidenceThreshold:T=.5,allowFallback:d=!0}=s;if(!e.trim())return{success:!0,mergedCode:r,confidence:1,strategy:l.Append,syntaxValid:!0,source:"fallback",latencyMs:performance.now()-o};if(await g()&&u&&a)try{let c=a.WasmLanguage[v[n]],i=u.apply_edit(e,r,c);return{success:!0,mergedCode:i.merged_code,confidence:i.confidence,strategy:i.strategy,syntaxValid:i.syntax_valid,source:"wasm",latencyMs:performance.now()-o}}catch(c){let i=c;if(d){let m=y(e,r);if(m.success)return{success:!0,mergedCode:m.code,confidence:.7,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:i.message}}if(d){let c=y(e,r);return{success:c.success,mergedCode:c.code,confidence:c.success?.7:0,strategy:l.FuzzyReplace,syntaxValid:!0,source:"pattern",latencyMs:performance.now()-o}}return{success:!1,mergedCode:r,confidence:0,strategy:l.Append,syntaxValid:!1,source:"fallback",latencyMs:performance.now()-o,error:p?.message??"WASM not available"}}async function W(e,r={}){return Promise.all(e.map(({original:n,edit:s,language:o})=>b(n,s,o,r)))}async function C(){return g()}async function L(){return await g()&&a?a.AgentBoosterWasm.version():"unavailable"}async function R(){if(await g(),u&&a)try{u.apply_edit("function x() {}","function x() {}",a.WasmLanguage.JavaScript)}catch(e){console.debug("[AgentBoosterWASM] Warmup error:",e instanceof Error?e.message:e)}}var _={transform:b,batchTransform:W,isWasmAvailable:C,getVersion:L,warmup:R,Language:t,MergeStrategy:l,languageFromExtension:A};export{t as Language,l as MergeStrategy,W as batchTransform,_ as default,L as getVersion,C as isWasmAvailable,A as languageFromExtension,b as transform,R as warmup};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-MQXWG55U.js";import"./chunk-H3C5FJRH.js";import"./chunk-E2JLAW3U.js";import"./chunk-Z2S7DNFP.js";import"./chunk-HHBF2BZC.js";import"./chunk-WCPSR4MJ.js";import"./chunk-JJHLGGPP.js";import"./chunk-X6NJOT3V.js";import"./chunk-5Z4MO2F3.js";import"./chunk-YGOSSVY5.js";import"./chunk-MB4UKUBV.js";import"./chunk-NZQYJCO6.js";import"./chunk-O5CEL447.js";import"./chunk-HV43NX4A.js";import"./chunk-UNYTHZDZ.js";import"./chunk-UMHFTQTR.js";import"./chunk-JK6PMLQQ.js";import"./chunk-6NIGSY5L.js";import"./chunk-XN3KCKAM.js";import"./chunk-UDSB3XCG.js";import"./chunk-Z54G2YOL.js";import"./chunk-HEDGFKC5.js";import"./chunk-AJVLVF7V.js";import"./chunk-7SQTLUEN.js";import"./chunk-57DRT6UA.js";import"./chunk-K7GFYFBO.js";import"./chunk-L752CNG3.js";import"./chunk-BNG4J3CE.js";import"./chunk-QP6GL3O5.js";import"./chunk-RE6JTSDM.js";import"./chunk-LTGQJYYO.js";import"./chunk-YKQWIXUY.js";import"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-E7OR6V3V.js";import"./chunk-O756AOUX.js";import"./chunk-2UZBLC5H.js";import"./chunk-CAZM63TP.js";import"./chunk-L7PC675Y.js";import"./chunk-2W5MQDHM.js";import"./chunk-INGXD5IX.js";import"./chunk-L5VSLPMW.js";import"./chunk-U6IOQKCT.js";import"./chunk-V6SE2ZU2.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j,k,l}from"./chunk-NPCXGX7N.js";import"./chunk-HTVGHHX2.js";import"./chunk-QUZ745UQ.js";import"./chunk-JK6PMLQQ.js";import"./chunk-6NIGSY5L.js";import"./chunk-XN3KCKAM.js";import"./chunk-UDSB3XCG.js";import"./chunk-Z54G2YOL.js";import"./chunk-HEDGFKC5.js";import"./chunk-AJVLVF7V.js";import"./chunk-7SQTLUEN.js";import"./chunk-57DRT6UA.js";import"./chunk-K7GFYFBO.js";import"./chunk-BNG4J3CE.js";import"./chunk-QP6GL3O5.js";import"./chunk-LTGQJYYO.js";import"./chunk-YKQWIXUY.js";import"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-E7OR6V3V.js";import"./chunk-2UZBLC5H.js";import"./chunk-CAZM63TP.js";import"./chunk-INGXD5IX.js";import"./chunk-L5VSLPMW.js";import"./chunk-U6IOQKCT.js";import"./chunk-V6SE2ZU2.js";export{l as MCPToolBase,k as defaultToolLogger,j as getKernel,i as getLLMRouter,e as getMemoryBackend,g as getSharedLLMRouter,c as getSharedMemoryBackend,a as isMemoryOnlyMode,b as registerRvfResetFn,h as resetSharedLLMRouter,d as resetSharedMemoryBackend,f as setSharedLLMRouter};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.15.14");process.exit(0)}
2
- import{a}from"./chunk-P2TPH3TC.js";import"./chunk-NPCXGX7N.js";import"./chunk-HTVGHHX2.js";import"./chunk-QUZ745UQ.js";import"./chunk-JK6PMLQQ.js";import"./chunk-6NIGSY5L.js";import"./chunk-XN3KCKAM.js";import"./chunk-UDSB3XCG.js";import"./chunk-Z54G2YOL.js";import"./chunk-HEDGFKC5.js";import"./chunk-AJVLVF7V.js";import"./chunk-7SQTLUEN.js";import"./chunk-57DRT6UA.js";import"./chunk-K7GFYFBO.js";import"./chunk-BNG4J3CE.js";import"./chunk-QP6GL3O5.js";import"./chunk-LTGQJYYO.js";import"./chunk-YKQWIXUY.js";import"./chunk-C3OIBFAA.js";import"./chunk-IRPNEXOU.js";import"./chunk-7QUSNBAA.js";import"./chunk-E7OR6V3V.js";import"./chunk-2UZBLC5H.js";import"./chunk-CAZM63TP.js";import"./chunk-INGXD5IX.js";import"./chunk-L5VSLPMW.js";import"./chunk-U6IOQKCT.js";import"./chunk-V6SE2ZU2.js";export{a as BrowserWorkflowTool};