agentic-qe 3.15.15 → 3.15.17

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 (526) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +168 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/audit/witness-chain.d.ts +7 -0
  5. package/dist/audit/witness-chain.js +10 -0
  6. package/dist/cli/bundle.js +6 -6
  7. package/dist/cli/chunks/adapter-OMILP6KH.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-EUF4XVUC.js → agent-booster-wasm-6BUOFQZA.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-MOX6PSIQ.js → agent-handler-HPDK3JI3.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-AEXKIGDG.js → agent-memory-branch-5QKUTWK5.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-OXH5CCOS.js +2 -0
  12. package/dist/cli/chunks/{arena-IQ5ZZDRF.js → arena-7OKPMNHD.js} +2 -2
  13. package/dist/cli/chunks/{arena-M7GA3CVG.js → arena-HZ35LESR.js} +4 -4
  14. package/dist/cli/chunks/{audit-4IPBMKWB.js → audit-XI575SVK.js} +3 -3
  15. package/dist/cli/chunks/base-MAK2BLTG.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IKDKJ2IE.js → better-sqlite3-YO5X7ZJS.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-5NQUDH4W.js → brain-handler-GCQZFZGQ.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-KSXELWRC.js → branch-enumerator-N6G44UU2.js} +2 -2
  19. package/dist/cli/chunks/{browser-6LACARWE.js → browser-EVKPTLOI.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-IR3VF2TL.js +2 -0
  21. package/dist/cli/chunks/{chunk-DKX4GNRU.js → chunk-2EQK7B5L.js} +2 -2
  22. package/dist/cli/chunks/chunk-2PCEMDIX.js +757 -0
  23. package/dist/cli/chunks/{chunk-JCQGJGGZ.js → chunk-2UUZCQSD.js} +7 -7
  24. package/dist/cli/chunks/chunk-2YWYW7NU.js +21 -0
  25. package/dist/cli/chunks/{chunk-PFQCV6YS.js → chunk-45223KK6.js} +6 -6
  26. package/dist/cli/chunks/chunk-4EJLHNER.js +12 -0
  27. package/dist/cli/chunks/{chunk-E5G4WZ2T.js → chunk-4L6WX5KC.js} +1 -1
  28. package/dist/cli/chunks/{chunk-UQPA33UK.js → chunk-4NKZU2JZ.js} +2 -2
  29. package/dist/cli/chunks/{chunk-OBDONJQM.js → chunk-4UKTIQDT.js} +2 -2
  30. package/dist/cli/chunks/{chunk-7BLZHFKD.js → chunk-4YM45Z5B.js} +1 -1
  31. package/dist/cli/chunks/{chunk-ZWBGYJ7K.js → chunk-5FSPELOG.js} +2 -2
  32. package/dist/cli/chunks/{chunk-NWIIYHT6.js → chunk-5WATBVU6.js} +2 -2
  33. package/dist/cli/chunks/{chunk-7ACCBHRB.js → chunk-5WYZVSL2.js} +1 -1
  34. package/dist/cli/chunks/{chunk-ZYJB6FML.js → chunk-6LSZCEW2.js} +1 -1
  35. package/dist/cli/chunks/{chunk-U62OUXBF.js → chunk-6V6BD6PH.js} +1 -1
  36. package/dist/cli/chunks/{chunk-MIA447GY.js → chunk-74MDUIAZ.js} +1 -1
  37. package/dist/cli/chunks/{chunk-AJPROCDW.js → chunk-776K4ZLE.js} +2 -2
  38. package/dist/cli/chunks/{chunk-CBK5CT6T.js → chunk-7BSOO3CY.js} +2 -2
  39. package/dist/cli/chunks/{chunk-ERN56H6S.js → chunk-7SNSI4VY.js} +1 -1
  40. package/dist/cli/chunks/{chunk-JKJOB65O.js → chunk-A4BVDYIL.js} +1 -1
  41. package/dist/cli/chunks/{chunk-MV55NXTD.js → chunk-AGCS5GSO.js} +2 -2
  42. package/dist/cli/chunks/{chunk-XIVVTYM2.js → chunk-AVHYJ3XP.js} +2 -2
  43. package/dist/cli/chunks/{chunk-KJBPB7P5.js → chunk-BE7ZHM34.js} +2 -2
  44. package/dist/cli/chunks/{chunk-GKSMRBHU.js → chunk-BHQ2DLJU.js} +1 -1
  45. package/dist/cli/chunks/{chunk-7XB3FCKM.js → chunk-BKHEQIRZ.js} +2 -2
  46. package/dist/cli/chunks/{chunk-G242G224.js → chunk-BSIWI4ES.js} +2 -2
  47. package/dist/cli/chunks/{chunk-NQS3BWS6.js → chunk-C7QLLMYI.js} +1 -1
  48. package/dist/cli/chunks/{chunk-XWIAZG3C.js → chunk-CMN7PU2H.js} +2 -2
  49. package/dist/cli/chunks/{chunk-4X3SWKBA.js → chunk-COTQ44YO.js} +2 -2
  50. package/dist/cli/chunks/{chunk-3J3RNJNX.js → chunk-CQER6IJ5.js} +1 -1
  51. package/dist/cli/chunks/{chunk-6KCSKGVY.js → chunk-CVPXHDQU.js} +1 -1
  52. package/dist/cli/chunks/{chunk-R6LHJ7ME.js → chunk-CVYPMGUM.js} +2 -2
  53. package/dist/cli/chunks/chunk-CXCMATZ6.js +3 -0
  54. package/dist/cli/chunks/{chunk-PYPS65P7.js → chunk-D75GLKEL.js} +2 -2
  55. package/dist/cli/chunks/chunk-DCDSN67A.js +2 -0
  56. package/dist/cli/chunks/{chunk-6RBTS3NF.js → chunk-DHKSPOUQ.js} +2 -2
  57. package/dist/cli/chunks/{chunk-JW74KRBC.js → chunk-DJDVD6RM.js} +2 -2
  58. package/dist/cli/chunks/{chunk-X33CWRDF.js → chunk-DNVRTJKB.js} +2 -2
  59. package/dist/cli/chunks/{chunk-BQ47GQPK.js → chunk-DS5IFRY6.js} +2 -2
  60. package/dist/cli/chunks/{chunk-AHMWD6JG.js → chunk-E7XIMOKW.js} +2 -2
  61. package/dist/cli/chunks/{chunk-SON6ZRH3.js → chunk-ECKHDHR2.js} +2 -2
  62. package/dist/cli/chunks/chunk-EPVPXHL7.js +2 -0
  63. package/dist/cli/chunks/{chunk-BP5T3OEV.js → chunk-ERYADKMZ.js} +4 -4
  64. package/dist/cli/chunks/{chunk-DUKE27HC.js → chunk-EUWG2JG4.js} +2 -2
  65. package/dist/cli/chunks/chunk-FAQ24UHB.js +29 -0
  66. package/dist/cli/chunks/{chunk-XG4F4XH4.js → chunk-FBBPRVNF.js} +2 -2
  67. package/dist/cli/chunks/{chunk-5PTAFGJT.js → chunk-FBSBXCZS.js} +2 -2
  68. package/dist/cli/chunks/chunk-G2X3OLMN.js +153 -0
  69. package/dist/cli/chunks/{chunk-IXL5ZHWJ.js → chunk-GG7PMTHD.js} +1 -1
  70. package/dist/cli/chunks/{chunk-6BRQPHMZ.js → chunk-GN6OE3JT.js} +1 -1
  71. package/dist/cli/chunks/{chunk-SZAZQZWI.js → chunk-GPPTRKEM.js} +2 -2
  72. package/dist/cli/chunks/{chunk-LTQVUAPH.js → chunk-H2LHWZRE.js} +2 -2
  73. package/dist/cli/chunks/{chunk-WVXJ2QIG.js → chunk-HAQJFUAQ.js} +2 -2
  74. package/dist/cli/chunks/{chunk-C5CXL3JP.js → chunk-HD6W6PHV.js} +2 -2
  75. package/dist/cli/chunks/{chunk-K3WZICFA.js → chunk-HFZD5KLR.js} +1 -1
  76. package/dist/cli/chunks/{chunk-VCXI4XC4.js → chunk-HRUHHHVR.js} +2 -2
  77. package/dist/cli/chunks/{chunk-GV2QE5TO.js → chunk-HVT7RMGV.js} +1 -1
  78. package/dist/cli/chunks/chunk-HWQPMUSN.js +2 -0
  79. package/dist/cli/chunks/{chunk-4ATQP3PR.js → chunk-HZ5O7G2P.js} +1 -1
  80. package/dist/cli/chunks/{chunk-XHHWABJV.js → chunk-IHQGNDMX.js} +2 -2
  81. package/dist/cli/chunks/{chunk-UUBIQR6A.js → chunk-IJSROBM6.js} +18 -18
  82. package/dist/cli/chunks/{chunk-PS6UMZVK.js → chunk-IJZFJPHS.js} +2 -2
  83. package/dist/cli/chunks/{chunk-C4KLXFJP.js → chunk-IKB3M7OF.js} +1 -1
  84. package/dist/cli/chunks/{chunk-SJCKCSN3.js → chunk-INI3Q4CN.js} +1 -1
  85. package/dist/cli/chunks/{chunk-LYJHUNBK.js → chunk-IOWEBPXJ.js} +2 -2
  86. package/dist/cli/chunks/{chunk-HTZSRMHW.js → chunk-IQL6XRF5.js} +2 -2
  87. package/dist/cli/chunks/{chunk-DEKR3CTS.js → chunk-IRHXGCQR.js} +2 -2
  88. package/dist/cli/chunks/{chunk-TODNOP7C.js → chunk-J3QFJI2Y.js} +6 -6
  89. package/dist/cli/chunks/{chunk-OLZH5LRT.js → chunk-J6QRNQJF.js} +11 -11
  90. package/dist/cli/chunks/{chunk-HL2ANKN3.js → chunk-J7Q5TXFZ.js} +2 -2
  91. package/dist/cli/chunks/{chunk-6YVMX2TC.js → chunk-JHKKIJT2.js} +2 -2
  92. package/dist/cli/chunks/{chunk-K3XBQC3R.js → chunk-JI33PMPZ.js} +1 -1
  93. package/dist/cli/chunks/{chunk-74YG72NQ.js → chunk-JRIJM4LE.js} +3 -3
  94. package/dist/cli/chunks/{chunk-TDQWTSBS.js → chunk-JVWZAE2H.js} +2 -2
  95. package/dist/cli/chunks/{chunk-RDMRY7CT.js → chunk-K7WAI662.js} +1 -1
  96. package/dist/cli/chunks/{chunk-C4RTAVC6.js → chunk-KB34MTFZ.js} +2 -2
  97. package/dist/cli/chunks/{chunk-2CKERSMB.js → chunk-KPIPVSIP.js} +2 -2
  98. package/dist/cli/chunks/{chunk-LNX74WHQ.js → chunk-KR2TAAF6.js} +1 -1
  99. package/dist/cli/chunks/{chunk-73PBAWAF.js → chunk-KT2QCXO6.js} +2 -2
  100. package/dist/cli/chunks/{chunk-BBRROA3Z.js → chunk-KTORRIX3.js} +2 -2
  101. package/dist/cli/chunks/{chunk-GCHYOPRZ.js → chunk-LCWEQRZI.js} +2 -2
  102. package/dist/cli/chunks/{chunk-M4WMSCAE.js → chunk-LG5PPJT7.js} +1 -1
  103. package/dist/cli/chunks/{chunk-UAQZI6N4.js → chunk-LIF6UWHV.js} +2 -2
  104. package/dist/cli/chunks/chunk-LN7NKE3N.js +27 -0
  105. package/dist/cli/chunks/chunk-LOLSZG5J.js +2 -0
  106. package/dist/cli/chunks/{chunk-BLL2XU7A.js → chunk-LOMT4UC2.js} +2 -2
  107. package/dist/cli/chunks/chunk-LRKLATSH.js +2 -0
  108. package/dist/cli/chunks/{chunk-EKP2SC77.js → chunk-LRY6UIRI.js} +2 -2
  109. package/dist/cli/chunks/{chunk-JCZCJE6X.js → chunk-LV7UIK4Q.js} +2 -2
  110. package/dist/cli/chunks/{chunk-LVABQNRF.js → chunk-M2YI5YUR.js} +2 -2
  111. package/dist/cli/chunks/{chunk-RIRZHOS2.js → chunk-MCXW3DKE.js} +2 -2
  112. package/dist/cli/chunks/{chunk-ZSOMUTNL.js → chunk-MGZ6XZHU.js} +1 -1
  113. package/dist/cli/chunks/{chunk-H5DER3JY.js → chunk-MLMD3I75.js} +1 -1
  114. package/dist/cli/chunks/{chunk-UXIY4IAI.js → chunk-MVVVGQJ6.js} +2 -2
  115. package/dist/cli/chunks/{chunk-WUOOX7UG.js → chunk-ND72UDVH.js} +2 -2
  116. package/dist/cli/chunks/{chunk-AKZO6GGG.js → chunk-NE3LRUNC.js} +4 -4
  117. package/dist/cli/chunks/{chunk-O6EWL5DQ.js → chunk-NKUHMA4T.js} +2 -2
  118. package/dist/cli/chunks/{chunk-L32JNNKL.js → chunk-NQFDJ6BT.js} +1 -1
  119. package/dist/cli/chunks/{chunk-T66PPF4D.js → chunk-NZJVDOUN.js} +31 -31
  120. package/dist/cli/chunks/{chunk-EBTNMQSS.js → chunk-O7VJ3VKD.js} +2 -2
  121. package/dist/cli/chunks/{chunk-76P32JVU.js → chunk-OJIUIEI4.js} +1 -1
  122. package/dist/cli/chunks/chunk-OO2M2QUV.js +12 -0
  123. package/dist/cli/chunks/{chunk-CAOUV5GZ.js → chunk-ORQ2YBRR.js} +2 -2
  124. package/dist/cli/chunks/chunk-OWIQR6N2.js +4 -0
  125. package/dist/cli/chunks/chunk-OWIZBZLN.js +14 -0
  126. package/dist/cli/chunks/{chunk-J3FP5UGL.js → chunk-P3D7SEHW.js} +1 -1
  127. package/dist/cli/chunks/{chunk-3CYNZFKH.js → chunk-P4OB6WDJ.js} +1 -1
  128. package/dist/cli/chunks/{chunk-LHMQIZ6B.js → chunk-PCL5JRKN.js} +2 -2
  129. package/dist/cli/chunks/{chunk-KLTMOXIK.js → chunk-PIWGKGWP.js} +2 -2
  130. package/dist/cli/chunks/{chunk-VMAM46HQ.js → chunk-PK34KJH7.js} +2 -2
  131. package/dist/cli/chunks/chunk-POPSZDI2.js +65 -0
  132. package/dist/cli/chunks/{chunk-JUDUBQHA.js → chunk-Q6F3DYZN.js} +2 -2
  133. package/dist/cli/chunks/{chunk-Y2OX6KGN.js → chunk-QJSSUBO3.js} +2 -2
  134. package/dist/cli/chunks/{chunk-XM6ZVFM5.js → chunk-QN7HP2UW.js} +235 -173
  135. package/dist/cli/chunks/{chunk-T4GE7MPI.js → chunk-QSQNXBD2.js} +2 -2
  136. package/dist/cli/chunks/{chunk-5C62XMJR.js → chunk-QTQDX4TZ.js} +33 -33
  137. package/dist/cli/chunks/{chunk-DURD37JZ.js → chunk-R3KBOQ3O.js} +2 -2
  138. package/dist/cli/chunks/{chunk-LJMYRTJ7.js → chunk-REY52O7J.js} +1 -1
  139. package/dist/cli/chunks/{chunk-W5ZJG2OU.js → chunk-RKCN4B26.js} +2 -2
  140. package/dist/cli/chunks/chunk-S3DT5TPR.js +14 -0
  141. package/dist/cli/chunks/{chunk-4HKAD25N.js → chunk-S3TBOKAZ.js} +22 -22
  142. package/dist/cli/chunks/{chunk-2IIXCEMS.js → chunk-SAEECT23.js} +2 -2
  143. package/dist/cli/chunks/{chunk-LB2LGEDP.js → chunk-SAZ4PJBR.js} +2 -2
  144. package/dist/cli/chunks/{chunk-FOOW4JVS.js → chunk-SFITYZLV.js} +2 -2
  145. package/dist/cli/chunks/{chunk-2ZFLULL4.js → chunk-SRBCBVSI.js} +2 -2
  146. package/dist/cli/chunks/chunk-SUAZ5Z47.js +63 -0
  147. package/dist/cli/chunks/{chunk-RBKUU7WF.js → chunk-TDZ6N43D.js} +2 -2
  148. package/dist/cli/chunks/chunk-TIVKDIF7.js +2 -0
  149. package/dist/cli/chunks/{chunk-MPFPWJTH.js → chunk-TM75GAXG.js} +2 -2
  150. package/dist/cli/chunks/{chunk-UJABDXST.js → chunk-TWBZONKT.js} +2 -2
  151. package/dist/cli/chunks/{chunk-AOKKUB5F.js → chunk-U4S74IIZ.js} +1 -1
  152. package/dist/cli/chunks/{chunk-W62OOK7A.js → chunk-U5SMBJ6F.js} +2 -2
  153. package/dist/cli/chunks/{chunk-6LE362LZ.js → chunk-UHJVZEQA.js} +2 -2
  154. package/dist/cli/chunks/{chunk-T67R2MUN.js → chunk-UOVCTK5L.js} +2 -2
  155. package/dist/cli/chunks/{chunk-FTRSS64D.js → chunk-VDEKVIP5.js} +2 -2
  156. package/dist/cli/chunks/{chunk-BDKEAGQ2.js → chunk-VITV7AEC.js} +2 -2
  157. package/dist/cli/chunks/{chunk-BU4UQR36.js → chunk-VKREKVFI.js} +2 -2
  158. package/dist/cli/chunks/{chunk-BZULJMGH.js → chunk-VLTDW7XJ.js} +2 -2
  159. package/dist/cli/chunks/{chunk-UE2J6MA5.js → chunk-VQFV2IPV.js} +1 -1
  160. package/dist/cli/chunks/{chunk-TZIHDJZD.js → chunk-VYPVU3JF.js} +2 -2
  161. package/dist/cli/chunks/{chunk-UORB2QDU.js → chunk-WAOEQA3W.js} +2 -2
  162. package/dist/cli/chunks/{chunk-GQABPCQE.js → chunk-WBDWHHKP.js} +2 -2
  163. package/dist/cli/chunks/{chunk-GGQGCT4Y.js → chunk-WX4PO65Q.js} +2 -2
  164. package/dist/cli/chunks/chunk-X2DWHGCC.js +6 -0
  165. package/dist/cli/chunks/{chunk-337Z52QM.js → chunk-X5QD76IU.js} +2 -2
  166. package/dist/cli/chunks/{chunk-E56PVVWC.js → chunk-XBTGEYED.js} +2 -2
  167. package/dist/cli/chunks/{chunk-5AFVEWMT.js → chunk-XEMCHGAJ.js} +2 -2
  168. package/dist/cli/chunks/{chunk-E3MRDIZF.js → chunk-XEYFZLIT.js} +1 -1
  169. package/dist/cli/chunks/{chunk-KCQNFBBR.js → chunk-XFTX3KLE.js} +1 -1
  170. package/dist/cli/chunks/{chunk-QFGYH6HD.js → chunk-XPTCQKVE.js} +1 -1
  171. package/dist/cli/chunks/{chunk-PXATBHWN.js → chunk-YAJOBZE5.js} +2 -2
  172. package/dist/cli/chunks/{chunk-27HE2BHC.js → chunk-YCVLKU6H.js} +2 -2
  173. package/dist/cli/chunks/{chunk-ZIPAB5J6.js → chunk-YD2C6EPN.js} +2 -2
  174. package/dist/cli/chunks/{chunk-5G4UFTV4.js → chunk-YKRLUTK7.js} +2 -2
  175. package/dist/cli/chunks/{chunk-YUS6TWAL.js → chunk-YMUY3TES.js} +6 -6
  176. package/dist/cli/chunks/chunk-YR5QBUHZ.js +6 -0
  177. package/dist/cli/chunks/{chunk-XH4JMX5O.js → chunk-Z7SKUC6P.js} +1 -1
  178. package/dist/cli/chunks/{chunk-EFUJDMNC.js → chunk-ZAQMRFBB.js} +2 -2
  179. package/dist/cli/chunks/{chunk-22UKJGGN.js → chunk-ZC3KDNJW.js} +3 -3
  180. package/dist/cli/chunks/{chunk-AP2W7Z3A.js → chunk-ZGV7L4MW.js} +1 -1
  181. package/dist/cli/chunks/{chunk-W27AJ5B4.js → chunk-ZN35XSKF.js} +2 -2
  182. package/dist/cli/chunks/{chunk-M4CJCPCQ.js → chunk-ZNXM6WVL.js} +2 -2
  183. package/dist/cli/chunks/{chunk-5I7357KS.js → chunk-ZP5AWQRO.js} +2 -2
  184. package/dist/cli/chunks/{chunk-OQG3UQQ7.js → chunk-ZTP3DQ5M.js} +1 -1
  185. package/dist/cli/chunks/{chunk-BFQTLF5X.js → chunk-ZVMSSCTH.js} +2 -2
  186. package/dist/cli/chunks/chunk-ZWUF27P4.js +2 -0
  187. package/dist/cli/chunks/{ci-UCUJOSBW.js → ci-3RTTTS2D.js} +2 -2
  188. package/dist/cli/chunks/{ci-config-2XILD3XG.js → ci-config-XRUR3I4K.js} +2 -2
  189. package/dist/cli/chunks/{ci-output-BL6KWOHW.js → ci-output-E5IAMU2U.js} +2 -2
  190. package/dist/cli/chunks/{circuit-breaker-5XLIOXE5.js → circuit-breaker-SHR2P44P.js} +2 -2
  191. package/dist/cli/chunks/{claude-flow-setup-4IMP6ACS.js → claude-flow-setup-ZDDILFMF.js} +2 -2
  192. package/dist/cli/chunks/client-NO5FOWT4.js +2 -0
  193. package/dist/cli/chunks/{cline-installer-RYLHCDK7.js → cline-installer-BGYVUM6G.js} +2 -2
  194. package/dist/cli/chunks/{code-WY3GJXHX.js → code-PJ4MC3MC.js} +4 -3
  195. package/dist/cli/chunks/{code-index-extractor-Y4MZBZCW.js → code-index-extractor-IW2P22YG.js} +2 -2
  196. package/dist/cli/chunks/{codex-installer-SCJ3T3DX.js → codex-installer-A7WZ6OGL.js} +2 -2
  197. package/dist/cli/chunks/{completions-CN2DXQFU.js → completions-KS23WD5J.js} +2 -2
  198. package/dist/cli/chunks/{complexity-analyzer-7MDPPIBH.js → complexity-analyzer-Q7GLSR2E.js} +2 -2
  199. package/dist/cli/chunks/{continuedev-installer-GCEJRK34.js → continuedev-installer-SK55BFW2.js} +2 -2
  200. package/dist/cli/chunks/copilot-installer-3N5J3WTM.js +3 -0
  201. package/dist/cli/chunks/core-handlers-JNAZPXE2.js +2 -0
  202. package/dist/cli/chunks/{cost-tracker-VO5MFWR6.js → cost-tracker-NENVSO4A.js} +2 -2
  203. package/dist/cli/chunks/{coverage-LYFQYNH6.js → coverage-5L7UQWDH.js} +3 -3
  204. package/dist/cli/chunks/cross-domain-router-HEBM767Z.js +2 -0
  205. package/dist/cli/chunks/{cursor-installer-KP4HA7TV.js → cursor-installer-XXBO2ZE6.js} +2 -2
  206. package/dist/cli/chunks/{daemon-7RC7TS57.js → daemon-CDCQU3LR.js} +3 -3
  207. package/dist/cli/chunks/daemon-JEBJGEUK.js +18 -0
  208. package/dist/cli/chunks/{dag-attention-scheduler-NKA44RSR.js → dag-attention-scheduler-HOMMF7FA.js} +2 -2
  209. package/dist/cli/chunks/{detect-CMYAJWYF.js → detect-FXCOUG6X.js} +2 -2
  210. package/dist/cli/chunks/{dist-node-EN3PYEGW.js → dist-node-GXQ7FMTY.js} +2 -2
  211. package/dist/cli/chunks/{domain-handler-EXSZCX7A.js → domain-handler-TI3JBAPC.js} +2 -2
  212. package/dist/cli/chunks/{domain-plugins-HCQFSNL7.js → domain-plugins-R7LTUM32.js} +2 -2
  213. package/dist/cli/chunks/{domain-transfer-3LGSNTPO.js → domain-transfer-LBIAFHIQ.js} +2 -2
  214. package/dist/cli/chunks/dream-GQDCEJMS.js +2 -0
  215. package/dist/cli/chunks/embed-and-insert-pattern-33KLHDD5.js +3 -0
  216. package/dist/cli/chunks/embedding-space-HHLWTBF5.js +2 -0
  217. package/dist/cli/chunks/{eval-OQELIWJK.js → eval-KDOZMAXJ.js} +2 -2
  218. package/dist/cli/chunks/experience-capture-middleware-X45PECQN.js +40 -0
  219. package/dist/cli/chunks/{fast-paths-UV4NDEWM.js → fast-paths-462V6UUB.js} +2 -2
  220. package/dist/cli/chunks/{feature-flags-H7H33B6C.js → feature-flags-G66OT3AS.js} +2 -2
  221. package/dist/cli/chunks/{feature-flags-CKTYX67J.js → feature-flags-NIRQ4YDM.js} +2 -2
  222. package/dist/cli/chunks/file-discovery-33USPLB5.js +2 -0
  223. package/dist/cli/chunks/{fleet-ZJBCAKRG.js → fleet-PXWGB7CU.js} +3 -3
  224. package/dist/cli/chunks/{gnn-wrapper-RUE2QZRG.js → gnn-wrapper-7MUW3M5M.js} +2 -2
  225. package/dist/cli/chunks/{heartbeat-handler-XRV327M7.js → heartbeat-handler-5237PB35.js} +4 -4
  226. package/dist/cli/chunks/heartbeat-scheduler-LIXLC5IH.js +2 -0
  227. package/dist/cli/chunks/hnsw-adapter-62D5UH27.js +2 -0
  228. package/dist/cli/chunks/hnsw-index-GSGUMQQC.js +2 -0
  229. package/dist/cli/chunks/{hnsw-legacy-bridge-UJID6ZZ4.js → hnsw-legacy-bridge-OSQPW7JP.js} +2 -2
  230. package/dist/cli/chunks/{hnswlib-node-WS43R4AX.js → hnswlib-node-GX6WG2GB.js} +2 -2
  231. package/dist/cli/chunks/{hooks-YZNJKXAJ.js → hooks-GUWHL7VC.js} +23 -22
  232. package/dist/cli/chunks/hybrid-backend-FRWP4BOY.js +2 -0
  233. package/dist/cli/chunks/{hypergraph-engine-XQJSIMTS.js → hypergraph-engine-SRWLLCU3.js} +2 -2
  234. package/dist/cli/chunks/{hypergraph-handler-ZD2NYXMR.js → hypergraph-handler-AVOPRHHO.js} +3 -3
  235. package/dist/cli/chunks/impact-analyzer-7KF3AQXV.js +2 -0
  236. package/dist/cli/chunks/{init-guard-DSRUAVRT.js → init-guard-P4N6EVZS.js} +2 -2
  237. package/dist/cli/chunks/{init-handler-RJU5QMAP.js → init-handler-LRGWOJMD.js} +6 -6
  238. package/dist/cli/chunks/init-wizard-XWWAXY25.js +2 -0
  239. package/dist/cli/chunks/kernel-ZEJPNDBW.js +2 -0
  240. package/dist/cli/chunks/{kilocode-installer-BCPOCVMC.js → kilocode-installer-7R2EPOQ6.js} +2 -2
  241. package/dist/cli/chunks/{kiro-installer-GFCWCB2S.js → kiro-installer-QNM7DPOB.js} +2 -2
  242. package/dist/cli/chunks/knowledge-graph-RRZQS7KY.js +2 -0
  243. package/dist/cli/chunks/{learning-FZTD72CF.js → learning-7OIZBPXZ.js} +3 -3
  244. package/dist/cli/chunks/{llm-router-GJVKGRJL.js → llm-router-SIDXES23.js} +4 -4
  245. package/dist/cli/chunks/llm-router-service-3OSW67LC.js +2 -0
  246. package/dist/cli/chunks/{load-YKTPOYBE.js → load-EI2E2C3S.js} +2 -2
  247. package/dist/cli/chunks/load-test-7TRIH2WJ.js +2 -0
  248. package/dist/cli/chunks/{mcp-LT6R2IKS.js → mcp-IOE5WOCS.js} +2 -2
  249. package/dist/cli/chunks/{memory-4HKKOLRY.js → memory-DLYGJAP7.js} +5 -5
  250. package/dist/cli/chunks/memory-backend-G7ZW6Q2B.js +2 -0
  251. package/dist/cli/chunks/memory-handlers-TPF3KCO5.js +2 -0
  252. package/dist/cli/chunks/{multi-model-executor-2YPM2WTK.js → multi-model-executor-WHH4YCHM.js} +2 -2
  253. package/dist/cli/chunks/{opencode-installer-WBAJMH5K.js → opencode-installer-63FDZAMS.js} +2 -2
  254. package/dist/cli/chunks/{orchestrator-5W5WVMVJ.js → orchestrator-3LA776KK.js} +5 -5
  255. package/dist/cli/chunks/pattern-null-store-OU3ZC3NR.js +2 -0
  256. package/dist/cli/chunks/{pattern-usage-recorder-GXRMNPAZ.js → pattern-usage-recorder-NW54QUGI.js} +2 -2
  257. package/dist/cli/chunks/{pipeline-2NA4DRDA.js → pipeline-P3TYX6J6.js} +2 -2
  258. package/dist/cli/chunks/{platform-BGERNQ5V.js → platform-FNA2WLI6.js} +2 -2
  259. package/dist/cli/chunks/{plugin-L4EPVENR.js → plugin-NJS7BC2S.js} +2 -2
  260. package/dist/cli/chunks/{prime-radiant-advanced-wasm-RTQRTPTM.js → prime-radiant-advanced-wasm-NIAVL2OT.js} +2 -2
  261. package/dist/cli/chunks/project-root-GMOFJEKD.js +2 -0
  262. package/dist/cli/chunks/protocol-executor-AD345XRO.js +2 -0
  263. package/dist/cli/chunks/{protocol-handler-SYQXM6JK.js → protocol-handler-JU5C4JHY.js} +2 -2
  264. package/dist/cli/chunks/{prove-5O7GPJCU.js → prove-35VOSLYP.js} +2 -2
  265. package/dist/cli/chunks/qe-reasoning-bank-NLTP26RC.js +2 -0
  266. package/dist/cli/chunks/{quality-KIIDHGNF.js → quality-ET74X7HN.js} +2 -2
  267. package/dist/cli/chunks/{quality-gate-H65VECD3.js → quality-gate-FEDQISNB.js} +3 -3
  268. package/dist/cli/chunks/queen-coordinator-2TB4FWS6.js +2 -0
  269. package/dist/cli/chunks/real-embeddings-II6CXTCI.js +2 -0
  270. package/dist/cli/chunks/{ref-validation-CSBJOMZM.js → ref-validation-DTBPYCEB.js} +2 -2
  271. package/dist/cli/chunks/{roocode-installer-G7OVYXEN.js → roocode-installer-LYQEMR4J.js} +2 -2
  272. package/dist/cli/chunks/router-PLM3MWME.js +2 -0
  273. package/dist/cli/chunks/routing-feedback-I7VOX2HU.js +2 -0
  274. package/dist/cli/chunks/{routing-handler-ZNZPPI5Y.js → routing-handler-DJOJFPII.js} +2 -2
  275. package/dist/cli/chunks/{ruvector-commands-C6IG3OY3.js → ruvector-commands-VXYGJDPW.js} +2 -2
  276. package/dist/cli/chunks/rvf-dual-writer-GQZHFWO2.js +2 -0
  277. package/dist/cli/chunks/rvf-migration-adapter-3TVKBCAM.js +2 -0
  278. package/dist/cli/chunks/rvf-migration-coordinator-XUHKLMT6.js +2 -0
  279. package/dist/cli/chunks/rvf-native-adapter-5GUTYOWS.js +2 -0
  280. package/dist/cli/chunks/{rvf-store-integrity-3G6LFLT3.js → rvf-store-integrity-GA2ZYOEG.js} +2 -2
  281. package/dist/cli/chunks/safe-db-RZPQGLGQ.js +2 -0
  282. package/dist/cli/chunks/schedule-G7JMQDUX.js +2 -0
  283. package/dist/cli/chunks/scheduler-4SEGPCKD.js +2 -0
  284. package/dist/cli/chunks/{security-A3IMVLFM.js → security-MM6YOECX.js} +3 -3
  285. package/dist/cli/chunks/{shared-rvf-adapter-VHWQ6US5.js → shared-rvf-adapter-6AHPA3V5.js} +2 -2
  286. package/dist/cli/chunks/{shared-rvf-dual-writer-JB3QS7IG.js → shared-rvf-dual-writer-EYAVY2GZ.js} +2 -2
  287. package/dist/cli/chunks/sqlite-persistence-IVE4SQXR.js +2 -0
  288. package/dist/cli/chunks/{standalone-memory-DDNXCSBD.js → standalone-memory-A3PLB4CZ.js} +2 -2
  289. package/dist/cli/chunks/{status-handler-2HK7XPEK.js → status-handler-OSSFAP4Z.js} +2 -2
  290. package/dist/cli/chunks/{structural-health-DSJVLEPV.js → structural-health-PGY5XUNO.js} +2 -2
  291. package/dist/cli/chunks/{sync-NTUR53PI.js → sync-CWEHYGNN.js} +2 -2
  292. package/dist/cli/chunks/sync-PM6D7EQF.js +2 -0
  293. package/dist/cli/chunks/task-handler-LHMQ75W4.js +64 -0
  294. package/dist/cli/chunks/{task-handlers-VJR6EHRZ.js → task-handlers-S2TX5FTR.js} +4 -4
  295. package/dist/cli/chunks/test-4EGZZ6NJ.js +34 -0
  296. package/dist/cli/chunks/test-runner-process-72YACW6M.js +2 -0
  297. package/dist/cli/chunks/{test-scheduling-Q6QEEOS6.js → test-scheduling-YJQHH3XE.js} +3 -3
  298. package/dist/cli/chunks/token-bootstrap-DJNETMVW.js +2 -0
  299. package/dist/cli/chunks/{token-usage-YEEFWSSI.js → token-usage-WPNOJR6H.js} +2 -2
  300. package/dist/cli/chunks/{transformers-BZCHJJJT.js → transformers-4MRPXCPU.js} +2 -2
  301. package/dist/cli/chunks/tree-sitter-wasm-parser-UVWSDXFR.js +2 -0
  302. package/dist/cli/chunks/{types-4AOKZYOX.js → types-6P5FB4EB.js} +2 -2
  303. package/dist/cli/chunks/unified-memory-2VMGSGQL.js +2 -0
  304. package/dist/cli/chunks/unified-memory-hnsw-3KULVD3N.js +2 -0
  305. package/dist/cli/chunks/unified-persistence-QCSLU2SV.js +2 -0
  306. package/dist/cli/chunks/{upgrade-2MWW6BT2.js → upgrade-4ICTN63Y.js} +2 -2
  307. package/dist/cli/chunks/{validate-PAEV3GT5.js → validate-HQF5GZ7L.js} +2 -2
  308. package/dist/cli/chunks/{validate-swarm-ZIXACK5K.js → validate-swarm-45JYG7VW.js} +2 -2
  309. package/dist/cli/chunks/visual-security-ZYP2KPH7.js +2 -0
  310. package/dist/cli/chunks/{web-tree-sitter-VLTXZFAB.js → web-tree-sitter-UOTWZLNH.js} +2 -2
  311. package/dist/cli/chunks/{windsurf-installer-VELMLOZF.js → windsurf-installer-WDWSBXGN.js} +2 -2
  312. package/dist/cli/chunks/witness-chain-5QRT7EMX.js +2 -0
  313. package/dist/cli/chunks/witness-chain-DOYMNPC7.js +2 -0
  314. package/dist/cli/chunks/witness-chain-repair-CUF2AFQB.js +2 -0
  315. package/dist/cli/chunks/{witness-chain-verifier-MIDWD4JS.js → witness-chain-verifier-JB42X62J.js} +2 -2
  316. package/dist/cli/chunks/{witness-key-manager-OSVCWOB2.js → witness-key-manager-LXXO6L2G.js} +2 -2
  317. package/dist/cli/chunks/{workflow-MK7A7QCX.js → workflow-6ARK47NF.js} +4 -4
  318. package/dist/cli/chunks/workflow-orchestrator-RYDDWIXN.js +2 -0
  319. package/dist/cli/chunks/wrappers-CYQBOMPL.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/commands/test.js +26 -4
  323. package/dist/cli/handlers/task-handler.d.ts +5 -0
  324. package/dist/cli/handlers/task-handler.js +21 -1
  325. package/dist/cli/utils/task-result.d.ts +11 -0
  326. package/dist/cli/utils/task-result.js +39 -0
  327. package/dist/coordination/handlers/test-execution-handlers.js +137 -59
  328. package/dist/coordination/mincut/mincut-persistence.js +29 -25
  329. package/dist/domains/code-intelligence/coordinator.d.ts +4 -0
  330. package/dist/domains/code-intelligence/coordinator.js +46 -13
  331. package/dist/domains/code-intelligence/interfaces.d.ts +10 -1
  332. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +37 -7
  333. package/dist/domains/code-intelligence/services/semantic-analyzer.js +135 -62
  334. package/dist/domains/code-intelligence/services/text-relevance.d.ts +32 -0
  335. package/dist/domains/code-intelligence/services/text-relevance.js +63 -0
  336. package/dist/domains/learning-optimization/services/learning-coordinator.js +1 -1
  337. package/dist/domains/quality-assessment/coordinator.js +2 -1
  338. package/dist/domains/test-execution/coordinator.d.ts +3 -1
  339. package/dist/domains/test-execution/coordinator.js +21 -7
  340. package/dist/domains/test-execution/interfaces.d.ts +17 -0
  341. package/dist/domains/test-execution/plugin.js +8 -2
  342. package/dist/domains/test-execution/services/flaky-detector.d.ts +9 -1
  343. package/dist/domains/test-execution/services/flaky-detector.js +26 -8
  344. package/dist/domains/test-execution/services/retry-handler.d.ts +9 -1
  345. package/dist/domains/test-execution/services/retry-handler.js +56 -12
  346. package/dist/domains/test-execution/services/runner-test-cases.d.ts +2 -0
  347. package/dist/domains/test-execution/services/runner-test-cases.js +7 -3
  348. package/dist/domains/test-execution/services/test-executor.d.ts +6 -1
  349. package/dist/domains/test-execution/services/test-executor.js +97 -14
  350. package/dist/domains/visual-accessibility/coordinator.d.ts +15 -7
  351. package/dist/domains/visual-accessibility/coordinator.js +15 -7
  352. package/dist/domains/visual-accessibility/interfaces.d.ts +27 -3
  353. package/dist/domains/visual-accessibility/services/accessibility-contrast.d.ts +39 -0
  354. package/dist/domains/visual-accessibility/services/accessibility-contrast.js +93 -0
  355. package/dist/domains/visual-accessibility/services/accessibility-tester-browser.d.ts +18 -3
  356. package/dist/domains/visual-accessibility/services/accessibility-tester-browser.js +50 -40
  357. package/dist/domains/visual-accessibility/services/accessibility-tester-checks.d.ts +27 -0
  358. package/dist/domains/visual-accessibility/services/accessibility-tester-checks.js +137 -0
  359. package/dist/domains/visual-accessibility/services/accessibility-tester.d.ts +5 -0
  360. package/dist/domains/visual-accessibility/services/accessibility-tester.js +43 -24
  361. package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.d.ts +2 -3
  362. package/dist/domains/visual-accessibility/services/browser-swarm-coordinator.js +8 -14
  363. package/dist/feedback/coverage-learner.js +13 -9
  364. package/dist/feedback/test-outcome-tracker.js +13 -9
  365. package/dist/governance/witness-chain.d.ts +5 -0
  366. package/dist/governance/witness-chain.js +22 -6
  367. package/dist/init/copilot-installer.d.ts +6 -0
  368. package/dist/init/copilot-installer.js +37 -17
  369. package/dist/init/platform-config-generator.d.ts +10 -0
  370. package/dist/init/platform-config-generator.js +26 -1
  371. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.d.ts +22 -0
  372. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +115 -45
  373. package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.d.ts +6 -0
  374. package/dist/integrations/agentic-flow/reasoning-bank/pattern-evolution.js +51 -33
  375. package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +17 -9
  376. package/dist/integrations/embeddings/cache/EmbeddingCache.d.ts +8 -0
  377. package/dist/integrations/embeddings/cache/EmbeddingCache.js +24 -10
  378. package/dist/integrations/ruvector/delta-tracker.d.ts +11 -0
  379. package/dist/integrations/ruvector/delta-tracker.js +16 -0
  380. package/dist/integrations/ruvector/sona-persistence.d.ts +10 -0
  381. package/dist/integrations/ruvector/sona-persistence.js +49 -24
  382. package/dist/kernel/unified-memory.d.ts +32 -0
  383. package/dist/kernel/unified-memory.js +76 -8
  384. package/dist/learning/aqe-learning-engine.js +1 -1
  385. package/dist/learning/embed-and-insert-pattern.js +4 -2
  386. package/dist/learning/embedder-endpoint-client.d.ts +76 -0
  387. package/dist/learning/embedder-endpoint-client.js +201 -13
  388. package/dist/learning/embedding-space-registry.d.ts +75 -0
  389. package/dist/learning/embedding-space-registry.js +142 -0
  390. package/dist/learning/embedding-space.d.ts +12 -0
  391. package/dist/learning/embedding-space.js +17 -0
  392. package/dist/learning/experience-capture-middleware.js +25 -13
  393. package/dist/learning/experience-capture.js +1 -1
  394. package/dist/learning/experience-consolidation.d.ts +18 -0
  395. package/dist/learning/experience-consolidation.js +55 -8
  396. package/dist/learning/experience-space-verification.d.ts +71 -0
  397. package/dist/learning/experience-space-verification.js +147 -0
  398. package/dist/learning/pattern-lifecycle.d.ts +40 -4
  399. package/dist/learning/pattern-lifecycle.js +153 -76
  400. package/dist/learning/pattern-null-store.d.ts +5 -0
  401. package/dist/learning/pattern-null-store.js +8 -0
  402. package/dist/learning/pattern-promotion.js +6 -3
  403. package/dist/learning/pattern-store.d.ts +6 -0
  404. package/dist/learning/pattern-store.js +19 -6
  405. package/dist/learning/qe-reasoning-bank.js +2 -2
  406. package/dist/learning/real-embeddings.d.ts +3 -0
  407. package/dist/learning/real-embeddings.js +52 -12
  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 +699 -619
  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/embeddings/index.d.ts +2 -2
  430. package/dist/shared/embeddings/index.js +1 -1
  431. package/dist/shared/embeddings/nomic-embedder.d.ts +8 -2
  432. package/dist/shared/embeddings/nomic-embedder.js +19 -11
  433. package/dist/shared/embeddings/ollama-client.d.ts +28 -2
  434. package/dist/shared/embeddings/ollama-client.js +84 -22
  435. package/dist/shared/embeddings/types.d.ts +15 -0
  436. package/dist/shared/embeddings/types.js +4 -0
  437. package/dist/shared/llm/spend-ledger.d.ts +9 -0
  438. package/dist/shared/llm/spend-ledger.js +64 -39
  439. package/dist/shared/pytest-junit-report.d.ts +93 -0
  440. package/dist/shared/pytest-junit-report.js +241 -0
  441. package/dist/shared/sqlite-lock-wait.d.ts +27 -0
  442. package/dist/shared/sqlite-lock-wait.js +37 -0
  443. package/dist/shared/sqlite-write-queue.d.ts +28 -0
  444. package/dist/shared/sqlite-write-queue.js +38 -0
  445. package/dist/shared/test-runner-project.d.ts +119 -0
  446. package/dist/shared/test-runner-project.js +301 -0
  447. package/dist/skills/security-visual-testing/index.d.ts +3 -1
  448. package/dist/skills/security-visual-testing/index.js +49 -35
  449. package/dist/skills/security-visual-testing/types.d.ts +19 -3
  450. package/dist/workers/workers/heartbeat-scheduler.js +5 -5
  451. package/dist/workers/workers/learning-consolidation.js +8 -7
  452. package/package.json +1 -1
  453. package/dist/cli/chunks/adapter-QU6INSKP.js +0 -2
  454. package/dist/cli/chunks/aqe-learning-engine-PAJPENJD.js +0 -2
  455. package/dist/cli/chunks/base-OTGSN6IC.js +0 -2
  456. package/dist/cli/chunks/browser-workflow-WLZGR6SB.js +0 -2
  457. package/dist/cli/chunks/chunk-2LUTPMBO.js +0 -21
  458. package/dist/cli/chunks/chunk-3HVFIITW.js +0 -2
  459. package/dist/cli/chunks/chunk-4D4CWP72.js +0 -2
  460. package/dist/cli/chunks/chunk-5KA5TVPR.js +0 -6
  461. package/dist/cli/chunks/chunk-6NBRMD25.js +0 -13
  462. package/dist/cli/chunks/chunk-7O45RQHF.js +0 -153
  463. package/dist/cli/chunks/chunk-EMSZVUYA.js +0 -29
  464. package/dist/cli/chunks/chunk-G6RDCCFV.js +0 -4
  465. package/dist/cli/chunks/chunk-HH4ED4F7.js +0 -744
  466. package/dist/cli/chunks/chunk-Q6I4SIUU.js +0 -65
  467. package/dist/cli/chunks/chunk-QGBGSQ2E.js +0 -14
  468. package/dist/cli/chunks/chunk-QRKTBSZT.js +0 -27
  469. package/dist/cli/chunks/chunk-SHRI7TKJ.js +0 -62
  470. package/dist/cli/chunks/chunk-TX2CHQD7.js +0 -2
  471. package/dist/cli/chunks/chunk-UGYM4U44.js +0 -2
  472. package/dist/cli/chunks/chunk-VY4U6DPO.js +0 -12
  473. package/dist/cli/chunks/chunk-WNTA4YKE.js +0 -14
  474. package/dist/cli/chunks/chunk-XHLYGXYE.js +0 -2
  475. package/dist/cli/chunks/client-KKRNPX4F.js +0 -2
  476. package/dist/cli/chunks/copilot-installer-BHPDSELY.js +0 -3
  477. package/dist/cli/chunks/core-handlers-47MPMED7.js +0 -2
  478. package/dist/cli/chunks/cross-domain-router-U6MBFHEC.js +0 -2
  479. package/dist/cli/chunks/daemon-AXLVPKVO.js +0 -18
  480. package/dist/cli/chunks/dream-76L6EEN7.js +0 -2
  481. package/dist/cli/chunks/embed-and-insert-pattern-B6MNHICW.js +0 -3
  482. package/dist/cli/chunks/experience-capture-middleware-SUFILYPW.js +0 -40
  483. package/dist/cli/chunks/file-discovery-VSFKZ3LJ.js +0 -2
  484. package/dist/cli/chunks/heartbeat-scheduler-NIK3KKEH.js +0 -2
  485. package/dist/cli/chunks/hnsw-adapter-WJG7LUJJ.js +0 -2
  486. package/dist/cli/chunks/hnsw-index-D6PRI5HC.js +0 -2
  487. package/dist/cli/chunks/hybrid-backend-RIUR3I7F.js +0 -2
  488. package/dist/cli/chunks/impact-analyzer-C36YYTJ5.js +0 -2
  489. package/dist/cli/chunks/init-wizard-JCKNGIGT.js +0 -2
  490. package/dist/cli/chunks/kernel-F7ILJTYD.js +0 -2
  491. package/dist/cli/chunks/knowledge-graph-VTXDBHB2.js +0 -2
  492. package/dist/cli/chunks/llm-router-service-TNOWQINA.js +0 -2
  493. package/dist/cli/chunks/load-test-FPVBK2EV.js +0 -2
  494. package/dist/cli/chunks/memory-backend-2QE7O67A.js +0 -2
  495. package/dist/cli/chunks/memory-handlers-X4CMVBXB.js +0 -2
  496. package/dist/cli/chunks/pattern-null-store-UI35ORHW.js +0 -2
  497. package/dist/cli/chunks/project-root-S7WDFTMU.js +0 -2
  498. package/dist/cli/chunks/protocol-executor-OPANXQVB.js +0 -2
  499. package/dist/cli/chunks/qe-reasoning-bank-3OTF4DYQ.js +0 -2
  500. package/dist/cli/chunks/queen-coordinator-WTYH4TAN.js +0 -2
  501. package/dist/cli/chunks/real-embeddings-DYIOLKQ3.js +0 -2
  502. package/dist/cli/chunks/router-DBBW4NC2.js +0 -2
  503. package/dist/cli/chunks/routing-feedback-W35QHCL4.js +0 -2
  504. package/dist/cli/chunks/rvf-dual-writer-X3NSL25Z.js +0 -2
  505. package/dist/cli/chunks/rvf-migration-adapter-TZR7GDOK.js +0 -2
  506. package/dist/cli/chunks/rvf-migration-coordinator-4ATTHGHD.js +0 -2
  507. package/dist/cli/chunks/rvf-native-adapter-HD25ZYV5.js +0 -2
  508. package/dist/cli/chunks/safe-db-ZS2QKANY.js +0 -2
  509. package/dist/cli/chunks/schedule-ZH6VNA32.js +0 -2
  510. package/dist/cli/chunks/scheduler-T6CD74B6.js +0 -2
  511. package/dist/cli/chunks/sqlite-persistence-47WU5EKZ.js +0 -2
  512. package/dist/cli/chunks/sync-3MUV6S5E.js +0 -2
  513. package/dist/cli/chunks/task-handler-74MZN2EO.js +0 -62
  514. package/dist/cli/chunks/test-O6FK3FVF.js +0 -34
  515. package/dist/cli/chunks/test-runner-process-2NPW3UDQ.js +0 -2
  516. package/dist/cli/chunks/token-bootstrap-TTRCECLP.js +0 -2
  517. package/dist/cli/chunks/tree-sitter-wasm-parser-RZAND65G.js +0 -2
  518. package/dist/cli/chunks/unified-memory-FZ5K2C7W.js +0 -2
  519. package/dist/cli/chunks/unified-memory-hnsw-VREWX56M.js +0 -2
  520. package/dist/cli/chunks/unified-persistence-YZGMKX6B.js +0 -2
  521. package/dist/cli/chunks/visual-security-GXGSFBVA.js +0 -2
  522. package/dist/cli/chunks/witness-chain-MRJKVCOW.js +0 -2
  523. package/dist/cli/chunks/witness-chain-WWHJKITG.js +0 -2
  524. package/dist/cli/chunks/witness-chain-repair-5SAXPETG.js +0 -2
  525. package/dist/cli/chunks/workflow-orchestrator-SG7DV72E.js +0 -2
  526. package/dist/cli/chunks/wrappers-5QFMCKXL.js +0 -2
package/dist/mcp/entry.js CHANGED
@@ -29,6 +29,7 @@ import { initFeatureFlagsFromEnv } from '../integrations/ruvector/feature-flags.
29
29
  import { resetSharedRvfAdapter } from '../integrations/ruvector/shared-rvf-adapter.js';
30
30
  import { resetSharedRvfDualWriter } from '../integrations/ruvector/shared-rvf-dual-writer.js';
31
31
  import { claimProcessLifecycle, closeRegisteredStores } from '../kernel/process-lifecycle.js';
32
+ import { INTERACTIVE_LOCK_WAIT_MS, setLockWaitCap } from '../shared/sqlite-lock-wait.js';
32
33
  import { getBackgroundWorkersState, startBackgroundWorkers } from './background-workers.js';
33
34
  import { DAEMON_HEARTBEAT_ENV, DAEMON_LOG_MAX_SIZE_ENV, DAEMON_LOG_PATH_ENV, DAEMON_MODE_ENV, createDaemonLogRotator, detectStdinKind, parseDaemonHeartbeatMs, parseDaemonLogMaxBytes, resolveStdinGuardMode, startDaemonHeartbeat, } from './daemon-mode.js';
34
35
  import { readFileSync } from 'node:fs';
@@ -74,6 +75,9 @@ function releaseProcessStores() {
74
75
  catch { /* best effort */ }
75
76
  }
76
77
  async function main() {
78
+ // #1263: a write waiting on another process's lock blocks the event loop, so
79
+ // memory writes wait briefly per attempt and retry asynchronously instead.
80
+ setLockWaitCap(INTERACTIVE_LOCK_WAIT_MS);
77
81
  initFeatureFlagsFromEnv();
78
82
  // Output startup message BEFORE suppressing stderr (Claude Code health check needs this)
79
83
  const version = pkg.version;
@@ -199,6 +199,8 @@ export const testExecuteConfig = {
199
199
  routingTier: routingResult?.decision.tier,
200
200
  useAgentBooster: routingResult?.useAgentBooster,
201
201
  compiledContext: routingResult?.compiledContext,
202
+ // #1247: validated by the execute-tests handler before any runner starts.
203
+ ...(params.projectRoot !== undefined ? { projectRoot: params.projectRoot } : {}),
202
204
  }),
203
205
  calculateTimeout: (params) => params.timeout || 300000,
204
206
  mapToResult: (taskId, data, duration, savedFiles) => {
@@ -41,7 +41,7 @@ export async function scoreUnjudgedTrajectories() {
41
41
  try {
42
42
  const verdict = await scoreTrajectory(row, apiKey, baseUrl);
43
43
  if (verdict) {
44
- updateStmt.run(JSON.stringify(verdict), row.id);
44
+ await um.writeWhenUnlocked(() => updateStmt.run(JSON.stringify(verdict), row.id));
45
45
  }
46
46
  }
47
47
  catch {
@@ -897,6 +897,7 @@ export class MCPProtocolServer {
897
897
  parameters: [
898
898
  { name: 'testFiles', type: 'array', description: 'Nonempty list of concrete test file paths (relative to the project working directory or absolute). Expand glob patterns before calling; glob patterns are rejected.', items: { type: 'string' } },
899
899
  { name: 'parallel', type: 'boolean', description: 'Enable parallel execution', default: true },
900
+ { name: 'projectRoot', type: 'string', description: 'Optional directory inside the project to run every test file from (for example a monorepo package with its own vitest/jest config); relative testFiles are then relative to it. When omitted, each test file runs from its nearest directory with a vitest/jest config, never above the project root, even when a root config also lists that package in its projects. Either way the runner (jest or vitest) is the one the config of that directory sets up. Python test files (*.py) run with pytest (`python -m pytest`, or the interpreter in AQE_PYTHON) from their nearest pytest config (pytest.ini, pyproject.toml, setup.cfg, tox.ini). Paths outside the project, including through symlinks, are rejected.' },
900
901
  saveResultsParameter('test_execute_parallel'),
901
902
  ],
902
903
  },
@@ -243,18 +243,20 @@ export class A11yAuditTool extends MCPToolBase {
243
243
  if (contrastResult.success) {
244
244
  const failingContrast = contrastResult.value.filter((c) => !c.passes);
245
245
  if (failingContrast.length > 0) {
246
+ // #1228: a ratio the browser did not report (-1) is shown as not measured
247
+ const ratioText = (c) => (c.ratio >= 1 ? `${c.ratio}:1` : 'not measured');
246
248
  contrastViolations = failingContrast.map((c) => ({
247
249
  id: 'color-contrast',
248
250
  impact: 'serious',
249
251
  description: 'Elements must have sufficient color contrast',
250
- help: `Element ${c.element} has contrast ratio ${c.ratio}:1 but requires ${c.requiredRatio}:1`,
252
+ help: `Element ${c.element} has contrast ratio ${ratioText(c)} but requires ${c.requiredRatio}:1`,
251
253
  helpUrl: 'https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum',
252
254
  wcagCriteria: ['1.4.3'],
253
255
  nodes: [
254
256
  {
255
257
  selector: c.element,
256
258
  html: `<${c.element.replace('.', ' class="')}>...</${c.element.split('.')[0]}>`,
257
- failureSummary: `Contrast ratio ${c.ratio}:1 is below required ${c.requiredRatio}:1`,
259
+ failureSummary: `Contrast ratio ${ratioText(c)} is below required ${c.requiredRatio}:1`,
258
260
  fixSuggestion: `Change foreground color to achieve at least ${c.requiredRatio}:1 contrast`,
259
261
  },
260
262
  ],
@@ -271,6 +273,10 @@ export class A11yAuditTool extends MCPToolBase {
271
273
  const keyboardResult = await service.checkKeyboardNavigation(url);
272
274
  if (keyboardResult.success) {
273
275
  const kbReport = keyboardResult.value;
276
+ if (kbReport.notMeasured && kbReport.notMeasured.length > 0) {
277
+ // #1228: no keyboard finding here is not a clean result for these aspects
278
+ notMeasuredWarnings.push({ id: 'keyboard-not-measured', description: `Keyboard check did not measure: ${kbReport.notMeasured.join('; ')}`, nodes: 0 });
279
+ }
274
280
  // Convert keyboard issues to violations
275
281
  for (const issue of kbReport.issues) {
276
282
  keyboardViolations.push({
@@ -201,6 +201,12 @@ export interface TestExecuteParams {
201
201
  reportFormat?: 'json' | 'junit' | 'html' | 'markdown';
202
202
  /** #933: write result files under .agentic-qe/results/ (default true). false skips them. */
203
203
  saveResults?: boolean;
204
+ /**
205
+ * #1247: directory inside the project to run every test file from; relative
206
+ * testFiles are read from it. When omitted, each file runs from its nearest
207
+ * runner project (the directory with its vitest/jest config).
208
+ */
209
+ projectRoot?: string;
204
210
  }
205
211
  /**
206
212
  * Coverage analysis parameters
@@ -59,7 +59,12 @@ export declare class SessionOperationCache {
59
59
  private hits;
60
60
  private misses;
61
61
  private generation;
62
- constructor(config?: Partial<SessionCacheConfig>);
62
+ private readonly resolveMemory;
63
+ /**
64
+ * @param resolveMemory Where persisted entries live; defaults to the shared
65
+ * UnifiedMemoryManager once it is initialized (injectable for tests).
66
+ */
67
+ constructor(config?: Partial<SessionCacheConfig>, resolveMemory?: () => UnifiedMemory | null);
63
68
  /**
64
69
  * Compute a deterministic fingerprint from build + domain + action + input.
65
70
  * Uses SHA-256 of the canonicalized JSON (recursively sorted keys), truncated to 16 hex chars.
@@ -113,6 +118,15 @@ export declare class SessionOperationCache {
113
118
  * number of entries removed.
114
119
  */
115
120
  invalidateDomain(domain: string): number;
121
+ /**
122
+ * Persist a cache change without blocking the caller (#1274). The write goes
123
+ * through the shared connection's writeWhenUnlocked queue: with memory.db
124
+ * unlocked and nothing queued it runs at once, as before; while another
125
+ * process holds the lock it retries asynchronously for the usual busy_timeout
126
+ * instead of freezing the MCP server's event loop. Failure is non-critical,
127
+ * since the in-memory cache is already up to date.
128
+ */
129
+ private persistInBackground;
116
130
  /** Evict the oldest entry by cachedAt */
117
131
  private evictOldest;
118
132
  /** Persist a single entry to kv_store */
@@ -120,7 +134,9 @@ export declare class SessionOperationCache {
120
134
  /** Delete a single persisted entry from kv_store (used by invalidateDomain). */
121
135
  private deletePersisted;
122
136
  }
137
+ type UnifiedMemory = import('../kernel/unified-memory.js').UnifiedMemoryManager;
123
138
  export declare function getSessionCache(config?: Partial<SessionCacheConfig>): SessionOperationCache;
124
139
  /** Reset the singleton (for testing) */
125
140
  export declare function resetSessionCache(): void;
141
+ export {};
126
142
  //# sourceMappingURL=session-cache.d.ts.map
@@ -90,8 +90,14 @@ export class SessionOperationCache {
90
90
  hits = 0;
91
91
  misses = 0;
92
92
  generation = 0;
93
- constructor(config) {
93
+ resolveMemory;
94
+ /**
95
+ * @param resolveMemory Where persisted entries live; defaults to the shared
96
+ * UnifiedMemoryManager once it is initialized (injectable for tests).
97
+ */
98
+ constructor(config, resolveMemory = tryGetMemory) {
94
99
  this.config = { ...DEFAULT_SESSION_CACHE_CONFIG, ...config };
100
+ this.resolveMemory = resolveMemory;
95
101
  }
96
102
  /**
97
103
  * Compute a deterministic fingerprint from build + domain + action + input.
@@ -175,7 +181,7 @@ export class SessionOperationCache {
175
181
  */
176
182
  loadFromDb() {
177
183
  try {
178
- const db = tryGetDb();
184
+ const db = this.resolveMemory()?.getDatabase();
179
185
  if (!db)
180
186
  return;
181
187
  const cutoffMs = Date.now() - this.config.ttlMs;
@@ -231,13 +237,10 @@ export class SessionOperationCache {
231
237
  this.cache.clear();
232
238
  this.generation++;
233
239
  if (this.config.persistToDb) {
234
- try {
235
- const db = tryGetDb();
236
- db?.prepare("DELETE FROM kv_store WHERE namespace = 'session_cache'").run();
237
- }
238
- catch {
239
- // Cache invalidation must not prevent the tool response.
240
- }
240
+ // #1274: runs after every state-changing tool call, so it must not wait
241
+ // synchronously on a locked memory.db. Queued writes keep their order,
242
+ // so a later persistEntry still lands after this delete.
243
+ this.persistInBackground((db) => db.prepare("DELETE FROM kv_store WHERE namespace = 'session_cache'").run());
241
244
  }
242
245
  return removed;
243
246
  }
@@ -261,6 +264,26 @@ export class SessionOperationCache {
261
264
  }
262
265
  return removed;
263
266
  }
267
+ /**
268
+ * Persist a cache change without blocking the caller (#1274). The write goes
269
+ * through the shared connection's writeWhenUnlocked queue: with memory.db
270
+ * unlocked and nothing queued it runs at once, as before; while another
271
+ * process holds the lock it retries asynchronously for the usual busy_timeout
272
+ * instead of freezing the MCP server's event loop. Failure is non-critical,
273
+ * since the in-memory cache is already up to date.
274
+ */
275
+ persistInBackground(write) {
276
+ const um = this.resolveMemory();
277
+ if (!um)
278
+ return;
279
+ try {
280
+ const db = um.getDatabase();
281
+ um.writeWhenUnlocked(() => write(db)).catch(() => { });
282
+ }
283
+ catch {
284
+ /* cache works without persistence */
285
+ }
286
+ }
264
287
  /** Evict the oldest entry by cachedAt */
265
288
  evictOldest() {
266
289
  let oldestKey = null;
@@ -276,46 +299,27 @@ export class SessionOperationCache {
276
299
  }
277
300
  /** Persist a single entry to kv_store */
278
301
  persistEntry(entry) {
279
- try {
280
- const db = tryGetDb();
281
- if (!db)
282
- return;
283
- db.prepare(`INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
284
- VALUES (?, 'session_cache', ?, ?)`).run(`session_cache:${entry.fingerprint}`, JSON.stringify(entry), Date.now());
285
- }
286
- catch {
287
- /* non-critical - cache works without persistence */
288
- }
302
+ const value = JSON.stringify(entry);
303
+ const createdAt = Date.now();
304
+ this.persistInBackground((db) => db.prepare(`INSERT OR REPLACE INTO kv_store (key, namespace, value, created_at)
305
+ VALUES (?, 'session_cache', ?, ?)`).run(`session_cache:${entry.fingerprint}`, value, createdAt));
289
306
  }
290
307
  /** Delete a single persisted entry from kv_store (used by invalidateDomain). */
291
308
  deletePersisted(fingerprint) {
292
- try {
293
- const db = tryGetDb();
294
- if (!db)
295
- return;
296
- db.prepare(`DELETE FROM kv_store WHERE namespace = 'session_cache' AND key = ?`).run(`session_cache:${fingerprint}`);
297
- }
298
- catch {
299
- /* non-critical */
300
- }
309
+ this.persistInBackground((db) => db.prepare(`DELETE FROM kv_store WHERE namespace = 'session_cache' AND key = ?`).run(`session_cache:${fingerprint}`));
301
310
  }
302
311
  }
303
- // ============================================================================
304
- // DB Helper
305
- // ============================================================================
306
312
  /**
307
- * Attempt to get the unified memory database.
313
+ * Attempt to get the initialized unified memory manager.
308
314
  * Returns null if unavailable (graceful degradation).
309
315
  */
310
- function tryGetDb() {
316
+ function tryGetMemory() {
311
317
  try {
312
318
  // Dynamic require to avoid circular dependencies at import time
313
319
  // eslint-disable-next-line @typescript-eslint/no-require-imports
314
320
  const { getUnifiedMemory } = require('../kernel/unified-memory.js');
315
321
  const um = getUnifiedMemory();
316
- if (!um.isInitialized())
317
- return null;
318
- return um.getDatabase();
322
+ return um.isInitialized() ? um : null;
319
323
  }
320
324
  catch {
321
325
  return null;
@@ -53,6 +53,11 @@ export declare class GOAPPlanner {
53
53
  * Get database instance, throwing if not initialized
54
54
  */
55
55
  private ensureDb;
56
+ /**
57
+ * Run a write through the shared connection's write queue (#1283), so a
58
+ * locked memory.db does not freeze the MCP server during a GOAP tool call.
59
+ */
60
+ private write;
56
61
  /**
57
62
  * Initialize the planner - uses unified persistence, seeds default actions
58
63
  * ADR-046: Auto-seeds QE actions if database is empty
@@ -238,6 +243,7 @@ export declare class GOAPPlanner {
238
243
  * Record plan reuse outcome
239
244
  */
240
245
  private recordPlanReuse;
246
+ private recordPlanReuseNow;
241
247
  /**
242
248
  * Validate that a plan can be executed from current state
243
249
  */
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { randomUUID } from 'crypto';
15
15
  import { safeJsonParse } from '../shared/safe-json.js';
16
+ import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
16
17
  import { getUnifiedPersistence } from '../kernel/unified-persistence.js';
17
18
  import { DEFAULT_MAX_PLAN_STEPS, validateMaxSteps } from './types.js';
18
19
  import { getAllQEActions, QE_GOALS } from './actions/qe-action-library.js';
@@ -131,6 +132,14 @@ export class GOAPPlanner {
131
132
  }
132
133
  return this.db;
133
134
  }
135
+ /**
136
+ * Run a write through the shared connection's write queue (#1283), so a
137
+ * locked memory.db does not freeze the MCP server during a GOAP tool call.
138
+ */
139
+ write(fn) {
140
+ const db = this.ensureDb();
141
+ return writeWhenUnlockedOn(db, () => fn(db));
142
+ }
134
143
  // ==========================================================================
135
144
  // Initialization
136
145
  // ==========================================================================
@@ -263,7 +272,7 @@ export class GOAPPlanner {
263
272
  this.validatePlanForState(reusedPlan, currentState) &&
264
273
  this.planSatisfiesConstraints(reusedPlan, currentState, goal, constraints)) {
265
274
  // Update reuse stats
266
- this.recordPlanReuse(reusedPlan.id, true);
275
+ await this.recordPlanReuse(reusedPlan.id, true);
267
276
  const clonedPlan = {
268
277
  ...reusedPlan,
269
278
  estimatedDurationMs: reusedPlan.actions.reduce((sum, action) => sum + (action.estimatedDurationMs ?? DEFAULT_ACTION_DURATION_MS), 0),
@@ -802,7 +811,7 @@ export class GOAPPlanner {
802
811
  async addAction(action) {
803
812
  await this.initialize();
804
813
  const id = `action-${Date.now()}-${randomUUID().slice(0, 8)}`;
805
- this.ensureDb()
814
+ await this.write((db) => db
806
815
  .prepare(`
807
816
  INSERT INTO goap_actions (
808
817
  id, name, description, agent_type, preconditions, effects,
@@ -810,7 +819,7 @@ export class GOAPPlanner {
810
819
  method, params, implemented
811
820
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?)
812
821
  `)
813
- .run(id, action.name, action.description ?? null, action.agentType, JSON.stringify(action.preconditions), JSON.stringify(action.effects), action.cost, action.estimatedDurationMs ?? null, action.successRate, action.category, action.qeDomain ?? null, action.method ?? null, action.params ? JSON.stringify(action.params) : null, action.implemented ? 1 : 0);
822
+ .run(id, action.name, action.description ?? null, action.agentType, JSON.stringify(action.preconditions), JSON.stringify(action.effects), action.cost, action.estimatedDurationMs ?? null, action.successRate, action.category, action.qeDomain ?? null, action.method ?? null, action.params ? JSON.stringify(action.params) : null, action.implemented ? 1 : 0));
814
823
  // Update in-memory cache
815
824
  const fullAction = {
816
825
  ...action,
@@ -828,19 +837,23 @@ export class GOAPPlanner {
828
837
  const action = this.actions.get(actionId);
829
838
  if (!action)
830
839
  return;
831
- const newCount = action.executionCount + 1;
832
- const newRate = (action.successRate * action.executionCount + (success ? 1 : 0)) /
833
- newCount;
834
- this.ensureDb()
835
- .prepare(`
840
+ // Read the cached stats, write, and update the cache as one queued unit,
841
+ // so concurrent updates cannot both build on the same old count.
842
+ await this.write((db) => {
843
+ const newCount = action.executionCount + 1;
844
+ const newRate = (action.successRate * action.executionCount + (success ? 1 : 0)) /
845
+ newCount;
846
+ db
847
+ .prepare(`
836
848
  UPDATE goap_actions
837
849
  SET success_rate = ?, execution_count = ?, updated_at = datetime('now')
838
850
  WHERE id = ?
839
851
  `)
840
- .run(newRate, newCount, actionId);
841
- // Update in-memory cache
842
- action.successRate = newRate;
843
- action.executionCount = newCount;
852
+ .run(newRate, newCount, actionId);
853
+ // Update in-memory cache
854
+ action.successRate = newRate;
855
+ action.executionCount = newCount;
856
+ });
844
857
  }
845
858
  /**
846
859
  * Get actions by category
@@ -885,14 +898,14 @@ export class GOAPPlanner {
885
898
  */
886
899
  async savePlan(plan) {
887
900
  await this.initialize();
888
- this.ensureDb()
901
+ await this.write((db) => db
889
902
  .prepare(`
890
903
  INSERT OR REPLACE INTO goap_plans (
891
904
  id, goal_id, initial_state, goal_state, action_sequence,
892
905
  total_cost, estimated_duration_ms, status, reused_from, similarity_score
893
906
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
894
907
  `)
895
- .run(plan.id, plan.goalId ?? null, JSON.stringify(plan.initialState), JSON.stringify(plan.goalState), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost, plan.estimatedDurationMs, plan.status, plan.reusedFrom ?? null, plan.similarityScore ?? null);
908
+ .run(plan.id, plan.goalId ?? null, JSON.stringify(plan.initialState), JSON.stringify(plan.goalState), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost, plan.estimatedDurationMs, plan.status, plan.reusedFrom ?? null, plan.similarityScore ?? null));
896
909
  }
897
910
  /**
898
911
  * Get plan by ID
@@ -999,19 +1012,22 @@ export class GOAPPlanner {
999
1012
  async storePlanSignature(plan) {
1000
1013
  const goalHash = this.hashGoalConditions(plan.goalState);
1001
1014
  const stateVector = this.extractStateVector(plan.initialState);
1002
- this.ensureDb()
1015
+ await this.write((db) => db
1003
1016
  .prepare(`
1004
1017
  INSERT OR REPLACE INTO goap_plan_signatures (
1005
1018
  id, plan_id, goal_hash, state_vector, action_sequence, total_cost
1006
1019
  ) VALUES (?, ?, ?, ?, ?, ?)
1007
1020
  `)
1008
- .run(`sig-${Date.now()}-${randomUUID().slice(0, 8)}`, plan.id, goalHash, JSON.stringify(stateVector), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost);
1021
+ .run(`sig-${Date.now()}-${randomUUID().slice(0, 8)}`, plan.id, goalHash, JSON.stringify(stateVector), JSON.stringify(plan.actions.map((a) => a.id)), plan.totalCost));
1009
1022
  }
1010
1023
  /**
1011
1024
  * Record plan reuse outcome
1012
1025
  */
1013
1026
  recordPlanReuse(planId, success) {
1014
- const db = this.ensureDb();
1027
+ // Read and update as one queued unit (#1283).
1028
+ return this.write((db) => this.recordPlanReuseNow(db, planId, success));
1029
+ }
1030
+ recordPlanReuseNow(db, planId, success) {
1015
1031
  const current = db
1016
1032
  .prepare('SELECT success_rate, usage_count FROM goap_plan_signatures WHERE plan_id = ?')
1017
1033
  .get(planId);
@@ -1121,12 +1137,12 @@ export class GOAPPlanner {
1121
1137
  async addGoal(goal) {
1122
1138
  await this.initialize();
1123
1139
  const id = `goal-${Date.now()}-${randomUUID().slice(0, 8)}`;
1124
- this.ensureDb()
1140
+ await this.write((db) => db
1125
1141
  .prepare(`
1126
1142
  INSERT INTO goap_goals (id, name, description, conditions, priority, qe_domain)
1127
1143
  VALUES (?, ?, ?, ?, ?, ?)
1128
1144
  `)
1129
- .run(id, goal.name, goal.description ?? null, JSON.stringify(goal.conditions), goal.priority, goal.qeDomain ?? null);
1145
+ .run(id, goal.name, goal.description ?? null, JSON.stringify(goal.conditions), goal.priority, goal.qeDomain ?? null));
1130
1146
  return id;
1131
1147
  }
1132
1148
  /**
@@ -17,6 +17,7 @@ import { secureRandom } from '../shared/utils/crypto-random.js';
17
17
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
18
18
  import { toErrorMessage } from '../shared/error-utils.js';
19
19
  import { safeJsonParse } from '../shared/safe-json.js';
20
+ import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
20
21
  /**
21
22
  * Default execution configuration
22
23
  */
@@ -760,31 +761,39 @@ export class PlanExecutor {
760
761
  agent_output, world_state_before, world_state_after, error_message
761
762
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
762
763
  `);
763
- // Issue #535: steps from replacement plans (replanning) are recorded
764
- // under the top-level plan id with a chronological step order, so one
765
- // execution is one history record for the plan the caller executed —
766
- // not split across sub-plan ids with colliding step orders.
767
- result.steps.forEach((step, index) => {
768
- insertStep.run(step.id, result.planId, executionId, step.action.id, index, step.status, step.retries, step.startedAt.toISOString(), step.durationMs ?? null, step.agentId ?? null, step.agentOutput ?? null, step.worldStateBefore ? JSON.stringify(step.worldStateBefore) : null, step.worldStateAfter ? JSON.stringify(step.worldStateAfter) : null, step.error ?? null);
764
+ // #1283: the step rows go in as one queued transaction, so a locked
765
+ // memory.db does not freeze the MCP server and a retried attempt cannot
766
+ // insert a step twice.
767
+ const insertSteps = this.db.transaction(() => {
768
+ // Issue #535: steps from replacement plans (replanning) are recorded
769
+ // under the top-level plan id with a chronological step order, so one
770
+ // execution is one history record for the plan the caller executed —
771
+ // not split across sub-plan ids with colliding step orders.
772
+ result.steps.forEach((step, index) => {
773
+ insertStep.run(step.id, result.planId, executionId, step.action.id, index, step.status, step.retries, step.startedAt.toISOString(), step.durationMs ?? null, step.agentId ?? null, step.agentOutput ?? null, step.worldStateBefore ? JSON.stringify(step.worldStateBefore) : null, step.worldStateAfter ? JSON.stringify(step.worldStateAfter) : null, step.error ?? null);
774
+ });
775
+ // Issue #535 (codex review): an execution's cancellation cannot be
776
+ // inferred from its step rows once replanning is involved (the step
777
+ // count no longer matches the executed plan's action count), so record
778
+ // it explicitly with a marker row that history reads and then hides.
779
+ if (result.status === 'cancelled') {
780
+ insertStep.run(`${executionId}-${CANCELLED_MARKER_STATUS}`, result.planId, executionId, CANCELLED_MARKER_ACTION_ID, result.steps.length, CANCELLED_MARKER_STATUS, 0, new Date().toISOString(), null, null, null, null, null, result.error ?? 'Execution was cancelled');
781
+ }
769
782
  });
770
- // Issue #535 (codex review): an execution's cancellation cannot be
771
- // inferred from its step rows once replanning is involved (the step
772
- // count no longer matches the executed plan's action count), so record
773
- // it explicitly with a marker row that history reads and then hides.
774
- if (result.status === 'cancelled') {
775
- insertStep.run(`${executionId}-${CANCELLED_MARKER_STATUS}`, result.planId, executionId, CANCELLED_MARKER_ACTION_ID, result.steps.length, CANCELLED_MARKER_STATUS, 0, new Date().toISOString(), null, null, null, null, null, result.error ?? 'Execution was cancelled');
776
- }
783
+ await writeWhenUnlockedOn(this.db, () => insertSteps());
777
784
  // Reflects only the most recent execution attempt for this plan — a
778
785
  // deliberate, documented scope limit: goap_plans is one row per plan,
779
786
  // not per attempt. Full per-attempt history remains queryable via
780
787
  // goap_execution_steps grouped by execution_id (see getExecutionHistory).
781
788
  try {
782
- this.db.prepare(`
789
+ const executedAt = new Date(Date.now() - result.totalDurationMs).toISOString();
790
+ const completedAt = new Date().toISOString();
791
+ await writeWhenUnlockedOn(this.db, () => this.db.prepare(`
783
792
  UPDATE goap_plans SET status = ?, executed_at = COALESCE(executed_at, ?), completed_at = ?
784
793
  WHERE id = ?
785
794
  `).run(result.status === 'completed' ? 'completed'
786
795
  : result.status === 'cancelled' ? 'cancelled'
787
- : 'failed', new Date(Date.now() - result.totalDurationMs).toISOString(), new Date().toISOString(), result.planId);
796
+ : 'failed', executedAt, completedAt, result.planId));
788
797
  }
789
798
  catch (error) {
790
799
  // Best-effort — a plan row might not exist yet in edge cases (e.g.
@@ -6,6 +6,7 @@
6
6
  * A single co-execution registers at 0.05; twenty successes reach full confidence.
7
7
  */
8
8
  import { toErrorMessage } from '../shared/error-utils.js';
9
+ import { writeWhenUnlockedOn } from '../shared/sqlite-write-queue.js';
9
10
  // ============================================================================
10
11
  // Constants
11
12
  // ============================================================================
@@ -56,15 +57,14 @@ export class CoExecutionRepository {
56
57
  if (!this.db)
57
58
  return;
58
59
  const [a, b] = [record.agentA, record.agentB].sort();
59
- try {
60
- this.db.prepare(`
61
- INSERT INTO qe_agent_co_execution (agent_a, agent_b, domain, success, task_description)
62
- VALUES (?, ?, ?, ?, ?)
63
- `).run(a, b, record.domain, record.success ? 1 : 0, record.taskDescription?.slice(0, 500) || null);
64
- }
65
- catch (error) {
60
+ const db = this.db;
61
+ // #1283: queued, so a locked memory.db does not freeze the MCP server.
62
+ writeWhenUnlockedOn(db, () => db.prepare(`
63
+ INSERT INTO qe_agent_co_execution (agent_a, agent_b, domain, success, task_description)
64
+ VALUES (?, ?, ?, ?, ?)
65
+ `).run(a, b, record.domain, record.success ? 1 : 0, record.taskDescription?.slice(0, 500) || null)).catch((error) => {
66
66
  console.debug(`[CoExecutionRepository] Record error: ${toErrorMessage(error)}`);
67
- }
67
+ });
68
68
  }
69
69
  /**
70
70
  * Get co-execution stats for a specific agent pair.
@@ -166,7 +166,10 @@ export class CoExecutionRepository {
166
166
  }
167
167
  }
168
168
  });
169
- transaction();
169
+ // #1283: queued, so a locked memory.db does not freeze the MCP server.
170
+ writeWhenUnlockedOn(this.db, () => transaction()).catch((error) => {
171
+ console.debug(`[CoExecutionRepository] Swarm record error: ${toErrorMessage(error)}`);
172
+ });
170
173
  }
171
174
  catch (error) {
172
175
  console.debug(`[CoExecutionRepository] Swarm record error: ${toErrorMessage(error)}`);
@@ -42,6 +42,14 @@ export declare class RoutingFeedbackCollector {
42
42
  * Persist a single outcome to the database
43
43
  */
44
44
  private persistOutcome;
45
+ /**
46
+ * Queue a write on the shared connection without blocking the caller
47
+ * (#1274). recordOutcome runs after every routed task, so a locked
48
+ * memory.db must not freeze the MCP server's event loop. Writes keep their
49
+ * call order and the connection's full busy_timeout budget; with the
50
+ * database unlocked and nothing queued the write runs at once, as before.
51
+ */
52
+ private persistInBackground;
45
53
  /**
46
54
  * Infer model tier from agent name for analytics.
47
55
  * Maps known agent patterns to ADR-026 tiers.