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
@@ -16,6 +16,7 @@ import { getUnifiedMemory } from '../kernel/unified-memory.js';
16
16
  import { toErrorMessage } from '../shared/error-utils.js';
17
17
  import { createLogger } from '../logging/logger-factory.js';
18
18
  import { isLearnableResult } from './learnable-result.js';
19
+ import { recordExperienceEmbeddingSpace } from './embedding-space.js';
19
20
  const ecLogger = createLogger('ExperienceCapture');
20
21
  // ============================================================================
21
22
  // Active Experience Tracking
@@ -308,8 +309,9 @@ async function persistExperience(context, outcome) {
308
309
  console.warn('[ExperienceCaptureMiddleware] Memory manager not available');
309
310
  return;
310
311
  }
312
+ const memory = memoryManager;
311
313
  try {
312
- const db = memoryManager.getDatabase();
314
+ const db = memory.getDatabase();
313
315
  if (!db)
314
316
  return;
315
317
  const stmt = db.prepare(`
@@ -318,9 +320,11 @@ async function persistExperience(context, outcome) {
318
320
  routing_json, steps_json, result_json, error, started_at, completed_at, source)
319
321
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), ?)
320
322
  `);
321
- stmt.run(outcome.id, context.task, context.agent, context.domain, outcome.success ? 1 : 0, outcome.quality, outcome.durationMs, context.modelTier || null, safeJsonStringify(context.routing), safeJsonStringify(outcome.steps), safeJsonStringify(outcome.result), outcome.error || null, context.startedAt.toISOString(), 'middleware');
323
+ // #1274: queued, so a locked memory.db does not freeze the MCP server's
324
+ // event loop while experiences are captured.
325
+ await memory.writeWhenUnlocked(() => stmt.run(outcome.id, context.task, context.agent, context.domain, outcome.success ? 1 : 0, outcome.quality, outcome.durationMs, context.modelTier || null, safeJsonStringify(context.routing), safeJsonStringify(outcome.steps), safeJsonStringify(outcome.result), outcome.error || null, context.startedAt.toISOString(), 'middleware'));
322
326
  // Fire-and-forget: compute and store embedding for this experience
323
- computeExperienceEmbedding(db, outcome.id, context.task, context.domain).catch((e) => { ecLogger.warn('Embedding computation failed', { error: e instanceof Error ? e.message : String(e), experienceId: outcome.id, domain: context.domain }); });
327
+ computeExperienceEmbedding(memory, outcome.id, context.task, context.domain).catch((e) => { ecLogger.warn('Embedding computation failed', { error: e instanceof Error ? e.message : String(e), experienceId: outcome.id, domain: context.domain }); });
324
328
  }
325
329
  catch (error) {
326
330
  console.error('[ExperienceCaptureMiddleware] Failed to persist experience:', error);
@@ -330,19 +334,26 @@ async function persistExperience(context, outcome) {
330
334
  * Compute and store embedding for a captured experience (async, non-blocking).
331
335
  * Uses the shared ONNX transformer model (all-MiniLM-L6-v2, 384-dim).
332
336
  */
333
- async function computeExperienceEmbedding(db, experienceId, task, domain) {
337
+ async function computeExperienceEmbedding(memory, experienceId, task, domain) {
334
338
  try {
335
- const { computeRealEmbedding } = await import('./real-embeddings.js');
339
+ const { computeRealEmbedding, getActiveEmbeddingSpaceIdentity } = await import('./real-embeddings.js');
336
340
  const text = `${domain}: ${task}`.slice(0, 512); // Cap input length
337
341
  const embedding = await computeRealEmbedding(text);
338
342
  if (!embedding || embedding.length === 0)
339
343
  return;
340
344
  const buffer = Buffer.from(new Float32Array(embedding).buffer);
341
- db.prepare(`
342
- UPDATE captured_experiences
343
- SET embedding = ?, embedding_dimension = ?
344
- WHERE id = ? AND embedding IS NULL
345
- `).run(buffer, embedding.length, experienceId);
345
+ const db = memory.getDatabase();
346
+ await memory.writeWhenUnlocked(() => {
347
+ const updated = db.prepare(`
348
+ UPDATE captured_experiences
349
+ SET embedding = ?, embedding_dimension = ?
350
+ WHERE id = ? AND embedding IS NULL
351
+ `).run(buffer, embedding.length, experienceId);
352
+ // #1217 (ADR-097): store the vector's embedding space with it.
353
+ if (updated.changes > 0) {
354
+ recordExperienceEmbeddingSpace(db, experienceId, getActiveEmbeddingSpaceIdentity()?.spaceId);
355
+ }
356
+ });
346
357
  }
347
358
  catch {
348
359
  // Non-critical — embedding will be backfilled later if needed
@@ -354,8 +365,9 @@ async function computeExperienceEmbedding(db, experienceId, task, domain) {
354
365
  async function persistToSonaPatterns(context, outcome) {
355
366
  if (!memoryManager)
356
367
  return;
368
+ const memory = memoryManager;
357
369
  try {
358
- const db = memoryManager.getDatabase();
370
+ const db = memory.getDatabase();
359
371
  if (!db)
360
372
  return;
361
373
  // Only store successful patterns with decent quality
@@ -368,12 +380,12 @@ async function persistToSonaPatterns(context, outcome) {
368
380
  confidence, usage_count, metadata, created_at, updated_at)
369
381
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'), datetime('now'))
370
382
  `);
371
- stmt.run(`sona-${outcome.id}`, 'task-execution', context.domain, context.agent, safeJsonStringify({ task: context.task.slice(0, 200) }), outcome.quality, 1, outcome.quality, outcome.quality, 1, safeJsonStringify({
383
+ await memory.writeWhenUnlocked(() => stmt.run(`sona-${outcome.id}`, 'task-execution', context.domain, context.agent, safeJsonStringify({ task: context.task.slice(0, 200) }), outcome.quality, 1, outcome.quality, outcome.quality, 1, safeJsonStringify({
372
384
  experienceId: outcome.id,
373
385
  durationMs: outcome.durationMs,
374
386
  stepsCount: outcome.steps.length,
375
387
  modelTier: context.modelTier,
376
- }));
388
+ })));
377
389
  }
378
390
  catch (error) {
379
391
  // Log but don't fail - sona_patterns might not exist
@@ -234,7 +234,7 @@ export class ExperienceCaptureService {
234
234
  const contextFingerprint = `${experience.domain ?? 'unknown'}:${experience.agent ?? 'unknown'}`;
235
235
  for (const patternId of experience.appliedPatterns) {
236
236
  try {
237
- this.nullRecorder({
237
+ await this.nullRecorder({
238
238
  patternId,
239
239
  contextFingerprint,
240
240
  failureMode: experience.testOutcome ?? experience.feedback ?? 'task-failure',
@@ -70,6 +70,11 @@ export interface ConsolidationConfig {
70
70
  contradictionSimilarityThreshold: number;
71
71
  /** Min quality gap that turns a near-duplicate into a contradiction (0-1). */
72
72
  contradictionQualityDelta: number;
73
+ /**
74
+ * #1281: embedding space (ADR-097 spaceId) whose vectors Phase 1 compares.
75
+ * Defaults to the active embedder's space.
76
+ */
77
+ embeddingSpaceId?: string;
73
78
  }
74
79
  export declare class ExperienceConsolidator {
75
80
  private readonly config;
@@ -94,9 +99,22 @@ export declare class ExperienceConsolidator {
94
99
  bootstrapDomain(domain: string): Promise<ConsolidationResult>;
95
100
  private clusterAndMerge;
96
101
  private reinforceQuality;
102
+ private reinforceQualityNow;
97
103
  private archiveValueless;
104
+ private archiveValuelessNow;
98
105
  private hardDeleteExcess;
106
+ private hardDeleteExcessNow;
107
+ /** #1281: the embedding space Phase 1 compares vectors in, or null if unknown. */
108
+ private resolveEmbeddingSpaceId;
109
+ /** Tables created before #1217 have no embedding_space_id column. */
110
+ private hasEmbeddingSpaceColumn;
99
111
  private ensureInitialized;
112
+ /**
113
+ * Queue a write on the shared connection (#1283): the learning worker runs
114
+ * consolidation inside the MCP server, where a locked memory.db must not
115
+ * freeze the event loop. On any other connection the write runs at once.
116
+ */
117
+ private write;
100
118
  private bufferToFloatArray;
101
119
  }
102
120
  /**
@@ -15,7 +15,8 @@
15
15
  * Ensures the Exp counter is monotonically non-decreasing.
16
16
  */
17
17
  import { v4 as uuidv4 } from 'uuid';
18
- import { getUnifiedMemory } from '../kernel/unified-memory.js';
18
+ import { getUnifiedMemory, writeWhenUnlockedOn } from '../kernel/unified-memory.js';
19
+ import { ensureEndpointEmbeddingSpaceIdentity, getActiveEmbeddingSpaceIdentity } from './real-embeddings.js';
19
20
  import { HNSWEmbeddingIndex } from '../integrations/embeddings/index/HNSWIndex.js';
20
21
  const DEFAULT_CONFIG = {
21
22
  mergeSimilarityThreshold: 0.85,
@@ -111,9 +112,9 @@ export class ExperienceConsolidator {
111
112
  result.merged = clusterResult.merged;
112
113
  result.contradicted = clusterResult.contradicted;
113
114
  // Phase 2: Quality Reinforcement
114
- result.qualityUpdated = this.reinforceQuality(domain);
115
+ result.qualityUpdated = await this.reinforceQuality(domain);
115
116
  // Phase 3: Archive Valueless
116
- result.archived = this.archiveValueless(domain);
117
+ result.archived = await this.archiveValueless(domain);
117
118
  // Safety valve: when the domain still exceeds hardThreshold after the
118
119
  // soft phases, archive (not delete) the oldest low-quality excess.
119
120
  // Result is attributed to `archived` — `hardDeleted` stays 0 since
@@ -121,7 +122,7 @@ export class ExperienceConsolidator {
121
122
  const afterCount = this.db.prepare("SELECT COUNT(*) as cnt FROM captured_experiences WHERE domain = ? AND consolidated_into IS NULL").get(domain).cnt;
122
123
  let safetyValveArchived = 0;
123
124
  if (afterCount > this.config.hardThreshold) {
124
- safetyValveArchived = this.hardDeleteExcess(domain, afterCount);
125
+ safetyValveArchived = await this.hardDeleteExcess(domain, afterCount);
125
126
  result.archived += safetyValveArchived;
126
127
  }
127
128
  result.activeRemaining = afterCount - safetyValveArchived;
@@ -150,7 +151,8 @@ export class ExperienceConsolidator {
150
151
  Object.assign(this.config, savedConfig);
151
152
  // Set bootstrap flag
152
153
  try {
153
- this.db.prepare("INSERT OR REPLACE INTO kv_store (key, value, namespace) VALUES (?, ?, 'system')").run(`consolidation_bootstrap_${domain}`, new Date().toISOString());
154
+ const bootstrappedAt = new Date().toISOString();
155
+ await this.write(() => this.db.prepare("INSERT OR REPLACE INTO kv_store (key, value, namespace) VALUES (?, ?, 'system')").run(`consolidation_bootstrap_${domain}`, bootstrappedAt));
154
156
  }
155
157
  catch {
156
158
  // kv_store may not exist in all setups
@@ -163,6 +165,12 @@ export class ExperienceConsolidator {
163
165
  // Phase 1: Cluster & Merge
164
166
  // ============================================================================
165
167
  async clusterAndMerge(domain) {
168
+ // #1281 (ADR-097): a cosine between vectors of different embedding spaces
169
+ // is meaningless, even at the same dimension. Only vectors recorded in the
170
+ // active space are compared; without a known space nothing is merged.
171
+ const spaceId = await this.resolveEmbeddingSpaceId();
172
+ if (!spaceId || !this.hasEmbeddingSpaceColumn())
173
+ return { merged: 0, contradicted: 0 };
166
174
  // Get active experiences with embeddings, sorted by quality DESC
167
175
  const candidates = this.db.prepare(`
168
176
  SELECT id, task, domain, quality, success, application_count,
@@ -170,8 +178,9 @@ export class ExperienceConsolidator {
170
178
  embedding, embedding_dimension, started_at
171
179
  FROM captured_experiences
172
180
  WHERE domain = ? AND consolidated_into IS NULL AND embedding IS NOT NULL
181
+ AND embedding_space_id = ?
173
182
  ORDER BY quality DESC
174
- `).all(domain);
183
+ `).all(domain, spaceId);
175
184
  if (candidates.length < 2)
176
185
  return { merged: 0, contradicted: 0 };
177
186
  // Build a temporary HNSW index for this domain
@@ -293,7 +302,7 @@ export class ExperienceConsolidator {
293
302
  boostSurvivor.run(mergedIds.length, boost, row.id);
294
303
  logConsolidation.run(uuidv4(), domain, 'merge', JSON.stringify(mergedIds), row.id, JSON.stringify({ count: mergedIds.length, boost }));
295
304
  });
296
- transaction();
305
+ await writeWhenUnlockedOn(this.db, transaction);
297
306
  }
298
307
  // Apply contradiction suppressions in a transaction. The loser is
299
308
  // soft-suppressed (consolidated_into = 'contradicted'), so it is excluded
@@ -306,7 +315,7 @@ export class ExperienceConsolidator {
306
315
  }
307
316
  logConsolidation.run(uuidv4(), domain, 'contradiction', JSON.stringify(contradictedIds), row.id, JSON.stringify({ count: contradictedIds.length, survivorQuality: row.quality }));
308
317
  });
309
- tx();
318
+ await writeWhenUnlockedOn(this.db, tx);
310
319
  }
311
320
  }
312
321
  // Clean up HNSW index
@@ -317,6 +326,10 @@ export class ExperienceConsolidator {
317
326
  // Phase 2: Quality Reinforcement
318
327
  // ============================================================================
319
328
  reinforceQuality(domain) {
329
+ // Read and update in one queued unit, so the update uses current values.
330
+ return this.write(() => this.reinforceQualityNow(domain));
331
+ }
332
+ reinforceQualityNow(domain) {
320
333
  // Get experiences with application history
321
334
  const experiences = this.db.prepare(`
322
335
  SELECT ce.id, ce.quality, ce.consolidation_count,
@@ -366,6 +379,9 @@ export class ExperienceConsolidator {
366
379
  // Phase 3: Archive Valueless
367
380
  // ============================================================================
368
381
  archiveValueless(domain) {
382
+ return this.write(() => this.archiveValuelessNow(domain));
383
+ }
384
+ archiveValuelessNow(domain) {
369
385
  const cutoffDate = new Date();
370
386
  cutoffDate.setDate(cutoffDate.getDate() - this.config.archiveMinAgeDays);
371
387
  const cutoffStr = cutoffDate.toISOString().replace('T', ' ').slice(0, 19);
@@ -415,6 +431,9 @@ export class ExperienceConsolidator {
415
431
  // ConsolidationResult.hardDeleted is kept zero for that reason; the
416
432
  // archive count is rolled into Phase 3's `archived` total.
417
433
  hardDeleteExcess(domain, currentCount) {
434
+ return this.write(() => this.hardDeleteExcessNow(domain, currentCount));
435
+ }
436
+ hardDeleteExcessNow(domain, currentCount) {
418
437
  const excess = currentCount - this.config.hardThreshold;
419
438
  if (excess <= 0)
420
439
  return 0;
@@ -455,11 +474,39 @@ export class ExperienceConsolidator {
455
474
  // ============================================================================
456
475
  // Utilities
457
476
  // ============================================================================
477
+ /** #1281: the embedding space Phase 1 compares vectors in, or null if unknown. */
478
+ async resolveEmbeddingSpaceId() {
479
+ if (this.config.embeddingSpaceId)
480
+ return this.config.embeddingSpaceId;
481
+ const active = getActiveEmbeddingSpaceIdentity()?.spaceId;
482
+ if (active)
483
+ return active;
484
+ try {
485
+ // A configured endpoint's identity, as the pattern stores resolve it (#754).
486
+ return (await ensureEndpointEmbeddingSpaceIdentity())?.spaceId ?? null;
487
+ }
488
+ catch {
489
+ return null;
490
+ }
491
+ }
492
+ /** Tables created before #1217 have no embedding_space_id column. */
493
+ hasEmbeddingSpaceColumn() {
494
+ const columns = this.db.prepare('PRAGMA table_info(captured_experiences)').all();
495
+ return columns.some(c => c.name === 'embedding_space_id');
496
+ }
458
497
  ensureInitialized() {
459
498
  if (!this.initialized || !this.db) {
460
499
  throw new Error('ExperienceConsolidator not initialized. Call initialize() first.');
461
500
  }
462
501
  }
502
+ /**
503
+ * Queue a write on the shared connection (#1283): the learning worker runs
504
+ * consolidation inside the MCP server, where a locked memory.db must not
505
+ * freeze the event loop. On any other connection the write runs at once.
506
+ */
507
+ write(fn) {
508
+ return writeWhenUnlockedOn(this.db, fn);
509
+ }
463
510
  bufferToFloatArray(buffer, dimension) {
464
511
  const arr = [];
465
512
  for (let i = 0; i < dimension; i++) {
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Attribute legacy experience vectors to an embedding space (#1217)
3
+ *
4
+ * captured_experiences rows written before #1217 carry a vector but no
5
+ * embedding_space_id, so ExperienceReplay never compares them. Their vectors
6
+ * are learning data and are never overwritten here. Instead each row's text is
7
+ * re-embedded with the recipe its writer used; when the result matches the
8
+ * stored vector (cosine >= EMBEDDING_ROUND_TRIP_MIN_COSINE), the stored vector
9
+ * came from the active space and only embedding_space_id is set. A row that
10
+ * does not match (another space, or text that can no longer be rebuilt) is
11
+ * left as it is: it stays excluded from comparison.
12
+ *
13
+ * Progress is kept per space in kv_store, so rows that did not match are not
14
+ * re-checked on every start; a different active space starts over.
15
+ */
16
+ interface VerifiableDatabase {
17
+ prepare(sql: string): {
18
+ all(...params: unknown[]): unknown[];
19
+ get(...params: unknown[]): unknown;
20
+ run(...params: unknown[]): {
21
+ changes: number;
22
+ };
23
+ };
24
+ }
25
+ export interface LegacyExperienceRow {
26
+ rowid: number;
27
+ id: string;
28
+ task: string;
29
+ agent: string | null;
30
+ domain: string | null;
31
+ steps_json: string | null;
32
+ source: string | null;
33
+ embedding: Buffer;
34
+ embedding_dimension: number;
35
+ }
36
+ export interface ExperienceSpaceVerificationOptions {
37
+ /** Embed text in the active space; throws when the embedder fails. */
38
+ embed: (text: string) => Promise<number[]>;
39
+ /** The active embedding space, read after embedding. */
40
+ activeSpaceId: () => string | undefined;
41
+ /** Rows to check in this pass. */
42
+ limit?: number;
43
+ /** Runs a write (e.g. UnifiedMemoryManager.writeWhenUnlocked). */
44
+ write?: <T>(fn: () => T) => Promise<T> | T;
45
+ }
46
+ export interface ExperienceSpaceVerificationResult {
47
+ spaceId: string | null;
48
+ checked: number;
49
+ stamped: string[];
50
+ left: number;
51
+ }
52
+ /**
53
+ * The texts the row's writer may have embedded. Each is only a candidate:
54
+ * a row is attributed only when one reproduces its stored vector.
55
+ * - experience-capture middleware and the CLI hooks: `${domain}: ${task}`,
56
+ * capped at 512 chars (the hooks store task capped at 500, so a longer
57
+ * task cannot be rebuilt and will not match);
58
+ * - ExperienceReplay's start-up backfill: the same, scrubbed (ADR-099);
59
+ * - ExperienceReplay.storeExperience (source 'experience-replay'):
60
+ * `${task} ${strategy} ${keyActions}`, strategy in `agent`, key actions
61
+ * in steps_json.
62
+ */
63
+ export declare function legacyExperienceEmbeddingTexts(row: LegacyExperienceRow): string[];
64
+ /**
65
+ * Check up to `limit` legacy rows (vector, no embedding_space_id) and set
66
+ * embedding_space_id on those whose stored vector the active embedder
67
+ * reproduces. Never writes a vector. Stops at the first embedder failure.
68
+ */
69
+ export declare function verifyLegacyExperienceSpaces(db: VerifiableDatabase, options: ExperienceSpaceVerificationOptions): Promise<ExperienceSpaceVerificationResult>;
70
+ export {};
71
+ //# sourceMappingURL=experience-space-verification.d.ts.map
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Attribute legacy experience vectors to an embedding space (#1217)
3
+ *
4
+ * captured_experiences rows written before #1217 carry a vector but no
5
+ * embedding_space_id, so ExperienceReplay never compares them. Their vectors
6
+ * are learning data and are never overwritten here. Instead each row's text is
7
+ * re-embedded with the recipe its writer used; when the result matches the
8
+ * stored vector (cosine >= EMBEDDING_ROUND_TRIP_MIN_COSINE), the stored vector
9
+ * came from the active space and only embedding_space_id is set. A row that
10
+ * does not match (another space, or text that can no longer be rebuilt) is
11
+ * left as it is: it stays excluded from comparison.
12
+ *
13
+ * Progress is kept per space in kv_store, so rows that did not match are not
14
+ * re-checked on every start; a different active space starts over.
15
+ */
16
+ import { cosineSimilarity } from '../shared/utils/vector-math.js';
17
+ import { safeJsonParse } from '../shared/safe-json.js';
18
+ import { scrubReasoningBlocks } from '../shared/reasoning-scrub.js';
19
+ import { EMBEDDING_ROUND_TRIP_MIN_COSINE } from './embedding-space.js';
20
+ const CURSOR_NAMESPACE = '_system';
21
+ const cursorKey = (spaceId) => `experience-space-verified-rowid:${spaceId}`;
22
+ /**
23
+ * The texts the row's writer may have embedded. Each is only a candidate:
24
+ * a row is attributed only when one reproduces its stored vector.
25
+ * - experience-capture middleware and the CLI hooks: `${domain}: ${task}`,
26
+ * capped at 512 chars (the hooks store task capped at 500, so a longer
27
+ * task cannot be rebuilt and will not match);
28
+ * - ExperienceReplay's start-up backfill: the same, scrubbed (ADR-099);
29
+ * - ExperienceReplay.storeExperience (source 'experience-replay'):
30
+ * `${task} ${strategy} ${keyActions}`, strategy in `agent`, key actions
31
+ * in steps_json.
32
+ */
33
+ export function legacyExperienceEmbeddingTexts(row) {
34
+ const domainTask = `${row.domain ?? ''}: ${row.task}`;
35
+ const texts = new Set([
36
+ domainTask.slice(0, 512),
37
+ scrubReasoningBlocks(domainTask).slice(0, 512),
38
+ ]);
39
+ if (row.source === 'experience-replay') {
40
+ const keyActions = safeJsonParse(row.steps_json || '[]');
41
+ if (Array.isArray(keyActions)) {
42
+ texts.add(`${row.task} ${row.agent ?? ''} ${keyActions.join(' ')}`);
43
+ }
44
+ }
45
+ return [...texts];
46
+ }
47
+ function storedVector(row) {
48
+ if (row.embedding.length < row.embedding_dimension * 4)
49
+ return null;
50
+ const v = [];
51
+ for (let i = 0; i < row.embedding_dimension; i++)
52
+ v.push(row.embedding.readFloatLE(i * 4));
53
+ return v;
54
+ }
55
+ function readCursor(db, spaceId) {
56
+ try {
57
+ const row = db.prepare('SELECT value FROM kv_store WHERE namespace = ? AND key = ?')
58
+ .get(CURSOR_NAMESPACE, cursorKey(spaceId));
59
+ return row ? Number(row.value) || 0 : 0;
60
+ }
61
+ catch {
62
+ return 0; // no kv_store: check from the start
63
+ }
64
+ }
65
+ function writeCursor(db, spaceId, rowid) {
66
+ try {
67
+ db.prepare('INSERT OR REPLACE INTO kv_store (key, namespace, value) VALUES (?, ?, ?)')
68
+ .run(cursorKey(spaceId), CURSOR_NAMESPACE, String(rowid));
69
+ }
70
+ catch {
71
+ // Without kv_store the next start checks these rows again.
72
+ }
73
+ }
74
+ /**
75
+ * Check up to `limit` legacy rows (vector, no embedding_space_id) and set
76
+ * embedding_space_id on those whose stored vector the active embedder
77
+ * reproduces. Never writes a vector. Stops at the first embedder failure.
78
+ */
79
+ export async function verifyLegacyExperienceSpaces(db, options) {
80
+ const write = options.write ?? ((fn) => fn());
81
+ const result = { spaceId: null, checked: 0, stamped: [], left: 0 };
82
+ // The cursor is per space, so the space must be known first: embedding
83
+ // anything initializes the embedder if needed.
84
+ let spaceId = options.activeSpaceId();
85
+ const rowsAfter = (cursor) => db.prepare(`
86
+ SELECT rowid, id, task, agent, domain, steps_json, source, embedding, embedding_dimension
87
+ FROM captured_experiences
88
+ WHERE rowid > ? AND embedding IS NOT NULL AND embedding_space_id IS NULL
89
+ AND embedding_dimension > 0 AND consolidated_into IS NULL
90
+ ORDER BY rowid LIMIT ?
91
+ `).all(cursor, options.limit ?? 200);
92
+ let rows = rowsAfter(spaceId ? readCursor(db, spaceId) : 0);
93
+ if (rows.length === 0)
94
+ return result;
95
+ if (!spaceId) {
96
+ await options.embed(legacyExperienceEmbeddingTexts(rows[0])[0]);
97
+ spaceId = options.activeSpaceId();
98
+ if (!spaceId)
99
+ return result;
100
+ rows = rowsAfter(readCursor(db, spaceId));
101
+ }
102
+ result.spaceId = spaceId;
103
+ const stamp = db.prepare(`
104
+ UPDATE captured_experiences SET embedding_space_id = ?
105
+ WHERE id = ? AND embedding_space_id IS NULL AND embedding = ?
106
+ `);
107
+ let lastRowid = 0;
108
+ try {
109
+ for (const row of rows) {
110
+ const stored = storedVector(row);
111
+ let matched = false;
112
+ if (stored) {
113
+ for (const text of legacyExperienceEmbeddingTexts(row)) {
114
+ const recomputed = await options.embed(text);
115
+ if (options.activeSpaceId() !== spaceId)
116
+ return result; // embedder changed mid-pass
117
+ if (recomputed.length === stored.length
118
+ && cosineSimilarity(stored, recomputed) >= EMBEDDING_ROUND_TRIP_MIN_COSINE) {
119
+ matched = true;
120
+ break;
121
+ }
122
+ }
123
+ }
124
+ if (matched) {
125
+ // Only the provenance column, and only if the vector is still the one checked.
126
+ const changes = (await write(() => stamp.run(spaceId, row.id, row.embedding))).changes;
127
+ if (changes > 0)
128
+ result.stamped.push(row.id);
129
+ else
130
+ result.left++;
131
+ }
132
+ else {
133
+ result.left++;
134
+ }
135
+ result.checked++;
136
+ lastRowid = row.rowid;
137
+ }
138
+ }
139
+ finally {
140
+ // Rows checked so far are not checked again in this space, even when an
141
+ // embedder failure ends the pass early.
142
+ if (lastRowid > 0)
143
+ await write(() => writeCursor(db, spaceId, lastRowid));
144
+ }
145
+ return result;
146
+ }
147
+ //# sourceMappingURL=experience-space-verification.js.map
@@ -156,10 +156,6 @@ export declare class PatternLifecycleManager {
156
156
  private _compressionService;
157
157
  set compressionService(svc: TemporalCompressionService | null);
158
158
  constructor(db: DatabaseType, config?: Partial<PatternLifecycleConfig>);
159
- /**
160
- * Ensure required schema extensions exist
161
- */
162
- private ensureSchema;
163
159
  /**
164
160
  * Get recent experiences from captured_experiences table.
165
161
  */
@@ -202,6 +198,9 @@ export declare class PatternLifecycleManager {
202
198
  * Promote pattern to long-term tier
203
199
  */
204
200
  promotePattern(patternId: string): boolean;
201
+ /** Whether `patternId` passes the advisory check and the frozen promote rule. */
202
+ private promotionVerified;
203
+ private writePromotion;
205
204
  /**
206
205
  * Promote all eligible patterns
207
206
  */
@@ -209,6 +208,16 @@ export declare class PatternLifecycleManager {
209
208
  promoted: number;
210
209
  checked: number;
211
210
  };
211
+ /**
212
+ * promoteEligiblePatterns for the MCP server's background workers (#1283):
213
+ * each promotion is queued on the shared connection, so a locked memory.db
214
+ * does not freeze the event loop. Same selection, rule and result.
215
+ */
216
+ promoteEligiblePatternsWhenUnlocked(): Promise<{
217
+ promoted: number;
218
+ checked: number;
219
+ }>;
220
+ private selectShortTermPatternIds;
212
221
  /**
213
222
  * Run a promotion sweep — convenience alias for pre-compaction hook.
214
223
  * Iterates short-term patterns, checks promotion criteria, promotes eligible ones.
@@ -225,6 +234,8 @@ export declare class PatternLifecycleManager {
225
234
  * Deprecate a pattern (soft delete)
226
235
  */
227
236
  deprecatePattern(patternId: string, reason?: string): boolean;
237
+ /** Soft-delete a pattern and record why, in one unit so a queued retry repeats both. */
238
+ private writeDeprecation;
228
239
  /**
229
240
  * Deprecate all patterns that meet deprecation criteria
230
241
  */
@@ -232,6 +243,15 @@ export declare class PatternLifecycleManager {
232
243
  deprecated: number;
233
244
  checked: number;
234
245
  };
246
+ /**
247
+ * deprecateStalePatterns for the MCP server's background workers (#1283):
248
+ * each deprecation is queued on the shared connection. Same criteria and result.
249
+ */
250
+ deprecateStalePatternsWhenUnlocked(): Promise<{
251
+ deprecated: number;
252
+ checked: number;
253
+ }>;
254
+ private selectActivePatternIds;
235
255
  /**
236
256
  * Apply confidence decay to patterns that haven't been used recently
237
257
  */
@@ -239,6 +259,15 @@ export declare class PatternLifecycleManager {
239
259
  updated: number;
240
260
  decayed: number;
241
261
  };
262
+ /**
263
+ * applyConfidenceDecay for the MCP server's background workers (#1283): the
264
+ * decay UPDATE is queued on the shared connection. Same cutoff and result.
265
+ */
266
+ applyConfidenceDecayWhenUnlocked(daysSinceLastRun?: number): Promise<{
267
+ updated: number;
268
+ decayed: number;
269
+ }>;
270
+ private writeConfidenceDecay;
242
271
  /**
243
272
  * Record pattern usage success/failure
244
273
  */
@@ -303,6 +332,13 @@ export declare class PatternLifecycleManager {
303
332
  */
304
333
  private rowToPattern;
305
334
  }
335
+ /**
336
+ * Create a pattern lifecycle manager for the MCP server's background workers
337
+ * (#1283). A database that predates the lifecycle columns gets its ALTER
338
+ * TABLEs through the shared connection's write queue first, so a locked
339
+ * memory.db does not freeze the event loop on the worker's first tick.
340
+ */
341
+ export declare function createPatternLifecycleManagerWhenUnlocked(db: DatabaseType, config?: Partial<PatternLifecycleConfig>): Promise<PatternLifecycleManager>;
306
342
  /**
307
343
  * Create a pattern lifecycle manager
308
344
  */