@archipelagolab/lobi 1.0.1 → 1.0.5

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 (1164) hide show
  1. package/dist/APEv2Parser-6EMKXRZS.js +15 -0
  2. package/dist/APEv2Parser-6EMKXRZS.js.map +7 -0
  3. package/dist/AiffParser-E6XWRTXM.js +194 -0
  4. package/dist/AiffParser-E6XWRTXM.js.map +7 -0
  5. package/dist/AsfParser-WSOH2JQY.js +620 -0
  6. package/dist/AsfParser-WSOH2JQY.js.map +7 -0
  7. package/dist/DsdiffParser-EUWJ4YAR.js +192 -0
  8. package/dist/DsdiffParser-EUWJ4YAR.js.map +7 -0
  9. package/dist/DsfParser-R6TPBJIY.js +114 -0
  10. package/dist/DsfParser-R6TPBJIY.js.map +7 -0
  11. package/dist/FlacParser-VDASGZ3E.js +16 -0
  12. package/dist/FlacParser-VDASGZ3E.js.map +7 -0
  13. package/dist/MP4Parser-64RGJLUM.js +1145 -0
  14. package/dist/MP4Parser-64RGJLUM.js.map +7 -0
  15. package/dist/MatroskaParser-O6RXAKYA.js +662 -0
  16. package/dist/MatroskaParser-O6RXAKYA.js.map +7 -0
  17. package/dist/MpegParser-B6NX6DS3.js +652 -0
  18. package/dist/MpegParser-B6NX6DS3.js.map +7 -0
  19. package/dist/MusepackParser-WUBT63DS.js +331 -0
  20. package/dist/MusepackParser-WUBT63DS.js.map +7 -0
  21. package/dist/OggParser-ZY6E5C2P.js +448 -0
  22. package/dist/OggParser-ZY6E5C2P.js.map +7 -0
  23. package/dist/WavPackParser-5KTCSQEU.js +209 -0
  24. package/dist/WavPackParser-5KTCSQEU.js.map +7 -0
  25. package/dist/WaveParser-RZSHVQPZ.js +300 -0
  26. package/dist/WaveParser-RZSHVQPZ.js.map +7 -0
  27. package/dist/auth-presence.js +46 -0
  28. package/dist/auth-presence.js.map +7 -0
  29. package/dist/channel-plugin-api.js +79 -0
  30. package/dist/channel-plugin-api.js.map +7 -0
  31. package/dist/chunk-22WAAZ6I.js +114 -0
  32. package/dist/chunk-22WAAZ6I.js.map +7 -0
  33. package/dist/chunk-2A6HEFSO.js +676 -0
  34. package/dist/chunk-2A6HEFSO.js.map +7 -0
  35. package/dist/chunk-2KGHUHKU.js +169 -0
  36. package/dist/chunk-2KGHUHKU.js.map +7 -0
  37. package/dist/chunk-2NEQI4K6.js +171 -0
  38. package/dist/chunk-2NEQI4K6.js.map +7 -0
  39. package/dist/chunk-2OSJ3MTW.js +175 -0
  40. package/dist/chunk-2OSJ3MTW.js.map +7 -0
  41. package/dist/chunk-2Q626TDO.js +27 -0
  42. package/dist/chunk-2Q626TDO.js.map +7 -0
  43. package/dist/chunk-2U6OZ7N2.js +155 -0
  44. package/dist/chunk-2U6OZ7N2.js.map +7 -0
  45. package/dist/chunk-2Z4IOUDZ.js +129 -0
  46. package/dist/chunk-2Z4IOUDZ.js.map +7 -0
  47. package/dist/chunk-2ZEPAW7U.js +154 -0
  48. package/dist/chunk-2ZEPAW7U.js.map +7 -0
  49. package/dist/chunk-2ZI6JK5O.js +63 -0
  50. package/dist/chunk-2ZI6JK5O.js.map +7 -0
  51. package/dist/chunk-34UY6D6X.js +36 -0
  52. package/dist/chunk-34UY6D6X.js.map +7 -0
  53. package/dist/chunk-3JD6JSJD.js +111 -0
  54. package/dist/chunk-3JD6JSJD.js.map +7 -0
  55. package/dist/chunk-3TOEIHG5.js +314 -0
  56. package/dist/chunk-3TOEIHG5.js.map +7 -0
  57. package/dist/chunk-3TRKKAVT.js +130 -0
  58. package/dist/chunk-3TRKKAVT.js.map +7 -0
  59. package/dist/chunk-3UFTTK7C.js +418 -0
  60. package/dist/chunk-3UFTTK7C.js.map +7 -0
  61. package/dist/chunk-3XO6AAIC.js +25 -0
  62. package/dist/chunk-3XO6AAIC.js.map +7 -0
  63. package/dist/chunk-427SAQME.js +321 -0
  64. package/dist/chunk-427SAQME.js.map +7 -0
  65. package/dist/chunk-4JVNTZAI.js +80 -0
  66. package/dist/chunk-4JVNTZAI.js.map +7 -0
  67. package/dist/chunk-4O3BEYYM.js +187 -0
  68. package/dist/chunk-4O3BEYYM.js.map +7 -0
  69. package/dist/chunk-4Z2N4GW6.js +247 -0
  70. package/dist/chunk-4Z2N4GW6.js.map +7 -0
  71. package/dist/chunk-56HN4SH6.js +46 -0
  72. package/dist/chunk-56HN4SH6.js.map +7 -0
  73. package/dist/chunk-5APBBTGW.js +7 -0
  74. package/dist/chunk-5APBBTGW.js.map +7 -0
  75. package/dist/chunk-5LNGMBWW.js +93 -0
  76. package/dist/chunk-5LNGMBWW.js.map +7 -0
  77. package/dist/chunk-5XFQSYZ4.js +52 -0
  78. package/dist/chunk-5XFQSYZ4.js.map +7 -0
  79. package/dist/chunk-62N5N4AC.js +241 -0
  80. package/dist/chunk-62N5N4AC.js.map +7 -0
  81. package/dist/chunk-6HX3DEXK.js +178 -0
  82. package/dist/chunk-6HX3DEXK.js.map +7 -0
  83. package/dist/chunk-6NO5VEVV.js +18 -0
  84. package/dist/chunk-6NO5VEVV.js.map +7 -0
  85. package/dist/chunk-6PZGDVLR.js +465 -0
  86. package/dist/chunk-6PZGDVLR.js.map +7 -0
  87. package/dist/chunk-6SOGH3TW.js +163 -0
  88. package/dist/chunk-6SOGH3TW.js.map +7 -0
  89. package/dist/chunk-72TGY3LX.js +104 -0
  90. package/dist/chunk-72TGY3LX.js.map +7 -0
  91. package/dist/chunk-76IE55K7.js +392 -0
  92. package/dist/chunk-76IE55K7.js.map +7 -0
  93. package/dist/chunk-7F3242AO.js +86 -0
  94. package/dist/chunk-7F3242AO.js.map +7 -0
  95. package/dist/chunk-7FLQSTPG.js +57 -0
  96. package/dist/chunk-7FLQSTPG.js.map +7 -0
  97. package/dist/chunk-7MP46JBP.js +177 -0
  98. package/dist/chunk-7MP46JBP.js.map +7 -0
  99. package/dist/chunk-7MVZYR2T.js +87 -0
  100. package/dist/chunk-7MVZYR2T.js.map +7 -0
  101. package/dist/chunk-7N7ISMPG.js +50 -0
  102. package/dist/chunk-7N7ISMPG.js.map +7 -0
  103. package/dist/chunk-7S7LQQPX.js +127 -0
  104. package/dist/chunk-7S7LQQPX.js.map +7 -0
  105. package/dist/chunk-7TTNY5FK.js +21 -0
  106. package/dist/chunk-7TTNY5FK.js.map +7 -0
  107. package/dist/chunk-7W73QCTR.js +244 -0
  108. package/dist/chunk-7W73QCTR.js.map +7 -0
  109. package/dist/chunk-7XXLU33Y.js +76 -0
  110. package/dist/chunk-7XXLU33Y.js.map +7 -0
  111. package/dist/chunk-AAO7BQEV.js +258 -0
  112. package/dist/chunk-AAO7BQEV.js.map +7 -0
  113. package/dist/chunk-AH4MLRYT.js +91 -0
  114. package/dist/chunk-AH4MLRYT.js.map +7 -0
  115. package/dist/chunk-AHKR32FH.js +7 -0
  116. package/dist/chunk-AHKR32FH.js.map +7 -0
  117. package/dist/chunk-ALKRFDAW.js +94 -0
  118. package/dist/chunk-ALKRFDAW.js.map +7 -0
  119. package/dist/chunk-AQQGAE7N.js +12 -0
  120. package/dist/chunk-AQQGAE7N.js.map +7 -0
  121. package/dist/chunk-AWW3YUGJ.js +193 -0
  122. package/dist/chunk-AWW3YUGJ.js.map +7 -0
  123. package/dist/chunk-AX7VEEWJ.js +158 -0
  124. package/dist/chunk-AX7VEEWJ.js.map +7 -0
  125. package/dist/chunk-BAX7Q6GR.js +55 -0
  126. package/dist/chunk-BAX7Q6GR.js.map +7 -0
  127. package/dist/chunk-BBM6BR3Z.js +28 -0
  128. package/dist/chunk-BBM6BR3Z.js.map +7 -0
  129. package/dist/chunk-BHXZMHSX.js +109 -0
  130. package/dist/chunk-BHXZMHSX.js.map +7 -0
  131. package/dist/chunk-BIUXDLVY.js +62 -0
  132. package/dist/chunk-BIUXDLVY.js.map +7 -0
  133. package/dist/chunk-BMFZL2P4.js +97 -0
  134. package/dist/chunk-BMFZL2P4.js.map +7 -0
  135. package/dist/chunk-BQXEXK4H.js +114 -0
  136. package/dist/chunk-BQXEXK4H.js.map +7 -0
  137. package/dist/chunk-BU2CTWBG.js +30 -0
  138. package/dist/chunk-BU2CTWBG.js.map +7 -0
  139. package/dist/chunk-BVKSCLF7.js +195 -0
  140. package/dist/chunk-BVKSCLF7.js.map +7 -0
  141. package/dist/chunk-BWA3D22L.js +88 -0
  142. package/dist/chunk-BWA3D22L.js.map +7 -0
  143. package/dist/chunk-CE24RSPL.js +506 -0
  144. package/dist/chunk-CE24RSPL.js.map +7 -0
  145. package/dist/chunk-CETZGSCP.js +71 -0
  146. package/dist/chunk-CETZGSCP.js.map +7 -0
  147. package/dist/chunk-CGBWMONK.js +412 -0
  148. package/dist/chunk-CGBWMONK.js.map +7 -0
  149. package/dist/chunk-CPNIXMGX.js +127 -0
  150. package/dist/chunk-CPNIXMGX.js.map +7 -0
  151. package/dist/chunk-CSJO73LD.js +84 -0
  152. package/dist/chunk-CSJO73LD.js.map +7 -0
  153. package/dist/chunk-CTKBDSL6.js +81 -0
  154. package/dist/chunk-CTKBDSL6.js.map +7 -0
  155. package/dist/chunk-CY6WHUCW.js +54 -0
  156. package/dist/chunk-CY6WHUCW.js.map +7 -0
  157. package/dist/chunk-D7Q6Z74D.js +123 -0
  158. package/dist/chunk-D7Q6Z74D.js.map +7 -0
  159. package/dist/chunk-DZIM4OWK.js +17 -0
  160. package/dist/chunk-DZIM4OWK.js.map +7 -0
  161. package/dist/chunk-E3GC4V5V.js +30 -0
  162. package/dist/chunk-E3GC4V5V.js.map +7 -0
  163. package/dist/chunk-E5HPDHCW.js +34 -0
  164. package/dist/chunk-E5HPDHCW.js.map +7 -0
  165. package/dist/chunk-E75BJJZ2.js +635 -0
  166. package/dist/chunk-E75BJJZ2.js.map +7 -0
  167. package/dist/chunk-EE4DHUUZ.js +472 -0
  168. package/dist/chunk-EE4DHUUZ.js.map +7 -0
  169. package/dist/chunk-EHELTAAD.js +198 -0
  170. package/dist/chunk-EHELTAAD.js.map +7 -0
  171. package/dist/chunk-EKXPSI7Z.js +135 -0
  172. package/dist/chunk-EKXPSI7Z.js.map +7 -0
  173. package/dist/chunk-ERCH75SH.js +292 -0
  174. package/dist/chunk-ERCH75SH.js.map +7 -0
  175. package/dist/chunk-EVFWZGFL.js +235 -0
  176. package/dist/chunk-EVFWZGFL.js.map +7 -0
  177. package/dist/chunk-EVPBRKMZ.js +45 -0
  178. package/dist/chunk-EVPBRKMZ.js.map +7 -0
  179. package/dist/chunk-F6AFJHWV.js +45 -0
  180. package/dist/chunk-F6AFJHWV.js.map +7 -0
  181. package/dist/chunk-FG4NVFKM.js +455 -0
  182. package/dist/chunk-FG4NVFKM.js.map +7 -0
  183. package/dist/chunk-FHNEN6IR.js +14 -0
  184. package/dist/chunk-FHNEN6IR.js.map +7 -0
  185. package/dist/chunk-FQ4R7IOX.js +32 -0
  186. package/dist/chunk-FQ4R7IOX.js.map +7 -0
  187. package/dist/chunk-FQPYAPJJ.js +124 -0
  188. package/dist/chunk-FQPYAPJJ.js.map +7 -0
  189. package/dist/chunk-FQTLJO4W.js +335 -0
  190. package/dist/chunk-FQTLJO4W.js.map +7 -0
  191. package/dist/chunk-FVLJSB2W.js +124 -0
  192. package/dist/chunk-FVLJSB2W.js.map +7 -0
  193. package/dist/chunk-FYRKBNTI.js +18 -0
  194. package/dist/chunk-FYRKBNTI.js.map +7 -0
  195. package/dist/chunk-GD6L3SLC.js +30 -0
  196. package/dist/chunk-GD6L3SLC.js.map +7 -0
  197. package/dist/chunk-GI2ZANRY.js +24 -0
  198. package/dist/chunk-GI2ZANRY.js.map +7 -0
  199. package/dist/chunk-GK3XVKXT.js +737 -0
  200. package/dist/chunk-GK3XVKXT.js.map +7 -0
  201. package/dist/chunk-GKOWCDQV.js +699 -0
  202. package/dist/chunk-GKOWCDQV.js.map +7 -0
  203. package/dist/chunk-GLLRCKKE.js +26 -0
  204. package/dist/chunk-GLLRCKKE.js.map +7 -0
  205. package/dist/chunk-GNYG6I36.js +175 -0
  206. package/dist/chunk-GNYG6I36.js.map +7 -0
  207. package/dist/chunk-GVYGUH2V.js +7 -0
  208. package/dist/chunk-GVYGUH2V.js.map +7 -0
  209. package/dist/chunk-GZAGAWSU.js +28 -0
  210. package/dist/chunk-GZAGAWSU.js.map +7 -0
  211. package/dist/chunk-H23E72SB.js +163 -0
  212. package/dist/chunk-H23E72SB.js.map +7 -0
  213. package/dist/chunk-H6YVV7GE.js +22 -0
  214. package/dist/chunk-H6YVV7GE.js.map +7 -0
  215. package/dist/chunk-HDPICD3P.js +4890 -0
  216. package/dist/chunk-HDPICD3P.js.map +7 -0
  217. package/dist/chunk-HP5HMWOM.js +123 -0
  218. package/dist/chunk-HP5HMWOM.js.map +7 -0
  219. package/dist/chunk-HQSHS6IB.js +88 -0
  220. package/dist/chunk-HQSHS6IB.js.map +7 -0
  221. package/dist/chunk-HTV3R73W.js +51 -0
  222. package/dist/chunk-HTV3R73W.js.map +7 -0
  223. package/dist/chunk-IJCMYMZB.js +239 -0
  224. package/dist/chunk-IJCMYMZB.js.map +7 -0
  225. package/dist/chunk-INNENDEE.js +472 -0
  226. package/dist/chunk-INNENDEE.js.map +7 -0
  227. package/dist/chunk-IOTLSMEQ.js +177 -0
  228. package/dist/chunk-IOTLSMEQ.js.map +7 -0
  229. package/dist/chunk-IQYYEHSM.js +300 -0
  230. package/dist/chunk-IQYYEHSM.js.map +7 -0
  231. package/dist/chunk-IRA5NJ4Q.js +21 -0
  232. package/dist/chunk-IRA5NJ4Q.js.map +7 -0
  233. package/dist/chunk-IU7EXXK7.js +1662 -0
  234. package/dist/chunk-IU7EXXK7.js.map +7 -0
  235. package/dist/chunk-IUXAKDAY.js +102 -0
  236. package/dist/chunk-IUXAKDAY.js.map +7 -0
  237. package/dist/chunk-JMYIFYY5.js +233 -0
  238. package/dist/chunk-JMYIFYY5.js.map +7 -0
  239. package/dist/chunk-JSZBX2TA.js +5853 -0
  240. package/dist/chunk-JSZBX2TA.js.map +7 -0
  241. package/dist/chunk-KHFWQ334.js +138 -0
  242. package/dist/chunk-KHFWQ334.js.map +7 -0
  243. package/dist/chunk-KJW6JLM6.js +95 -0
  244. package/dist/chunk-KJW6JLM6.js.map +7 -0
  245. package/dist/chunk-KSEANSJE.js +40 -0
  246. package/dist/chunk-KSEANSJE.js.map +7 -0
  247. package/dist/chunk-KVU54E6W.js +63 -0
  248. package/dist/chunk-KVU54E6W.js.map +7 -0
  249. package/dist/chunk-L5OUVMHK.js +174 -0
  250. package/dist/chunk-L5OUVMHK.js.map +7 -0
  251. package/dist/chunk-LIVQ7GIO.js +86 -0
  252. package/dist/chunk-LIVQ7GIO.js.map +7 -0
  253. package/dist/chunk-LO4F6E3N.js +163 -0
  254. package/dist/chunk-LO4F6E3N.js.map +7 -0
  255. package/dist/chunk-LSVKDUNM.js +151 -0
  256. package/dist/chunk-LSVKDUNM.js.map +7 -0
  257. package/dist/chunk-LVMK2GPM.js +18 -0
  258. package/dist/chunk-LVMK2GPM.js.map +7 -0
  259. package/dist/chunk-LXVPETLK.js +1405 -0
  260. package/dist/chunk-LXVPETLK.js.map +7 -0
  261. package/dist/chunk-LZNW24OB.js +78 -0
  262. package/dist/chunk-LZNW24OB.js.map +7 -0
  263. package/dist/chunk-MAF6PSCJ.js +44 -0
  264. package/dist/chunk-MAF6PSCJ.js.map +7 -0
  265. package/dist/chunk-MBIX6Z7U.js +80 -0
  266. package/dist/chunk-MBIX6Z7U.js.map +7 -0
  267. package/dist/chunk-MDLLXMC3.js +183 -0
  268. package/dist/chunk-MDLLXMC3.js.map +7 -0
  269. package/dist/chunk-MEI5HTWV.js +127 -0
  270. package/dist/chunk-MEI5HTWV.js.map +7 -0
  271. package/dist/chunk-MH74AJ3A.js +82 -0
  272. package/dist/chunk-MH74AJ3A.js.map +7 -0
  273. package/dist/chunk-MIFIM4PI.js +163 -0
  274. package/dist/chunk-MIFIM4PI.js.map +7 -0
  275. package/dist/chunk-MISZB5QJ.js +22 -0
  276. package/dist/chunk-MISZB5QJ.js.map +7 -0
  277. package/dist/chunk-MJ27XQYG.js +125 -0
  278. package/dist/chunk-MJ27XQYG.js.map +7 -0
  279. package/dist/chunk-MLQY5SKR.js +52 -0
  280. package/dist/chunk-MLQY5SKR.js.map +7 -0
  281. package/dist/chunk-MTMHGC3G.js +39 -0
  282. package/dist/chunk-MTMHGC3G.js.map +7 -0
  283. package/dist/chunk-MWBAW3YV.js +244 -0
  284. package/dist/chunk-MWBAW3YV.js.map +7 -0
  285. package/dist/chunk-MZGGB2YT.js +50 -0
  286. package/dist/chunk-MZGGB2YT.js.map +7 -0
  287. package/dist/chunk-N5SNGZJV.js +217 -0
  288. package/dist/chunk-N5SNGZJV.js.map +7 -0
  289. package/dist/chunk-NGCTBYQ3.js +181 -0
  290. package/dist/chunk-NGCTBYQ3.js.map +7 -0
  291. package/dist/chunk-NMUX7SGU.js +676 -0
  292. package/dist/chunk-NMUX7SGU.js.map +7 -0
  293. package/dist/chunk-NO7GMLNU.js +292 -0
  294. package/dist/chunk-NO7GMLNU.js.map +7 -0
  295. package/dist/chunk-NTOGVX2Y.js +92 -0
  296. package/dist/chunk-NTOGVX2Y.js.map +7 -0
  297. package/dist/chunk-O5IVKDX7.js +30 -0
  298. package/dist/chunk-O5IVKDX7.js.map +7 -0
  299. package/dist/chunk-OFWMLQMU.js +7287 -0
  300. package/dist/chunk-OFWMLQMU.js.map +7 -0
  301. package/dist/chunk-OJ3ZUKBI.js +73 -0
  302. package/dist/chunk-OJ3ZUKBI.js.map +7 -0
  303. package/dist/chunk-OJTHE4B7.js +50 -0
  304. package/dist/chunk-OJTHE4B7.js.map +7 -0
  305. package/dist/chunk-OOYPYBTA.js +446 -0
  306. package/dist/chunk-OOYPYBTA.js.map +7 -0
  307. package/dist/chunk-OQP4W4AR.js +105 -0
  308. package/dist/chunk-OQP4W4AR.js.map +7 -0
  309. package/dist/chunk-OVTT2EKA.js +516 -0
  310. package/dist/chunk-OVTT2EKA.js.map +7 -0
  311. package/dist/chunk-P5N63LBS.js +94 -0
  312. package/dist/chunk-P5N63LBS.js.map +7 -0
  313. package/dist/chunk-PARITZ7F.js +28 -0
  314. package/dist/chunk-PARITZ7F.js.map +7 -0
  315. package/dist/chunk-PBQK4KY4.js +195 -0
  316. package/dist/chunk-PBQK4KY4.js.map +7 -0
  317. package/dist/chunk-PSL2AHIA.js +27 -0
  318. package/dist/chunk-PSL2AHIA.js.map +7 -0
  319. package/dist/chunk-Q5QT7JBM.js +92 -0
  320. package/dist/chunk-Q5QT7JBM.js.map +7 -0
  321. package/dist/chunk-Q7WA5DCR.js +62 -0
  322. package/dist/chunk-Q7WA5DCR.js.map +7 -0
  323. package/dist/chunk-QATEENP2.js +7 -0
  324. package/dist/chunk-QATEENP2.js.map +7 -0
  325. package/dist/chunk-QDT24CIA.js +485 -0
  326. package/dist/chunk-QDT24CIA.js.map +7 -0
  327. package/dist/chunk-QI3NB7D5.js +455 -0
  328. package/dist/chunk-QI3NB7D5.js.map +7 -0
  329. package/dist/chunk-QIDAVXSX.js +106 -0
  330. package/dist/chunk-QIDAVXSX.js.map +7 -0
  331. package/dist/chunk-QKIGQVP2.js +104 -0
  332. package/dist/chunk-QKIGQVP2.js.map +7 -0
  333. package/dist/chunk-QNJENPK2.js +81 -0
  334. package/dist/chunk-QNJENPK2.js.map +7 -0
  335. package/dist/chunk-REVXXWAS.js +31 -0
  336. package/dist/chunk-REVXXWAS.js.map +7 -0
  337. package/dist/chunk-RFH4HRZP.js +94 -0
  338. package/dist/chunk-RFH4HRZP.js.map +7 -0
  339. package/dist/chunk-RNGAGYCL.js +49 -0
  340. package/dist/chunk-RNGAGYCL.js.map +7 -0
  341. package/dist/chunk-RPCVN3JA.js +261 -0
  342. package/dist/chunk-RPCVN3JA.js.map +7 -0
  343. package/dist/chunk-RQQE5DDT.js +193 -0
  344. package/dist/chunk-RQQE5DDT.js.map +7 -0
  345. package/dist/chunk-RVOD3ESA.js +38 -0
  346. package/dist/chunk-RVOD3ESA.js.map +7 -0
  347. package/dist/chunk-SAOUP24A.js +70 -0
  348. package/dist/chunk-SAOUP24A.js.map +7 -0
  349. package/dist/chunk-SFZL2TCV.js +55 -0
  350. package/dist/chunk-SFZL2TCV.js.map +7 -0
  351. package/dist/chunk-SJPFUXBV.js +45 -0
  352. package/dist/chunk-SJPFUXBV.js.map +7 -0
  353. package/dist/chunk-SLIUQWAR.js +58 -0
  354. package/dist/chunk-SLIUQWAR.js.map +7 -0
  355. package/dist/chunk-SSEX66OL.js +39 -0
  356. package/dist/chunk-SSEX66OL.js.map +7 -0
  357. package/dist/chunk-SX2LOHOX.js +251 -0
  358. package/dist/chunk-SX2LOHOX.js.map +7 -0
  359. package/dist/chunk-T72EMFTX.js +74 -0
  360. package/dist/chunk-T72EMFTX.js.map +7 -0
  361. package/dist/chunk-TA2QJPPG.js +169 -0
  362. package/dist/chunk-TA2QJPPG.js.map +7 -0
  363. package/dist/chunk-TFEETDNY.js +78 -0
  364. package/dist/chunk-TFEETDNY.js.map +7 -0
  365. package/dist/chunk-THM2QV25.js +108 -0
  366. package/dist/chunk-THM2QV25.js.map +7 -0
  367. package/dist/chunk-TRWT2N6Z.js +15 -0
  368. package/dist/chunk-TRWT2N6Z.js.map +7 -0
  369. package/dist/chunk-TTXEM54Y.js +76 -0
  370. package/dist/chunk-TTXEM54Y.js.map +7 -0
  371. package/dist/chunk-U4LVIY5F.js +1405 -0
  372. package/dist/chunk-U4LVIY5F.js.map +7 -0
  373. package/dist/chunk-U767LCSG.js +78 -0
  374. package/dist/chunk-U767LCSG.js.map +7 -0
  375. package/dist/chunk-U7GKLHU6.js +120 -0
  376. package/dist/chunk-U7GKLHU6.js.map +7 -0
  377. package/dist/chunk-UAB5P5QO.js +60 -0
  378. package/dist/chunk-UAB5P5QO.js.map +7 -0
  379. package/dist/chunk-UEHPJQBL.js +38 -0
  380. package/dist/chunk-UEHPJQBL.js.map +7 -0
  381. package/dist/chunk-UIBV6IGR.js +31 -0
  382. package/dist/chunk-UIBV6IGR.js.map +7 -0
  383. package/dist/chunk-UIYFRUET.js +16352 -0
  384. package/dist/chunk-UIYFRUET.js.map +7 -0
  385. package/dist/chunk-UJS3TIVS.js +52 -0
  386. package/dist/chunk-UJS3TIVS.js.map +7 -0
  387. package/dist/chunk-UU5PSBSI.js +176 -0
  388. package/dist/chunk-UU5PSBSI.js.map +7 -0
  389. package/dist/chunk-UV63XYFU.js +173 -0
  390. package/dist/chunk-UV63XYFU.js.map +7 -0
  391. package/dist/chunk-UWPHOAOC.js +29 -0
  392. package/dist/chunk-UWPHOAOC.js.map +7 -0
  393. package/dist/chunk-UXDDOSJC.js +52 -0
  394. package/dist/chunk-UXDDOSJC.js.map +7 -0
  395. package/dist/chunk-V3VAOMCO.js +465 -0
  396. package/dist/chunk-V3VAOMCO.js.map +7 -0
  397. package/dist/chunk-VA7ENH2S.js +38 -0
  398. package/dist/chunk-VA7ENH2S.js.map +7 -0
  399. package/dist/chunk-VFPDFLVE.js +516 -0
  400. package/dist/chunk-VFPDFLVE.js.map +7 -0
  401. package/dist/chunk-VHG4FNIJ.js +93 -0
  402. package/dist/chunk-VHG4FNIJ.js.map +7 -0
  403. package/dist/chunk-VKOO6MIZ.js +51 -0
  404. package/dist/chunk-VKOO6MIZ.js.map +7 -0
  405. package/dist/chunk-VKXKRZG7.js +62 -0
  406. package/dist/chunk-VKXKRZG7.js.map +7 -0
  407. package/dist/chunk-VUOLPEUZ.js +7 -0
  408. package/dist/chunk-VUOLPEUZ.js.map +7 -0
  409. package/dist/chunk-W6SOBS7M.js +138 -0
  410. package/dist/chunk-W6SOBS7M.js.map +7 -0
  411. package/dist/chunk-WDOKKRTE.js +7 -0
  412. package/dist/chunk-WDOKKRTE.js.map +7 -0
  413. package/dist/chunk-WGXXKFN5.js +7 -0
  414. package/dist/chunk-WGXXKFN5.js.map +7 -0
  415. package/dist/chunk-WHPUUP3J.js +25 -0
  416. package/dist/chunk-WHPUUP3J.js.map +7 -0
  417. package/dist/chunk-XF7LD6VV.js +122 -0
  418. package/dist/chunk-XF7LD6VV.js.map +7 -0
  419. package/dist/chunk-XFTXM3RE.js +64 -0
  420. package/dist/chunk-XFTXM3RE.js.map +7 -0
  421. package/dist/chunk-XJABPO2T.js +235 -0
  422. package/dist/chunk-XJABPO2T.js.map +7 -0
  423. package/dist/chunk-XK6VF3H7.js +3586 -0
  424. package/dist/chunk-XK6VF3H7.js.map +7 -0
  425. package/dist/chunk-XQYIIPOJ.js +266 -0
  426. package/dist/chunk-XQYIIPOJ.js.map +7 -0
  427. package/dist/chunk-XZSAN55E.js +58 -0
  428. package/dist/chunk-XZSAN55E.js.map +7 -0
  429. package/dist/chunk-Y3KJR4OG.js +64 -0
  430. package/dist/chunk-Y3KJR4OG.js.map +7 -0
  431. package/dist/chunk-Y4JKH7FF.js +45 -0
  432. package/dist/chunk-Y4JKH7FF.js.map +7 -0
  433. package/dist/chunk-Y6CJN4ID.js +31 -0
  434. package/dist/chunk-Y6CJN4ID.js.map +7 -0
  435. package/dist/chunk-YABGJU5M.js +271 -0
  436. package/dist/chunk-YABGJU5M.js.map +7 -0
  437. package/dist/chunk-YEJH7ZC2.js +34 -0
  438. package/dist/chunk-YEJH7ZC2.js.map +7 -0
  439. package/dist/chunk-YFTE4H54.js +44117 -0
  440. package/dist/chunk-YFTE4H54.js.map +7 -0
  441. package/dist/chunk-YNJYMD43.js +392 -0
  442. package/dist/chunk-YNJYMD43.js.map +7 -0
  443. package/dist/chunk-YNYEQGVN.js +251 -0
  444. package/dist/chunk-YNYEQGVN.js.map +7 -0
  445. package/dist/chunk-YUPBD27Z.js +70 -0
  446. package/dist/chunk-YUPBD27Z.js.map +7 -0
  447. package/dist/chunk-YXJ52FD5.js +271 -0
  448. package/dist/chunk-YXJ52FD5.js.map +7 -0
  449. package/dist/chunk-YZGORRQN.js +3101 -0
  450. package/dist/chunk-YZGORRQN.js.map +7 -0
  451. package/dist/chunk-Z6IVJ6ZW.js +30 -0
  452. package/dist/chunk-Z6IVJ6ZW.js.map +7 -0
  453. package/dist/chunk-ZFC44XJJ.js +86 -0
  454. package/dist/chunk-ZFC44XJJ.js.map +7 -0
  455. package/dist/chunk-ZJDJC5TP.js +82 -0
  456. package/dist/chunk-ZJDJC5TP.js.map +7 -0
  457. package/dist/chunk-ZJGZNPDK.js +171 -0
  458. package/dist/chunk-ZJGZNPDK.js.map +7 -0
  459. package/dist/chunk-ZJHBJWZX.js +699 -0
  460. package/dist/chunk-ZJHBJWZX.js.map +7 -0
  461. package/dist/chunk-ZNOTD65D.js +95 -0
  462. package/dist/chunk-ZNOTD65D.js.map +7 -0
  463. package/dist/chunk-ZQ2QIFXW.js +122 -0
  464. package/dist/chunk-ZQ2QIFXW.js.map +7 -0
  465. package/dist/chunk-ZRMXPQGY.js +241 -0
  466. package/dist/chunk-ZRMXPQGY.js.map +7 -0
  467. package/dist/chunk-ZVEE5IDC.js +3101 -0
  468. package/dist/chunk-ZVEE5IDC.js.map +7 -0
  469. package/dist/cli-metadata.js +12 -0
  470. package/dist/cli-metadata.js.map +7 -0
  471. package/dist/contract-api.js +104 -0
  472. package/dist/contract-api.js.map +7 -0
  473. package/dist/dist-F3K7S5SS.js +549 -0
  474. package/dist/dist-F3K7S5SS.js.map +7 -0
  475. package/dist/helper-api.js +51 -0
  476. package/dist/helper-api.js.map +7 -0
  477. package/dist/index.js +71 -0
  478. package/dist/index.js.map +7 -0
  479. package/dist/magic-string.es-V5NOGTUV.js +1315 -0
  480. package/dist/magic-string.es-V5NOGTUV.js.map +7 -0
  481. package/dist/openclaw.plugin.json +23 -0
  482. package/dist/package.json +59 -0
  483. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js +20 -0
  484. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js.map +7 -0
  485. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js +20 -0
  486. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js.map +7 -0
  487. package/dist/runtime-api.js +104 -0
  488. package/dist/runtime-api.js.map +7 -0
  489. package/dist/rust-crypto-H35BXWUU.js +5323 -0
  490. package/dist/rust-crypto-H35BXWUU.js.map +7 -0
  491. package/dist/secret-contract-api.js +18 -0
  492. package/dist/secret-contract-api.js.map +7 -0
  493. package/dist/setup-entry.js +23 -0
  494. package/dist/setup-entry.js.map +7 -0
  495. package/dist/src/account-selection.js +19 -0
  496. package/dist/src/account-selection.js.map +7 -0
  497. package/dist/src/actions.js +24 -0
  498. package/dist/src/actions.js.map +7 -0
  499. package/dist/src/approval-auth.js +27 -0
  500. package/dist/src/approval-auth.js.map +7 -0
  501. package/dist/src/approval-handler.runtime.js +378 -0
  502. package/dist/src/approval-handler.runtime.js.map +7 -0
  503. package/dist/src/approval-ids.js +9 -0
  504. package/dist/src/approval-ids.js.map +7 -0
  505. package/dist/src/approval-native.js +28 -0
  506. package/dist/src/approval-native.js.map +7 -0
  507. package/dist/src/approval-reactions.js +20 -0
  508. package/dist/src/approval-reactions.js.map +7 -0
  509. package/dist/src/auth-precedence.js +8 -0
  510. package/dist/src/auth-precedence.js.map +7 -0
  511. package/dist/src/channel-account-paths.js +11 -0
  512. package/dist/src/channel-account-paths.js.map +7 -0
  513. package/dist/src/channel.js +74 -0
  514. package/dist/src/channel.js.map +7 -0
  515. package/dist/src/channel.runtime.js +82 -0
  516. package/dist/src/channel.runtime.js.map +7 -0
  517. package/dist/src/cli-metadata.js +8 -0
  518. package/dist/src/cli-metadata.js.map +7 -0
  519. package/dist/src/cli.js +936 -0
  520. package/dist/src/cli.js.map +7 -0
  521. package/dist/src/config-adapter.js +26 -0
  522. package/dist/src/config-adapter.js.map +7 -0
  523. package/dist/src/config-schema.js +8 -0
  524. package/dist/src/config-schema.js.map +7 -0
  525. package/dist/src/directory-live.js +35 -0
  526. package/dist/src/directory-live.js.map +7 -0
  527. package/dist/src/doctor-contract.js +11 -0
  528. package/dist/src/doctor-contract.js.map +7 -0
  529. package/dist/src/doctor.js +42 -0
  530. package/dist/src/doctor.js.map +7 -0
  531. package/dist/src/env-vars.js +12 -0
  532. package/dist/src/env-vars.js.map +7 -0
  533. package/dist/src/exec-approval-resolver.js +10 -0
  534. package/dist/src/exec-approval-resolver.js.map +7 -0
  535. package/dist/src/exec-approvals.js +51 -0
  536. package/dist/src/exec-approvals.js.map +7 -0
  537. package/dist/src/group-mentions.js +28 -0
  538. package/dist/src/group-mentions.js.map +7 -0
  539. package/dist/src/legacy-crypto-inspector-availability.js +8 -0
  540. package/dist/src/legacy-crypto-inspector-availability.js.map +7 -0
  541. package/dist/src/legacy-crypto.js +26 -0
  542. package/dist/src/legacy-crypto.js.map +7 -0
  543. package/dist/src/legacy-state.js +24 -0
  544. package/dist/src/legacy-state.js.map +7 -0
  545. package/dist/src/matrix/account-config.js +16 -0
  546. package/dist/src/matrix/account-config.js.map +7 -0
  547. package/dist/src/matrix/accounts.js +31 -0
  548. package/dist/src/matrix/accounts.js.map +7 -0
  549. package/dist/src/matrix/actions/client.js +40 -0
  550. package/dist/src/matrix/actions/client.js.map +7 -0
  551. package/dist/src/matrix/actions/devices.js +42 -0
  552. package/dist/src/matrix/actions/devices.js.map +7 -0
  553. package/dist/src/matrix/actions/limits.js +8 -0
  554. package/dist/src/matrix/actions/limits.js.map +7 -0
  555. package/dist/src/matrix/actions/messages.js +49 -0
  556. package/dist/src/matrix/actions/messages.js.map +7 -0
  557. package/dist/src/matrix/actions/pins.js +46 -0
  558. package/dist/src/matrix/actions/pins.js.map +7 -0
  559. package/dist/src/matrix/actions/polls.js +37 -0
  560. package/dist/src/matrix/actions/polls.js.map +7 -0
  561. package/dist/src/matrix/actions/profile.js +38 -0
  562. package/dist/src/matrix/actions/profile.js.map +7 -0
  563. package/dist/src/matrix/actions/reactions.js +40 -0
  564. package/dist/src/matrix/actions/reactions.js.map +7 -0
  565. package/dist/src/matrix/actions/room.js +40 -0
  566. package/dist/src/matrix/actions/room.js.map +7 -0
  567. package/dist/src/matrix/actions/summary.js +19 -0
  568. package/dist/src/matrix/actions/summary.js.map +7 -0
  569. package/dist/src/matrix/actions/types.js +13 -0
  570. package/dist/src/matrix/actions/types.js.map +7 -0
  571. package/dist/src/matrix/actions/verification.js +77 -0
  572. package/dist/src/matrix/actions/verification.js.map +7 -0
  573. package/dist/src/matrix/actions.js +126 -0
  574. package/dist/src/matrix/actions.js.map +7 -0
  575. package/dist/src/matrix/active-client.js +10 -0
  576. package/dist/src/matrix/active-client.js.map +7 -0
  577. package/dist/src/matrix/async-lock.js +8 -0
  578. package/dist/src/matrix/async-lock.js.map +7 -0
  579. package/dist/src/matrix/backup-health.js +10 -0
  580. package/dist/src/matrix/backup-health.js.map +7 -0
  581. package/dist/src/matrix/client/config-runtime-api.js +24 -0
  582. package/dist/src/matrix/client/config-runtime-api.js.map +7 -0
  583. package/dist/src/matrix/client/config-secret-input.runtime.js +11 -0
  584. package/dist/src/matrix/client/config-secret-input.runtime.js.map +7 -0
  585. package/dist/src/matrix/client/config.js +42 -0
  586. package/dist/src/matrix/client/config.js.map +7 -0
  587. package/dist/src/matrix/client/create-client.js +20 -0
  588. package/dist/src/matrix/client/create-client.js.map +7 -0
  589. package/dist/src/matrix/client/env-auth.js +26 -0
  590. package/dist/src/matrix/client/env-auth.js.map +7 -0
  591. package/dist/src/matrix/client/file-sync-store.js +23 -0
  592. package/dist/src/matrix/client/file-sync-store.js.map +7 -0
  593. package/dist/src/matrix/client/logging.js +17 -0
  594. package/dist/src/matrix/client/logging.js.map +7 -0
  595. package/dist/src/matrix/client/migration-snapshot.runtime.js +13 -0
  596. package/dist/src/matrix/client/migration-snapshot.runtime.js.map +7 -0
  597. package/dist/src/matrix/client/private-network-host.js +8 -0
  598. package/dist/src/matrix/client/private-network-host.js.map +7 -0
  599. package/dist/src/matrix/client/runtime.js +8 -0
  600. package/dist/src/matrix/client/runtime.js.map +7 -0
  601. package/dist/src/matrix/client/shared.js +34 -0
  602. package/dist/src/matrix/client/shared.js.map +7 -0
  603. package/dist/src/matrix/client/storage.js +26 -0
  604. package/dist/src/matrix/client/storage.js.map +7 -0
  605. package/dist/src/matrix/client/types.js +7 -0
  606. package/dist/src/matrix/client/types.js.map +7 -0
  607. package/dist/src/matrix/client-bootstrap.js +15 -0
  608. package/dist/src/matrix/client-bootstrap.js.map +7 -0
  609. package/dist/src/matrix/client-resolver.test-helpers.js +122 -0
  610. package/dist/src/matrix/client-resolver.test-helpers.js.map +7 -0
  611. package/dist/src/matrix/client.js +63 -0
  612. package/dist/src/matrix/client.js.map +7 -0
  613. package/dist/src/matrix/config-paths.js +12 -0
  614. package/dist/src/matrix/config-paths.js.map +7 -0
  615. package/dist/src/matrix/config-update.js +17 -0
  616. package/dist/src/matrix/config-update.js.map +7 -0
  617. package/dist/src/matrix/credentials-read.js +22 -0
  618. package/dist/src/matrix/credentials-read.js.map +7 -0
  619. package/dist/src/matrix/credentials-write.runtime.js +24 -0
  620. package/dist/src/matrix/credentials-write.runtime.js.map +7 -0
  621. package/dist/src/matrix/credentials.js +90 -0
  622. package/dist/src/matrix/credentials.js.map +7 -0
  623. package/dist/src/matrix/deps.js +12 -0
  624. package/dist/src/matrix/deps.js.map +7 -0
  625. package/dist/src/matrix/device-health.js +10 -0
  626. package/dist/src/matrix/device-health.js.map +7 -0
  627. package/dist/src/matrix/direct-management.js +18 -0
  628. package/dist/src/matrix/direct-management.js.map +7 -0
  629. package/dist/src/matrix/direct-room.js +18 -0
  630. package/dist/src/matrix/direct-room.js.map +7 -0
  631. package/dist/src/matrix/draft-stream.js +33 -0
  632. package/dist/src/matrix/draft-stream.js.map +7 -0
  633. package/dist/src/matrix/encryption-guidance.js +17 -0
  634. package/dist/src/matrix/encryption-guidance.js.map +7 -0
  635. package/dist/src/matrix/errors.js +12 -0
  636. package/dist/src/matrix/errors.js.map +7 -0
  637. package/dist/src/matrix/format.js +13 -0
  638. package/dist/src/matrix/format.js.map +7 -0
  639. package/dist/src/matrix/legacy-crypto-inspector.js +73 -0
  640. package/dist/src/matrix/legacy-crypto-inspector.js.map +7 -0
  641. package/dist/src/matrix/media-errors.js +12 -0
  642. package/dist/src/matrix/media-errors.js.map +7 -0
  643. package/dist/src/matrix/media-text.js +22 -0
  644. package/dist/src/matrix/media-text.js.map +7 -0
  645. package/dist/src/matrix/monitor/access-state.js +9 -0
  646. package/dist/src/matrix/monitor/access-state.js.map +7 -0
  647. package/dist/src/matrix/monitor/ack-config.js +10 -0
  648. package/dist/src/matrix/monitor/ack-config.js.map +7 -0
  649. package/dist/src/matrix/monitor/allowlist.js +12 -0
  650. package/dist/src/matrix/monitor/allowlist.js.map +7 -0
  651. package/dist/src/matrix/monitor/auto-join.js +9 -0
  652. package/dist/src/matrix/monitor/auto-join.js.map +7 -0
  653. package/dist/src/matrix/monitor/config.js +37 -0
  654. package/dist/src/matrix/monitor/config.js.map +7 -0
  655. package/dist/src/matrix/monitor/context-summary.js +13 -0
  656. package/dist/src/matrix/monitor/context-summary.js.map +7 -0
  657. package/dist/src/matrix/monitor/direct.js +13 -0
  658. package/dist/src/matrix/monitor/direct.js.map +7 -0
  659. package/dist/src/matrix/monitor/events.js +20 -0
  660. package/dist/src/matrix/monitor/events.js.map +7 -0
  661. package/dist/src/matrix/monitor/handler.js +76 -0
  662. package/dist/src/matrix/monitor/handler.js.map +7 -0
  663. package/dist/src/matrix/monitor/handler.test-helpers.js +268 -0
  664. package/dist/src/matrix/monitor/handler.test-helpers.js.map +7 -0
  665. package/dist/src/matrix/monitor/inbound-dedupe.js +17 -0
  666. package/dist/src/matrix/monitor/inbound-dedupe.js.map +7 -0
  667. package/dist/src/matrix/monitor/index.js +502 -0
  668. package/dist/src/matrix/monitor/index.js.map +7 -0
  669. package/dist/src/matrix/monitor/legacy-crypto-restore.js +99 -0
  670. package/dist/src/matrix/monitor/legacy-crypto-restore.js.map +7 -0
  671. package/dist/src/matrix/monitor/location.js +11 -0
  672. package/dist/src/matrix/monitor/location.js.map +7 -0
  673. package/dist/src/matrix/monitor/media.js +10 -0
  674. package/dist/src/matrix/monitor/media.js.map +7 -0
  675. package/dist/src/matrix/monitor/mentions.js +9 -0
  676. package/dist/src/matrix/monitor/mentions.js.map +7 -0
  677. package/dist/src/matrix/monitor/reaction-events.js +38 -0
  678. package/dist/src/matrix/monitor/reaction-events.js.map +7 -0
  679. package/dist/src/matrix/monitor/recent-invite.js +10 -0
  680. package/dist/src/matrix/monitor/recent-invite.js.map +7 -0
  681. package/dist/src/matrix/monitor/replies.js +33 -0
  682. package/dist/src/matrix/monitor/replies.js.map +7 -0
  683. package/dist/src/matrix/monitor/reply-context.js +14 -0
  684. package/dist/src/matrix/monitor/reply-context.js.map +7 -0
  685. package/dist/src/matrix/monitor/room-history.js +10 -0
  686. package/dist/src/matrix/monitor/room-history.js.map +7 -0
  687. package/dist/src/matrix/monitor/room-info.js +9 -0
  688. package/dist/src/matrix/monitor/room-info.js.map +7 -0
  689. package/dist/src/matrix/monitor/rooms.js +9 -0
  690. package/dist/src/matrix/monitor/rooms.js.map +7 -0
  691. package/dist/src/matrix/monitor/route.js +12 -0
  692. package/dist/src/matrix/monitor/route.js.map +7 -0
  693. package/dist/src/matrix/monitor/runtime-api.js +40 -0
  694. package/dist/src/matrix/monitor/runtime-api.js.map +7 -0
  695. package/dist/src/matrix/monitor/startup-verification.js +174 -0
  696. package/dist/src/matrix/monitor/startup-verification.js.map +7 -0
  697. package/dist/src/matrix/monitor/startup.js +9 -0
  698. package/dist/src/matrix/monitor/startup.js.map +7 -0
  699. package/dist/src/matrix/monitor/status.js +10 -0
  700. package/dist/src/matrix/monitor/status.js.map +7 -0
  701. package/dist/src/matrix/monitor/sync-lifecycle.js +9 -0
  702. package/dist/src/matrix/monitor/sync-lifecycle.js.map +7 -0
  703. package/dist/src/matrix/monitor/task-runner.js +8 -0
  704. package/dist/src/matrix/monitor/task-runner.js.map +7 -0
  705. package/dist/src/matrix/monitor/thread-context.js +14 -0
  706. package/dist/src/matrix/monitor/thread-context.js.map +7 -0
  707. package/dist/src/matrix/monitor/threads.js +16 -0
  708. package/dist/src/matrix/monitor/threads.js.map +7 -0
  709. package/dist/src/matrix/monitor/types.js +11 -0
  710. package/dist/src/matrix/monitor/types.js.map +7 -0
  711. package/dist/src/matrix/monitor/verification-events.js +13 -0
  712. package/dist/src/matrix/monitor/verification-events.js.map +7 -0
  713. package/dist/src/matrix/monitor/verification-utils.js +16 -0
  714. package/dist/src/matrix/monitor/verification-utils.js.map +7 -0
  715. package/dist/src/matrix/outbound-media-runtime.js +9 -0
  716. package/dist/src/matrix/outbound-media-runtime.js.map +7 -0
  717. package/dist/src/matrix/poll-summary.js +14 -0
  718. package/dist/src/matrix/poll-summary.js.map +7 -0
  719. package/dist/src/matrix/poll-types.js +55 -0
  720. package/dist/src/matrix/poll-types.js.map +7 -0
  721. package/dist/src/matrix/probe.js +9 -0
  722. package/dist/src/matrix/probe.js.map +7 -0
  723. package/dist/src/matrix/probe.runtime.js +30 -0
  724. package/dist/src/matrix/probe.runtime.js.map +7 -0
  725. package/dist/src/matrix/profile.js +16 -0
  726. package/dist/src/matrix/profile.js.map +7 -0
  727. package/dist/src/matrix/reaction-common.js +26 -0
  728. package/dist/src/matrix/reaction-common.js.map +7 -0
  729. package/dist/src/matrix/sdk/crypto-bootstrap.js +15 -0
  730. package/dist/src/matrix/sdk/crypto-bootstrap.js.map +7 -0
  731. package/dist/src/matrix/sdk/crypto-facade.js +8 -0
  732. package/dist/src/matrix/sdk/crypto-facade.js.map +7 -0
  733. package/dist/src/matrix/sdk/crypto-node.runtime.js +15 -0
  734. package/dist/src/matrix/sdk/crypto-node.runtime.js.map +7 -0
  735. package/dist/src/matrix/sdk/crypto-runtime.js +84 -0
  736. package/dist/src/matrix/sdk/crypto-runtime.js.map +7 -0
  737. package/dist/src/matrix/sdk/decrypt-bridge.js +11 -0
  738. package/dist/src/matrix/sdk/decrypt-bridge.js.map +7 -0
  739. package/dist/src/matrix/sdk/event-helpers.js +12 -0
  740. package/dist/src/matrix/sdk/event-helpers.js.map +7 -0
  741. package/dist/src/matrix/sdk/http-client.js +13 -0
  742. package/dist/src/matrix/sdk/http-client.js.map +7 -0
  743. package/dist/src/matrix/sdk/idb-persistence-lock.js +12 -0
  744. package/dist/src/matrix/sdk/idb-persistence-lock.js.map +7 -0
  745. package/dist/src/matrix/sdk/idb-persistence.js +13 -0
  746. package/dist/src/matrix/sdk/idb-persistence.js.map +7 -0
  747. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js +83 -0
  748. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js.map +7 -0
  749. package/dist/src/matrix/sdk/logger.js +15 -0
  750. package/dist/src/matrix/sdk/logger.js.map +7 -0
  751. package/dist/src/matrix/sdk/read-response-with-limit.js +8 -0
  752. package/dist/src/matrix/sdk/read-response-with-limit.js.map +7 -0
  753. package/dist/src/matrix/sdk/recovery-key-store.js +14 -0
  754. package/dist/src/matrix/sdk/recovery-key-store.js.map +7 -0
  755. package/dist/src/matrix/sdk/transport.js +13 -0
  756. package/dist/src/matrix/sdk/transport.js.map +7 -0
  757. package/dist/src/matrix/sdk/types.js +7 -0
  758. package/dist/src/matrix/sdk/types.js.map +7 -0
  759. package/dist/src/matrix/sdk/verification-manager.js +11 -0
  760. package/dist/src/matrix/sdk/verification-manager.js.map +7 -0
  761. package/dist/src/matrix/sdk/verification-status.js +12 -0
  762. package/dist/src/matrix/sdk/verification-status.js.map +7 -0
  763. package/dist/src/matrix/sdk.js +1375 -0
  764. package/dist/src/matrix/sdk.js.map +7 -0
  765. package/dist/src/matrix/send/client.js +14 -0
  766. package/dist/src/matrix/send/client.js.map +7 -0
  767. package/dist/src/matrix/send/formatting.js +29 -0
  768. package/dist/src/matrix/send/formatting.js.map +7 -0
  769. package/dist/src/matrix/send/media.js +26 -0
  770. package/dist/src/matrix/send/media.js.map +7 -0
  771. package/dist/src/matrix/send/targets.js +15 -0
  772. package/dist/src/matrix/send/targets.js.map +7 -0
  773. package/dist/src/matrix/send/types.js +17 -0
  774. package/dist/src/matrix/send/types.js.map +7 -0
  775. package/dist/src/matrix/send.js +51 -0
  776. package/dist/src/matrix/send.js.map +7 -0
  777. package/dist/src/matrix/session-store-metadata.js +15 -0
  778. package/dist/src/matrix/session-store-metadata.js.map +7 -0
  779. package/dist/src/matrix/startup-abort.js +14 -0
  780. package/dist/src/matrix/startup-abort.js.map +7 -0
  781. package/dist/src/matrix/sync-state.js +12 -0
  782. package/dist/src/matrix/sync-state.js.map +7 -0
  783. package/dist/src/matrix/target-ids.js +20 -0
  784. package/dist/src/matrix/target-ids.js.map +7 -0
  785. package/dist/src/matrix/thread-bindings-shared.js +34 -0
  786. package/dist/src/matrix/thread-bindings-shared.js.map +7 -0
  787. package/dist/src/matrix/thread-bindings.js +49 -0
  788. package/dist/src/matrix/thread-bindings.js.map +7 -0
  789. package/dist/src/matrix-migration.runtime.js +45 -0
  790. package/dist/src/matrix-migration.runtime.js.map +7 -0
  791. package/dist/src/migration-config.js +29 -0
  792. package/dist/src/migration-config.js.map +7 -0
  793. package/dist/src/migration-snapshot-backup.js +12 -0
  794. package/dist/src/migration-snapshot-backup.js.map +7 -0
  795. package/dist/src/migration-snapshot.js +38 -0
  796. package/dist/src/migration-snapshot.js.map +7 -0
  797. package/dist/src/onboarding.js +43 -0
  798. package/dist/src/onboarding.js.map +7 -0
  799. package/dist/src/onboarding.test-harness.js +124 -0
  800. package/dist/src/onboarding.test-harness.js.map +7 -0
  801. package/dist/src/outbound.js +33 -0
  802. package/dist/src/outbound.js.map +7 -0
  803. package/dist/src/plugin-entry.runtime.js +15 -0
  804. package/dist/src/plugin-entry.runtime.js.map +7 -0
  805. package/dist/src/profile-update.js +41 -0
  806. package/dist/src/profile-update.js.map +7 -0
  807. package/dist/src/record-shared.js +8 -0
  808. package/dist/src/record-shared.js.map +7 -0
  809. package/dist/src/resolve-targets.js +34 -0
  810. package/dist/src/resolve-targets.js.map +7 -0
  811. package/dist/src/resolver.js +8 -0
  812. package/dist/src/resolver.js.map +7 -0
  813. package/dist/src/runtime-api.js +120 -0
  814. package/dist/src/runtime-api.js.map +7 -0
  815. package/dist/src/runtime.js +10 -0
  816. package/dist/src/runtime.js.map +7 -0
  817. package/dist/src/secret-contract.js +13 -0
  818. package/dist/src/secret-contract.js.map +7 -0
  819. package/dist/src/session-route.js +25 -0
  820. package/dist/src/session-route.js.map +7 -0
  821. package/dist/src/setup-bootstrap.js +124 -0
  822. package/dist/src/setup-bootstrap.js.map +7 -0
  823. package/dist/src/setup-config.js +28 -0
  824. package/dist/src/setup-config.js.map +7 -0
  825. package/dist/src/setup-contract.js +16 -0
  826. package/dist/src/setup-contract.js.map +7 -0
  827. package/dist/src/setup-core.js +25 -0
  828. package/dist/src/setup-core.js.map +7 -0
  829. package/dist/src/setup-surface.js +45 -0
  830. package/dist/src/setup-surface.js.map +7 -0
  831. package/dist/src/startup-maintenance.js +29 -0
  832. package/dist/src/startup-maintenance.js.map +7 -0
  833. package/dist/src/storage-paths.js +24 -0
  834. package/dist/src/storage-paths.js.map +7 -0
  835. package/dist/src/test-helpers.js +49 -0
  836. package/dist/src/test-helpers.js.map +7 -0
  837. package/dist/src/test-mocks.js +40 -0
  838. package/dist/src/test-mocks.js.map +7 -0
  839. package/dist/src/test-runtime.js +65 -0
  840. package/dist/src/test-runtime.js.map +7 -0
  841. package/dist/src/tool-actions.js +68 -0
  842. package/dist/src/tool-actions.js.map +7 -0
  843. package/dist/src/tool-actions.runtime.js +73 -0
  844. package/dist/src/tool-actions.runtime.js.map +7 -0
  845. package/dist/src/types.js +7 -0
  846. package/dist/src/types.js.map +7 -0
  847. package/dist/test-api.js +82 -0
  848. package/dist/test-api.js.map +7 -0
  849. package/dist/thread-bindings-runtime.js +15 -0
  850. package/dist/thread-bindings-runtime.js.map +7 -0
  851. package/package.json +12 -6
  852. package/CHANGELOG.md +0 -164
  853. package/ENDOFFILE +0 -0
  854. package/EOF +0 -0
  855. package/SPEC-SUPPORT.md +0 -116
  856. package/YAMLEND +0 -0
  857. package/api.ts +0 -18
  858. package/archipelagolab-lobi-1.0.0.tgz +0 -0
  859. package/archipelagolab-lobi-1.0.1.tgz +0 -0
  860. package/auth-presence.ts +0 -56
  861. package/channel-plugin-api.ts +0 -3
  862. package/cli-metadata.ts +0 -11
  863. package/contract-api.ts +0 -17
  864. package/docs/CHECKLIST.md +0 -83
  865. package/docs/FORK_SDK_GUIDE.md +0 -279
  866. package/helper-api.ts +0 -3
  867. package/index.test.ts +0 -61
  868. package/index.ts +0 -65
  869. package/plugin-entry.handlers.runtime.ts +0 -1
  870. package/runtime-api.ts +0 -54
  871. package/runtime-heavy-api.ts +0 -1
  872. package/scripts/migrate-to-lobi.sh +0 -72
  873. package/secret-contract-api.ts +0 -5
  874. package/setup-entry.ts +0 -13
  875. package/src/account-selection.test.ts +0 -124
  876. package/src/account-selection.ts +0 -226
  877. package/src/actions.account-propagation.test.ts +0 -251
  878. package/src/actions.test.ts +0 -251
  879. package/src/actions.ts +0 -336
  880. package/src/approval-auth.test.ts +0 -23
  881. package/src/approval-auth.ts +0 -25
  882. package/src/approval-handler.runtime.test.ts +0 -46
  883. package/src/approval-handler.runtime.ts +0 -400
  884. package/src/approval-ids.ts +0 -6
  885. package/src/approval-native.test.ts +0 -329
  886. package/src/approval-native.ts +0 -336
  887. package/src/approval-reactions.test.ts +0 -107
  888. package/src/approval-reactions.ts +0 -158
  889. package/src/auth-precedence.ts +0 -61
  890. package/src/channel-account-paths.ts +0 -92
  891. package/src/channel.account-paths.test.ts +0 -102
  892. package/src/channel.directory.test.ts +0 -601
  893. package/src/channel.resolve.test.ts +0 -38
  894. package/src/channel.runtime.ts +0 -16
  895. package/src/channel.setup.test.ts +0 -269
  896. package/src/channel.ts +0 -570
  897. package/src/cli-metadata.ts +0 -19
  898. package/src/cli.test.ts +0 -1015
  899. package/src/cli.ts +0 -1198
  900. package/src/config-adapter.ts +0 -41
  901. package/src/config-schema.test.ts +0 -90
  902. package/src/config-schema.ts +0 -114
  903. package/src/directory-live.test.ts +0 -200
  904. package/src/directory-live.ts +0 -238
  905. package/src/doctor-contract.ts +0 -287
  906. package/src/doctor.test.ts +0 -440
  907. package/src/doctor.ts +0 -262
  908. package/src/env-vars.ts +0 -92
  909. package/src/exec-approval-resolver.test.ts +0 -68
  910. package/src/exec-approval-resolver.ts +0 -23
  911. package/src/exec-approvals.test.ts +0 -483
  912. package/src/exec-approvals.ts +0 -290
  913. package/src/group-mentions.ts +0 -41
  914. package/src/legacy-crypto-inspector-availability.test.ts +0 -81
  915. package/src/legacy-crypto-inspector-availability.ts +0 -60
  916. package/src/legacy-crypto.test.ts +0 -234
  917. package/src/legacy-crypto.ts +0 -549
  918. package/src/legacy-state.test.ts +0 -86
  919. package/src/legacy-state.ts +0 -156
  920. package/src/matrix/account-config.ts +0 -150
  921. package/src/matrix/accounts.readiness.test.ts +0 -27
  922. package/src/matrix/accounts.test.ts +0 -757
  923. package/src/matrix/accounts.ts +0 -194
  924. package/src/matrix/actions/client.test.ts +0 -215
  925. package/src/matrix/actions/client.ts +0 -31
  926. package/src/matrix/actions/devices.test.ts +0 -114
  927. package/src/matrix/actions/devices.ts +0 -34
  928. package/src/matrix/actions/limits.test.ts +0 -15
  929. package/src/matrix/actions/limits.ts +0 -6
  930. package/src/matrix/actions/messages.test.ts +0 -289
  931. package/src/matrix/actions/messages.ts +0 -123
  932. package/src/matrix/actions/pins.test.ts +0 -74
  933. package/src/matrix/actions/pins.ts +0 -64
  934. package/src/matrix/actions/polls.test.ts +0 -71
  935. package/src/matrix/actions/polls.ts +0 -109
  936. package/src/matrix/actions/profile.test.ts +0 -109
  937. package/src/matrix/actions/profile.ts +0 -37
  938. package/src/matrix/actions/reactions.test.ts +0 -135
  939. package/src/matrix/actions/reactions.ts +0 -59
  940. package/src/matrix/actions/room.test.ts +0 -79
  941. package/src/matrix/actions/room.ts +0 -71
  942. package/src/matrix/actions/summary.test.ts +0 -87
  943. package/src/matrix/actions/summary.ts +0 -88
  944. package/src/matrix/actions/types.ts +0 -82
  945. package/src/matrix/actions/verification.test.ts +0 -105
  946. package/src/matrix/actions/verification.ts +0 -237
  947. package/src/matrix/actions.ts +0 -37
  948. package/src/matrix/active-client.ts +0 -26
  949. package/src/matrix/async-lock.ts +0 -18
  950. package/src/matrix/backup-health.ts +0 -115
  951. package/src/matrix/client/config-runtime-api.ts +0 -14
  952. package/src/matrix/client/config-secret-input.runtime.ts +0 -1
  953. package/src/matrix/client/config.ts +0 -982
  954. package/src/matrix/client/create-client.test.ts +0 -115
  955. package/src/matrix/client/create-client.ts +0 -101
  956. package/src/matrix/client/env-auth.ts +0 -6
  957. package/src/matrix/client/file-sync-store.test.ts +0 -265
  958. package/src/matrix/client/file-sync-store.ts +0 -289
  959. package/src/matrix/client/logging.ts +0 -123
  960. package/src/matrix/client/migration-snapshot.runtime.ts +0 -1
  961. package/src/matrix/client/private-network-host.ts +0 -56
  962. package/src/matrix/client/runtime.ts +0 -4
  963. package/src/matrix/client/shared.test.ts +0 -344
  964. package/src/matrix/client/shared.ts +0 -306
  965. package/src/matrix/client/storage.test.ts +0 -634
  966. package/src/matrix/client/storage.ts +0 -544
  967. package/src/matrix/client/types.ts +0 -50
  968. package/src/matrix/client-bootstrap.test.ts +0 -84
  969. package/src/matrix/client-bootstrap.ts +0 -164
  970. package/src/matrix/client-resolver.test-helpers.ts +0 -147
  971. package/src/matrix/client.test.ts +0 -1521
  972. package/src/matrix/client.ts +0 -23
  973. package/src/matrix/config-paths.ts +0 -31
  974. package/src/matrix/config-update.test.ts +0 -237
  975. package/src/matrix/config-update.ts +0 -291
  976. package/src/matrix/credentials-read.ts +0 -206
  977. package/src/matrix/credentials-write.runtime.ts +0 -26
  978. package/src/matrix/credentials.test.ts +0 -501
  979. package/src/matrix/credentials.ts +0 -95
  980. package/src/matrix/deps.test.ts +0 -74
  981. package/src/matrix/deps.ts +0 -225
  982. package/src/matrix/device-health.test.ts +0 -45
  983. package/src/matrix/device-health.ts +0 -31
  984. package/src/matrix/direct-management.test.ts +0 -350
  985. package/src/matrix/direct-management.ts +0 -347
  986. package/src/matrix/direct-room.test.ts +0 -61
  987. package/src/matrix/direct-room.ts +0 -128
  988. package/src/matrix/draft-stream.test.ts +0 -406
  989. package/src/matrix/draft-stream.ts +0 -216
  990. package/src/matrix/encryption-guidance.ts +0 -27
  991. package/src/matrix/errors.ts +0 -21
  992. package/src/matrix/format.test.ts +0 -340
  993. package/src/matrix/format.ts +0 -428
  994. package/src/matrix/legacy-crypto-inspector.ts +0 -95
  995. package/src/matrix/media-errors.ts +0 -20
  996. package/src/matrix/media-text.ts +0 -169
  997. package/src/matrix/monitor/access-state.test.ts +0 -45
  998. package/src/matrix/monitor/access-state.ts +0 -77
  999. package/src/matrix/monitor/ack-config.test.ts +0 -57
  1000. package/src/matrix/monitor/ack-config.ts +0 -26
  1001. package/src/matrix/monitor/allowlist.test.ts +0 -45
  1002. package/src/matrix/monitor/allowlist.ts +0 -94
  1003. package/src/matrix/monitor/auto-join.test.ts +0 -203
  1004. package/src/matrix/monitor/auto-join.ts +0 -86
  1005. package/src/matrix/monitor/config.test.ts +0 -197
  1006. package/src/matrix/monitor/config.ts +0 -303
  1007. package/src/matrix/monitor/context-summary.ts +0 -43
  1008. package/src/matrix/monitor/direct.test.ts +0 -529
  1009. package/src/matrix/monitor/direct.ts +0 -270
  1010. package/src/matrix/monitor/events.test.ts +0 -1524
  1011. package/src/matrix/monitor/events.ts +0 -213
  1012. package/src/matrix/monitor/handler.body-for-agent.test.ts +0 -396
  1013. package/src/matrix/monitor/handler.group-history.test.ts +0 -648
  1014. package/src/matrix/monitor/handler.media-failure.test.ts +0 -267
  1015. package/src/matrix/monitor/handler.test-helpers.ts +0 -308
  1016. package/src/matrix/monitor/handler.test.ts +0 -2952
  1017. package/src/matrix/monitor/handler.thread-root-media.test.ts +0 -82
  1018. package/src/matrix/monitor/handler.ts +0 -1679
  1019. package/src/matrix/monitor/inbound-dedupe.test.ts +0 -146
  1020. package/src/matrix/monitor/inbound-dedupe.ts +0 -267
  1021. package/src/matrix/monitor/index.test.ts +0 -920
  1022. package/src/matrix/monitor/index.ts +0 -434
  1023. package/src/matrix/monitor/legacy-crypto-restore.test.ts +0 -206
  1024. package/src/matrix/monitor/legacy-crypto-restore.ts +0 -139
  1025. package/src/matrix/monitor/location.ts +0 -100
  1026. package/src/matrix/monitor/media.test.ts +0 -159
  1027. package/src/matrix/monitor/media.ts +0 -119
  1028. package/src/matrix/monitor/mentions.test.ts +0 -289
  1029. package/src/matrix/monitor/mentions.ts +0 -177
  1030. package/src/matrix/monitor/reaction-events.test.ts +0 -326
  1031. package/src/matrix/monitor/reaction-events.ts +0 -187
  1032. package/src/matrix/monitor/recent-invite.test.ts +0 -92
  1033. package/src/matrix/monitor/recent-invite.ts +0 -30
  1034. package/src/matrix/monitor/replies.test.ts +0 -265
  1035. package/src/matrix/monitor/replies.ts +0 -136
  1036. package/src/matrix/monitor/reply-context.test.ts +0 -276
  1037. package/src/matrix/monitor/reply-context.ts +0 -92
  1038. package/src/matrix/monitor/room-history.test.ts +0 -258
  1039. package/src/matrix/monitor/room-history.ts +0 -301
  1040. package/src/matrix/monitor/room-info.test.ts +0 -201
  1041. package/src/matrix/monitor/room-info.ts +0 -126
  1042. package/src/matrix/monitor/rooms.test.ts +0 -121
  1043. package/src/matrix/monitor/rooms.ts +0 -52
  1044. package/src/matrix/monitor/route.test.ts +0 -255
  1045. package/src/matrix/monitor/route.ts +0 -178
  1046. package/src/matrix/monitor/runtime-api.ts +0 -31
  1047. package/src/matrix/monitor/startup-verification.test.ts +0 -294
  1048. package/src/matrix/monitor/startup-verification.ts +0 -237
  1049. package/src/matrix/monitor/startup.test.ts +0 -257
  1050. package/src/matrix/monitor/startup.ts +0 -218
  1051. package/src/matrix/monitor/status.ts +0 -111
  1052. package/src/matrix/monitor/sync-lifecycle.test.ts +0 -224
  1053. package/src/matrix/monitor/sync-lifecycle.ts +0 -91
  1054. package/src/matrix/monitor/task-runner.ts +0 -38
  1055. package/src/matrix/monitor/thread-context.test.ts +0 -149
  1056. package/src/matrix/monitor/thread-context.ts +0 -108
  1057. package/src/matrix/monitor/threads.test.ts +0 -68
  1058. package/src/matrix/monitor/threads.ts +0 -85
  1059. package/src/matrix/monitor/types.ts +0 -30
  1060. package/src/matrix/monitor/verification-events.ts +0 -627
  1061. package/src/matrix/monitor/verification-utils.test.ts +0 -47
  1062. package/src/matrix/monitor/verification-utils.ts +0 -46
  1063. package/src/matrix/outbound-media-runtime.ts +0 -1
  1064. package/src/matrix/poll-summary.ts +0 -110
  1065. package/src/matrix/poll-types.test.ts +0 -205
  1066. package/src/matrix/poll-types.ts +0 -433
  1067. package/src/matrix/probe.runtime.ts +0 -4
  1068. package/src/matrix/probe.test.ts +0 -154
  1069. package/src/matrix/probe.ts +0 -96
  1070. package/src/matrix/profile.test.ts +0 -154
  1071. package/src/matrix/profile.ts +0 -184
  1072. package/src/matrix/reaction-common.test.ts +0 -96
  1073. package/src/matrix/reaction-common.ts +0 -147
  1074. package/src/matrix/sdk/crypto-bootstrap.test.ts +0 -505
  1075. package/src/matrix/sdk/crypto-bootstrap.ts +0 -341
  1076. package/src/matrix/sdk/crypto-facade.test.ts +0 -197
  1077. package/src/matrix/sdk/crypto-facade.ts +0 -207
  1078. package/src/matrix/sdk/crypto-node.runtime.test.ts +0 -27
  1079. package/src/matrix/sdk/crypto-node.runtime.ts +0 -9
  1080. package/src/matrix/sdk/crypto-runtime.ts +0 -11
  1081. package/src/matrix/sdk/decrypt-bridge.ts +0 -356
  1082. package/src/matrix/sdk/event-helpers.test.ts +0 -60
  1083. package/src/matrix/sdk/event-helpers.ts +0 -71
  1084. package/src/matrix/sdk/http-client.test.ts +0 -134
  1085. package/src/matrix/sdk/http-client.ts +0 -87
  1086. package/src/matrix/sdk/idb-persistence-lock.ts +0 -51
  1087. package/src/matrix/sdk/idb-persistence.lock-order.test.ts +0 -108
  1088. package/src/matrix/sdk/idb-persistence.test-helpers.ts +0 -88
  1089. package/src/matrix/sdk/idb-persistence.test.ts +0 -149
  1090. package/src/matrix/sdk/idb-persistence.ts +0 -283
  1091. package/src/matrix/sdk/logger.test.ts +0 -25
  1092. package/src/matrix/sdk/logger.ts +0 -108
  1093. package/src/matrix/sdk/read-response-with-limit.ts +0 -19
  1094. package/src/matrix/sdk/recovery-key-store.test.ts +0 -385
  1095. package/src/matrix/sdk/recovery-key-store.ts +0 -430
  1096. package/src/matrix/sdk/transport.test.ts +0 -161
  1097. package/src/matrix/sdk/transport.ts +0 -344
  1098. package/src/matrix/sdk/types.ts +0 -236
  1099. package/src/matrix/sdk/verification-manager.test.ts +0 -509
  1100. package/src/matrix/sdk/verification-manager.ts +0 -694
  1101. package/src/matrix/sdk/verification-status.ts +0 -23
  1102. package/src/matrix/sdk.test.ts +0 -2568
  1103. package/src/matrix/sdk.ts +0 -1789
  1104. package/src/matrix/send/client.test.ts +0 -174
  1105. package/src/matrix/send/client.ts +0 -90
  1106. package/src/matrix/send/formatting.ts +0 -189
  1107. package/src/matrix/send/media.ts +0 -244
  1108. package/src/matrix/send/targets.test.ts +0 -254
  1109. package/src/matrix/send/targets.ts +0 -104
  1110. package/src/matrix/send/types.ts +0 -134
  1111. package/src/matrix/send.test.ts +0 -958
  1112. package/src/matrix/send.ts +0 -609
  1113. package/src/matrix/session-store-metadata.ts +0 -108
  1114. package/src/matrix/startup-abort.ts +0 -44
  1115. package/src/matrix/sync-state.ts +0 -27
  1116. package/src/matrix/target-ids.ts +0 -102
  1117. package/src/matrix/thread-bindings-shared.ts +0 -201
  1118. package/src/matrix/thread-bindings.test.ts +0 -673
  1119. package/src/matrix/thread-bindings.ts +0 -577
  1120. package/src/matrix-migration.runtime.ts +0 -9
  1121. package/src/migration-config.test.ts +0 -228
  1122. package/src/migration-config.ts +0 -243
  1123. package/src/migration-snapshot-backup.ts +0 -117
  1124. package/src/migration-snapshot.test.ts +0 -184
  1125. package/src/migration-snapshot.ts +0 -55
  1126. package/src/onboarding.resolve.test.ts +0 -55
  1127. package/src/onboarding.test-harness.ts +0 -158
  1128. package/src/onboarding.test.ts +0 -665
  1129. package/src/onboarding.ts +0 -773
  1130. package/src/outbound.test.ts +0 -173
  1131. package/src/outbound.ts +0 -78
  1132. package/src/plugin-entry.runtime.js +0 -159
  1133. package/src/plugin-entry.runtime.test.ts +0 -108
  1134. package/src/plugin-entry.runtime.ts +0 -68
  1135. package/src/profile-update.ts +0 -68
  1136. package/src/record-shared.ts +0 -3
  1137. package/src/resolve-targets.test.ts +0 -178
  1138. package/src/resolve-targets.ts +0 -175
  1139. package/src/resolver.ts +0 -21
  1140. package/src/runtime-api.ts +0 -144
  1141. package/src/runtime.ts +0 -7
  1142. package/src/secret-contract.ts +0 -174
  1143. package/src/session-route.test.ts +0 -315
  1144. package/src/session-route.ts +0 -113
  1145. package/src/setup-bootstrap.ts +0 -94
  1146. package/src/setup-config.ts +0 -222
  1147. package/src/setup-contract.ts +0 -89
  1148. package/src/setup-core.test.ts +0 -326
  1149. package/src/setup-core.ts +0 -50
  1150. package/src/setup-surface.ts +0 -4
  1151. package/src/startup-maintenance.test.ts +0 -227
  1152. package/src/startup-maintenance.ts +0 -114
  1153. package/src/storage-paths.ts +0 -92
  1154. package/src/test-helpers.ts +0 -42
  1155. package/src/test-mocks.ts +0 -55
  1156. package/src/test-runtime.ts +0 -72
  1157. package/src/test-support/monitor-route-test-support.ts +0 -8
  1158. package/src/tool-actions.runtime.ts +0 -1
  1159. package/src/tool-actions.test.ts +0 -422
  1160. package/src/tool-actions.ts +0 -498
  1161. package/src/types.ts +0 -230
  1162. package/test-api.ts +0 -2
  1163. package/thread-bindings-runtime.ts +0 -4
  1164. package/tsconfig.json +0 -16
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/matrix/monitor/handler.ts"],
4
+ "sourcesContent": ["import { resolveControlCommandGate } from \"openclaw/plugin-sdk/command-auth\";\nimport {\n loadSessionStore,\n resolveChannelContextVisibilityMode,\n resolveSessionStoreEntry,\n} from \"openclaw/plugin-sdk/config-runtime\";\nimport { getSessionBindingService } from \"openclaw/plugin-sdk/conversation-runtime\";\nimport { evaluateSupplementalContextVisibility } from \"openclaw/plugin-sdk/security-runtime\";\nimport { normalizeOptionalString } from \"openclaw/plugin-sdk/text-runtime\";\nimport type {\n CoreConfig,\n MatrixRoomConfig,\n MatrixStreamingMode,\n ReplyToMode,\n} from \"../../types.js\";\nimport { createMatrixDraftStream } from \"../draft-stream.js\";\nimport { formatMatrixErrorMessage } from \"../errors.js\";\nimport { isMatrixMediaSizeLimitError } from \"../media-errors.js\";\nimport {\n formatMatrixMediaTooLargeText,\n formatMatrixMediaUnavailableText,\n formatMatrixMessageText,\n resolveMatrixMessageAttachment,\n resolveMatrixMessageBody,\n} from \"../media-text.js\";\nimport { fetchMatrixPollSnapshot, type MatrixPollSnapshot } from \"../poll-summary.js\";\nimport {\n formatPollAsText,\n isPollEventType,\n isPollStartType,\n parsePollStartContent,\n} from \"../poll-types.js\";\nimport type { LocationMessageEventContent, MatrixClient } from \"../sdk.js\";\nimport {\n editMessageMatrix,\n reactMatrixMessage,\n sendMessageMatrix,\n sendReadReceiptMatrix,\n sendTypingMatrix,\n} from \"../send.js\";\nimport { MATRIX_OPENCLAW_FINALIZED_PREVIEW_KEY } from \"../send/types.js\";\nimport { resolveMatrixStoredSessionMeta } from \"../session-store-metadata.js\";\nimport { resolveMatrixMonitorAccessState } from \"./access-state.js\";\nimport { resolveMatrixAckReactionConfig } from \"./ack-config.js\";\nimport { resolveMatrixAllowListMatch } from \"./allowlist.js\";\nimport type { MatrixInboundEventDeduper } from \"./inbound-dedupe.js\";\nimport { resolveMatrixLocation, type MatrixLocationPayload } from \"./location.js\";\nimport { downloadMatrixMedia } from \"./media.js\";\nimport { resolveMentions } from \"./mentions.js\";\nimport { handleInboundMatrixReaction } from \"./reaction-events.js\";\nimport { deliverMatrixReplies } from \"./replies.js\";\nimport { createMatrixReplyContextResolver } from \"./reply-context.js\";\nimport { createRoomHistoryTracker } from \"./room-history.js\";\nimport type { HistoryEntry } from \"./room-history.js\";\nimport { resolveMatrixRoomConfig } from \"./rooms.js\";\nimport { resolveMatrixInboundRoute } from \"./route.js\";\nimport {\n createReplyPrefixOptions,\n createTypingCallbacks,\n ensureConfiguredAcpBindingReady,\n formatAllowlistMatchMeta,\n getAgentScopedMediaLocalRoots,\n logInboundDrop,\n logTypingFailure,\n type BlockReplyContext,\n type PluginRuntime,\n type ReplyPayload,\n type RuntimeEnv,\n type RuntimeLogger,\n} from \"./runtime-api.js\";\nimport { createMatrixThreadContextResolver } from \"./thread-context.js\";\nimport {\n resolveMatrixReplyToEventId,\n resolveMatrixThreadRootId,\n resolveMatrixThreadRouting,\n} from \"./threads.js\";\nimport type { MatrixRawEvent, RoomMessageEventContent } from \"./types.js\";\nimport { EventType, RelationType } from \"./types.js\";\nimport { isMatrixVerificationRoomMessage } from \"./verification-utils.js\";\n\nconst ALLOW_FROM_STORE_CACHE_TTL_MS = 30_000;\nconst PAIRING_REPLY_COOLDOWN_MS = 5 * 60_000;\nconst MAX_TRACKED_PAIRING_REPLY_SENDERS = 512;\nconst MAX_TRACKED_SHARED_DM_CONTEXT_NOTICES = 512;\ntype MatrixAllowBotsMode = \"off\" | \"mentions\" | \"all\";\n\nasync function redactMatrixDraftEvent(\n client: MatrixClient,\n roomId: string,\n draftEventId: string,\n): Promise<void> {\n await client.redactEvent(roomId, draftEventId).catch(() => {});\n}\n\nfunction buildMatrixFinalizedPreviewContent(): Record<string, unknown> {\n return { [MATRIX_OPENCLAW_FINALIZED_PREVIEW_KEY]: true };\n}\n\nexport type MatrixMonitorHandlerParams = {\n client: MatrixClient;\n core: PluginRuntime;\n cfg: CoreConfig;\n accountId: string;\n runtime: RuntimeEnv;\n logger: RuntimeLogger;\n logVerboseMessage: (message: string) => void;\n allowFrom: string[];\n groupAllowFrom?: string[];\n roomsConfig?: Record<string, MatrixRoomConfig>;\n accountAllowBots?: boolean | \"mentions\";\n configuredBotUserIds?: ReadonlySet<string>;\n groupPolicy: \"open\" | \"allowlist\" | \"disabled\";\n replyToMode: ReplyToMode;\n threadReplies: \"off\" | \"inbound\" | \"always\";\n /** DM-specific threadReplies override. Falls back to threadReplies when absent. */\n dmThreadReplies?: \"off\" | \"inbound\" | \"always\";\n /** DM session grouping behavior. */\n dmSessionScope?: \"per-user\" | \"per-room\";\n streaming: MatrixStreamingMode;\n blockStreamingEnabled: boolean;\n dmEnabled: boolean;\n dmPolicy: \"open\" | \"pairing\" | \"allowlist\" | \"disabled\";\n textLimit: number;\n mediaMaxBytes: number;\n historyLimit: number;\n startupMs: number;\n startupGraceMs: number;\n dropPreStartupMessages: boolean;\n inboundDeduper?: Pick<MatrixInboundEventDeduper, \"claimEvent\" | \"commitEvent\" | \"releaseEvent\">;\n directTracker: {\n isDirectMessage: (params: {\n roomId: string;\n senderId: string;\n selfUserId: string;\n }) => Promise<boolean>;\n };\n getRoomInfo: (\n roomId: string,\n opts?: { includeAliases?: boolean },\n ) => Promise<{ name?: string; canonicalAlias?: string; altAliases: string[] }>;\n getMemberDisplayName: (roomId: string, userId: string) => Promise<string>;\n needsRoomAliasesForConfig: boolean;\n};\n\nfunction resolveMatrixMentionPrecheckText(params: {\n eventType: string;\n content: RoomMessageEventContent;\n locationText?: string | null;\n}): string {\n if (params.locationText?.trim()) {\n return params.locationText.trim();\n }\n if (typeof params.content.body === \"string\" && params.content.body.trim()) {\n return params.content.body.trim();\n }\n if (isPollStartType(params.eventType)) {\n const parsed = parsePollStartContent(params.content as never);\n if (parsed) {\n return formatPollAsText(parsed);\n }\n }\n return \"\";\n}\n\nfunction resolveMatrixInboundBodyText(params: {\n rawBody: string;\n filename?: string;\n mediaPlaceholder?: string;\n msgtype?: string;\n hadMediaUrl: boolean;\n mediaDownloadFailed: boolean;\n mediaSizeLimitExceeded?: boolean;\n}): string {\n if (params.mediaPlaceholder) {\n return params.rawBody || params.mediaPlaceholder;\n }\n if (!params.mediaDownloadFailed || !params.hadMediaUrl) {\n return params.rawBody;\n }\n if (params.mediaSizeLimitExceeded) {\n return formatMatrixMediaTooLargeText({\n body: params.rawBody,\n filename: params.filename,\n msgtype: params.msgtype,\n });\n }\n return formatMatrixMediaUnavailableText({\n body: params.rawBody,\n filename: params.filename,\n msgtype: params.msgtype,\n });\n}\n\nfunction markTrackedRoomIfFirst(set: Set<string>, roomId: string): boolean {\n if (set.has(roomId)) {\n return false;\n }\n set.add(roomId);\n if (set.size > MAX_TRACKED_SHARED_DM_CONTEXT_NOTICES) {\n const oldest = set.keys().next().value;\n if (typeof oldest === \"string\") {\n set.delete(oldest);\n }\n }\n return true;\n}\n\nfunction resolveMatrixSharedDmContextNotice(params: {\n storePath: string;\n sessionKey: string;\n roomId: string;\n accountId: string;\n dmSessionScope?: \"per-user\" | \"per-room\";\n sentRooms: Set<string>;\n logVerboseMessage: (message: string) => void;\n}): string | null {\n if ((params.dmSessionScope ?? \"per-user\") === \"per-room\") {\n return null;\n }\n if (params.sentRooms.has(params.roomId)) {\n return null;\n }\n\n try {\n const store = loadSessionStore(params.storePath);\n const currentSession = resolveMatrixStoredSessionMeta(\n resolveSessionStoreEntry({\n store,\n sessionKey: params.sessionKey,\n }).existing,\n );\n if (!currentSession) {\n return null;\n }\n if (currentSession.channel && currentSession.channel !== \"matrix\") {\n return null;\n }\n if (currentSession.accountId && currentSession.accountId !== params.accountId) {\n return null;\n }\n if (!currentSession.directUserId) {\n return null;\n }\n if (!currentSession.roomId || currentSession.roomId === params.roomId) {\n return null;\n }\n\n return [\n \"This Matrix DM is sharing a session with another Matrix DM room.\",\n \"Use /focus here for a one-off isolated thread session when thread bindings are enabled, or set\",\n \"channels.lobi.dm.sessionScope to per-room to isolate each Matrix DM room.\",\n ].join(\" \");\n } catch (err) {\n params.logVerboseMessage(\n `matrix: failed checking shared DM session notice room=${params.roomId} (${String(err)})`,\n );\n return null;\n }\n}\n\nfunction resolveMatrixPendingHistoryText(params: {\n mentionPrecheckText: string;\n content: RoomMessageEventContent;\n mediaUrl?: string;\n}): string {\n if (params.mentionPrecheckText) {\n return params.mentionPrecheckText;\n }\n if (!params.mediaUrl) {\n return \"\";\n }\n const body = typeof params.content.body === \"string\" ? params.content.body.trim() : undefined;\n const filename =\n typeof params.content.filename === \"string\" ? params.content.filename.trim() : undefined;\n const msgtype = typeof params.content.msgtype === \"string\" ? params.content.msgtype : undefined;\n return (\n formatMatrixMessageText({\n body: resolveMatrixMessageBody({ body, filename, msgtype }),\n attachment: resolveMatrixMessageAttachment({ body, filename, msgtype }),\n }) ?? \"\"\n );\n}\n\nfunction resolveMatrixAllowBotsMode(value?: boolean | \"mentions\"): MatrixAllowBotsMode {\n if (value === true) {\n return \"all\";\n }\n if (value === \"mentions\") {\n return \"mentions\";\n }\n return \"off\";\n}\n\nexport function createMatrixRoomMessageHandler(params: MatrixMonitorHandlerParams) {\n const {\n client,\n core,\n cfg,\n accountId,\n runtime,\n logger,\n logVerboseMessage,\n allowFrom,\n groupAllowFrom = [],\n roomsConfig,\n accountAllowBots,\n configuredBotUserIds = new Set<string>(),\n groupPolicy,\n replyToMode,\n threadReplies,\n dmThreadReplies,\n dmSessionScope,\n streaming,\n blockStreamingEnabled,\n dmEnabled,\n dmPolicy,\n textLimit,\n mediaMaxBytes,\n historyLimit,\n startupMs,\n startupGraceMs,\n dropPreStartupMessages,\n inboundDeduper,\n directTracker,\n getRoomInfo,\n getMemberDisplayName,\n needsRoomAliasesForConfig,\n } = params;\n const contextVisibilityMode = resolveChannelContextVisibilityMode({\n cfg,\n channel: \"matrix\",\n accountId,\n });\n let cachedStoreAllowFrom: {\n value: string[];\n expiresAtMs: number;\n } | null = null;\n const pairingReplySentAtMsBySender = new Map<string, number>();\n const resolveThreadContext = createMatrixThreadContextResolver({\n client,\n getMemberDisplayName,\n logVerboseMessage,\n });\n const resolveReplyContext = createMatrixReplyContextResolver({\n client,\n getMemberDisplayName,\n logVerboseMessage,\n });\n const roomHistoryTracker = createRoomHistoryTracker();\n const roomIngressTails = new Map<string, Promise<void>>();\n const sharedDmContextNoticeRooms = new Set<string>();\n\n const readStoreAllowFrom = async (): Promise<string[]> => {\n const now = Date.now();\n if (cachedStoreAllowFrom && now < cachedStoreAllowFrom.expiresAtMs) {\n return cachedStoreAllowFrom.value;\n }\n const value = await core.channel.pairing\n .readAllowFromStore({\n channel: \"matrix\",\n env: process.env,\n accountId,\n })\n .catch(() => []);\n cachedStoreAllowFrom = {\n value,\n expiresAtMs: now + ALLOW_FROM_STORE_CACHE_TTL_MS,\n };\n return value;\n };\n\n const shouldSendPairingReply = (senderId: string, created: boolean): boolean => {\n const now = Date.now();\n if (created) {\n pairingReplySentAtMsBySender.set(senderId, now);\n return true;\n }\n const lastSentAtMs = pairingReplySentAtMsBySender.get(senderId);\n if (typeof lastSentAtMs === \"number\" && now - lastSentAtMs < PAIRING_REPLY_COOLDOWN_MS) {\n return false;\n }\n pairingReplySentAtMsBySender.set(senderId, now);\n if (pairingReplySentAtMsBySender.size > MAX_TRACKED_PAIRING_REPLY_SENDERS) {\n const oldestSender = pairingReplySentAtMsBySender.keys().next().value;\n if (typeof oldestSender === \"string\") {\n pairingReplySentAtMsBySender.delete(oldestSender);\n }\n }\n return true;\n };\n\n const runRoomIngress = async <T>(roomId: string, task: () => Promise<T>): Promise<T> => {\n const previous = roomIngressTails.get(roomId) ?? Promise.resolve();\n let releaseCurrent!: () => void;\n const current = new Promise<void>((resolve) => {\n releaseCurrent = resolve;\n });\n const chain = previous.catch(() => {}).then(() => current);\n roomIngressTails.set(roomId, chain);\n await previous.catch(() => {});\n try {\n return await task();\n } finally {\n releaseCurrent();\n if (roomIngressTails.get(roomId) === chain) {\n roomIngressTails.delete(roomId);\n }\n }\n };\n\n return async (roomId: string, event: MatrixRawEvent) => {\n const eventId = typeof event.event_id === \"string\" ? event.event_id.trim() : \"\";\n let claimedInboundEvent = false;\n let draftStreamRef: ReturnType<typeof createMatrixDraftStream> | undefined;\n let draftConsumed = false;\n try {\n const eventType = event.type;\n if (eventType === EventType.RoomMessageEncrypted) {\n // Encrypted payloads are emitted separately after decryption.\n return;\n }\n\n const isPollEvent = isPollEventType(eventType);\n const isReactionEvent = eventType === EventType.Reaction;\n const locationContent = event.content as LocationMessageEventContent;\n const isLocationEvent =\n eventType === EventType.Location ||\n (eventType === EventType.RoomMessage && locationContent.msgtype === EventType.Location);\n if (\n eventType !== EventType.RoomMessage &&\n !isPollEvent &&\n !isLocationEvent &&\n !isReactionEvent\n ) {\n return;\n }\n logVerboseMessage(\n `matrix: inbound event room=${roomId} type=${eventType} id=${event.event_id ?? \"unknown\"}`,\n );\n if (event.unsigned?.redacted_because) {\n return;\n }\n const senderId = event.sender;\n if (!senderId) {\n return;\n }\n const eventTs = event.origin_server_ts;\n const eventAge = event.unsigned?.age;\n const commitInboundEventIfClaimed = async () => {\n if (!claimedInboundEvent || !inboundDeduper || !eventId) {\n return;\n }\n await inboundDeduper.commitEvent({ roomId, eventId });\n claimedInboundEvent = false;\n };\n const readIngressPrefix = async () => {\n const selfUserId = await client.getUserId();\n if (senderId === selfUserId) {\n return undefined;\n }\n if (dropPreStartupMessages) {\n if (typeof eventTs === \"number\" && eventTs < startupMs - startupGraceMs) {\n return undefined;\n }\n if (\n typeof eventTs !== \"number\" &&\n typeof eventAge === \"number\" &&\n eventAge > startupGraceMs\n ) {\n return undefined;\n }\n }\n\n let content = event.content as RoomMessageEventContent;\n\n if (\n eventType === EventType.RoomMessage &&\n isMatrixVerificationRoomMessage({\n msgtype: (content as { msgtype?: unknown }).msgtype,\n body: content.body,\n })\n ) {\n logVerboseMessage(`matrix: skip verification/system room message room=${roomId}`);\n return undefined;\n }\n\n const locationPayload: MatrixLocationPayload | null = resolveMatrixLocation({\n eventType,\n content: content as LocationMessageEventContent,\n });\n\n const relates = content[\"m.relates_to\"];\n if (relates && \"rel_type\" in relates && relates.rel_type === RelationType.Replace) {\n return undefined;\n }\n if (eventId && inboundDeduper) {\n claimedInboundEvent = inboundDeduper.claimEvent({ roomId, eventId });\n if (!claimedInboundEvent) {\n logVerboseMessage(`matrix: skip duplicate inbound event room=${roomId} id=${eventId}`);\n return undefined;\n }\n }\n\n const isDirectMessage = await directTracker.isDirectMessage({\n roomId,\n senderId,\n selfUserId,\n });\n return { content, isDirectMessage, locationPayload, selfUserId };\n };\n const continueIngress = async (params: {\n content: RoomMessageEventContent;\n isDirectMessage: boolean;\n locationPayload: MatrixLocationPayload | null;\n selfUserId: string;\n }) => {\n let content = params.content;\n const isDirectMessage = params.isDirectMessage;\n const isRoom = !isDirectMessage;\n const { locationPayload, selfUserId } = params;\n if (isRoom && groupPolicy === \"disabled\") {\n await commitInboundEventIfClaimed();\n return undefined;\n }\n\n const roomInfoForConfig =\n isRoom && needsRoomAliasesForConfig\n ? await getRoomInfo(roomId, { includeAliases: true })\n : undefined;\n const roomAliasesForConfig = roomInfoForConfig\n ? [roomInfoForConfig.canonicalAlias ?? \"\", ...roomInfoForConfig.altAliases].filter(\n Boolean,\n )\n : [];\n const roomConfigInfo = isRoom\n ? resolveMatrixRoomConfig({\n rooms: roomsConfig,\n roomId,\n aliases: roomAliasesForConfig,\n })\n : undefined;\n const roomConfig = roomConfigInfo?.config;\n const allowBotsMode = resolveMatrixAllowBotsMode(roomConfig?.allowBots ?? accountAllowBots);\n const isConfiguredBotSender = configuredBotUserIds.has(senderId);\n const roomMatchMeta = roomConfigInfo\n ? `matchKey=${roomConfigInfo.matchKey ?? \"none\"} matchSource=${\n roomConfigInfo.matchSource ?? \"none\"\n }`\n : \"matchKey=none matchSource=none\";\n\n if (isConfiguredBotSender && allowBotsMode === \"off\") {\n logVerboseMessage(\n `matrix: drop configured bot sender=${senderId} (allowBots=false${isDirectMessage ? \"\" : `, ${roomMatchMeta}`})`,\n );\n await commitInboundEventIfClaimed();\n return undefined;\n }\n\n if (isRoom && roomConfig && !roomConfigInfo?.allowed) {\n logVerboseMessage(`matrix: room disabled room=${roomId} (${roomMatchMeta})`);\n await commitInboundEventIfClaimed();\n return undefined;\n }\n if (isRoom && groupPolicy === \"allowlist\") {\n if (!roomConfigInfo?.allowlistConfigured) {\n logVerboseMessage(`matrix: drop room message (no allowlist, ${roomMatchMeta})`);\n await commitInboundEventIfClaimed();\n return undefined;\n }\n if (!roomConfig) {\n logVerboseMessage(`matrix: drop room message (not in allowlist, ${roomMatchMeta})`);\n await commitInboundEventIfClaimed();\n return undefined;\n }\n }\n\n let senderNamePromise: Promise<string> | null = null;\n const getSenderName = async (): Promise<string> => {\n senderNamePromise ??= getMemberDisplayName(roomId, senderId).catch(() => senderId);\n return await senderNamePromise;\n };\n const storeAllowFrom = await readStoreAllowFrom();\n const roomUsers = roomConfig?.users ?? [];\n const accessState = resolveMatrixMonitorAccessState({\n allowFrom,\n storeAllowFrom,\n groupAllowFrom,\n roomUsers,\n senderId,\n isRoom,\n });\n const {\n effectiveGroupAllowFrom,\n effectiveRoomUsers,\n groupAllowConfigured,\n directAllowMatch,\n roomUserMatch,\n groupAllowMatch,\n commandAuthorizers,\n } = accessState;\n\n if (isDirectMessage) {\n if (!dmEnabled || dmPolicy === \"disabled\") {\n await commitInboundEventIfClaimed();\n return undefined;\n }\n if (dmPolicy !== \"open\") {\n const allowMatchMeta = formatAllowlistMatchMeta(directAllowMatch);\n if (!directAllowMatch.allowed) {\n if (!isReactionEvent && dmPolicy === \"pairing\") {\n const senderName = await getSenderName();\n const { code, created } = await core.channel.pairing.upsertPairingRequest({\n channel: \"matrix\",\n id: senderId,\n accountId,\n meta: { name: senderName },\n });\n if (shouldSendPairingReply(senderId, created)) {\n const pairingReply = core.channel.pairing.buildPairingReply({\n channel: \"matrix\",\n idLine: `Your Matrix user id: ${senderId}`,\n code,\n });\n logVerboseMessage(\n created\n ? `matrix pairing request sender=${senderId} name=${senderName ?? \"unknown\"} (${allowMatchMeta})`\n : `matrix pairing reminder sender=${senderId} name=${senderName ?? \"unknown\"} (${allowMatchMeta})`,\n );\n try {\n await sendMessageMatrix(\n `room:${roomId}`,\n created\n ? pairingReply\n : `${pairingReply}\\n\\nPairing request is still pending approval. Reusing existing code.`,\n {\n client,\n cfg,\n accountId,\n },\n );\n await commitInboundEventIfClaimed();\n } catch (err) {\n logVerboseMessage(\n `matrix pairing reply failed for ${senderId}: ${String(err)}`,\n );\n return undefined;\n }\n } else {\n logVerboseMessage(\n `matrix pairing reminder suppressed sender=${senderId} (cooldown)`,\n );\n await commitInboundEventIfClaimed();\n }\n }\n if (isReactionEvent || dmPolicy !== \"pairing\") {\n logVerboseMessage(\n `matrix: blocked ${isReactionEvent ? \"reaction\" : \"dm\"} sender ${senderId} (dmPolicy=${dmPolicy}, ${allowMatchMeta})`,\n );\n await commitInboundEventIfClaimed();\n }\n return undefined;\n }\n }\n }\n\n if (isRoom && roomUserMatch && !roomUserMatch.allowed) {\n logVerboseMessage(\n `matrix: blocked sender ${senderId} (room users allowlist, ${roomMatchMeta}, ${formatAllowlistMatchMeta(\n roomUserMatch,\n )})`,\n );\n await commitInboundEventIfClaimed();\n return undefined;\n }\n if (\n isRoom &&\n groupPolicy === \"allowlist\" &&\n effectiveRoomUsers.length === 0 &&\n groupAllowConfigured &&\n groupAllowMatch &&\n !groupAllowMatch.allowed\n ) {\n logVerboseMessage(\n `matrix: blocked sender ${senderId} (groupAllowFrom, ${roomMatchMeta}, ${formatAllowlistMatchMeta(\n groupAllowMatch,\n )})`,\n );\n await commitInboundEventIfClaimed();\n return undefined;\n }\n if (isRoom) {\n logVerboseMessage(`matrix: allow room ${roomId} (${roomMatchMeta})`);\n }\n\n if (isReactionEvent) {\n const senderName = await getSenderName();\n await handleInboundMatrixReaction({\n client,\n core,\n cfg,\n accountId,\n roomId,\n event,\n senderId,\n senderLabel: senderName,\n selfUserId,\n isDirectMessage,\n logVerboseMessage,\n });\n await commitInboundEventIfClaimed();\n return undefined;\n }\n\n let pollSnapshotPromise: Promise<MatrixPollSnapshot | null> | null = null;\n const getPollSnapshot = async (): Promise<MatrixPollSnapshot | null> => {\n if (!isPollEvent) {\n return null;\n }\n pollSnapshotPromise ??= fetchMatrixPollSnapshot(client, roomId, event).catch((err) => {\n logVerboseMessage(\n `matrix: failed resolving poll snapshot room=${roomId} id=${event.event_id ?? \"unknown\"}: ${String(err)}`,\n );\n return null;\n });\n return await pollSnapshotPromise;\n };\n\n const mentionPrecheckText = resolveMatrixMentionPrecheckText({\n eventType,\n content,\n locationText: locationPayload?.text,\n });\n const contentUrl =\n \"url\" in content && typeof content.url === \"string\" ? content.url : undefined;\n const contentFile =\n \"file\" in content && content.file && typeof content.file === \"object\"\n ? content.file\n : undefined;\n const mediaUrl = contentUrl ?? contentFile?.url;\n const pendingHistoryText = resolveMatrixPendingHistoryText({\n mentionPrecheckText,\n content,\n mediaUrl,\n });\n const pendingHistoryPollText =\n !pendingHistoryText && isPollEvent && historyLimit > 0\n ? (await getPollSnapshot())?.text\n : \"\";\n if (!mentionPrecheckText && !mediaUrl && !isPollEvent) {\n await commitInboundEventIfClaimed();\n return undefined;\n }\n\n const _messageId = event.event_id ?? \"\";\n const _threadRootId = resolveMatrixThreadRootId({ event, content });\n const thread = resolveMatrixThreadRouting({\n isDirectMessage,\n threadReplies,\n dmThreadReplies,\n messageId: _messageId,\n threadRootId: _threadRootId,\n });\n const {\n route: _route,\n configuredBinding: _configuredBinding,\n runtimeBindingId: _runtimeBindingId,\n } = resolveMatrixInboundRoute({\n cfg,\n accountId,\n roomId,\n senderId,\n isDirectMessage,\n dmSessionScope,\n threadId: thread.threadId,\n eventTs: eventTs ?? undefined,\n resolveAgentRoute: core.channel.routing.resolveAgentRoute,\n });\n const hasExplicitSessionBinding = _configuredBinding !== null || _runtimeBindingId !== null;\n const agentMentionRegexes = core.channel.mentions.buildMentionRegexes(cfg, _route.agentId);\n const selfDisplayName = content.formatted_body\n ? await getMemberDisplayName(roomId, selfUserId).catch(() => undefined)\n : undefined;\n const { wasMentioned, hasExplicitMention } = resolveMentions({\n content,\n userId: selfUserId,\n displayName: selfDisplayName,\n text: mentionPrecheckText,\n mentionRegexes: agentMentionRegexes,\n });\n if (\n isConfiguredBotSender &&\n allowBotsMode === \"mentions\" &&\n !isDirectMessage &&\n !wasMentioned\n ) {\n logVerboseMessage(\n `matrix: drop configured bot sender=${senderId} (allowBots=mentions, missing mention, ${roomMatchMeta})`,\n );\n await commitInboundEventIfClaimed();\n return undefined;\n }\n const allowTextCommands = core.channel.commands.shouldHandleTextCommands({\n cfg,\n surface: \"matrix\",\n });\n const useAccessGroups = cfg.commands?.useAccessGroups !== false;\n const hasControlCommandInMessage = core.channel.text.hasControlCommand(\n mentionPrecheckText,\n cfg,\n );\n const commandGate = resolveControlCommandGate({\n useAccessGroups,\n authorizers: commandAuthorizers,\n allowTextCommands,\n hasControlCommand: hasControlCommandInMessage,\n });\n const commandAuthorized = commandGate.commandAuthorized;\n if (isRoom && commandGate.shouldBlock) {\n logInboundDrop({\n log: logVerboseMessage,\n channel: \"matrix\",\n reason: \"control command (unauthorized)\",\n target: senderId,\n });\n await commitInboundEventIfClaimed();\n return undefined;\n }\n const shouldRequireMention = isRoom\n ? roomConfig?.autoReply === true\n ? false\n : roomConfig?.autoReply === false\n ? true\n : typeof roomConfig?.requireMention === \"boolean\"\n ? roomConfig?.requireMention\n : true\n : false;\n const shouldBypassMention =\n allowTextCommands &&\n isRoom &&\n shouldRequireMention &&\n !wasMentioned &&\n !hasExplicitMention &&\n commandAuthorized &&\n hasControlCommandInMessage;\n const canDetectMention = agentMentionRegexes.length > 0 || hasExplicitMention;\n if (isRoom && shouldRequireMention && !wasMentioned && !shouldBypassMention) {\n const pendingHistoryBody = pendingHistoryText || pendingHistoryPollText;\n if (historyLimit > 0 && pendingHistoryBody) {\n const pendingEntry: HistoryEntry = {\n sender: senderId,\n body: pendingHistoryBody,\n timestamp: eventTs ?? undefined,\n messageId: _messageId,\n };\n roomHistoryTracker.recordPending(roomId, pendingEntry);\n }\n logger.info(\"skipping room message\", { roomId, reason: \"no-mention\" });\n await commitInboundEventIfClaimed();\n return undefined;\n }\n\n if (isPollEvent) {\n const pollSnapshot = await getPollSnapshot();\n if (!pollSnapshot) {\n return undefined;\n }\n content = {\n msgtype: \"m.text\",\n body: pollSnapshot.text,\n } as unknown as RoomMessageEventContent;\n }\n\n let media: {\n path: string;\n contentType?: string;\n placeholder: string;\n } | null = null;\n let mediaDownloadFailed = false;\n let mediaSizeLimitExceeded = false;\n const finalContentUrl =\n \"url\" in content && typeof content.url === \"string\" ? content.url : undefined;\n const finalContentFile =\n \"file\" in content && content.file && typeof content.file === \"object\"\n ? content.file\n : undefined;\n const finalMediaUrl = finalContentUrl ?? finalContentFile?.url;\n const contentBody = typeof content.body === \"string\" ? content.body.trim() : \"\";\n const contentFilename = typeof content.filename === \"string\" ? content.filename.trim() : \"\";\n const originalFilename = contentFilename || contentBody || undefined;\n const contentInfo =\n \"info\" in content && content.info && typeof content.info === \"object\"\n ? (content.info as { mimetype?: string; size?: number })\n : undefined;\n const contentType = contentInfo?.mimetype;\n const contentSize = typeof contentInfo?.size === \"number\" ? contentInfo.size : undefined;\n if (finalMediaUrl?.startsWith(\"mxc://\")) {\n try {\n media = await downloadMatrixMedia({\n client,\n mxcUrl: finalMediaUrl,\n contentType,\n sizeBytes: contentSize,\n maxBytes: mediaMaxBytes,\n file: finalContentFile,\n originalFilename,\n });\n } catch (err) {\n mediaDownloadFailed = true;\n if (isMatrixMediaSizeLimitError(err)) {\n mediaSizeLimitExceeded = true;\n }\n const errorText = formatMatrixErrorMessage(err);\n logVerboseMessage(\n `matrix: media download failed room=${roomId} id=${event.event_id ?? \"unknown\"} type=${content.msgtype} error=${errorText}`,\n );\n logger.warn(\"matrix media download failed\", {\n roomId,\n eventId: event.event_id,\n msgtype: content.msgtype,\n encrypted: Boolean(finalContentFile),\n error: errorText,\n });\n }\n }\n\n const rawBody = locationPayload?.text ?? contentBody;\n const bodyText = resolveMatrixInboundBodyText({\n rawBody,\n filename: typeof content.filename === \"string\" ? content.filename : undefined,\n mediaPlaceholder: media?.placeholder,\n msgtype: content.msgtype,\n hadMediaUrl: Boolean(finalMediaUrl),\n mediaDownloadFailed,\n mediaSizeLimitExceeded,\n });\n if (!bodyText) {\n await commitInboundEventIfClaimed();\n return undefined;\n }\n const senderName = await getSenderName();\n if (_configuredBinding) {\n const ensured = await ensureConfiguredAcpBindingReady({\n cfg,\n configuredBinding: _configuredBinding,\n });\n if (!ensured.ok) {\n logInboundDrop({\n log: logVerboseMessage,\n channel: \"matrix\",\n reason: \"configured ACP binding unavailable\",\n target: _configuredBinding.spec.conversationId,\n });\n return undefined;\n }\n }\n if (_runtimeBindingId) {\n getSessionBindingService().touch(_runtimeBindingId, eventTs ?? undefined);\n }\n const preparedTrigger =\n isRoom && historyLimit > 0\n ? roomHistoryTracker.prepareTrigger(_route.agentId, roomId, historyLimit, {\n sender: senderName,\n body: bodyText,\n timestamp: eventTs ?? undefined,\n messageId: _messageId,\n })\n : undefined;\n const inboundHistory = preparedTrigger?.history;\n const triggerSnapshot = preparedTrigger;\n\n return {\n route: _route,\n hasExplicitSessionBinding,\n roomConfig,\n isDirectMessage,\n isRoom,\n shouldRequireMention,\n wasMentioned,\n shouldBypassMention,\n canDetectMention,\n commandAuthorized,\n inboundHistory,\n senderName,\n bodyText,\n media,\n locationPayload,\n messageId: _messageId,\n triggerSnapshot,\n threadRootId: _threadRootId,\n thread,\n effectiveGroupAllowFrom,\n effectiveRoomUsers,\n };\n };\n const ingressResult =\n historyLimit > 0\n ? await runRoomIngress(roomId, async () => {\n const prefix = await readIngressPrefix();\n if (!prefix) {\n return undefined;\n }\n if (prefix.isDirectMessage) {\n return { deferredPrefix: prefix } as const;\n }\n return { ingressResult: await continueIngress(prefix) } as const;\n })\n : undefined;\n const resolvedIngressResult =\n historyLimit > 0\n ? ingressResult?.deferredPrefix\n ? await continueIngress(ingressResult.deferredPrefix)\n : ingressResult?.ingressResult\n : await (async () => {\n const prefix = await readIngressPrefix();\n if (!prefix) {\n return undefined;\n }\n return await continueIngress(prefix);\n })();\n if (!resolvedIngressResult) {\n return;\n }\n\n const {\n route: _route,\n hasExplicitSessionBinding,\n roomConfig,\n isDirectMessage,\n isRoom,\n shouldRequireMention,\n wasMentioned,\n shouldBypassMention,\n canDetectMention,\n commandAuthorized,\n inboundHistory,\n senderName,\n bodyText,\n media,\n locationPayload,\n messageId: _messageId,\n triggerSnapshot,\n threadRootId: _threadRootId,\n thread,\n effectiveGroupAllowFrom,\n effectiveRoomUsers,\n } = resolvedIngressResult;\n\n // Keep the per-room ingress gate focused on ordering-sensitive state updates.\n // Prompt/session enrichment below can run concurrently after the history snapshot is fixed.\n const replyToEventId = resolveMatrixReplyToEventId(event.content as RoomMessageEventContent);\n const threadTarget = thread.threadId;\n const isRoomContextSenderAllowed = (contextSenderId?: string): boolean => {\n if (!isRoom || !contextSenderId) {\n return true;\n }\n if (effectiveRoomUsers.length > 0) {\n return resolveMatrixAllowListMatch({\n allowList: effectiveRoomUsers,\n userId: contextSenderId,\n }).allowed;\n }\n if (groupPolicy === \"allowlist\" && effectiveGroupAllowFrom.length > 0) {\n return resolveMatrixAllowListMatch({\n allowList: effectiveGroupAllowFrom,\n userId: contextSenderId,\n }).allowed;\n }\n return true;\n };\n const shouldIncludeRoomContextSender = (\n kind: \"thread\" | \"quote\" | \"history\",\n contextSenderId?: string,\n ): boolean =>\n evaluateSupplementalContextVisibility({\n mode: contextVisibilityMode,\n kind,\n senderAllowed: isRoomContextSenderAllowed(contextSenderId),\n }).include;\n let threadContext = _threadRootId\n ? await resolveThreadContext({ roomId, threadRootId: _threadRootId })\n : undefined;\n let threadContextBlockedByPolicy = false;\n if (\n threadContext?.senderId &&\n !shouldIncludeRoomContextSender(\"thread\", threadContext.senderId)\n ) {\n logVerboseMessage(`matrix: drop thread root context (mode=${contextVisibilityMode})`);\n threadContextBlockedByPolicy = true;\n threadContext = undefined;\n }\n let replyContext: Awaited<ReturnType<typeof resolveReplyContext>> | undefined;\n if (replyToEventId && replyToEventId === _threadRootId && threadContext?.summary) {\n replyContext = {\n replyToBody: threadContext.summary,\n replyToSender: threadContext.senderLabel,\n replyToSenderId: threadContext.senderId,\n };\n } else if (\n replyToEventId &&\n replyToEventId === _threadRootId &&\n threadContextBlockedByPolicy\n ) {\n replyContext = await resolveReplyContext({ roomId, eventId: replyToEventId });\n } else {\n replyContext = replyToEventId\n ? await resolveReplyContext({ roomId, eventId: replyToEventId })\n : undefined;\n }\n if (\n replyContext?.replyToSenderId &&\n !shouldIncludeRoomContextSender(\"quote\", replyContext.replyToSenderId)\n ) {\n logVerboseMessage(`matrix: drop reply context (mode=${contextVisibilityMode})`);\n replyContext = undefined;\n }\n const roomInfo = isRoom ? await getRoomInfo(roomId) : undefined;\n const roomName = roomInfo?.name;\n const envelopeFrom = isDirectMessage ? senderName : (roomName ?? roomId);\n const textWithId = `${bodyText}\\n[matrix event id: ${_messageId} room: ${roomId}]`;\n const storePath = core.channel.session.resolveStorePath(cfg.session?.store, {\n agentId: _route.agentId,\n });\n const envelopeOptions = core.channel.reply.resolveEnvelopeFormatOptions(cfg);\n const previousTimestamp = core.channel.session.readSessionUpdatedAt({\n storePath,\n sessionKey: _route.sessionKey,\n });\n const sharedDmNoticeSessionKey = threadTarget\n ? _route.mainSessionKey || _route.sessionKey\n : _route.sessionKey;\n const sharedDmContextNotice = isDirectMessage\n ? hasExplicitSessionBinding\n ? null\n : resolveMatrixSharedDmContextNotice({\n storePath,\n sessionKey: sharedDmNoticeSessionKey,\n roomId,\n accountId: _route.accountId,\n dmSessionScope,\n sentRooms: sharedDmContextNoticeRooms,\n logVerboseMessage,\n })\n : null;\n const body = core.channel.reply.formatAgentEnvelope({\n channel: \"Matrix\",\n from: envelopeFrom,\n timestamp: eventTs ?? undefined,\n previousTimestamp,\n envelope: envelopeOptions,\n body: textWithId,\n });\n const groupSystemPrompt = normalizeOptionalString(roomConfig?.systemPrompt);\n const ctxPayload = core.channel.reply.finalizeInboundContext({\n Body: body,\n RawBody: bodyText,\n CommandBody: bodyText,\n InboundHistory: inboundHistory && inboundHistory.length > 0 ? inboundHistory : undefined,\n From: isDirectMessage ? `matrix:${senderId}` : `matrix:channel:${roomId}`,\n To: `room:${roomId}`,\n SessionKey: _route.sessionKey,\n AccountId: _route.accountId,\n ChatType: isDirectMessage ? \"direct\" : \"channel\",\n ConversationLabel: envelopeFrom,\n SenderName: senderName,\n SenderId: senderId,\n SenderUsername: senderId.split(\":\")[0]?.replace(/^@/, \"\"),\n GroupSubject: isRoom ? (roomName ?? roomId) : undefined,\n GroupId: isRoom ? roomId : undefined,\n GroupSystemPrompt: isRoom ? groupSystemPrompt : undefined,\n Provider: \"matrix\" as const,\n Surface: \"matrix\" as const,\n WasMentioned: isRoom ? wasMentioned : undefined,\n MessageSid: _messageId,\n ReplyToId: threadTarget ? undefined : (replyToEventId ?? undefined),\n ReplyToBody: replyContext?.replyToBody,\n ReplyToSender: replyContext?.replyToSender,\n MessageThreadId: threadTarget,\n ThreadStarterBody: threadContext?.threadStarterBody,\n Timestamp: eventTs ?? undefined,\n MediaPath: media?.path,\n MediaType: media?.contentType,\n MediaUrl: media?.path,\n ...locationPayload?.context,\n CommandAuthorized: commandAuthorized,\n CommandSource: \"text\" as const,\n NativeChannelId: roomId,\n NativeDirectUserId: isDirectMessage ? senderId : undefined,\n OriginatingChannel: \"matrix\" as const,\n OriginatingTo: `room:${roomId}`,\n });\n\n await core.channel.session.recordInboundSession({\n storePath,\n sessionKey: ctxPayload.SessionKey ?? _route.sessionKey,\n ctx: ctxPayload,\n updateLastRoute: isDirectMessage\n ? {\n sessionKey: _route.mainSessionKey,\n channel: \"matrix\",\n to: `room:${roomId}`,\n accountId: _route.accountId,\n }\n : undefined,\n onRecordError: (err) => {\n logger.warn(\"failed updating session meta\", {\n error: String(err),\n storePath,\n sessionKey: ctxPayload.SessionKey ?? _route.sessionKey,\n });\n },\n });\n\n if (sharedDmContextNotice && markTrackedRoomIfFirst(sharedDmContextNoticeRooms, roomId)) {\n client\n .sendMessage(roomId, {\n msgtype: \"m.notice\",\n body: sharedDmContextNotice,\n })\n .catch((err) => {\n logVerboseMessage(\n `matrix: failed sending shared DM session notice room=${roomId}: ${String(err)}`,\n );\n });\n }\n\n const preview = bodyText.slice(0, 200).replace(/\\n/g, \"\\\\n\");\n logVerboseMessage(`matrix inbound: room=${roomId} from=${senderId} preview=\"${preview}\"`);\n\n const replyTarget = ctxPayload.To;\n if (!replyTarget) {\n runtime.error?.(\"matrix: missing reply target\");\n return;\n }\n\n const { ackReaction, ackReactionScope: ackScope } = resolveMatrixAckReactionConfig({\n cfg,\n agentId: _route.agentId,\n accountId,\n });\n const shouldAckReaction = () =>\n Boolean(\n ackReaction &&\n core.channel.reactions.shouldAckReaction({\n scope: ackScope,\n isDirect: isDirectMessage,\n isGroup: isRoom,\n isMentionableGroup: isRoom,\n requireMention: shouldRequireMention,\n canDetectMention,\n effectiveWasMentioned: wasMentioned || shouldBypassMention,\n shouldBypassMention,\n }),\n );\n if (shouldAckReaction() && _messageId) {\n reactMatrixMessage(roomId, _messageId, ackReaction, client).catch((err) => {\n logVerboseMessage(`matrix react failed for room ${roomId}: ${String(err)}`);\n });\n }\n\n if (_messageId) {\n sendReadReceiptMatrix(roomId, _messageId, client).catch((err) => {\n logVerboseMessage(\n `matrix: read receipt failed room=${roomId} id=${_messageId}: ${String(err)}`,\n );\n });\n }\n\n const tableMode = core.channel.text.resolveMarkdownTableMode({\n cfg,\n channel: \"matrix\",\n accountId: _route.accountId,\n });\n const mediaLocalRoots = getAgentScopedMediaLocalRoots(cfg, _route.agentId);\n let finalReplyDeliveryFailed = false;\n let nonFinalReplyDeliveryFailed = false;\n const { onModelSelected, ...prefixOptions } = createReplyPrefixOptions({\n cfg,\n agentId: _route.agentId,\n channel: \"matrix\",\n accountId: _route.accountId,\n });\n const typingCallbacks = createTypingCallbacks({\n start: () => sendTypingMatrix(roomId, true, undefined, client),\n stop: () => sendTypingMatrix(roomId, false, undefined, client),\n onStartError: (err) => {\n logTypingFailure({\n log: logVerboseMessage,\n channel: \"matrix\",\n action: \"start\",\n target: roomId,\n error: err,\n });\n },\n onStopError: (err) => {\n logTypingFailure({\n log: logVerboseMessage,\n channel: \"matrix\",\n action: \"stop\",\n target: roomId,\n error: err,\n });\n },\n });\n const draftStreamingEnabled = streaming !== \"off\";\n const quietDraftStreaming = streaming === \"quiet\";\n const draftReplyToId = replyToMode !== \"off\" && !threadTarget ? _messageId : undefined;\n const draftStream = draftStreamingEnabled\n ? createMatrixDraftStream({\n roomId,\n client,\n cfg,\n mode: quietDraftStreaming ? \"quiet\" : \"partial\",\n threadId: threadTarget,\n replyToId: draftReplyToId,\n preserveReplyId: replyToMode === \"all\",\n accountId: _route.accountId,\n log: logVerboseMessage,\n })\n : undefined;\n draftStreamRef = draftStream;\n type PendingDraftBoundary = {\n messageGeneration: number;\n endOffset: number;\n };\n // Track the current draft block start plus any queued block-end offsets\n // inside the model's cumulative partial text so multiple block\n // boundaries can drain in order even when Matrix delivery lags behind.\n let currentDraftMessageGeneration = 0;\n let currentDraftBlockOffset = 0;\n let latestDraftFullText = \"\";\n const pendingDraftBoundaries: PendingDraftBoundary[] = [];\n const latestQueuedDraftBoundaryOffsets = new Map<number, number>();\n let currentDraftReplyToId = draftReplyToId;\n // Set after the first final payload consumes or discards the draft event\n // so subsequent finals go through normal delivery.\n\n const getDisplayableDraftText = () => {\n const nextDraftBoundaryOffset = pendingDraftBoundaries.find(\n (boundary) => boundary.messageGeneration === currentDraftMessageGeneration,\n )?.endOffset;\n if (nextDraftBoundaryOffset === undefined) {\n return latestDraftFullText.slice(currentDraftBlockOffset);\n }\n return latestDraftFullText.slice(currentDraftBlockOffset, nextDraftBoundaryOffset);\n };\n\n const updateDraftFromLatestFullText = () => {\n const blockText = getDisplayableDraftText();\n if (blockText) {\n draftStream?.update(blockText);\n }\n };\n\n const queueDraftBlockBoundary = (payload: ReplyPayload, context?: BlockReplyContext) => {\n const payloadTextLength = payload.text?.length ?? 0;\n const messageGeneration = context?.assistantMessageIndex ?? currentDraftMessageGeneration;\n const lastQueuedDraftBoundaryOffset =\n latestQueuedDraftBoundaryOffsets.get(messageGeneration) ?? 0;\n // Logical block boundaries must follow emitted block text, not whichever\n // later partial preview has already arrived by the time the async\n // boundary callback drains.\n const nextDraftBoundaryOffset = lastQueuedDraftBoundaryOffset + payloadTextLength;\n latestQueuedDraftBoundaryOffsets.set(messageGeneration, nextDraftBoundaryOffset);\n pendingDraftBoundaries.push({\n messageGeneration,\n endOffset: nextDraftBoundaryOffset,\n });\n };\n\n const advanceDraftBlockBoundary = (options?: { fallbackToLatestEnd?: boolean }) => {\n const completedBoundary = pendingDraftBoundaries.shift();\n if (completedBoundary) {\n if (\n !pendingDraftBoundaries.some(\n (entry) => entry.messageGeneration === completedBoundary.messageGeneration,\n )\n ) {\n latestQueuedDraftBoundaryOffsets.delete(completedBoundary.messageGeneration);\n }\n if (completedBoundary.messageGeneration === currentDraftMessageGeneration) {\n currentDraftBlockOffset = completedBoundary.endOffset;\n }\n return;\n }\n if (options?.fallbackToLatestEnd) {\n currentDraftBlockOffset = latestDraftFullText.length;\n }\n };\n\n const resetDraftBlockOffsets = () => {\n currentDraftMessageGeneration += 1;\n currentDraftBlockOffset = 0;\n latestDraftFullText = \"\";\n };\n\n const { dispatcher, replyOptions, markDispatchIdle, markRunComplete } =\n core.channel.reply.createReplyDispatcherWithTyping({\n ...prefixOptions,\n humanDelay: core.channel.reply.resolveHumanDelayConfig(cfg, _route.agentId),\n deliver: async (payload: ReplyPayload, info: { kind: string }) => {\n if (draftStream && info.kind !== \"tool\" && !payload.isCompactionNotice) {\n const hasMedia = Boolean(payload.mediaUrl) || (payload.mediaUrls?.length ?? 0) > 0;\n\n await draftStream.stop();\n const draftEventId = draftStream.eventId();\n\n if (draftConsumed) {\n await deliverMatrixReplies({\n cfg,\n replies: [payload],\n roomId,\n client,\n runtime,\n textLimit,\n replyToMode,\n threadId: threadTarget,\n accountId: _route.accountId,\n mediaLocalRoots,\n tableMode,\n });\n return;\n }\n\n const payloadReplyToId = normalizeOptionalString(payload.replyToId);\n const payloadReplyMismatch =\n replyToMode !== \"off\" &&\n !threadTarget &&\n payloadReplyToId !== currentDraftReplyToId;\n const mustDeliverFinalNormally = draftStream.mustDeliverFinalNormally();\n\n if (\n draftEventId &&\n payload.text &&\n !hasMedia &&\n !payloadReplyMismatch &&\n !mustDeliverFinalNormally\n ) {\n try {\n const requiresFinalEdit =\n quietDraftStreaming || !draftStream.matchesPreparedText(payload.text);\n if (requiresFinalEdit) {\n await editMessageMatrix(roomId, draftEventId, payload.text, {\n client,\n cfg,\n threadId: threadTarget,\n accountId: _route.accountId,\n extraContent: quietDraftStreaming\n ? buildMatrixFinalizedPreviewContent()\n : undefined,\n });\n } else if (!(await draftStream.finalizeLive())) {\n throw new Error(\"Matrix draft live finalize failed\");\n }\n } catch {\n await redactMatrixDraftEvent(client, roomId, draftEventId);\n await deliverMatrixReplies({\n cfg,\n replies: [payload],\n roomId,\n client,\n runtime,\n textLimit,\n replyToMode,\n threadId: threadTarget,\n accountId: _route.accountId,\n mediaLocalRoots,\n tableMode,\n });\n }\n draftConsumed = true;\n } else if (draftEventId && hasMedia && !payloadReplyMismatch) {\n let textEditOk = !mustDeliverFinalNormally;\n const payloadText = payload.text;\n const payloadTextMatchesDraft =\n typeof payloadText === \"string\" && draftStream.matchesPreparedText(payloadText);\n const reusesDraftTextUnchanged =\n typeof payloadText === \"string\" &&\n Boolean(payloadText.trim()) &&\n payloadTextMatchesDraft;\n const requiresFinalTextEdit =\n quietDraftStreaming ||\n (typeof payloadText === \"string\" && !payloadTextMatchesDraft);\n if (textEditOk && payloadText && requiresFinalTextEdit) {\n textEditOk = await editMessageMatrix(roomId, draftEventId, payloadText, {\n client,\n cfg,\n threadId: threadTarget,\n accountId: _route.accountId,\n extraContent: quietDraftStreaming\n ? buildMatrixFinalizedPreviewContent()\n : undefined,\n }).then(\n () => true,\n () => false,\n );\n } else if (textEditOk && reusesDraftTextUnchanged) {\n textEditOk = await draftStream.finalizeLive();\n }\n const reusesDraftAsFinalText = Boolean(payload.text?.trim()) && textEditOk;\n if (!reusesDraftAsFinalText) {\n await redactMatrixDraftEvent(client, roomId, draftEventId);\n }\n await deliverMatrixReplies({\n cfg,\n replies: [\n { ...payload, text: reusesDraftAsFinalText ? undefined : payload.text },\n ],\n roomId,\n client,\n runtime,\n textLimit,\n replyToMode,\n threadId: threadTarget,\n accountId: _route.accountId,\n mediaLocalRoots,\n tableMode,\n });\n draftConsumed = true;\n } else {\n const draftRedacted =\n Boolean(draftEventId) && (payloadReplyMismatch || mustDeliverFinalNormally);\n if (draftRedacted && draftEventId) {\n await redactMatrixDraftEvent(client, roomId, draftEventId);\n }\n const deliveredFallback = await deliverMatrixReplies({\n cfg,\n replies: [payload],\n roomId,\n client,\n runtime,\n textLimit,\n replyToMode,\n threadId: threadTarget,\n accountId: _route.accountId,\n mediaLocalRoots,\n tableMode,\n });\n if (draftRedacted || deliveredFallback) {\n draftConsumed = true;\n }\n }\n\n if (info.kind === \"block\") {\n draftConsumed = false;\n advanceDraftBlockBoundary({ fallbackToLatestEnd: true });\n draftStream.reset();\n currentDraftReplyToId = replyToMode === \"all\" ? draftReplyToId : undefined;\n updateDraftFromLatestFullText();\n\n // Re-assert typing so the user still sees the indicator while\n // the next block generates.\n await sendTypingMatrix(roomId, true, undefined, client).catch(() => {});\n }\n } else {\n await deliverMatrixReplies({\n cfg,\n replies: [payload],\n roomId,\n client,\n runtime,\n textLimit,\n replyToMode,\n threadId: threadTarget,\n accountId: _route.accountId,\n mediaLocalRoots,\n tableMode,\n });\n }\n },\n onError: (err: unknown, info: { kind: \"tool\" | \"block\" | \"final\" }) => {\n if (info.kind === \"final\") {\n finalReplyDeliveryFailed = true;\n } else {\n nonFinalReplyDeliveryFailed = true;\n }\n if (info.kind === \"block\") {\n advanceDraftBlockBoundary({ fallbackToLatestEnd: true });\n }\n runtime.error?.(`matrix ${info.kind} reply failed: ${String(err)}`);\n },\n onReplyStart: typingCallbacks.onReplyStart,\n onIdle: typingCallbacks.onIdle,\n });\n\n const { queuedFinal, counts } = await core.channel.reply.withReplyDispatcher({\n dispatcher,\n onSettled: () => {\n markDispatchIdle();\n },\n run: async () => {\n try {\n return await core.channel.reply.dispatchReplyFromConfig({\n ctx: ctxPayload,\n cfg,\n dispatcher,\n replyOptions: {\n ...replyOptions,\n skillFilter: roomConfig?.skills,\n // Keep block streaming enabled when explicitly requested, even\n // with draft previews on. The draft remains the live preview\n // for the current assistant block, while block deliveries\n // finalize completed blocks into their own preserved events.\n disableBlockStreaming: !blockStreamingEnabled,\n onPartialReply: draftStream\n ? (payload) => {\n latestDraftFullText = payload.text ?? \"\";\n updateDraftFromLatestFullText();\n }\n : undefined,\n onBlockReplyQueued: draftStream\n ? (payload, context) => {\n if (payload.isCompactionNotice === true) {\n return;\n }\n queueDraftBlockBoundary(payload, context);\n }\n : undefined,\n // Reset draft boundary bookkeeping on assistant message\n // boundaries so post-tool blocks stream from a fresh\n // cumulative payload (payload.text resets upstream).\n onAssistantMessageStart: draftStream\n ? () => {\n resetDraftBlockOffsets();\n }\n : undefined,\n onModelSelected,\n },\n });\n } finally {\n markRunComplete();\n }\n },\n });\n if (finalReplyDeliveryFailed) {\n logVerboseMessage(\n `matrix: final reply delivery failed room=${roomId} id=${_messageId}; leaving event uncommitted`,\n );\n // Do not advance watermark \u2014 the event will be retried and should see the same history.\n return;\n }\n if (!queuedFinal && nonFinalReplyDeliveryFailed) {\n logVerboseMessage(\n `matrix: non-final reply delivery failed room=${roomId} id=${_messageId}; leaving event uncommitted`,\n );\n // Do not advance watermark \u2014 the event will be retried.\n return;\n }\n // Advance the per-agent watermark now that the reply succeeded (or no reply was needed).\n // Only advance to the snapshot position \u2014 messages added during async processing remain\n // visible for the next trigger.\n if (isRoom && triggerSnapshot) {\n roomHistoryTracker.consumeHistory(_route.agentId, roomId, triggerSnapshot, _messageId);\n }\n if (!queuedFinal) {\n await commitInboundEventIfClaimed();\n return;\n }\n const finalCount = counts.final;\n logVerboseMessage(\n `matrix: delivered ${finalCount} reply${finalCount === 1 ? \"\" : \"ies\"} to ${replyTarget}`,\n );\n await commitInboundEventIfClaimed();\n } catch (err) {\n runtime.error?.(`matrix handler failed: ${String(err)}`);\n } finally {\n // Stop the draft stream timer so partial drafts don't leak if the\n // model run throws or times out mid-stream.\n if (draftStreamRef) {\n const draftEventId = await draftStreamRef.stop().catch(() => undefined);\n if (draftEventId && !draftConsumed) {\n await redactMatrixDraftEvent(client, roomId, draftEventId);\n }\n }\n if (claimedInboundEvent && inboundDeduper && eventId) {\n inboundDeduper.releaseEvent({ roomId, eventId });\n }\n }\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["locationPayload", "isDirectMessage", "params", "isRoom", "roomConfig", "effectiveGroupAllowFrom", "effectiveRoomUsers", "senderName", "_messageId", "_threadRootId", "thread", "_route", "hasExplicitSessionBinding", "wasMentioned", "commandAuthorized", "shouldRequireMention", "shouldBypassMention", "canDetectMention", "media", "bodyText", "inboundHistory", "triggerSnapshot"]
7
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ getMatrixRuntime
3
+ } from "./chunk-FHNEN6IR.js";
4
+ import {
5
+ init_shims
6
+ } from "./chunk-7FLQSTPG.js";
7
+
8
+ // src/matrix/monitor/auto-join.ts
9
+ init_shims();
10
+ import { normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/text-runtime";
11
+ function registerMatrixAutoJoin(params) {
12
+ const { client, accountConfig, runtime } = params;
13
+ const core = getMatrixRuntime();
14
+ const logVerbose = (message) => {
15
+ if (!core.logging.shouldLogVerbose()) {
16
+ return;
17
+ }
18
+ runtime.log?.(message);
19
+ };
20
+ const autoJoin = accountConfig.autoJoin ?? "off";
21
+ const rawAllowlist = (accountConfig.autoJoinAllowlist ?? []).map((entry) => normalizeStringifiedOptionalString(entry)).filter((entry) => Boolean(entry));
22
+ const autoJoinAllowlist = new Set(rawAllowlist);
23
+ const allowedRoomIds = new Set(rawAllowlist.filter((entry) => entry.startsWith("!")));
24
+ const allowedAliases = rawAllowlist.filter((entry) => entry.startsWith("#"));
25
+ const resolvedAliasRoomIds = /* @__PURE__ */ new Map();
26
+ if (autoJoin === "off") {
27
+ return;
28
+ }
29
+ if (autoJoin === "always") {
30
+ logVerbose("matrix: auto-join enabled for all invites");
31
+ } else {
32
+ logVerbose("matrix: auto-join enabled for allowlist invites");
33
+ }
34
+ const resolveAllowedAliasRoomId = async (alias) => {
35
+ if (resolvedAliasRoomIds.has(alias)) {
36
+ return resolvedAliasRoomIds.get(alias) ?? null;
37
+ }
38
+ const resolved = await params.client.resolveRoom(alias);
39
+ if (resolved) {
40
+ resolvedAliasRoomIds.set(alias, resolved);
41
+ }
42
+ return resolved;
43
+ };
44
+ const resolveAllowedAliasRoomIds = async () => {
45
+ const resolved = await Promise.all(
46
+ allowedAliases.map(async (alias) => {
47
+ try {
48
+ return await resolveAllowedAliasRoomId(alias);
49
+ } catch (err) {
50
+ runtime.error?.(`matrix: failed resolving allowlisted alias ${alias}: ${String(err)}`);
51
+ return null;
52
+ }
53
+ })
54
+ );
55
+ return resolved.filter((roomId) => Boolean(roomId));
56
+ };
57
+ client.on("room.invite", async (roomId, _inviteEvent) => {
58
+ if (autoJoin === "allowlist") {
59
+ const allowedAliasRoomIds = await resolveAllowedAliasRoomIds();
60
+ const allowed = autoJoinAllowlist.has("*") || allowedRoomIds.has(roomId) || allowedAliasRoomIds.some((resolvedRoomId) => resolvedRoomId === roomId);
61
+ if (!allowed) {
62
+ logVerbose(`matrix: invite ignored (not in allowlist) room=${roomId}`);
63
+ return;
64
+ }
65
+ }
66
+ try {
67
+ await client.joinRoom(roomId);
68
+ logVerbose(`matrix: joined room ${roomId}`);
69
+ } catch (err) {
70
+ runtime.error?.(`matrix: failed to join room ${roomId}: ${String(err)}`);
71
+ }
72
+ });
73
+ }
74
+
75
+ export {
76
+ registerMatrixAutoJoin
77
+ };
78
+ //# sourceMappingURL=chunk-LZNW24OB.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/matrix/monitor/auto-join.ts"],
4
+ "sourcesContent": ["import { normalizeStringifiedOptionalString } from \"openclaw/plugin-sdk/text-runtime\";\nimport { getMatrixRuntime } from \"../../runtime.js\";\nimport type { MatrixConfig } from \"../../types.js\";\nimport type { MatrixClient } from \"../sdk.js\";\nimport type { RuntimeEnv } from \"./runtime-api.js\";\n\nexport function registerMatrixAutoJoin(params: {\n client: MatrixClient;\n accountConfig: Pick<MatrixConfig, \"autoJoin\" | \"autoJoinAllowlist\">;\n runtime: RuntimeEnv;\n}) {\n const { client, accountConfig, runtime } = params;\n const core = getMatrixRuntime();\n const logVerbose = (message: string) => {\n if (!core.logging.shouldLogVerbose()) {\n return;\n }\n runtime.log?.(message);\n };\n const autoJoin = accountConfig.autoJoin ?? \"off\";\n const rawAllowlist = (accountConfig.autoJoinAllowlist ?? [])\n .map((entry) => normalizeStringifiedOptionalString(entry))\n .filter((entry): entry is string => Boolean(entry));\n const autoJoinAllowlist = new Set(rawAllowlist);\n const allowedRoomIds = new Set(rawAllowlist.filter((entry) => entry.startsWith(\"!\")));\n const allowedAliases = rawAllowlist.filter((entry) => entry.startsWith(\"#\"));\n const resolvedAliasRoomIds = new Map<string, string>();\n\n if (autoJoin === \"off\") {\n return;\n }\n\n if (autoJoin === \"always\") {\n logVerbose(\"matrix: auto-join enabled for all invites\");\n } else {\n logVerbose(\"matrix: auto-join enabled for allowlist invites\");\n }\n\n const resolveAllowedAliasRoomId = async (alias: string): Promise<string | null> => {\n if (resolvedAliasRoomIds.has(alias)) {\n return resolvedAliasRoomIds.get(alias) ?? null;\n }\n const resolved = await params.client.resolveRoom(alias);\n if (resolved) {\n resolvedAliasRoomIds.set(alias, resolved);\n }\n return resolved;\n };\n\n const resolveAllowedAliasRoomIds = async (): Promise<string[]> => {\n const resolved = await Promise.all(\n allowedAliases.map(async (alias) => {\n try {\n return await resolveAllowedAliasRoomId(alias);\n } catch (err) {\n runtime.error?.(`matrix: failed resolving allowlisted alias ${alias}: ${String(err)}`);\n return null;\n }\n }),\n );\n return resolved.filter((roomId): roomId is string => Boolean(roomId));\n };\n\n // Handle invites directly so both \"always\" and \"allowlist\" modes share the same path.\n client.on(\"room.invite\", async (roomId: string, _inviteEvent: unknown) => {\n if (autoJoin === \"allowlist\") {\n const allowedAliasRoomIds = await resolveAllowedAliasRoomIds();\n const allowed =\n autoJoinAllowlist.has(\"*\") ||\n allowedRoomIds.has(roomId) ||\n allowedAliasRoomIds.some((resolvedRoomId) => resolvedRoomId === roomId);\n\n if (!allowed) {\n logVerbose(`matrix: invite ignored (not in allowlist) room=${roomId}`);\n return;\n }\n }\n\n try {\n await client.joinRoom(roomId);\n logVerbose(`matrix: joined room ${roomId}`);\n } catch (err) {\n runtime.error?.(`matrix: failed to join room ${roomId}: ${String(err)}`);\n }\n });\n}\n"],
5
+ "mappings": ";;;;;;;;AAAA;AAAA,SAAS,0CAA0C;AAM5C,SAAS,uBAAuB,QAIpC;AACD,QAAM,EAAE,QAAQ,eAAe,QAAQ,IAAI;AAC3C,QAAM,OAAO,iBAAiB;AAC9B,QAAM,aAAa,CAAC,YAAoB;AACtC,QAAI,CAAC,KAAK,QAAQ,iBAAiB,GAAG;AACpC;AAAA,IACF;AACA,YAAQ,MAAM,OAAO;AAAA,EACvB;AACA,QAAM,WAAW,cAAc,YAAY;AAC3C,QAAM,gBAAgB,cAAc,qBAAqB,CAAC,GACvD,IAAI,CAAC,UAAU,mCAAmC,KAAK,CAAC,EACxD,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC;AACpD,QAAM,oBAAoB,IAAI,IAAI,YAAY;AAC9C,QAAM,iBAAiB,IAAI,IAAI,aAAa,OAAO,CAAC,UAAU,MAAM,WAAW,GAAG,CAAC,CAAC;AACpF,QAAM,iBAAiB,aAAa,OAAO,CAAC,UAAU,MAAM,WAAW,GAAG,CAAC;AAC3E,QAAM,uBAAuB,oBAAI,IAAoB;AAErD,MAAI,aAAa,OAAO;AACtB;AAAA,EACF;AAEA,MAAI,aAAa,UAAU;AACzB,eAAW,2CAA2C;AAAA,EACxD,OAAO;AACL,eAAW,iDAAiD;AAAA,EAC9D;AAEA,QAAM,4BAA4B,OAAO,UAA0C;AACjF,QAAI,qBAAqB,IAAI,KAAK,GAAG;AACnC,aAAO,qBAAqB,IAAI,KAAK,KAAK;AAAA,IAC5C;AACA,UAAM,WAAW,MAAM,OAAO,OAAO,YAAY,KAAK;AACtD,QAAI,UAAU;AACZ,2BAAqB,IAAI,OAAO,QAAQ;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AAEA,QAAM,6BAA6B,YAA+B;AAChE,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,eAAe,IAAI,OAAO,UAAU;AAClC,YAAI;AACF,iBAAO,MAAM,0BAA0B,KAAK;AAAA,QAC9C,SAAS,KAAK;AACZ,kBAAQ,QAAQ,8CAA8C,KAAK,KAAK,OAAO,GAAG,CAAC,EAAE;AACrF,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO,SAAS,OAAO,CAAC,WAA6B,QAAQ,MAAM,CAAC;AAAA,EACtE;AAGA,SAAO,GAAG,eAAe,OAAO,QAAgB,iBAA0B;AACxE,QAAI,aAAa,aAAa;AAC5B,YAAM,sBAAsB,MAAM,2BAA2B;AAC7D,YAAM,UACJ,kBAAkB,IAAI,GAAG,KACzB,eAAe,IAAI,MAAM,KACzB,oBAAoB,KAAK,CAAC,mBAAmB,mBAAmB,MAAM;AAExE,UAAI,CAAC,SAAS;AACZ,mBAAW,kDAAkD,MAAM,EAAE;AACrE;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,OAAO,SAAS,MAAM;AAC5B,iBAAW,uBAAuB,MAAM,EAAE;AAAA,IAC5C,SAAS,KAAK;AACZ,cAAQ,QAAQ,+BAA+B,MAAM,KAAK,OAAO,GAAG,CAAC,EAAE;AAAA,IACzE;AAAA,EACF,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,44 @@
1
+ import {
2
+ init_shims
3
+ } from "./chunk-7FLQSTPG.js";
4
+
5
+ // ../../node_modules/@archipelagolab/lobi-js-sdk/lib/crypto-api/verification.js
6
+ init_shims();
7
+ var VerificationRequestEvent = /* @__PURE__ */ (function(VerificationRequestEvent2) {
8
+ VerificationRequestEvent2["Change"] = "change";
9
+ return VerificationRequestEvent2;
10
+ })({});
11
+ var VerificationPhase = /* @__PURE__ */ (function(VerificationPhase2) {
12
+ VerificationPhase2[VerificationPhase2["Unsent"] = 1] = "Unsent";
13
+ VerificationPhase2[VerificationPhase2["Requested"] = 2] = "Requested";
14
+ VerificationPhase2[VerificationPhase2["Ready"] = 3] = "Ready";
15
+ VerificationPhase2[VerificationPhase2["Started"] = 4] = "Started";
16
+ VerificationPhase2[VerificationPhase2["Cancelled"] = 5] = "Cancelled";
17
+ VerificationPhase2[VerificationPhase2["Done"] = 6] = "Done";
18
+ return VerificationPhase2;
19
+ })({});
20
+ var VerifierEvent = /* @__PURE__ */ (function(VerifierEvent2) {
21
+ VerifierEvent2["Cancel"] = "cancel";
22
+ VerifierEvent2["ShowSas"] = "show_sas";
23
+ VerifierEvent2["ShowReciprocateQr"] = "show_reciprocate_qr";
24
+ return VerifierEvent2;
25
+ })({});
26
+
27
+ // ../../node_modules/@archipelagolab/lobi-js-sdk/lib/@types/membership.js
28
+ init_shims();
29
+ var KnownMembership = /* @__PURE__ */ (function(KnownMembership2) {
30
+ KnownMembership2["Ban"] = "ban";
31
+ KnownMembership2["Invite"] = "invite";
32
+ KnownMembership2["Join"] = "join";
33
+ KnownMembership2["Knock"] = "knock";
34
+ KnownMembership2["Leave"] = "leave";
35
+ return KnownMembership2;
36
+ })({});
37
+
38
+ export {
39
+ KnownMembership,
40
+ VerificationRequestEvent,
41
+ VerificationPhase,
42
+ VerifierEvent
43
+ };
44
+ //# sourceMappingURL=chunk-MAF6PSCJ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/@archipelagolab/lobi-js-sdk/src/crypto-api/verification.ts", "../../../node_modules/@archipelagolab/lobi-js-sdk/src/@types/membership.ts"],
4
+ "sourcesContent": ["/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { type LobiEvent } from \"../models/event.ts\";\nimport { type TypedEventEmitter } from \"../models/typed-event-emitter.ts\";\n\n/**\n * An incoming, or outgoing, request to verify a user or a device via cross-signing.\n */\nexport interface VerificationRequest extends TypedEventEmitter<\n VerificationRequestEvent,\n VerificationRequestEventHandlerMap\n> {\n /**\n * Unique ID for this verification request.\n *\n * An ID isn't assigned until the first message is sent, so this may be `undefined` in the early phases.\n */\n get transactionId(): string | undefined;\n\n /**\n * For an in-room verification, the ID of the room.\n *\n * For to-device verifictions, `undefined`.\n */\n get roomId(): string | undefined;\n\n /**\n * True if this request was initiated by the local client.\n *\n * For in-room verifications, the initiator is who sent the `m.key.verification.request` event.\n * For to-device verifications, the initiator is who sent the `m.key.verification.start` event.\n */\n get initiatedByMe(): boolean;\n\n /** The user id of the other party in this request */\n get otherUserId(): string;\n\n /** For verifications via to-device messages: the ID of the other device. Otherwise, undefined. */\n get otherDeviceId(): string | undefined;\n\n /** True if the other party in this request is one of this user's own devices. */\n get isSelfVerification(): boolean;\n\n /** current phase of the request. */\n get phase(): VerificationPhase;\n\n /** True if the request has sent its initial event and needs more events to complete\n * (ie it is in phase `Requested`, `Ready` or `Started`).\n */\n get pending(): boolean;\n\n /**\n * True if we have started the process of sending an `m.key.verification.ready` (but have not necessarily received\n * the remote echo which causes a transition to {@link VerificationPhase.Ready}.\n */\n get accepting(): boolean;\n\n /**\n * True if we have started the process of sending an `m.key.verification.cancel` (but have not necessarily received\n * the remote echo which causes a transition to {@link VerificationPhase.Cancelled}).\n */\n get declining(): boolean;\n\n /**\n * The remaining number of ms before the request will be automatically cancelled.\n *\n * `null` indicates that there is no timeout\n */\n get timeout(): number | null;\n\n /** once the phase is Started (and !initiatedByMe) or Ready: common methods supported by both sides */\n get methods(): string[];\n\n /** the method picked in the .start event */\n get chosenMethod(): string | null;\n\n /**\n * Checks whether the other party supports a given verification method.\n * This is useful when setting up the QR code UI, as it is somewhat asymmetrical:\n * if the other party supports SCAN_QR, we should show a QR code in the UI, and vice versa.\n * For methods that need to be supported by both ends, use the `methods` property.\n *\n * @param method - the method to check\n * @returns true if the other party said they supported the method\n */\n otherPartySupportsMethod(method: string): boolean;\n\n /**\n * Accepts the request, sending a .ready event to the other party\n *\n * @returns Promise which resolves when the event has been sent.\n */\n accept(): Promise<void>;\n\n /**\n * Cancels the request, sending a cancellation to the other party\n *\n * @param params - Details for the cancellation, including `reason` (defaults to \"User declined\"), and `code`\n * (defaults to `m.user`). **Deprecated**: this parameter is ignored by the Rust cryptography implementation.\n *\n * @returns Promise which resolves when the event has been sent.\n */\n cancel(params?: { reason?: string; code?: string }): Promise<void>;\n\n /**\n * Send an `m.key.verification.start` event to start verification via a particular method.\n *\n * This is normally used when starting a verification via emojis (ie, `method` is set to `m.sas.v1`).\n *\n * @param method - the name of the verification method to use.\n *\n * @returns The verifier which will do the actual verification.\n */\n startVerification(method: string): Promise<Verifier>;\n\n /**\n * Start a QR code verification by providing a scanned QR code for this verification flow.\n *\n * Validates the QR code, and if it is ok, sends an `m.key.verification.start` event with `method` set to\n * `m.reciprocate.v1`, to tell the other side the scan was successful.\n *\n * See also {@link VerificationRequest#startVerification} which can be used to start other verification methods.\n *\n * @param qrCodeData - the decoded QR code.\n * @returns A verifier; call `.verify()` on it to wait for the other side to complete the verification flow.\n */\n scanQRCode(qrCodeData: Uint8ClampedArray): Promise<Verifier>;\n\n /**\n * The verifier which is doing the actual verification, once the method has been established.\n * Only defined when the `phase` is Started.\n */\n get verifier(): Verifier | undefined;\n\n /**\n * Generate the data for a QR code allowing the other device to verify this one, if it supports it.\n *\n * Only returns data once `phase` is {@link VerificationPhase.Ready} and the other party can scan a QR code;\n * otherwise returns `undefined`.\n */\n generateQRCode(): Promise<Uint8ClampedArray | undefined>;\n\n /**\n * If this request has been cancelled, the cancellation code (e.g `m.user`) which is responsible for cancelling\n * this verification.\n */\n get cancellationCode(): string | null;\n\n /**\n * The id of the user that cancelled the request.\n *\n * Only defined when phase is Cancelled\n */\n get cancellingUserId(): string | undefined;\n}\n\n/** Events emitted by {@link VerificationRequest}. */\nexport enum VerificationRequestEvent {\n /**\n * Fires whenever the state of the request object has changed.\n *\n * There is no payload to the event.\n */\n Change = \"change\",\n}\n\n/**\n * Listener type map for {@link VerificationRequestEvent}s.\n *\n * @internal\n */\nexport type VerificationRequestEventHandlerMap = {\n [VerificationRequestEvent.Change]: () => void;\n};\n\n/** The current phase of a verification request. */\nexport enum VerificationPhase {\n /** Initial state: no event yet exchanged */\n Unsent = 1,\n\n /** An `m.key.verification.request` event has been sent or received */\n Requested,\n\n /** An `m.key.verification.ready` event has been sent or received, indicating the verification request is accepted. */\n Ready,\n\n /**\n * The verification is in flight.\n *\n * This means that an `m.key.verification.start` event has been sent or received, choosing a verification method;\n * however the verification has not yet completed or been cancelled.\n */\n Started,\n\n /**\n * An `m.key.verification.cancel` event has been sent or received at any time before the `done` event, cancelling\n * the verification request\n */\n Cancelled,\n\n /**\n * The verification request is complete.\n *\n * Normally this means that `m.key.verification.done` events have been sent and received.\n */\n Done,\n}\n\n/**\n * A `Verifier` is responsible for performing the verification using a particular method, such as via QR code or SAS\n * (emojis).\n *\n * A verifier object can be created by calling `VerificationRequest.beginVerification`; one is also created\n * automatically when a `m.key.verification.start` event is received for an existing VerificationRequest.\n *\n * Once a verifier object is created, the verification can be started by calling the {@link Verifier#verify} method.\n */\nexport interface Verifier extends TypedEventEmitter<VerifierEvent, VerifierEventHandlerMap> {\n /**\n * Returns true if the verification has been cancelled, either by us or the other side.\n */\n get hasBeenCancelled(): boolean;\n\n /**\n * The ID of the other user in the verification process.\n */\n get userId(): string;\n\n /**\n * Start the key verification, if it has not already been started.\n *\n * This means sending a `m.key.verification.start` if we are the first responder, or a `m.key.verification.accept`\n * if the other side has already sent a start event.\n *\n * @returns Promise which resolves when the verification has completed, or rejects if the verification is cancelled\n * or times out.\n */\n verify(): Promise<void>;\n\n /**\n * Cancel a verification.\n *\n * We will send an `m.key.verification.cancel` if the verification is still in flight. The verification promise\n * will reject, and a {@link crypto-api.VerifierEvent.Cancel | VerifierEvent.Cancel} will be emitted.\n *\n * @param e - the reason for the cancellation.\n */\n cancel(e: Error): void;\n\n /**\n * Get the details for an SAS verification, if one is in progress\n *\n * Returns `null`, unless this verifier is for a SAS-based verification and we are waiting for the user to confirm\n * the SAS matches.\n */\n getShowSasCallbacks(): ShowSasCallbacks | null;\n\n /**\n * Get the details for reciprocating QR code verification, if one is in progress\n *\n * Returns `null`, unless this verifier is for reciprocating a QR-code-based verification (ie, the other user has\n * already scanned our QR code), and we are waiting for the user to confirm.\n */\n getReciprocateQrCodeCallbacks(): ShowQrCodeCallbacks | null;\n}\n\n/** Events emitted by {@link Verifier} */\nexport enum VerifierEvent {\n /**\n * The verification has been cancelled, by us or the other side.\n *\n * The payload is either an {@link Error}, or an (incoming or outgoing) {@link LobiEvent}, depending on\n * unspecified reasons.\n */\n Cancel = \"cancel\",\n\n /**\n * SAS data has been exchanged and should be displayed to the user.\n *\n * The payload is the {@link ShowSasCallbacks} object.\n */\n ShowSas = \"show_sas\",\n\n /**\n * The user should confirm if the other side has scanned our QR code.\n *\n * The payload is the {@link ShowQrCodeCallbacks} object.\n */\n ShowReciprocateQr = \"show_reciprocate_qr\",\n}\n\n/** Listener type map for {@link VerifierEvent}s. */\nexport type VerifierEventHandlerMap = {\n [VerifierEvent.Cancel]: (e: Error | LobiEvent) => void;\n [VerifierEvent.ShowSas]: (sas: ShowSasCallbacks) => void;\n [VerifierEvent.ShowReciprocateQr]: (qr: ShowQrCodeCallbacks) => void;\n};\n\n/**\n * Callbacks for user actions to confirm that the other side has scanned our QR code.\n *\n * This is exposed as the payload of a `VerifierEvent.ShowReciprocateQr` event, or can be retrieved directly from the\n * verifier as `reciprocateQREvent`.\n */\nexport interface ShowQrCodeCallbacks {\n /** The user confirms that the verification data matches */\n confirm(): void;\n\n /** Cancel the verification flow */\n cancel(): void;\n}\n\n/**\n * Callbacks for user actions while a SAS is displayed.\n *\n * This is exposed as the payload of a `VerifierEvent.ShowSas` event, or directly from the verifier as `sasEvent`.\n */\nexport interface ShowSasCallbacks {\n /** The generated SAS to be shown to the user */\n sas: GeneratedSas;\n\n /** Function to call if the user confirms that the SAS matches.\n *\n * @returns A Promise that completes once the m.key.verification.mac is queued.\n */\n confirm(): Promise<void>;\n\n /**\n * Function to call if the user finds the SAS does not match.\n *\n * Sends an `m.key.verification.cancel` event with a `m.mismatched_sas` error code.\n */\n mismatch(): void;\n\n /** Cancel the verification flow */\n cancel(): void;\n}\n\n/** A generated SAS to be shown to the user, in alternative formats */\nexport interface GeneratedSas {\n /**\n * The SAS as three numbers between 0 and 8191.\n *\n * Only populated if the `decimal` SAS method was negotiated.\n */\n decimal?: [number, number, number];\n\n /**\n * The SAS as seven emojis.\n *\n * Only populated if the `emoji` SAS method was negotiated.\n */\n emoji?: EmojiMapping[];\n}\n\n/**\n * An emoji for the generated SAS. A tuple `[emoji, name]` where `emoji` is the emoji itself and `name` is the\n * English name.\n */\nexport type EmojiMapping = [emoji: string, name: string];\n\n/**\n * True if the request is in a state where it can be accepted (ie, that we're in phases {@link VerificationPhase.Unsent}\n * or {@link VerificationPhase.Requested}, and that we're not in the process of sending a `ready` or `cancel`).\n */\nexport function canAcceptVerificationRequest(req: VerificationRequest): boolean {\n return req.phase < VerificationPhase.Ready && !req.accepting && !req.declining;\n}\n", "/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Well-known values (from the spec or MSCs) that are allowed in the\n * {@link Membership} type.\n */\nexport enum KnownMembership {\n /**\n * The user has been banned from the room, and is no longer allowed to join\n * it until they are un-banned from the room (by having their membership\n * state set to a value other than ban).\n */\n Ban = \"ban\",\n /**\n * The user has been invited to join a room, but has not yet joined it.\n * They may not participate in the room until they join.\n * */\n Invite = \"invite\",\n /**\n * The user has joined the room (possibly after accepting an invite), and\n * may participate in it.\n */\n Join = \"join\",\n /**\n * The user has knocked on the room, requesting permission to participate.\n * They may not participate in the room until they join.\n */\n Knock = \"knock\",\n /**\n * The user was once joined to the room, but has since left (possibly by\n * choice, or possibly by being kicked).\n */\n Leave = \"leave\",\n}\n\n/**\n * The membership state for a user in a room [1]. A value from\n * {@link KnownMembership} should be used where available, but all string values\n * are allowed to provide flexibility for upcoming spec changes or proposals.\n *\n * [1] https://spec.matrix.org/latest/client-server-api/#mroommember\n */\nexport type Membership = KnownMembership | string;\n"],
5
+ "mappings": ";;;;;AAAA;AA2KA,IAAYA,2BAAwB,0BAAxBA,2BAAwB;AAAxBA,EAAAA,0BAAwB,QAAA,IAAA;AAAA,SAAxBA;AAAwB,GAAA,CAAA,CAAA;AAmBpC,IAAYC,oBAAiB,0BAAjBA,oBAAiB;AAAjBA,EAAAA,mBAAAA,mBAAiB,QAAA,IAAA,CAAA,IAAA;AAAjBA,EAAAA,mBAAAA,mBAAiB,WAAA,IAAA,CAAA,IAAA;AAAjBA,EAAAA,mBAAAA,mBAAiB,OAAA,IAAA,CAAA,IAAA;AAAjBA,EAAAA,mBAAAA,mBAAiB,SAAA,IAAA,CAAA,IAAA;AAAjBA,EAAAA,mBAAAA,mBAAiB,WAAA,IAAA,CAAA,IAAA;AAAjBA,EAAAA,mBAAAA,mBAAiB,MAAA,IAAA,CAAA,IAAA;AAAA,SAAjBA;AAAiB,GAAA,CAAA,CAAA;AA2F7B,IAAYC,gBAAa,0BAAbA,gBAAa;AAAbA,EAAAA,eAAa,QAAA,IAAA;AAAbA,EAAAA,eAAa,SAAA,IAAA;AAAbA,EAAAA,eAAa,mBAAA,IAAA;AAAA,SAAbA;AAAa,GAAA,CAAA,CAAA;;;ACzRzB;AAoBA,IAAYC,kBAAe,0BAAfA,kBAAe;AAAfA,EAAAA,iBAAe,KAAA,IAAA;AAAfA,EAAAA,iBAAe,QAAA,IAAA;AAAfA,EAAAA,iBAAe,MAAA,IAAA;AAAfA,EAAAA,iBAAe,OAAA,IAAA;AAAfA,EAAAA,iBAAe,OAAA,IAAA;AAAA,SAAfA;AAAe,GAAA,CAAA,CAAA;",
6
+ "names": ["VerificationRequestEvent", "VerificationPhase", "VerifierEvent", "KnownMembership"]
7
+ }
@@ -0,0 +1,80 @@
1
+ import {
2
+ resolveValidatedMatrixHomeserverUrl
3
+ } from "./chunk-ZJHBJWZX.js";
4
+ import {
5
+ maybeMigrateLegacyStorage,
6
+ resolveMatrixStoragePaths,
7
+ writeStorageMeta
8
+ } from "./chunk-3UFTTK7C.js";
9
+ import {
10
+ init_shims
11
+ } from "./chunk-7FLQSTPG.js";
12
+
13
+ // src/matrix/client/create-client.ts
14
+ init_shims();
15
+ import fs from "node:fs";
16
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
17
+ var matrixCreateClientRuntimeDepsPromise;
18
+ async function loadMatrixCreateClientRuntimeDeps() {
19
+ matrixCreateClientRuntimeDepsPromise ??= Promise.all([
20
+ import("./src/matrix/sdk.js"),
21
+ import("./src/matrix/client/logging.js")
22
+ ]).then(([sdkModule, loggingModule]) => ({
23
+ MatrixClient: sdkModule.MatrixClient,
24
+ ensureMatrixSdkLoggingConfigured: loggingModule.ensureMatrixSdkLoggingConfigured
25
+ }));
26
+ return await matrixCreateClientRuntimeDepsPromise;
27
+ }
28
+ async function createMatrixClient(params) {
29
+ const { MatrixClient, ensureMatrixSdkLoggingConfigured } = await loadMatrixCreateClientRuntimeDeps();
30
+ ensureMatrixSdkLoggingConfigured();
31
+ const homeserver = await resolveValidatedMatrixHomeserverUrl(params.homeserver, {
32
+ dangerouslyAllowPrivateNetwork: params.allowPrivateNetwork
33
+ });
34
+ const matrixClientUserId = normalizeOptionalString(params.userId);
35
+ const userId = matrixClientUserId ?? "unknown";
36
+ const persistStorage = params.persistStorage !== false;
37
+ const storagePaths = persistStorage ? resolveMatrixStoragePaths({
38
+ homeserver,
39
+ userId,
40
+ accessToken: params.accessToken,
41
+ accountId: params.accountId,
42
+ deviceId: params.deviceId,
43
+ env: process.env
44
+ }) : null;
45
+ if (storagePaths) {
46
+ await maybeMigrateLegacyStorage({
47
+ storagePaths,
48
+ env: process.env
49
+ });
50
+ fs.mkdirSync(storagePaths.rootDir, { recursive: true });
51
+ writeStorageMeta({
52
+ storagePaths,
53
+ homeserver,
54
+ userId,
55
+ accountId: params.accountId,
56
+ deviceId: params.deviceId
57
+ });
58
+ }
59
+ const cryptoDatabasePrefix = storagePaths ? `openclaw-matrix-${storagePaths.accountKey}-${storagePaths.tokenHash}` : void 0;
60
+ return new MatrixClient(homeserver, params.accessToken, {
61
+ userId: matrixClientUserId,
62
+ password: params.password,
63
+ deviceId: params.deviceId,
64
+ encryption: params.encryption,
65
+ localTimeoutMs: params.localTimeoutMs,
66
+ initialSyncLimit: params.initialSyncLimit,
67
+ storagePath: storagePaths?.storagePath,
68
+ recoveryKeyPath: storagePaths?.recoveryKeyPath,
69
+ idbSnapshotPath: storagePaths?.idbSnapshotPath,
70
+ cryptoDatabasePrefix,
71
+ autoBootstrapCrypto: params.autoBootstrapCrypto,
72
+ ssrfPolicy: params.ssrfPolicy,
73
+ dispatcherPolicy: params.dispatcherPolicy
74
+ });
75
+ }
76
+
77
+ export {
78
+ createMatrixClient
79
+ };
80
+ //# sourceMappingURL=chunk-MBIX6Z7U.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/matrix/client/create-client.ts"],
4
+ "sourcesContent": ["import fs from \"node:fs\";\nimport type { PinnedDispatcherPolicy } from \"openclaw/plugin-sdk/infra-runtime\";\nimport { normalizeOptionalString } from \"openclaw/plugin-sdk/text-runtime\";\nimport type { SsrFPolicy } from \"../../runtime-api.js\";\nimport type { MatrixClient } from \"../sdk.js\";\nimport { resolveValidatedMatrixHomeserverUrl } from \"./config.js\";\nimport {\n maybeMigrateLegacyStorage,\n resolveMatrixStoragePaths,\n writeStorageMeta,\n} from \"./storage.js\";\n\ntype MatrixCreateClientRuntimeDeps = {\n MatrixClient: typeof import(\"../sdk.js\").MatrixClient;\n ensureMatrixSdkLoggingConfigured: typeof import(\"./logging.js\").ensureMatrixSdkLoggingConfigured;\n};\n\nlet matrixCreateClientRuntimeDepsPromise: Promise<MatrixCreateClientRuntimeDeps> | undefined;\n\nasync function loadMatrixCreateClientRuntimeDeps(): Promise<MatrixCreateClientRuntimeDeps> {\n matrixCreateClientRuntimeDepsPromise ??= Promise.all([\n import(\"../sdk.js\"),\n import(\"./logging.js\"),\n ]).then(([sdkModule, loggingModule]) => ({\n MatrixClient: sdkModule.MatrixClient,\n ensureMatrixSdkLoggingConfigured: loggingModule.ensureMatrixSdkLoggingConfigured,\n }));\n return await matrixCreateClientRuntimeDepsPromise;\n}\n\nexport async function createMatrixClient(params: {\n homeserver: string;\n userId?: string;\n accessToken: string;\n password?: string;\n deviceId?: string;\n persistStorage?: boolean;\n encryption?: boolean;\n localTimeoutMs?: number;\n initialSyncLimit?: number;\n accountId?: string | null;\n autoBootstrapCrypto?: boolean;\n allowPrivateNetwork?: boolean;\n ssrfPolicy?: SsrFPolicy;\n dispatcherPolicy?: PinnedDispatcherPolicy;\n}): Promise<MatrixClient> {\n const { MatrixClient, ensureMatrixSdkLoggingConfigured } =\n await loadMatrixCreateClientRuntimeDeps();\n ensureMatrixSdkLoggingConfigured();\n const homeserver = await resolveValidatedMatrixHomeserverUrl(params.homeserver, {\n dangerouslyAllowPrivateNetwork: params.allowPrivateNetwork,\n });\n const matrixClientUserId = normalizeOptionalString(params.userId);\n const userId = matrixClientUserId ?? \"unknown\";\n const persistStorage = params.persistStorage !== false;\n const storagePaths = persistStorage\n ? resolveMatrixStoragePaths({\n homeserver,\n userId,\n accessToken: params.accessToken,\n accountId: params.accountId,\n deviceId: params.deviceId,\n env: process.env,\n })\n : null;\n\n if (storagePaths) {\n await maybeMigrateLegacyStorage({\n storagePaths,\n env: process.env,\n });\n fs.mkdirSync(storagePaths.rootDir, { recursive: true });\n writeStorageMeta({\n storagePaths,\n homeserver,\n userId,\n accountId: params.accountId,\n deviceId: params.deviceId,\n });\n }\n\n const cryptoDatabasePrefix = storagePaths\n ? `openclaw-matrix-${storagePaths.accountKey}-${storagePaths.tokenHash}`\n : undefined;\n\n return new MatrixClient(homeserver, params.accessToken, {\n userId: matrixClientUserId,\n password: params.password,\n deviceId: params.deviceId,\n encryption: params.encryption,\n localTimeoutMs: params.localTimeoutMs,\n initialSyncLimit: params.initialSyncLimit,\n storagePath: storagePaths?.storagePath,\n recoveryKeyPath: storagePaths?.recoveryKeyPath,\n idbSnapshotPath: storagePaths?.idbSnapshotPath,\n cryptoDatabasePrefix,\n autoBootstrapCrypto: params.autoBootstrapCrypto,\n ssrfPolicy: params.ssrfPolicy,\n dispatcherPolicy: params.dispatcherPolicy,\n });\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;AAAA;AAAA,OAAO,QAAQ;AAEf,SAAS,+BAA+B;AAexC,IAAI;AAEJ,eAAe,oCAA4E;AACzF,2CAAyC,QAAQ,IAAI;AAAA,IACnD,OAAO,qBAAW;AAAA,IAClB,OAAO,gCAAc;AAAA,EACvB,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,aAAa,OAAO;AAAA,IACvC,cAAc,UAAU;AAAA,IACxB,kCAAkC,cAAc;AAAA,EAClD,EAAE;AACF,SAAO,MAAM;AACf;AAEA,eAAsB,mBAAmB,QAef;AACxB,QAAM,EAAE,cAAc,iCAAiC,IACrD,MAAM,kCAAkC;AAC1C,mCAAiC;AACjC,QAAM,aAAa,MAAM,oCAAoC,OAAO,YAAY;AAAA,IAC9E,gCAAgC,OAAO;AAAA,EACzC,CAAC;AACD,QAAM,qBAAqB,wBAAwB,OAAO,MAAM;AAChE,QAAM,SAAS,sBAAsB;AACrC,QAAM,iBAAiB,OAAO,mBAAmB;AACjD,QAAM,eAAe,iBACjB,0BAA0B;AAAA,IACxB;AAAA,IACA;AAAA,IACA,aAAa,OAAO;AAAA,IACpB,WAAW,OAAO;AAAA,IAClB,UAAU,OAAO;AAAA,IACjB,KAAK,QAAQ;AAAA,EACf,CAAC,IACD;AAEJ,MAAI,cAAc;AAChB,UAAM,0BAA0B;AAAA,MAC9B;AAAA,MACA,KAAK,QAAQ;AAAA,IACf,CAAC;AACD,OAAG,UAAU,aAAa,SAAS,EAAE,WAAW,KAAK,CAAC;AACtD,qBAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,OAAO;AAAA,MAClB,UAAU,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,QAAM,uBAAuB,eACzB,mBAAmB,aAAa,UAAU,IAAI,aAAa,SAAS,KACpE;AAEJ,SAAO,IAAI,aAAa,YAAY,OAAO,aAAa;AAAA,IACtD,QAAQ;AAAA,IACR,UAAU,OAAO;AAAA,IACjB,UAAU,OAAO;AAAA,IACjB,YAAY,OAAO;AAAA,IACnB,gBAAgB,OAAO;AAAA,IACvB,kBAAkB,OAAO;AAAA,IACzB,aAAa,cAAc;AAAA,IAC3B,iBAAiB,cAAc;AAAA,IAC/B,iBAAiB,cAAc;AAAA,IAC/B;AAAA,IACA,qBAAqB,OAAO;AAAA,IAC5B,YAAY,OAAO;AAAA,IACnB,kBAAkB,OAAO;AAAA,EAC3B,CAAC;AACH;",
6
+ "names": []
7
+ }