@archipelagolab/lobi 1.0.0 → 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 (1165) hide show
  1. package/LICENSE +13 -17
  2. package/README.md +136 -0
  3. package/dist/APEv2Parser-6EMKXRZS.js +15 -0
  4. package/dist/APEv2Parser-6EMKXRZS.js.map +7 -0
  5. package/dist/AiffParser-E6XWRTXM.js +194 -0
  6. package/dist/AiffParser-E6XWRTXM.js.map +7 -0
  7. package/dist/AsfParser-WSOH2JQY.js +620 -0
  8. package/dist/AsfParser-WSOH2JQY.js.map +7 -0
  9. package/dist/DsdiffParser-EUWJ4YAR.js +192 -0
  10. package/dist/DsdiffParser-EUWJ4YAR.js.map +7 -0
  11. package/dist/DsfParser-R6TPBJIY.js +114 -0
  12. package/dist/DsfParser-R6TPBJIY.js.map +7 -0
  13. package/dist/FlacParser-VDASGZ3E.js +16 -0
  14. package/dist/FlacParser-VDASGZ3E.js.map +7 -0
  15. package/dist/MP4Parser-64RGJLUM.js +1145 -0
  16. package/dist/MP4Parser-64RGJLUM.js.map +7 -0
  17. package/dist/MatroskaParser-O6RXAKYA.js +662 -0
  18. package/dist/MatroskaParser-O6RXAKYA.js.map +7 -0
  19. package/dist/MpegParser-B6NX6DS3.js +652 -0
  20. package/dist/MpegParser-B6NX6DS3.js.map +7 -0
  21. package/dist/MusepackParser-WUBT63DS.js +331 -0
  22. package/dist/MusepackParser-WUBT63DS.js.map +7 -0
  23. package/dist/OggParser-ZY6E5C2P.js +448 -0
  24. package/dist/OggParser-ZY6E5C2P.js.map +7 -0
  25. package/dist/WavPackParser-5KTCSQEU.js +209 -0
  26. package/dist/WavPackParser-5KTCSQEU.js.map +7 -0
  27. package/dist/WaveParser-RZSHVQPZ.js +300 -0
  28. package/dist/WaveParser-RZSHVQPZ.js.map +7 -0
  29. package/dist/auth-presence.js +46 -0
  30. package/dist/auth-presence.js.map +7 -0
  31. package/dist/channel-plugin-api.js +79 -0
  32. package/dist/channel-plugin-api.js.map +7 -0
  33. package/dist/chunk-22WAAZ6I.js +114 -0
  34. package/dist/chunk-22WAAZ6I.js.map +7 -0
  35. package/dist/chunk-2A6HEFSO.js +676 -0
  36. package/dist/chunk-2A6HEFSO.js.map +7 -0
  37. package/dist/chunk-2KGHUHKU.js +169 -0
  38. package/dist/chunk-2KGHUHKU.js.map +7 -0
  39. package/dist/chunk-2NEQI4K6.js +171 -0
  40. package/dist/chunk-2NEQI4K6.js.map +7 -0
  41. package/dist/chunk-2OSJ3MTW.js +175 -0
  42. package/dist/chunk-2OSJ3MTW.js.map +7 -0
  43. package/dist/chunk-2Q626TDO.js +27 -0
  44. package/dist/chunk-2Q626TDO.js.map +7 -0
  45. package/dist/chunk-2U6OZ7N2.js +155 -0
  46. package/dist/chunk-2U6OZ7N2.js.map +7 -0
  47. package/dist/chunk-2Z4IOUDZ.js +129 -0
  48. package/dist/chunk-2Z4IOUDZ.js.map +7 -0
  49. package/dist/chunk-2ZEPAW7U.js +154 -0
  50. package/dist/chunk-2ZEPAW7U.js.map +7 -0
  51. package/dist/chunk-2ZI6JK5O.js +63 -0
  52. package/dist/chunk-2ZI6JK5O.js.map +7 -0
  53. package/dist/chunk-34UY6D6X.js +36 -0
  54. package/dist/chunk-34UY6D6X.js.map +7 -0
  55. package/dist/chunk-3JD6JSJD.js +111 -0
  56. package/dist/chunk-3JD6JSJD.js.map +7 -0
  57. package/dist/chunk-3TOEIHG5.js +314 -0
  58. package/dist/chunk-3TOEIHG5.js.map +7 -0
  59. package/dist/chunk-3TRKKAVT.js +130 -0
  60. package/dist/chunk-3TRKKAVT.js.map +7 -0
  61. package/dist/chunk-3UFTTK7C.js +418 -0
  62. package/dist/chunk-3UFTTK7C.js.map +7 -0
  63. package/dist/chunk-3XO6AAIC.js +25 -0
  64. package/dist/chunk-3XO6AAIC.js.map +7 -0
  65. package/dist/chunk-427SAQME.js +321 -0
  66. package/dist/chunk-427SAQME.js.map +7 -0
  67. package/dist/chunk-4JVNTZAI.js +80 -0
  68. package/dist/chunk-4JVNTZAI.js.map +7 -0
  69. package/dist/chunk-4O3BEYYM.js +187 -0
  70. package/dist/chunk-4O3BEYYM.js.map +7 -0
  71. package/dist/chunk-4Z2N4GW6.js +247 -0
  72. package/dist/chunk-4Z2N4GW6.js.map +7 -0
  73. package/dist/chunk-56HN4SH6.js +46 -0
  74. package/dist/chunk-56HN4SH6.js.map +7 -0
  75. package/dist/chunk-5APBBTGW.js +7 -0
  76. package/dist/chunk-5APBBTGW.js.map +7 -0
  77. package/dist/chunk-5LNGMBWW.js +93 -0
  78. package/dist/chunk-5LNGMBWW.js.map +7 -0
  79. package/dist/chunk-5XFQSYZ4.js +52 -0
  80. package/dist/chunk-5XFQSYZ4.js.map +7 -0
  81. package/dist/chunk-62N5N4AC.js +241 -0
  82. package/dist/chunk-62N5N4AC.js.map +7 -0
  83. package/dist/chunk-6HX3DEXK.js +178 -0
  84. package/dist/chunk-6HX3DEXK.js.map +7 -0
  85. package/dist/chunk-6NO5VEVV.js +18 -0
  86. package/dist/chunk-6NO5VEVV.js.map +7 -0
  87. package/dist/chunk-6PZGDVLR.js +465 -0
  88. package/dist/chunk-6PZGDVLR.js.map +7 -0
  89. package/dist/chunk-6SOGH3TW.js +163 -0
  90. package/dist/chunk-6SOGH3TW.js.map +7 -0
  91. package/dist/chunk-72TGY3LX.js +104 -0
  92. package/dist/chunk-72TGY3LX.js.map +7 -0
  93. package/dist/chunk-76IE55K7.js +392 -0
  94. package/dist/chunk-76IE55K7.js.map +7 -0
  95. package/dist/chunk-7F3242AO.js +86 -0
  96. package/dist/chunk-7F3242AO.js.map +7 -0
  97. package/dist/chunk-7FLQSTPG.js +57 -0
  98. package/dist/chunk-7FLQSTPG.js.map +7 -0
  99. package/dist/chunk-7MP46JBP.js +177 -0
  100. package/dist/chunk-7MP46JBP.js.map +7 -0
  101. package/dist/chunk-7MVZYR2T.js +87 -0
  102. package/dist/chunk-7MVZYR2T.js.map +7 -0
  103. package/dist/chunk-7N7ISMPG.js +50 -0
  104. package/dist/chunk-7N7ISMPG.js.map +7 -0
  105. package/dist/chunk-7S7LQQPX.js +127 -0
  106. package/dist/chunk-7S7LQQPX.js.map +7 -0
  107. package/dist/chunk-7TTNY5FK.js +21 -0
  108. package/dist/chunk-7TTNY5FK.js.map +7 -0
  109. package/dist/chunk-7W73QCTR.js +244 -0
  110. package/dist/chunk-7W73QCTR.js.map +7 -0
  111. package/dist/chunk-7XXLU33Y.js +76 -0
  112. package/dist/chunk-7XXLU33Y.js.map +7 -0
  113. package/dist/chunk-AAO7BQEV.js +258 -0
  114. package/dist/chunk-AAO7BQEV.js.map +7 -0
  115. package/dist/chunk-AH4MLRYT.js +91 -0
  116. package/dist/chunk-AH4MLRYT.js.map +7 -0
  117. package/dist/chunk-AHKR32FH.js +7 -0
  118. package/dist/chunk-AHKR32FH.js.map +7 -0
  119. package/dist/chunk-ALKRFDAW.js +94 -0
  120. package/dist/chunk-ALKRFDAW.js.map +7 -0
  121. package/dist/chunk-AQQGAE7N.js +12 -0
  122. package/dist/chunk-AQQGAE7N.js.map +7 -0
  123. package/dist/chunk-AWW3YUGJ.js +193 -0
  124. package/dist/chunk-AWW3YUGJ.js.map +7 -0
  125. package/dist/chunk-AX7VEEWJ.js +158 -0
  126. package/dist/chunk-AX7VEEWJ.js.map +7 -0
  127. package/dist/chunk-BAX7Q6GR.js +55 -0
  128. package/dist/chunk-BAX7Q6GR.js.map +7 -0
  129. package/dist/chunk-BBM6BR3Z.js +28 -0
  130. package/dist/chunk-BBM6BR3Z.js.map +7 -0
  131. package/dist/chunk-BHXZMHSX.js +109 -0
  132. package/dist/chunk-BHXZMHSX.js.map +7 -0
  133. package/dist/chunk-BIUXDLVY.js +62 -0
  134. package/dist/chunk-BIUXDLVY.js.map +7 -0
  135. package/dist/chunk-BMFZL2P4.js +97 -0
  136. package/dist/chunk-BMFZL2P4.js.map +7 -0
  137. package/dist/chunk-BQXEXK4H.js +114 -0
  138. package/dist/chunk-BQXEXK4H.js.map +7 -0
  139. package/dist/chunk-BU2CTWBG.js +30 -0
  140. package/dist/chunk-BU2CTWBG.js.map +7 -0
  141. package/dist/chunk-BVKSCLF7.js +195 -0
  142. package/dist/chunk-BVKSCLF7.js.map +7 -0
  143. package/dist/chunk-BWA3D22L.js +88 -0
  144. package/dist/chunk-BWA3D22L.js.map +7 -0
  145. package/dist/chunk-CE24RSPL.js +506 -0
  146. package/dist/chunk-CE24RSPL.js.map +7 -0
  147. package/dist/chunk-CETZGSCP.js +71 -0
  148. package/dist/chunk-CETZGSCP.js.map +7 -0
  149. package/dist/chunk-CGBWMONK.js +412 -0
  150. package/dist/chunk-CGBWMONK.js.map +7 -0
  151. package/dist/chunk-CPNIXMGX.js +127 -0
  152. package/dist/chunk-CPNIXMGX.js.map +7 -0
  153. package/dist/chunk-CSJO73LD.js +84 -0
  154. package/dist/chunk-CSJO73LD.js.map +7 -0
  155. package/dist/chunk-CTKBDSL6.js +81 -0
  156. package/dist/chunk-CTKBDSL6.js.map +7 -0
  157. package/dist/chunk-CY6WHUCW.js +54 -0
  158. package/dist/chunk-CY6WHUCW.js.map +7 -0
  159. package/dist/chunk-D7Q6Z74D.js +123 -0
  160. package/dist/chunk-D7Q6Z74D.js.map +7 -0
  161. package/dist/chunk-DZIM4OWK.js +17 -0
  162. package/dist/chunk-DZIM4OWK.js.map +7 -0
  163. package/dist/chunk-E3GC4V5V.js +30 -0
  164. package/dist/chunk-E3GC4V5V.js.map +7 -0
  165. package/dist/chunk-E5HPDHCW.js +34 -0
  166. package/dist/chunk-E5HPDHCW.js.map +7 -0
  167. package/dist/chunk-E75BJJZ2.js +635 -0
  168. package/dist/chunk-E75BJJZ2.js.map +7 -0
  169. package/dist/chunk-EE4DHUUZ.js +472 -0
  170. package/dist/chunk-EE4DHUUZ.js.map +7 -0
  171. package/dist/chunk-EHELTAAD.js +198 -0
  172. package/dist/chunk-EHELTAAD.js.map +7 -0
  173. package/dist/chunk-EKXPSI7Z.js +135 -0
  174. package/dist/chunk-EKXPSI7Z.js.map +7 -0
  175. package/dist/chunk-ERCH75SH.js +292 -0
  176. package/dist/chunk-ERCH75SH.js.map +7 -0
  177. package/dist/chunk-EVFWZGFL.js +235 -0
  178. package/dist/chunk-EVFWZGFL.js.map +7 -0
  179. package/dist/chunk-EVPBRKMZ.js +45 -0
  180. package/dist/chunk-EVPBRKMZ.js.map +7 -0
  181. package/dist/chunk-F6AFJHWV.js +45 -0
  182. package/dist/chunk-F6AFJHWV.js.map +7 -0
  183. package/dist/chunk-FG4NVFKM.js +455 -0
  184. package/dist/chunk-FG4NVFKM.js.map +7 -0
  185. package/dist/chunk-FHNEN6IR.js +14 -0
  186. package/dist/chunk-FHNEN6IR.js.map +7 -0
  187. package/dist/chunk-FQ4R7IOX.js +32 -0
  188. package/dist/chunk-FQ4R7IOX.js.map +7 -0
  189. package/dist/chunk-FQPYAPJJ.js +124 -0
  190. package/dist/chunk-FQPYAPJJ.js.map +7 -0
  191. package/dist/chunk-FQTLJO4W.js +335 -0
  192. package/dist/chunk-FQTLJO4W.js.map +7 -0
  193. package/dist/chunk-FVLJSB2W.js +124 -0
  194. package/dist/chunk-FVLJSB2W.js.map +7 -0
  195. package/dist/chunk-FYRKBNTI.js +18 -0
  196. package/dist/chunk-FYRKBNTI.js.map +7 -0
  197. package/dist/chunk-GD6L3SLC.js +30 -0
  198. package/dist/chunk-GD6L3SLC.js.map +7 -0
  199. package/dist/chunk-GI2ZANRY.js +24 -0
  200. package/dist/chunk-GI2ZANRY.js.map +7 -0
  201. package/dist/chunk-GK3XVKXT.js +737 -0
  202. package/dist/chunk-GK3XVKXT.js.map +7 -0
  203. package/dist/chunk-GKOWCDQV.js +699 -0
  204. package/dist/chunk-GKOWCDQV.js.map +7 -0
  205. package/dist/chunk-GLLRCKKE.js +26 -0
  206. package/dist/chunk-GLLRCKKE.js.map +7 -0
  207. package/dist/chunk-GNYG6I36.js +175 -0
  208. package/dist/chunk-GNYG6I36.js.map +7 -0
  209. package/dist/chunk-GVYGUH2V.js +7 -0
  210. package/dist/chunk-GVYGUH2V.js.map +7 -0
  211. package/dist/chunk-GZAGAWSU.js +28 -0
  212. package/dist/chunk-GZAGAWSU.js.map +7 -0
  213. package/dist/chunk-H23E72SB.js +163 -0
  214. package/dist/chunk-H23E72SB.js.map +7 -0
  215. package/dist/chunk-H6YVV7GE.js +22 -0
  216. package/dist/chunk-H6YVV7GE.js.map +7 -0
  217. package/dist/chunk-HDPICD3P.js +4890 -0
  218. package/dist/chunk-HDPICD3P.js.map +7 -0
  219. package/dist/chunk-HP5HMWOM.js +123 -0
  220. package/dist/chunk-HP5HMWOM.js.map +7 -0
  221. package/dist/chunk-HQSHS6IB.js +88 -0
  222. package/dist/chunk-HQSHS6IB.js.map +7 -0
  223. package/dist/chunk-HTV3R73W.js +51 -0
  224. package/dist/chunk-HTV3R73W.js.map +7 -0
  225. package/dist/chunk-IJCMYMZB.js +239 -0
  226. package/dist/chunk-IJCMYMZB.js.map +7 -0
  227. package/dist/chunk-INNENDEE.js +472 -0
  228. package/dist/chunk-INNENDEE.js.map +7 -0
  229. package/dist/chunk-IOTLSMEQ.js +177 -0
  230. package/dist/chunk-IOTLSMEQ.js.map +7 -0
  231. package/dist/chunk-IQYYEHSM.js +300 -0
  232. package/dist/chunk-IQYYEHSM.js.map +7 -0
  233. package/dist/chunk-IRA5NJ4Q.js +21 -0
  234. package/dist/chunk-IRA5NJ4Q.js.map +7 -0
  235. package/dist/chunk-IU7EXXK7.js +1662 -0
  236. package/dist/chunk-IU7EXXK7.js.map +7 -0
  237. package/dist/chunk-IUXAKDAY.js +102 -0
  238. package/dist/chunk-IUXAKDAY.js.map +7 -0
  239. package/dist/chunk-JMYIFYY5.js +233 -0
  240. package/dist/chunk-JMYIFYY5.js.map +7 -0
  241. package/dist/chunk-JSZBX2TA.js +5853 -0
  242. package/dist/chunk-JSZBX2TA.js.map +7 -0
  243. package/dist/chunk-KHFWQ334.js +138 -0
  244. package/dist/chunk-KHFWQ334.js.map +7 -0
  245. package/dist/chunk-KJW6JLM6.js +95 -0
  246. package/dist/chunk-KJW6JLM6.js.map +7 -0
  247. package/dist/chunk-KSEANSJE.js +40 -0
  248. package/dist/chunk-KSEANSJE.js.map +7 -0
  249. package/dist/chunk-KVU54E6W.js +63 -0
  250. package/dist/chunk-KVU54E6W.js.map +7 -0
  251. package/dist/chunk-L5OUVMHK.js +174 -0
  252. package/dist/chunk-L5OUVMHK.js.map +7 -0
  253. package/dist/chunk-LIVQ7GIO.js +86 -0
  254. package/dist/chunk-LIVQ7GIO.js.map +7 -0
  255. package/dist/chunk-LO4F6E3N.js +163 -0
  256. package/dist/chunk-LO4F6E3N.js.map +7 -0
  257. package/dist/chunk-LSVKDUNM.js +151 -0
  258. package/dist/chunk-LSVKDUNM.js.map +7 -0
  259. package/dist/chunk-LVMK2GPM.js +18 -0
  260. package/dist/chunk-LVMK2GPM.js.map +7 -0
  261. package/dist/chunk-LXVPETLK.js +1405 -0
  262. package/dist/chunk-LXVPETLK.js.map +7 -0
  263. package/dist/chunk-LZNW24OB.js +78 -0
  264. package/dist/chunk-LZNW24OB.js.map +7 -0
  265. package/dist/chunk-MAF6PSCJ.js +44 -0
  266. package/dist/chunk-MAF6PSCJ.js.map +7 -0
  267. package/dist/chunk-MBIX6Z7U.js +80 -0
  268. package/dist/chunk-MBIX6Z7U.js.map +7 -0
  269. package/dist/chunk-MDLLXMC3.js +183 -0
  270. package/dist/chunk-MDLLXMC3.js.map +7 -0
  271. package/dist/chunk-MEI5HTWV.js +127 -0
  272. package/dist/chunk-MEI5HTWV.js.map +7 -0
  273. package/dist/chunk-MH74AJ3A.js +82 -0
  274. package/dist/chunk-MH74AJ3A.js.map +7 -0
  275. package/dist/chunk-MIFIM4PI.js +163 -0
  276. package/dist/chunk-MIFIM4PI.js.map +7 -0
  277. package/dist/chunk-MISZB5QJ.js +22 -0
  278. package/dist/chunk-MISZB5QJ.js.map +7 -0
  279. package/dist/chunk-MJ27XQYG.js +125 -0
  280. package/dist/chunk-MJ27XQYG.js.map +7 -0
  281. package/dist/chunk-MLQY5SKR.js +52 -0
  282. package/dist/chunk-MLQY5SKR.js.map +7 -0
  283. package/dist/chunk-MTMHGC3G.js +39 -0
  284. package/dist/chunk-MTMHGC3G.js.map +7 -0
  285. package/dist/chunk-MWBAW3YV.js +244 -0
  286. package/dist/chunk-MWBAW3YV.js.map +7 -0
  287. package/dist/chunk-MZGGB2YT.js +50 -0
  288. package/dist/chunk-MZGGB2YT.js.map +7 -0
  289. package/dist/chunk-N5SNGZJV.js +217 -0
  290. package/dist/chunk-N5SNGZJV.js.map +7 -0
  291. package/dist/chunk-NGCTBYQ3.js +181 -0
  292. package/dist/chunk-NGCTBYQ3.js.map +7 -0
  293. package/dist/chunk-NMUX7SGU.js +676 -0
  294. package/dist/chunk-NMUX7SGU.js.map +7 -0
  295. package/dist/chunk-NO7GMLNU.js +292 -0
  296. package/dist/chunk-NO7GMLNU.js.map +7 -0
  297. package/dist/chunk-NTOGVX2Y.js +92 -0
  298. package/dist/chunk-NTOGVX2Y.js.map +7 -0
  299. package/dist/chunk-O5IVKDX7.js +30 -0
  300. package/dist/chunk-O5IVKDX7.js.map +7 -0
  301. package/dist/chunk-OFWMLQMU.js +7287 -0
  302. package/dist/chunk-OFWMLQMU.js.map +7 -0
  303. package/dist/chunk-OJ3ZUKBI.js +73 -0
  304. package/dist/chunk-OJ3ZUKBI.js.map +7 -0
  305. package/dist/chunk-OJTHE4B7.js +50 -0
  306. package/dist/chunk-OJTHE4B7.js.map +7 -0
  307. package/dist/chunk-OOYPYBTA.js +446 -0
  308. package/dist/chunk-OOYPYBTA.js.map +7 -0
  309. package/dist/chunk-OQP4W4AR.js +105 -0
  310. package/dist/chunk-OQP4W4AR.js.map +7 -0
  311. package/dist/chunk-OVTT2EKA.js +516 -0
  312. package/dist/chunk-OVTT2EKA.js.map +7 -0
  313. package/dist/chunk-P5N63LBS.js +94 -0
  314. package/dist/chunk-P5N63LBS.js.map +7 -0
  315. package/dist/chunk-PARITZ7F.js +28 -0
  316. package/dist/chunk-PARITZ7F.js.map +7 -0
  317. package/dist/chunk-PBQK4KY4.js +195 -0
  318. package/dist/chunk-PBQK4KY4.js.map +7 -0
  319. package/dist/chunk-PSL2AHIA.js +27 -0
  320. package/dist/chunk-PSL2AHIA.js.map +7 -0
  321. package/dist/chunk-Q5QT7JBM.js +92 -0
  322. package/dist/chunk-Q5QT7JBM.js.map +7 -0
  323. package/dist/chunk-Q7WA5DCR.js +62 -0
  324. package/dist/chunk-Q7WA5DCR.js.map +7 -0
  325. package/dist/chunk-QATEENP2.js +7 -0
  326. package/dist/chunk-QATEENP2.js.map +7 -0
  327. package/dist/chunk-QDT24CIA.js +485 -0
  328. package/dist/chunk-QDT24CIA.js.map +7 -0
  329. package/dist/chunk-QI3NB7D5.js +455 -0
  330. package/dist/chunk-QI3NB7D5.js.map +7 -0
  331. package/dist/chunk-QIDAVXSX.js +106 -0
  332. package/dist/chunk-QIDAVXSX.js.map +7 -0
  333. package/dist/chunk-QKIGQVP2.js +104 -0
  334. package/dist/chunk-QKIGQVP2.js.map +7 -0
  335. package/dist/chunk-QNJENPK2.js +81 -0
  336. package/dist/chunk-QNJENPK2.js.map +7 -0
  337. package/dist/chunk-REVXXWAS.js +31 -0
  338. package/dist/chunk-REVXXWAS.js.map +7 -0
  339. package/dist/chunk-RFH4HRZP.js +94 -0
  340. package/dist/chunk-RFH4HRZP.js.map +7 -0
  341. package/dist/chunk-RNGAGYCL.js +49 -0
  342. package/dist/chunk-RNGAGYCL.js.map +7 -0
  343. package/dist/chunk-RPCVN3JA.js +261 -0
  344. package/dist/chunk-RPCVN3JA.js.map +7 -0
  345. package/dist/chunk-RQQE5DDT.js +193 -0
  346. package/dist/chunk-RQQE5DDT.js.map +7 -0
  347. package/dist/chunk-RVOD3ESA.js +38 -0
  348. package/dist/chunk-RVOD3ESA.js.map +7 -0
  349. package/dist/chunk-SAOUP24A.js +70 -0
  350. package/dist/chunk-SAOUP24A.js.map +7 -0
  351. package/dist/chunk-SFZL2TCV.js +55 -0
  352. package/dist/chunk-SFZL2TCV.js.map +7 -0
  353. package/dist/chunk-SJPFUXBV.js +45 -0
  354. package/dist/chunk-SJPFUXBV.js.map +7 -0
  355. package/dist/chunk-SLIUQWAR.js +58 -0
  356. package/dist/chunk-SLIUQWAR.js.map +7 -0
  357. package/dist/chunk-SSEX66OL.js +39 -0
  358. package/dist/chunk-SSEX66OL.js.map +7 -0
  359. package/dist/chunk-SX2LOHOX.js +251 -0
  360. package/dist/chunk-SX2LOHOX.js.map +7 -0
  361. package/dist/chunk-T72EMFTX.js +74 -0
  362. package/dist/chunk-T72EMFTX.js.map +7 -0
  363. package/dist/chunk-TA2QJPPG.js +169 -0
  364. package/dist/chunk-TA2QJPPG.js.map +7 -0
  365. package/dist/chunk-TFEETDNY.js +78 -0
  366. package/dist/chunk-TFEETDNY.js.map +7 -0
  367. package/dist/chunk-THM2QV25.js +108 -0
  368. package/dist/chunk-THM2QV25.js.map +7 -0
  369. package/dist/chunk-TRWT2N6Z.js +15 -0
  370. package/dist/chunk-TRWT2N6Z.js.map +7 -0
  371. package/dist/chunk-TTXEM54Y.js +76 -0
  372. package/dist/chunk-TTXEM54Y.js.map +7 -0
  373. package/dist/chunk-U4LVIY5F.js +1405 -0
  374. package/dist/chunk-U4LVIY5F.js.map +7 -0
  375. package/dist/chunk-U767LCSG.js +78 -0
  376. package/dist/chunk-U767LCSG.js.map +7 -0
  377. package/dist/chunk-U7GKLHU6.js +120 -0
  378. package/dist/chunk-U7GKLHU6.js.map +7 -0
  379. package/dist/chunk-UAB5P5QO.js +60 -0
  380. package/dist/chunk-UAB5P5QO.js.map +7 -0
  381. package/dist/chunk-UEHPJQBL.js +38 -0
  382. package/dist/chunk-UEHPJQBL.js.map +7 -0
  383. package/dist/chunk-UIBV6IGR.js +31 -0
  384. package/dist/chunk-UIBV6IGR.js.map +7 -0
  385. package/dist/chunk-UIYFRUET.js +16352 -0
  386. package/dist/chunk-UIYFRUET.js.map +7 -0
  387. package/dist/chunk-UJS3TIVS.js +52 -0
  388. package/dist/chunk-UJS3TIVS.js.map +7 -0
  389. package/dist/chunk-UU5PSBSI.js +176 -0
  390. package/dist/chunk-UU5PSBSI.js.map +7 -0
  391. package/dist/chunk-UV63XYFU.js +173 -0
  392. package/dist/chunk-UV63XYFU.js.map +7 -0
  393. package/dist/chunk-UWPHOAOC.js +29 -0
  394. package/dist/chunk-UWPHOAOC.js.map +7 -0
  395. package/dist/chunk-UXDDOSJC.js +52 -0
  396. package/dist/chunk-UXDDOSJC.js.map +7 -0
  397. package/dist/chunk-V3VAOMCO.js +465 -0
  398. package/dist/chunk-V3VAOMCO.js.map +7 -0
  399. package/dist/chunk-VA7ENH2S.js +38 -0
  400. package/dist/chunk-VA7ENH2S.js.map +7 -0
  401. package/dist/chunk-VFPDFLVE.js +516 -0
  402. package/dist/chunk-VFPDFLVE.js.map +7 -0
  403. package/dist/chunk-VHG4FNIJ.js +93 -0
  404. package/dist/chunk-VHG4FNIJ.js.map +7 -0
  405. package/dist/chunk-VKOO6MIZ.js +51 -0
  406. package/dist/chunk-VKOO6MIZ.js.map +7 -0
  407. package/dist/chunk-VKXKRZG7.js +62 -0
  408. package/dist/chunk-VKXKRZG7.js.map +7 -0
  409. package/dist/chunk-VUOLPEUZ.js +7 -0
  410. package/dist/chunk-VUOLPEUZ.js.map +7 -0
  411. package/dist/chunk-W6SOBS7M.js +138 -0
  412. package/dist/chunk-W6SOBS7M.js.map +7 -0
  413. package/dist/chunk-WDOKKRTE.js +7 -0
  414. package/dist/chunk-WDOKKRTE.js.map +7 -0
  415. package/dist/chunk-WGXXKFN5.js +7 -0
  416. package/dist/chunk-WGXXKFN5.js.map +7 -0
  417. package/dist/chunk-WHPUUP3J.js +25 -0
  418. package/dist/chunk-WHPUUP3J.js.map +7 -0
  419. package/dist/chunk-XF7LD6VV.js +122 -0
  420. package/dist/chunk-XF7LD6VV.js.map +7 -0
  421. package/dist/chunk-XFTXM3RE.js +64 -0
  422. package/dist/chunk-XFTXM3RE.js.map +7 -0
  423. package/dist/chunk-XJABPO2T.js +235 -0
  424. package/dist/chunk-XJABPO2T.js.map +7 -0
  425. package/dist/chunk-XK6VF3H7.js +3586 -0
  426. package/dist/chunk-XK6VF3H7.js.map +7 -0
  427. package/dist/chunk-XQYIIPOJ.js +266 -0
  428. package/dist/chunk-XQYIIPOJ.js.map +7 -0
  429. package/dist/chunk-XZSAN55E.js +58 -0
  430. package/dist/chunk-XZSAN55E.js.map +7 -0
  431. package/dist/chunk-Y3KJR4OG.js +64 -0
  432. package/dist/chunk-Y3KJR4OG.js.map +7 -0
  433. package/dist/chunk-Y4JKH7FF.js +45 -0
  434. package/dist/chunk-Y4JKH7FF.js.map +7 -0
  435. package/dist/chunk-Y6CJN4ID.js +31 -0
  436. package/dist/chunk-Y6CJN4ID.js.map +7 -0
  437. package/dist/chunk-YABGJU5M.js +271 -0
  438. package/dist/chunk-YABGJU5M.js.map +7 -0
  439. package/dist/chunk-YEJH7ZC2.js +34 -0
  440. package/dist/chunk-YEJH7ZC2.js.map +7 -0
  441. package/dist/chunk-YFTE4H54.js +44117 -0
  442. package/dist/chunk-YFTE4H54.js.map +7 -0
  443. package/dist/chunk-YNJYMD43.js +392 -0
  444. package/dist/chunk-YNJYMD43.js.map +7 -0
  445. package/dist/chunk-YNYEQGVN.js +251 -0
  446. package/dist/chunk-YNYEQGVN.js.map +7 -0
  447. package/dist/chunk-YUPBD27Z.js +70 -0
  448. package/dist/chunk-YUPBD27Z.js.map +7 -0
  449. package/dist/chunk-YXJ52FD5.js +271 -0
  450. package/dist/chunk-YXJ52FD5.js.map +7 -0
  451. package/dist/chunk-YZGORRQN.js +3101 -0
  452. package/dist/chunk-YZGORRQN.js.map +7 -0
  453. package/dist/chunk-Z6IVJ6ZW.js +30 -0
  454. package/dist/chunk-Z6IVJ6ZW.js.map +7 -0
  455. package/dist/chunk-ZFC44XJJ.js +86 -0
  456. package/dist/chunk-ZFC44XJJ.js.map +7 -0
  457. package/dist/chunk-ZJDJC5TP.js +82 -0
  458. package/dist/chunk-ZJDJC5TP.js.map +7 -0
  459. package/dist/chunk-ZJGZNPDK.js +171 -0
  460. package/dist/chunk-ZJGZNPDK.js.map +7 -0
  461. package/dist/chunk-ZJHBJWZX.js +699 -0
  462. package/dist/chunk-ZJHBJWZX.js.map +7 -0
  463. package/dist/chunk-ZNOTD65D.js +95 -0
  464. package/dist/chunk-ZNOTD65D.js.map +7 -0
  465. package/dist/chunk-ZQ2QIFXW.js +122 -0
  466. package/dist/chunk-ZQ2QIFXW.js.map +7 -0
  467. package/dist/chunk-ZRMXPQGY.js +241 -0
  468. package/dist/chunk-ZRMXPQGY.js.map +7 -0
  469. package/dist/chunk-ZVEE5IDC.js +3101 -0
  470. package/dist/chunk-ZVEE5IDC.js.map +7 -0
  471. package/dist/cli-metadata.js +12 -0
  472. package/dist/cli-metadata.js.map +7 -0
  473. package/dist/contract-api.js +104 -0
  474. package/dist/contract-api.js.map +7 -0
  475. package/dist/dist-F3K7S5SS.js +549 -0
  476. package/dist/dist-F3K7S5SS.js.map +7 -0
  477. package/dist/helper-api.js +51 -0
  478. package/dist/helper-api.js.map +7 -0
  479. package/dist/index.js +71 -0
  480. package/dist/index.js.map +7 -0
  481. package/dist/magic-string.es-V5NOGTUV.js +1315 -0
  482. package/dist/magic-string.es-V5NOGTUV.js.map +7 -0
  483. package/dist/openclaw.plugin.json +23 -0
  484. package/dist/package.json +59 -0
  485. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js +20 -0
  486. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js.map +7 -0
  487. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js +20 -0
  488. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js.map +7 -0
  489. package/dist/runtime-api.js +104 -0
  490. package/dist/runtime-api.js.map +7 -0
  491. package/dist/rust-crypto-H35BXWUU.js +5323 -0
  492. package/dist/rust-crypto-H35BXWUU.js.map +7 -0
  493. package/dist/secret-contract-api.js +18 -0
  494. package/dist/secret-contract-api.js.map +7 -0
  495. package/dist/setup-entry.js +23 -0
  496. package/dist/setup-entry.js.map +7 -0
  497. package/dist/src/account-selection.js +19 -0
  498. package/dist/src/account-selection.js.map +7 -0
  499. package/dist/src/actions.js +24 -0
  500. package/dist/src/actions.js.map +7 -0
  501. package/dist/src/approval-auth.js +27 -0
  502. package/dist/src/approval-auth.js.map +7 -0
  503. package/dist/src/approval-handler.runtime.js +378 -0
  504. package/dist/src/approval-handler.runtime.js.map +7 -0
  505. package/dist/src/approval-ids.js +9 -0
  506. package/dist/src/approval-ids.js.map +7 -0
  507. package/dist/src/approval-native.js +28 -0
  508. package/dist/src/approval-native.js.map +7 -0
  509. package/dist/src/approval-reactions.js +20 -0
  510. package/dist/src/approval-reactions.js.map +7 -0
  511. package/dist/src/auth-precedence.js +8 -0
  512. package/dist/src/auth-precedence.js.map +7 -0
  513. package/dist/src/channel-account-paths.js +11 -0
  514. package/dist/src/channel-account-paths.js.map +7 -0
  515. package/dist/src/channel.js +74 -0
  516. package/dist/src/channel.js.map +7 -0
  517. package/dist/src/channel.runtime.js +82 -0
  518. package/dist/src/channel.runtime.js.map +7 -0
  519. package/dist/src/cli-metadata.js +8 -0
  520. package/dist/src/cli-metadata.js.map +7 -0
  521. package/dist/src/cli.js +936 -0
  522. package/dist/src/cli.js.map +7 -0
  523. package/dist/src/config-adapter.js +26 -0
  524. package/dist/src/config-adapter.js.map +7 -0
  525. package/dist/src/config-schema.js +8 -0
  526. package/dist/src/config-schema.js.map +7 -0
  527. package/dist/src/directory-live.js +35 -0
  528. package/dist/src/directory-live.js.map +7 -0
  529. package/dist/src/doctor-contract.js +11 -0
  530. package/dist/src/doctor-contract.js.map +7 -0
  531. package/dist/src/doctor.js +42 -0
  532. package/dist/src/doctor.js.map +7 -0
  533. package/dist/src/env-vars.js +12 -0
  534. package/dist/src/env-vars.js.map +7 -0
  535. package/dist/src/exec-approval-resolver.js +10 -0
  536. package/dist/src/exec-approval-resolver.js.map +7 -0
  537. package/dist/src/exec-approvals.js +51 -0
  538. package/dist/src/exec-approvals.js.map +7 -0
  539. package/dist/src/group-mentions.js +28 -0
  540. package/dist/src/group-mentions.js.map +7 -0
  541. package/dist/src/legacy-crypto-inspector-availability.js +8 -0
  542. package/dist/src/legacy-crypto-inspector-availability.js.map +7 -0
  543. package/dist/src/legacy-crypto.js +26 -0
  544. package/dist/src/legacy-crypto.js.map +7 -0
  545. package/dist/src/legacy-state.js +24 -0
  546. package/dist/src/legacy-state.js.map +7 -0
  547. package/dist/src/matrix/account-config.js +16 -0
  548. package/dist/src/matrix/account-config.js.map +7 -0
  549. package/dist/src/matrix/accounts.js +31 -0
  550. package/dist/src/matrix/accounts.js.map +7 -0
  551. package/dist/src/matrix/actions/client.js +40 -0
  552. package/dist/src/matrix/actions/client.js.map +7 -0
  553. package/dist/src/matrix/actions/devices.js +42 -0
  554. package/dist/src/matrix/actions/devices.js.map +7 -0
  555. package/dist/src/matrix/actions/limits.js +8 -0
  556. package/dist/src/matrix/actions/limits.js.map +7 -0
  557. package/dist/src/matrix/actions/messages.js +49 -0
  558. package/dist/src/matrix/actions/messages.js.map +7 -0
  559. package/dist/src/matrix/actions/pins.js +46 -0
  560. package/dist/src/matrix/actions/pins.js.map +7 -0
  561. package/dist/src/matrix/actions/polls.js +37 -0
  562. package/dist/src/matrix/actions/polls.js.map +7 -0
  563. package/dist/src/matrix/actions/profile.js +38 -0
  564. package/dist/src/matrix/actions/profile.js.map +7 -0
  565. package/dist/src/matrix/actions/reactions.js +40 -0
  566. package/dist/src/matrix/actions/reactions.js.map +7 -0
  567. package/dist/src/matrix/actions/room.js +40 -0
  568. package/dist/src/matrix/actions/room.js.map +7 -0
  569. package/dist/src/matrix/actions/summary.js +19 -0
  570. package/dist/src/matrix/actions/summary.js.map +7 -0
  571. package/dist/src/matrix/actions/types.js +13 -0
  572. package/dist/src/matrix/actions/types.js.map +7 -0
  573. package/dist/src/matrix/actions/verification.js +77 -0
  574. package/dist/src/matrix/actions/verification.js.map +7 -0
  575. package/dist/src/matrix/actions.js +126 -0
  576. package/dist/src/matrix/actions.js.map +7 -0
  577. package/dist/src/matrix/active-client.js +10 -0
  578. package/dist/src/matrix/active-client.js.map +7 -0
  579. package/dist/src/matrix/async-lock.js +8 -0
  580. package/dist/src/matrix/async-lock.js.map +7 -0
  581. package/dist/src/matrix/backup-health.js +10 -0
  582. package/dist/src/matrix/backup-health.js.map +7 -0
  583. package/dist/src/matrix/client/config-runtime-api.js +24 -0
  584. package/dist/src/matrix/client/config-runtime-api.js.map +7 -0
  585. package/dist/src/matrix/client/config-secret-input.runtime.js +11 -0
  586. package/dist/src/matrix/client/config-secret-input.runtime.js.map +7 -0
  587. package/dist/src/matrix/client/config.js +42 -0
  588. package/dist/src/matrix/client/config.js.map +7 -0
  589. package/dist/src/matrix/client/create-client.js +20 -0
  590. package/dist/src/matrix/client/create-client.js.map +7 -0
  591. package/dist/src/matrix/client/env-auth.js +26 -0
  592. package/dist/src/matrix/client/env-auth.js.map +7 -0
  593. package/dist/src/matrix/client/file-sync-store.js +23 -0
  594. package/dist/src/matrix/client/file-sync-store.js.map +7 -0
  595. package/dist/src/matrix/client/logging.js +17 -0
  596. package/dist/src/matrix/client/logging.js.map +7 -0
  597. package/dist/src/matrix/client/migration-snapshot.runtime.js +13 -0
  598. package/dist/src/matrix/client/migration-snapshot.runtime.js.map +7 -0
  599. package/dist/src/matrix/client/private-network-host.js +8 -0
  600. package/dist/src/matrix/client/private-network-host.js.map +7 -0
  601. package/dist/src/matrix/client/runtime.js +8 -0
  602. package/dist/src/matrix/client/runtime.js.map +7 -0
  603. package/dist/src/matrix/client/shared.js +34 -0
  604. package/dist/src/matrix/client/shared.js.map +7 -0
  605. package/dist/src/matrix/client/storage.js +26 -0
  606. package/dist/src/matrix/client/storage.js.map +7 -0
  607. package/dist/src/matrix/client/types.js +7 -0
  608. package/dist/src/matrix/client/types.js.map +7 -0
  609. package/dist/src/matrix/client-bootstrap.js +15 -0
  610. package/dist/src/matrix/client-bootstrap.js.map +7 -0
  611. package/dist/src/matrix/client-resolver.test-helpers.js +122 -0
  612. package/dist/src/matrix/client-resolver.test-helpers.js.map +7 -0
  613. package/dist/src/matrix/client.js +63 -0
  614. package/dist/src/matrix/client.js.map +7 -0
  615. package/dist/src/matrix/config-paths.js +12 -0
  616. package/dist/src/matrix/config-paths.js.map +7 -0
  617. package/dist/src/matrix/config-update.js +17 -0
  618. package/dist/src/matrix/config-update.js.map +7 -0
  619. package/dist/src/matrix/credentials-read.js +22 -0
  620. package/dist/src/matrix/credentials-read.js.map +7 -0
  621. package/dist/src/matrix/credentials-write.runtime.js +24 -0
  622. package/dist/src/matrix/credentials-write.runtime.js.map +7 -0
  623. package/dist/src/matrix/credentials.js +90 -0
  624. package/dist/src/matrix/credentials.js.map +7 -0
  625. package/dist/src/matrix/deps.js +12 -0
  626. package/dist/src/matrix/deps.js.map +7 -0
  627. package/dist/src/matrix/device-health.js +10 -0
  628. package/dist/src/matrix/device-health.js.map +7 -0
  629. package/dist/src/matrix/direct-management.js +18 -0
  630. package/dist/src/matrix/direct-management.js.map +7 -0
  631. package/dist/src/matrix/direct-room.js +18 -0
  632. package/dist/src/matrix/direct-room.js.map +7 -0
  633. package/dist/src/matrix/draft-stream.js +33 -0
  634. package/dist/src/matrix/draft-stream.js.map +7 -0
  635. package/dist/src/matrix/encryption-guidance.js +17 -0
  636. package/dist/src/matrix/encryption-guidance.js.map +7 -0
  637. package/dist/src/matrix/errors.js +12 -0
  638. package/dist/src/matrix/errors.js.map +7 -0
  639. package/dist/src/matrix/format.js +13 -0
  640. package/dist/src/matrix/format.js.map +7 -0
  641. package/dist/src/matrix/legacy-crypto-inspector.js +73 -0
  642. package/dist/src/matrix/legacy-crypto-inspector.js.map +7 -0
  643. package/dist/src/matrix/media-errors.js +12 -0
  644. package/dist/src/matrix/media-errors.js.map +7 -0
  645. package/dist/src/matrix/media-text.js +22 -0
  646. package/dist/src/matrix/media-text.js.map +7 -0
  647. package/dist/src/matrix/monitor/access-state.js +9 -0
  648. package/dist/src/matrix/monitor/access-state.js.map +7 -0
  649. package/dist/src/matrix/monitor/ack-config.js +10 -0
  650. package/dist/src/matrix/monitor/ack-config.js.map +7 -0
  651. package/dist/src/matrix/monitor/allowlist.js +12 -0
  652. package/dist/src/matrix/monitor/allowlist.js.map +7 -0
  653. package/dist/src/matrix/monitor/auto-join.js +9 -0
  654. package/dist/src/matrix/monitor/auto-join.js.map +7 -0
  655. package/dist/src/matrix/monitor/config.js +37 -0
  656. package/dist/src/matrix/monitor/config.js.map +7 -0
  657. package/dist/src/matrix/monitor/context-summary.js +13 -0
  658. package/dist/src/matrix/monitor/context-summary.js.map +7 -0
  659. package/dist/src/matrix/monitor/direct.js +13 -0
  660. package/dist/src/matrix/monitor/direct.js.map +7 -0
  661. package/dist/src/matrix/monitor/events.js +20 -0
  662. package/dist/src/matrix/monitor/events.js.map +7 -0
  663. package/dist/src/matrix/monitor/handler.js +76 -0
  664. package/dist/src/matrix/monitor/handler.js.map +7 -0
  665. package/dist/src/matrix/monitor/handler.test-helpers.js +268 -0
  666. package/dist/src/matrix/monitor/handler.test-helpers.js.map +7 -0
  667. package/dist/src/matrix/monitor/inbound-dedupe.js +17 -0
  668. package/dist/src/matrix/monitor/inbound-dedupe.js.map +7 -0
  669. package/dist/src/matrix/monitor/index.js +502 -0
  670. package/dist/src/matrix/monitor/index.js.map +7 -0
  671. package/dist/src/matrix/monitor/legacy-crypto-restore.js +99 -0
  672. package/dist/src/matrix/monitor/legacy-crypto-restore.js.map +7 -0
  673. package/dist/src/matrix/monitor/location.js +11 -0
  674. package/dist/src/matrix/monitor/location.js.map +7 -0
  675. package/dist/src/matrix/monitor/media.js +10 -0
  676. package/dist/src/matrix/monitor/media.js.map +7 -0
  677. package/dist/src/matrix/monitor/mentions.js +9 -0
  678. package/dist/src/matrix/monitor/mentions.js.map +7 -0
  679. package/dist/src/matrix/monitor/reaction-events.js +38 -0
  680. package/dist/src/matrix/monitor/reaction-events.js.map +7 -0
  681. package/dist/src/matrix/monitor/recent-invite.js +10 -0
  682. package/dist/src/matrix/monitor/recent-invite.js.map +7 -0
  683. package/dist/src/matrix/monitor/replies.js +33 -0
  684. package/dist/src/matrix/monitor/replies.js.map +7 -0
  685. package/dist/src/matrix/monitor/reply-context.js +14 -0
  686. package/dist/src/matrix/monitor/reply-context.js.map +7 -0
  687. package/dist/src/matrix/monitor/room-history.js +10 -0
  688. package/dist/src/matrix/monitor/room-history.js.map +7 -0
  689. package/dist/src/matrix/monitor/room-info.js +9 -0
  690. package/dist/src/matrix/monitor/room-info.js.map +7 -0
  691. package/dist/src/matrix/monitor/rooms.js +9 -0
  692. package/dist/src/matrix/monitor/rooms.js.map +7 -0
  693. package/dist/src/matrix/monitor/route.js +12 -0
  694. package/dist/src/matrix/monitor/route.js.map +7 -0
  695. package/dist/src/matrix/monitor/runtime-api.js +40 -0
  696. package/dist/src/matrix/monitor/runtime-api.js.map +7 -0
  697. package/dist/src/matrix/monitor/startup-verification.js +174 -0
  698. package/dist/src/matrix/monitor/startup-verification.js.map +7 -0
  699. package/dist/src/matrix/monitor/startup.js +9 -0
  700. package/dist/src/matrix/monitor/startup.js.map +7 -0
  701. package/dist/src/matrix/monitor/status.js +10 -0
  702. package/dist/src/matrix/monitor/status.js.map +7 -0
  703. package/dist/src/matrix/monitor/sync-lifecycle.js +9 -0
  704. package/dist/src/matrix/monitor/sync-lifecycle.js.map +7 -0
  705. package/dist/src/matrix/monitor/task-runner.js +8 -0
  706. package/dist/src/matrix/monitor/task-runner.js.map +7 -0
  707. package/dist/src/matrix/monitor/thread-context.js +14 -0
  708. package/dist/src/matrix/monitor/thread-context.js.map +7 -0
  709. package/dist/src/matrix/monitor/threads.js +16 -0
  710. package/dist/src/matrix/monitor/threads.js.map +7 -0
  711. package/dist/src/matrix/monitor/types.js +11 -0
  712. package/dist/src/matrix/monitor/types.js.map +7 -0
  713. package/dist/src/matrix/monitor/verification-events.js +13 -0
  714. package/dist/src/matrix/monitor/verification-events.js.map +7 -0
  715. package/dist/src/matrix/monitor/verification-utils.js +16 -0
  716. package/dist/src/matrix/monitor/verification-utils.js.map +7 -0
  717. package/dist/src/matrix/outbound-media-runtime.js +9 -0
  718. package/dist/src/matrix/outbound-media-runtime.js.map +7 -0
  719. package/dist/src/matrix/poll-summary.js +14 -0
  720. package/dist/src/matrix/poll-summary.js.map +7 -0
  721. package/dist/src/matrix/poll-types.js +55 -0
  722. package/dist/src/matrix/poll-types.js.map +7 -0
  723. package/dist/src/matrix/probe.js +9 -0
  724. package/dist/src/matrix/probe.js.map +7 -0
  725. package/dist/src/matrix/probe.runtime.js +30 -0
  726. package/dist/src/matrix/probe.runtime.js.map +7 -0
  727. package/dist/src/matrix/profile.js +16 -0
  728. package/dist/src/matrix/profile.js.map +7 -0
  729. package/dist/src/matrix/reaction-common.js +26 -0
  730. package/dist/src/matrix/reaction-common.js.map +7 -0
  731. package/dist/src/matrix/sdk/crypto-bootstrap.js +15 -0
  732. package/dist/src/matrix/sdk/crypto-bootstrap.js.map +7 -0
  733. package/dist/src/matrix/sdk/crypto-facade.js +8 -0
  734. package/dist/src/matrix/sdk/crypto-facade.js.map +7 -0
  735. package/dist/src/matrix/sdk/crypto-node.runtime.js +15 -0
  736. package/dist/src/matrix/sdk/crypto-node.runtime.js.map +7 -0
  737. package/dist/src/matrix/sdk/crypto-runtime.js +84 -0
  738. package/dist/src/matrix/sdk/crypto-runtime.js.map +7 -0
  739. package/dist/src/matrix/sdk/decrypt-bridge.js +11 -0
  740. package/dist/src/matrix/sdk/decrypt-bridge.js.map +7 -0
  741. package/dist/src/matrix/sdk/event-helpers.js +12 -0
  742. package/dist/src/matrix/sdk/event-helpers.js.map +7 -0
  743. package/dist/src/matrix/sdk/http-client.js +13 -0
  744. package/dist/src/matrix/sdk/http-client.js.map +7 -0
  745. package/dist/src/matrix/sdk/idb-persistence-lock.js +12 -0
  746. package/dist/src/matrix/sdk/idb-persistence-lock.js.map +7 -0
  747. package/dist/src/matrix/sdk/idb-persistence.js +13 -0
  748. package/dist/src/matrix/sdk/idb-persistence.js.map +7 -0
  749. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js +83 -0
  750. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js.map +7 -0
  751. package/dist/src/matrix/sdk/logger.js +15 -0
  752. package/dist/src/matrix/sdk/logger.js.map +7 -0
  753. package/dist/src/matrix/sdk/read-response-with-limit.js +8 -0
  754. package/dist/src/matrix/sdk/read-response-with-limit.js.map +7 -0
  755. package/dist/src/matrix/sdk/recovery-key-store.js +14 -0
  756. package/dist/src/matrix/sdk/recovery-key-store.js.map +7 -0
  757. package/dist/src/matrix/sdk/transport.js +13 -0
  758. package/dist/src/matrix/sdk/transport.js.map +7 -0
  759. package/dist/src/matrix/sdk/types.js +7 -0
  760. package/dist/src/matrix/sdk/types.js.map +7 -0
  761. package/dist/src/matrix/sdk/verification-manager.js +11 -0
  762. package/dist/src/matrix/sdk/verification-manager.js.map +7 -0
  763. package/dist/src/matrix/sdk/verification-status.js +12 -0
  764. package/dist/src/matrix/sdk/verification-status.js.map +7 -0
  765. package/dist/src/matrix/sdk.js +1375 -0
  766. package/dist/src/matrix/sdk.js.map +7 -0
  767. package/dist/src/matrix/send/client.js +14 -0
  768. package/dist/src/matrix/send/client.js.map +7 -0
  769. package/dist/src/matrix/send/formatting.js +29 -0
  770. package/dist/src/matrix/send/formatting.js.map +7 -0
  771. package/dist/src/matrix/send/media.js +26 -0
  772. package/dist/src/matrix/send/media.js.map +7 -0
  773. package/dist/src/matrix/send/targets.js +15 -0
  774. package/dist/src/matrix/send/targets.js.map +7 -0
  775. package/dist/src/matrix/send/types.js +17 -0
  776. package/dist/src/matrix/send/types.js.map +7 -0
  777. package/dist/src/matrix/send.js +51 -0
  778. package/dist/src/matrix/send.js.map +7 -0
  779. package/dist/src/matrix/session-store-metadata.js +15 -0
  780. package/dist/src/matrix/session-store-metadata.js.map +7 -0
  781. package/dist/src/matrix/startup-abort.js +14 -0
  782. package/dist/src/matrix/startup-abort.js.map +7 -0
  783. package/dist/src/matrix/sync-state.js +12 -0
  784. package/dist/src/matrix/sync-state.js.map +7 -0
  785. package/dist/src/matrix/target-ids.js +20 -0
  786. package/dist/src/matrix/target-ids.js.map +7 -0
  787. package/dist/src/matrix/thread-bindings-shared.js +34 -0
  788. package/dist/src/matrix/thread-bindings-shared.js.map +7 -0
  789. package/dist/src/matrix/thread-bindings.js +49 -0
  790. package/dist/src/matrix/thread-bindings.js.map +7 -0
  791. package/dist/src/matrix-migration.runtime.js +45 -0
  792. package/dist/src/matrix-migration.runtime.js.map +7 -0
  793. package/dist/src/migration-config.js +29 -0
  794. package/dist/src/migration-config.js.map +7 -0
  795. package/dist/src/migration-snapshot-backup.js +12 -0
  796. package/dist/src/migration-snapshot-backup.js.map +7 -0
  797. package/dist/src/migration-snapshot.js +38 -0
  798. package/dist/src/migration-snapshot.js.map +7 -0
  799. package/dist/src/onboarding.js +43 -0
  800. package/dist/src/onboarding.js.map +7 -0
  801. package/dist/src/onboarding.test-harness.js +124 -0
  802. package/dist/src/onboarding.test-harness.js.map +7 -0
  803. package/dist/src/outbound.js +33 -0
  804. package/dist/src/outbound.js.map +7 -0
  805. package/dist/src/plugin-entry.runtime.js +15 -0
  806. package/dist/src/plugin-entry.runtime.js.map +7 -0
  807. package/dist/src/profile-update.js +41 -0
  808. package/dist/src/profile-update.js.map +7 -0
  809. package/dist/src/record-shared.js +8 -0
  810. package/dist/src/record-shared.js.map +7 -0
  811. package/dist/src/resolve-targets.js +34 -0
  812. package/dist/src/resolve-targets.js.map +7 -0
  813. package/dist/src/resolver.js +8 -0
  814. package/dist/src/resolver.js.map +7 -0
  815. package/dist/src/runtime-api.js +120 -0
  816. package/dist/src/runtime-api.js.map +7 -0
  817. package/dist/src/runtime.js +10 -0
  818. package/dist/src/runtime.js.map +7 -0
  819. package/dist/src/secret-contract.js +13 -0
  820. package/dist/src/secret-contract.js.map +7 -0
  821. package/dist/src/session-route.js +25 -0
  822. package/dist/src/session-route.js.map +7 -0
  823. package/dist/src/setup-bootstrap.js +124 -0
  824. package/dist/src/setup-bootstrap.js.map +7 -0
  825. package/dist/src/setup-config.js +28 -0
  826. package/dist/src/setup-config.js.map +7 -0
  827. package/dist/src/setup-contract.js +16 -0
  828. package/dist/src/setup-contract.js.map +7 -0
  829. package/dist/src/setup-core.js +25 -0
  830. package/dist/src/setup-core.js.map +7 -0
  831. package/dist/src/setup-surface.js +45 -0
  832. package/dist/src/setup-surface.js.map +7 -0
  833. package/dist/src/startup-maintenance.js +29 -0
  834. package/dist/src/startup-maintenance.js.map +7 -0
  835. package/dist/src/storage-paths.js +24 -0
  836. package/dist/src/storage-paths.js.map +7 -0
  837. package/dist/src/test-helpers.js +49 -0
  838. package/dist/src/test-helpers.js.map +7 -0
  839. package/dist/src/test-mocks.js +40 -0
  840. package/dist/src/test-mocks.js.map +7 -0
  841. package/dist/src/test-runtime.js +65 -0
  842. package/dist/src/test-runtime.js.map +7 -0
  843. package/dist/src/tool-actions.js +68 -0
  844. package/dist/src/tool-actions.js.map +7 -0
  845. package/dist/src/tool-actions.runtime.js +73 -0
  846. package/dist/src/tool-actions.runtime.js.map +7 -0
  847. package/dist/src/types.js +7 -0
  848. package/dist/src/types.js.map +7 -0
  849. package/dist/test-api.js +82 -0
  850. package/dist/test-api.js.map +7 -0
  851. package/dist/thread-bindings-runtime.js +15 -0
  852. package/dist/thread-bindings-runtime.js.map +7 -0
  853. package/package.json +12 -6
  854. package/CHANGELOG.md +0 -164
  855. package/ENDOFFILE +0 -0
  856. package/EOF +0 -0
  857. package/SPEC-SUPPORT.md +0 -116
  858. package/YAMLEND +0 -0
  859. package/api.ts +0 -18
  860. package/archipelagolab-lobi-1.0.0.tgz +0 -0
  861. package/auth-presence.ts +0 -56
  862. package/channel-plugin-api.ts +0 -3
  863. package/cli-metadata.ts +0 -11
  864. package/contract-api.ts +0 -17
  865. package/docs/CHECKLIST.md +0 -83
  866. package/docs/FORK_SDK_GUIDE.md +0 -279
  867. package/helper-api.ts +0 -3
  868. package/index.test.ts +0 -61
  869. package/index.ts +0 -65
  870. package/plugin-entry.handlers.runtime.ts +0 -1
  871. package/runtime-api.ts +0 -54
  872. package/runtime-heavy-api.ts +0 -1
  873. package/scripts/migrate-to-lobi.sh +0 -72
  874. package/secret-contract-api.ts +0 -5
  875. package/setup-entry.ts +0 -13
  876. package/src/account-selection.test.ts +0 -124
  877. package/src/account-selection.ts +0 -226
  878. package/src/actions.account-propagation.test.ts +0 -251
  879. package/src/actions.test.ts +0 -251
  880. package/src/actions.ts +0 -336
  881. package/src/approval-auth.test.ts +0 -23
  882. package/src/approval-auth.ts +0 -25
  883. package/src/approval-handler.runtime.test.ts +0 -46
  884. package/src/approval-handler.runtime.ts +0 -400
  885. package/src/approval-ids.ts +0 -6
  886. package/src/approval-native.test.ts +0 -329
  887. package/src/approval-native.ts +0 -336
  888. package/src/approval-reactions.test.ts +0 -107
  889. package/src/approval-reactions.ts +0 -158
  890. package/src/auth-precedence.ts +0 -61
  891. package/src/channel-account-paths.ts +0 -92
  892. package/src/channel.account-paths.test.ts +0 -102
  893. package/src/channel.directory.test.ts +0 -601
  894. package/src/channel.resolve.test.ts +0 -38
  895. package/src/channel.runtime.ts +0 -16
  896. package/src/channel.setup.test.ts +0 -269
  897. package/src/channel.ts +0 -570
  898. package/src/cli-metadata.ts +0 -19
  899. package/src/cli.test.ts +0 -1015
  900. package/src/cli.ts +0 -1198
  901. package/src/config-adapter.ts +0 -41
  902. package/src/config-schema.test.ts +0 -90
  903. package/src/config-schema.ts +0 -114
  904. package/src/directory-live.test.ts +0 -200
  905. package/src/directory-live.ts +0 -238
  906. package/src/doctor-contract.ts +0 -287
  907. package/src/doctor.test.ts +0 -440
  908. package/src/doctor.ts +0 -262
  909. package/src/env-vars.ts +0 -92
  910. package/src/exec-approval-resolver.test.ts +0 -68
  911. package/src/exec-approval-resolver.ts +0 -23
  912. package/src/exec-approvals.test.ts +0 -483
  913. package/src/exec-approvals.ts +0 -290
  914. package/src/group-mentions.ts +0 -41
  915. package/src/legacy-crypto-inspector-availability.test.ts +0 -81
  916. package/src/legacy-crypto-inspector-availability.ts +0 -60
  917. package/src/legacy-crypto.test.ts +0 -234
  918. package/src/legacy-crypto.ts +0 -549
  919. package/src/legacy-state.test.ts +0 -86
  920. package/src/legacy-state.ts +0 -156
  921. package/src/matrix/account-config.ts +0 -150
  922. package/src/matrix/accounts.readiness.test.ts +0 -27
  923. package/src/matrix/accounts.test.ts +0 -757
  924. package/src/matrix/accounts.ts +0 -194
  925. package/src/matrix/actions/client.test.ts +0 -215
  926. package/src/matrix/actions/client.ts +0 -31
  927. package/src/matrix/actions/devices.test.ts +0 -114
  928. package/src/matrix/actions/devices.ts +0 -34
  929. package/src/matrix/actions/limits.test.ts +0 -15
  930. package/src/matrix/actions/limits.ts +0 -6
  931. package/src/matrix/actions/messages.test.ts +0 -289
  932. package/src/matrix/actions/messages.ts +0 -123
  933. package/src/matrix/actions/pins.test.ts +0 -74
  934. package/src/matrix/actions/pins.ts +0 -64
  935. package/src/matrix/actions/polls.test.ts +0 -71
  936. package/src/matrix/actions/polls.ts +0 -109
  937. package/src/matrix/actions/profile.test.ts +0 -109
  938. package/src/matrix/actions/profile.ts +0 -37
  939. package/src/matrix/actions/reactions.test.ts +0 -135
  940. package/src/matrix/actions/reactions.ts +0 -59
  941. package/src/matrix/actions/room.test.ts +0 -79
  942. package/src/matrix/actions/room.ts +0 -71
  943. package/src/matrix/actions/summary.test.ts +0 -87
  944. package/src/matrix/actions/summary.ts +0 -88
  945. package/src/matrix/actions/types.ts +0 -82
  946. package/src/matrix/actions/verification.test.ts +0 -105
  947. package/src/matrix/actions/verification.ts +0 -237
  948. package/src/matrix/actions.ts +0 -37
  949. package/src/matrix/active-client.ts +0 -26
  950. package/src/matrix/async-lock.ts +0 -18
  951. package/src/matrix/backup-health.ts +0 -115
  952. package/src/matrix/client/config-runtime-api.ts +0 -14
  953. package/src/matrix/client/config-secret-input.runtime.ts +0 -1
  954. package/src/matrix/client/config.ts +0 -982
  955. package/src/matrix/client/create-client.test.ts +0 -115
  956. package/src/matrix/client/create-client.ts +0 -101
  957. package/src/matrix/client/env-auth.ts +0 -6
  958. package/src/matrix/client/file-sync-store.test.ts +0 -265
  959. package/src/matrix/client/file-sync-store.ts +0 -289
  960. package/src/matrix/client/logging.ts +0 -123
  961. package/src/matrix/client/migration-snapshot.runtime.ts +0 -1
  962. package/src/matrix/client/private-network-host.ts +0 -56
  963. package/src/matrix/client/runtime.ts +0 -4
  964. package/src/matrix/client/shared.test.ts +0 -344
  965. package/src/matrix/client/shared.ts +0 -306
  966. package/src/matrix/client/storage.test.ts +0 -634
  967. package/src/matrix/client/storage.ts +0 -544
  968. package/src/matrix/client/types.ts +0 -50
  969. package/src/matrix/client-bootstrap.test.ts +0 -84
  970. package/src/matrix/client-bootstrap.ts +0 -164
  971. package/src/matrix/client-resolver.test-helpers.ts +0 -147
  972. package/src/matrix/client.test.ts +0 -1521
  973. package/src/matrix/client.ts +0 -23
  974. package/src/matrix/config-paths.ts +0 -31
  975. package/src/matrix/config-update.test.ts +0 -237
  976. package/src/matrix/config-update.ts +0 -291
  977. package/src/matrix/credentials-read.ts +0 -206
  978. package/src/matrix/credentials-write.runtime.ts +0 -26
  979. package/src/matrix/credentials.test.ts +0 -501
  980. package/src/matrix/credentials.ts +0 -95
  981. package/src/matrix/deps.test.ts +0 -74
  982. package/src/matrix/deps.ts +0 -225
  983. package/src/matrix/device-health.test.ts +0 -45
  984. package/src/matrix/device-health.ts +0 -31
  985. package/src/matrix/direct-management.test.ts +0 -350
  986. package/src/matrix/direct-management.ts +0 -347
  987. package/src/matrix/direct-room.test.ts +0 -61
  988. package/src/matrix/direct-room.ts +0 -128
  989. package/src/matrix/draft-stream.test.ts +0 -406
  990. package/src/matrix/draft-stream.ts +0 -216
  991. package/src/matrix/encryption-guidance.ts +0 -27
  992. package/src/matrix/errors.ts +0 -21
  993. package/src/matrix/format.test.ts +0 -340
  994. package/src/matrix/format.ts +0 -428
  995. package/src/matrix/legacy-crypto-inspector.ts +0 -95
  996. package/src/matrix/media-errors.ts +0 -20
  997. package/src/matrix/media-text.ts +0 -169
  998. package/src/matrix/monitor/access-state.test.ts +0 -45
  999. package/src/matrix/monitor/access-state.ts +0 -77
  1000. package/src/matrix/monitor/ack-config.test.ts +0 -57
  1001. package/src/matrix/monitor/ack-config.ts +0 -26
  1002. package/src/matrix/monitor/allowlist.test.ts +0 -45
  1003. package/src/matrix/monitor/allowlist.ts +0 -94
  1004. package/src/matrix/monitor/auto-join.test.ts +0 -203
  1005. package/src/matrix/monitor/auto-join.ts +0 -86
  1006. package/src/matrix/monitor/config.test.ts +0 -197
  1007. package/src/matrix/monitor/config.ts +0 -303
  1008. package/src/matrix/monitor/context-summary.ts +0 -43
  1009. package/src/matrix/monitor/direct.test.ts +0 -529
  1010. package/src/matrix/monitor/direct.ts +0 -270
  1011. package/src/matrix/monitor/events.test.ts +0 -1524
  1012. package/src/matrix/monitor/events.ts +0 -213
  1013. package/src/matrix/monitor/handler.body-for-agent.test.ts +0 -396
  1014. package/src/matrix/monitor/handler.group-history.test.ts +0 -648
  1015. package/src/matrix/monitor/handler.media-failure.test.ts +0 -267
  1016. package/src/matrix/monitor/handler.test-helpers.ts +0 -308
  1017. package/src/matrix/monitor/handler.test.ts +0 -2952
  1018. package/src/matrix/monitor/handler.thread-root-media.test.ts +0 -82
  1019. package/src/matrix/monitor/handler.ts +0 -1679
  1020. package/src/matrix/monitor/inbound-dedupe.test.ts +0 -146
  1021. package/src/matrix/monitor/inbound-dedupe.ts +0 -267
  1022. package/src/matrix/monitor/index.test.ts +0 -920
  1023. package/src/matrix/monitor/index.ts +0 -434
  1024. package/src/matrix/monitor/legacy-crypto-restore.test.ts +0 -206
  1025. package/src/matrix/monitor/legacy-crypto-restore.ts +0 -139
  1026. package/src/matrix/monitor/location.ts +0 -100
  1027. package/src/matrix/monitor/media.test.ts +0 -159
  1028. package/src/matrix/monitor/media.ts +0 -119
  1029. package/src/matrix/monitor/mentions.test.ts +0 -289
  1030. package/src/matrix/monitor/mentions.ts +0 -177
  1031. package/src/matrix/monitor/reaction-events.test.ts +0 -326
  1032. package/src/matrix/monitor/reaction-events.ts +0 -187
  1033. package/src/matrix/monitor/recent-invite.test.ts +0 -92
  1034. package/src/matrix/monitor/recent-invite.ts +0 -30
  1035. package/src/matrix/monitor/replies.test.ts +0 -265
  1036. package/src/matrix/monitor/replies.ts +0 -136
  1037. package/src/matrix/monitor/reply-context.test.ts +0 -276
  1038. package/src/matrix/monitor/reply-context.ts +0 -92
  1039. package/src/matrix/monitor/room-history.test.ts +0 -258
  1040. package/src/matrix/monitor/room-history.ts +0 -301
  1041. package/src/matrix/monitor/room-info.test.ts +0 -201
  1042. package/src/matrix/monitor/room-info.ts +0 -126
  1043. package/src/matrix/monitor/rooms.test.ts +0 -121
  1044. package/src/matrix/monitor/rooms.ts +0 -52
  1045. package/src/matrix/monitor/route.test.ts +0 -255
  1046. package/src/matrix/monitor/route.ts +0 -178
  1047. package/src/matrix/monitor/runtime-api.ts +0 -31
  1048. package/src/matrix/monitor/startup-verification.test.ts +0 -294
  1049. package/src/matrix/monitor/startup-verification.ts +0 -237
  1050. package/src/matrix/monitor/startup.test.ts +0 -257
  1051. package/src/matrix/monitor/startup.ts +0 -218
  1052. package/src/matrix/monitor/status.ts +0 -111
  1053. package/src/matrix/monitor/sync-lifecycle.test.ts +0 -224
  1054. package/src/matrix/monitor/sync-lifecycle.ts +0 -91
  1055. package/src/matrix/monitor/task-runner.ts +0 -38
  1056. package/src/matrix/monitor/thread-context.test.ts +0 -149
  1057. package/src/matrix/monitor/thread-context.ts +0 -108
  1058. package/src/matrix/monitor/threads.test.ts +0 -68
  1059. package/src/matrix/monitor/threads.ts +0 -85
  1060. package/src/matrix/monitor/types.ts +0 -30
  1061. package/src/matrix/monitor/verification-events.ts +0 -627
  1062. package/src/matrix/monitor/verification-utils.test.ts +0 -47
  1063. package/src/matrix/monitor/verification-utils.ts +0 -46
  1064. package/src/matrix/outbound-media-runtime.ts +0 -1
  1065. package/src/matrix/poll-summary.ts +0 -110
  1066. package/src/matrix/poll-types.test.ts +0 -205
  1067. package/src/matrix/poll-types.ts +0 -433
  1068. package/src/matrix/probe.runtime.ts +0 -4
  1069. package/src/matrix/probe.test.ts +0 -154
  1070. package/src/matrix/probe.ts +0 -96
  1071. package/src/matrix/profile.test.ts +0 -154
  1072. package/src/matrix/profile.ts +0 -184
  1073. package/src/matrix/reaction-common.test.ts +0 -96
  1074. package/src/matrix/reaction-common.ts +0 -147
  1075. package/src/matrix/sdk/crypto-bootstrap.test.ts +0 -505
  1076. package/src/matrix/sdk/crypto-bootstrap.ts +0 -341
  1077. package/src/matrix/sdk/crypto-facade.test.ts +0 -197
  1078. package/src/matrix/sdk/crypto-facade.ts +0 -207
  1079. package/src/matrix/sdk/crypto-node.runtime.test.ts +0 -27
  1080. package/src/matrix/sdk/crypto-node.runtime.ts +0 -9
  1081. package/src/matrix/sdk/crypto-runtime.ts +0 -11
  1082. package/src/matrix/sdk/decrypt-bridge.ts +0 -356
  1083. package/src/matrix/sdk/event-helpers.test.ts +0 -60
  1084. package/src/matrix/sdk/event-helpers.ts +0 -71
  1085. package/src/matrix/sdk/http-client.test.ts +0 -134
  1086. package/src/matrix/sdk/http-client.ts +0 -87
  1087. package/src/matrix/sdk/idb-persistence-lock.ts +0 -51
  1088. package/src/matrix/sdk/idb-persistence.lock-order.test.ts +0 -108
  1089. package/src/matrix/sdk/idb-persistence.test-helpers.ts +0 -88
  1090. package/src/matrix/sdk/idb-persistence.test.ts +0 -149
  1091. package/src/matrix/sdk/idb-persistence.ts +0 -283
  1092. package/src/matrix/sdk/logger.test.ts +0 -25
  1093. package/src/matrix/sdk/logger.ts +0 -108
  1094. package/src/matrix/sdk/read-response-with-limit.ts +0 -19
  1095. package/src/matrix/sdk/recovery-key-store.test.ts +0 -385
  1096. package/src/matrix/sdk/recovery-key-store.ts +0 -430
  1097. package/src/matrix/sdk/transport.test.ts +0 -161
  1098. package/src/matrix/sdk/transport.ts +0 -344
  1099. package/src/matrix/sdk/types.ts +0 -236
  1100. package/src/matrix/sdk/verification-manager.test.ts +0 -509
  1101. package/src/matrix/sdk/verification-manager.ts +0 -694
  1102. package/src/matrix/sdk/verification-status.ts +0 -23
  1103. package/src/matrix/sdk.test.ts +0 -2568
  1104. package/src/matrix/sdk.ts +0 -1789
  1105. package/src/matrix/send/client.test.ts +0 -174
  1106. package/src/matrix/send/client.ts +0 -90
  1107. package/src/matrix/send/formatting.ts +0 -189
  1108. package/src/matrix/send/media.ts +0 -244
  1109. package/src/matrix/send/targets.test.ts +0 -254
  1110. package/src/matrix/send/targets.ts +0 -104
  1111. package/src/matrix/send/types.ts +0 -134
  1112. package/src/matrix/send.test.ts +0 -958
  1113. package/src/matrix/send.ts +0 -609
  1114. package/src/matrix/session-store-metadata.ts +0 -108
  1115. package/src/matrix/startup-abort.ts +0 -44
  1116. package/src/matrix/sync-state.ts +0 -27
  1117. package/src/matrix/target-ids.ts +0 -102
  1118. package/src/matrix/thread-bindings-shared.ts +0 -201
  1119. package/src/matrix/thread-bindings.test.ts +0 -673
  1120. package/src/matrix/thread-bindings.ts +0 -577
  1121. package/src/matrix-migration.runtime.ts +0 -9
  1122. package/src/migration-config.test.ts +0 -228
  1123. package/src/migration-config.ts +0 -243
  1124. package/src/migration-snapshot-backup.ts +0 -117
  1125. package/src/migration-snapshot.test.ts +0 -184
  1126. package/src/migration-snapshot.ts +0 -55
  1127. package/src/onboarding.resolve.test.ts +0 -55
  1128. package/src/onboarding.test-harness.ts +0 -158
  1129. package/src/onboarding.test.ts +0 -665
  1130. package/src/onboarding.ts +0 -773
  1131. package/src/outbound.test.ts +0 -173
  1132. package/src/outbound.ts +0 -78
  1133. package/src/plugin-entry.runtime.js +0 -159
  1134. package/src/plugin-entry.runtime.test.ts +0 -108
  1135. package/src/plugin-entry.runtime.ts +0 -68
  1136. package/src/profile-update.ts +0 -68
  1137. package/src/record-shared.ts +0 -3
  1138. package/src/resolve-targets.test.ts +0 -178
  1139. package/src/resolve-targets.ts +0 -175
  1140. package/src/resolver.ts +0 -21
  1141. package/src/runtime-api.ts +0 -144
  1142. package/src/runtime.ts +0 -7
  1143. package/src/secret-contract.ts +0 -174
  1144. package/src/session-route.test.ts +0 -315
  1145. package/src/session-route.ts +0 -113
  1146. package/src/setup-bootstrap.ts +0 -94
  1147. package/src/setup-config.ts +0 -222
  1148. package/src/setup-contract.ts +0 -89
  1149. package/src/setup-core.test.ts +0 -326
  1150. package/src/setup-core.ts +0 -50
  1151. package/src/setup-surface.ts +0 -4
  1152. package/src/startup-maintenance.test.ts +0 -227
  1153. package/src/startup-maintenance.ts +0 -114
  1154. package/src/storage-paths.ts +0 -92
  1155. package/src/test-helpers.ts +0 -42
  1156. package/src/test-mocks.ts +0 -55
  1157. package/src/test-runtime.ts +0 -72
  1158. package/src/test-support/monitor-route-test-support.ts +0 -8
  1159. package/src/tool-actions.runtime.ts +0 -1
  1160. package/src/tool-actions.test.ts +0 -422
  1161. package/src/tool-actions.ts +0 -498
  1162. package/src/types.ts +0 -230
  1163. package/test-api.ts +0 -2
  1164. package/thread-bindings-runtime.ts +0 -4
  1165. package/tsconfig.json +0 -16
@@ -0,0 +1,1375 @@
1
+ import {
2
+ VerificationMethod
3
+ } from "../../chunk-6NO5VEVV.js";
4
+ import {
5
+ MatrixRecoveryKeyStore,
6
+ isRepairableSecretStorageAccessError
7
+ } from "../../chunk-FQTLJO4W.js";
8
+ import {
9
+ MATRIX_IDB_PERSIST_INTERVAL_MS
10
+ } from "../../chunk-CY6WHUCW.js";
11
+ import {
12
+ isMatrixReadySyncState,
13
+ isMatrixTerminalSyncState
14
+ } from "../../chunk-MISZB5QJ.js";
15
+ import {
16
+ FileBackedMatrixSyncStore,
17
+ createClient
18
+ } from "../../chunk-OFWMLQMU.js";
19
+ import {
20
+ ClientEvent,
21
+ Preset
22
+ } from "../../chunk-YFTE4H54.js";
23
+ import "../../chunk-MAF6PSCJ.js";
24
+ import "../../chunk-4O3BEYYM.js";
25
+ import "../../chunk-FQ4R7IOX.js";
26
+ import "../../chunk-PSL2AHIA.js";
27
+ import {
28
+ createMatrixJsSdkClientLogger
29
+ } from "../../chunk-MJ27XQYG.js";
30
+ import "../../chunk-CGBWMONK.js";
31
+ import {
32
+ resolveMatrixRoomKeyBackupReadinessError
33
+ } from "../../chunk-HQSHS6IB.js";
34
+ import {
35
+ formatMatrixErrorMessage,
36
+ formatMatrixErrorReason,
37
+ isMatrixNotFoundError
38
+ } from "../../chunk-UWPHOAOC.js";
39
+ import "../../chunk-D7Q6Z74D.js";
40
+ import {
41
+ MatrixAuthedHttpClient
42
+ } from "../../chunk-SAOUP24A.js";
43
+ import {
44
+ createMatrixGuardedFetch
45
+ } from "../../chunk-XQYIIPOJ.js";
46
+ import "../../chunk-FYRKBNTI.js";
47
+ import {
48
+ matrixEventToRaw,
49
+ parseMxc
50
+ } from "../../chunk-YUPBD27Z.js";
51
+ import "../../chunk-Z6IVJ6ZW.js";
52
+ import {
53
+ createMatrixStartupAbortError,
54
+ throwIfMatrixStartupAborted
55
+ } from "../../chunk-UXDDOSJC.js";
56
+ import {
57
+ ConsoleLogger,
58
+ LogService,
59
+ noop
60
+ } from "../../chunk-BMFZL2P4.js";
61
+ import "../../chunk-L5OUVMHK.js";
62
+ import "../../chunk-3UFTTK7C.js";
63
+ import "../../chunk-FHNEN6IR.js";
64
+ import "../../chunk-UU5PSBSI.js";
65
+ import "../../chunk-AQQGAE7N.js";
66
+ import "../../chunk-SSEX66OL.js";
67
+ import "../../chunk-BWA3D22L.js";
68
+ import "../../chunk-MH74AJ3A.js";
69
+ import {
70
+ init_shims
71
+ } from "../../chunk-7FLQSTPG.js";
72
+
73
+ // src/matrix/sdk.ts
74
+ init_shims();
75
+ import { EventEmitter } from "node:events";
76
+ import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
77
+ import { normalizeNullableString } from "openclaw/plugin-sdk/text-runtime";
78
+ var MATRIX_INITIAL_CRYPTO_BOOTSTRAP_OPTIONS = {
79
+ allowAutomaticCrossSigningReset: false
80
+ };
81
+ var MATRIX_AUTOMATIC_REPAIR_BOOTSTRAP_OPTIONS = {
82
+ forceResetCrossSigning: true,
83
+ allowSecretStorageRecreateWithoutRecoveryKey: true,
84
+ strict: true
85
+ };
86
+ function createMatrixExplicitBootstrapOptions(params) {
87
+ return {
88
+ forceResetCrossSigning: params?.forceResetCrossSigning === true,
89
+ allowSecretStorageRecreateWithoutRecoveryKey: true,
90
+ strict: true
91
+ };
92
+ }
93
+ var loadedMatrixCryptoRuntime = null;
94
+ var matrixCryptoRuntimePromise = null;
95
+ async function loadMatrixCryptoRuntime() {
96
+ matrixCryptoRuntimePromise ??= import("./sdk/crypto-runtime.js").then((runtime) => {
97
+ loadedMatrixCryptoRuntime = runtime;
98
+ return runtime;
99
+ });
100
+ return await matrixCryptoRuntimePromise;
101
+ }
102
+ var normalizeOptionalString = normalizeNullableString;
103
+ function isUnsupportedAuthenticatedMediaEndpointError(err) {
104
+ const statusCode = err?.statusCode;
105
+ if (statusCode === 404 || statusCode === 405 || statusCode === 501) {
106
+ return true;
107
+ }
108
+ const message = formatMatrixErrorReason(err);
109
+ return message.includes("m_unrecognized") || message.includes("unrecognized request") || message.includes("method not allowed") || message.includes("not implemented");
110
+ }
111
+ var MatrixClient = class {
112
+ constructor(homeserver, accessToken, opts = {}) {
113
+ this.emitter = new EventEmitter();
114
+ this.bridgeRegistered = false;
115
+ this.started = false;
116
+ this.cryptoBootstrapped = false;
117
+ this.dmRoomIds = /* @__PURE__ */ new Set();
118
+ this.cryptoInitialized = false;
119
+ this.sendQueue = new KeyedAsyncQueue();
120
+ this.stopPersistPromise = null;
121
+ this.verificationSummaryListenerBound = false;
122
+ this.currentSyncState = null;
123
+ this.dms = {
124
+ update: async () => {
125
+ return await this.refreshDmCache();
126
+ },
127
+ isDm: (roomId) => this.dmRoomIds.has(roomId)
128
+ };
129
+ this.idbPersistTimer = null;
130
+ this.httpClient = new MatrixAuthedHttpClient({
131
+ homeserver,
132
+ accessToken,
133
+ ssrfPolicy: opts.ssrfPolicy,
134
+ dispatcherPolicy: opts.dispatcherPolicy
135
+ });
136
+ this.localTimeoutMs = Math.max(1, opts.localTimeoutMs ?? 6e4);
137
+ this.initialSyncLimit = opts.initialSyncLimit;
138
+ this.encryptionEnabled = opts.encryption === true;
139
+ this.password = opts.password;
140
+ this.syncStore = opts.storagePath ? new FileBackedMatrixSyncStore(opts.storagePath) : void 0;
141
+ this.idbSnapshotPath = opts.idbSnapshotPath;
142
+ this.cryptoDatabasePrefix = opts.cryptoDatabasePrefix;
143
+ this.selfUserId = opts.userId?.trim() || null;
144
+ this.autoBootstrapCrypto = opts.autoBootstrapCrypto !== false;
145
+ this.recoveryKeyStore = new MatrixRecoveryKeyStore(opts.recoveryKeyPath);
146
+ const cryptoCallbacks = this.encryptionEnabled ? this.recoveryKeyStore.buildCryptoCallbacks() : void 0;
147
+ this.client = createClient({
148
+ baseUrl: homeserver,
149
+ accessToken,
150
+ userId: opts.userId,
151
+ deviceId: opts.deviceId,
152
+ logger: createMatrixJsSdkClientLogger("MatrixClient"),
153
+ localTimeoutMs: this.localTimeoutMs,
154
+ fetchFn: createMatrixGuardedFetch({
155
+ ssrfPolicy: opts.ssrfPolicy,
156
+ dispatcherPolicy: opts.dispatcherPolicy
157
+ }),
158
+ store: this.syncStore,
159
+ cryptoCallbacks,
160
+ verificationMethods: [
161
+ VerificationMethod.Sas,
162
+ VerificationMethod.ShowQrCode,
163
+ VerificationMethod.ScanQrCode,
164
+ VerificationMethod.Reciprocate
165
+ ]
166
+ });
167
+ }
168
+ on(eventName, listener) {
169
+ this.emitter.on(eventName, listener);
170
+ return this;
171
+ }
172
+ off(eventName, listener) {
173
+ this.emitter.off(eventName, listener);
174
+ return this;
175
+ }
176
+ async ensureCryptoSupportInitialized() {
177
+ if (this.decryptBridge && (!this.encryptionEnabled || this.verificationManager && this.cryptoBootstrapper && this.crypto)) {
178
+ return;
179
+ }
180
+ const runtime = await loadMatrixCryptoRuntime();
181
+ this.decryptBridge ??= new runtime.MatrixDecryptBridge({
182
+ client: this.client,
183
+ toRaw: (event) => matrixEventToRaw(event),
184
+ emitDecryptedEvent: (roomId, event) => {
185
+ this.emitter.emit("room.decrypted_event", roomId, event);
186
+ },
187
+ emitMessage: (roomId, event) => {
188
+ this.emitter.emit("room.message", roomId, event);
189
+ },
190
+ emitFailedDecryption: (roomId, event, error) => {
191
+ this.emitter.emit("room.failed_decryption", roomId, event, error);
192
+ }
193
+ });
194
+ if (!this.encryptionEnabled) {
195
+ return;
196
+ }
197
+ this.verificationManager ??= new runtime.MatrixVerificationManager();
198
+ this.cryptoBootstrapper ??= new runtime.MatrixCryptoBootstrapper({
199
+ getUserId: () => this.getUserId(),
200
+ getPassword: () => this.password,
201
+ getDeviceId: () => this.client.getDeviceId(),
202
+ verificationManager: this.verificationManager,
203
+ recoveryKeyStore: this.recoveryKeyStore,
204
+ decryptBridge: this.decryptBridge
205
+ });
206
+ if (!this.crypto) {
207
+ this.crypto = runtime.createMatrixCryptoFacade({
208
+ client: this.client,
209
+ verificationManager: this.verificationManager,
210
+ recoveryKeyStore: this.recoveryKeyStore,
211
+ getRoomStateEvent: (roomId, eventType, stateKey = "") => this.getRoomStateEvent(roomId, eventType, stateKey),
212
+ downloadContent: (mxcUrl) => this.downloadContent(mxcUrl)
213
+ });
214
+ }
215
+ if (!this.verificationSummaryListenerBound) {
216
+ this.verificationSummaryListenerBound = true;
217
+ this.verificationManager.onSummaryChanged((summary) => {
218
+ this.emitter.emit("verification.summary", summary);
219
+ });
220
+ }
221
+ }
222
+ async start(opts = {}) {
223
+ await this.startSyncSession({
224
+ bootstrapCrypto: true,
225
+ abortSignal: opts.abortSignal,
226
+ readyTimeoutMs: opts.readyTimeoutMs
227
+ });
228
+ }
229
+ async waitForInitialSyncReady(params = {}) {
230
+ const timeoutMs = params.timeoutMs ?? 3e4;
231
+ if (isMatrixReadySyncState(this.currentSyncState)) {
232
+ return;
233
+ }
234
+ if (isMatrixTerminalSyncState(this.currentSyncState)) {
235
+ throw new Error(`Matrix sync entered ${this.currentSyncState} during startup`);
236
+ }
237
+ await new Promise((resolve, reject) => {
238
+ let settled = false;
239
+ let timeoutId;
240
+ const abortSignal = params.abortSignal;
241
+ const cleanup = () => {
242
+ this.off("sync.state", onSyncState);
243
+ this.off("sync.unexpected_error", onUnexpectedError);
244
+ abortSignal?.removeEventListener("abort", onAbort);
245
+ if (timeoutId) {
246
+ clearTimeout(timeoutId);
247
+ timeoutId = void 0;
248
+ }
249
+ };
250
+ const settleResolve = () => {
251
+ if (settled) {
252
+ return;
253
+ }
254
+ settled = true;
255
+ cleanup();
256
+ resolve();
257
+ };
258
+ const settleReject = (error) => {
259
+ if (settled) {
260
+ return;
261
+ }
262
+ settled = true;
263
+ cleanup();
264
+ reject(error);
265
+ };
266
+ const onSyncState = (state, _prevState, error) => {
267
+ if (isMatrixReadySyncState(state)) {
268
+ settleResolve();
269
+ return;
270
+ }
271
+ if (isMatrixTerminalSyncState(state)) {
272
+ settleReject(
273
+ new Error(
274
+ error instanceof Error && error.message ? error.message : `Matrix sync entered ${state} during startup`
275
+ )
276
+ );
277
+ }
278
+ };
279
+ const onUnexpectedError = (error) => {
280
+ settleReject(error);
281
+ };
282
+ const onAbort = () => {
283
+ settleReject(createMatrixStartupAbortError());
284
+ };
285
+ this.on("sync.state", onSyncState);
286
+ this.on("sync.unexpected_error", onUnexpectedError);
287
+ if (abortSignal?.aborted) {
288
+ onAbort();
289
+ return;
290
+ }
291
+ abortSignal?.addEventListener("abort", onAbort, { once: true });
292
+ timeoutId = setTimeout(() => {
293
+ settleReject(
294
+ new Error(`Matrix client did not reach a ready sync state within ${timeoutMs}ms`)
295
+ );
296
+ }, timeoutMs);
297
+ timeoutId.unref?.();
298
+ });
299
+ }
300
+ async startSyncSession(opts) {
301
+ if (this.started) {
302
+ return;
303
+ }
304
+ throwIfMatrixStartupAborted(opts.abortSignal);
305
+ await this.ensureCryptoSupportInitialized();
306
+ throwIfMatrixStartupAborted(opts.abortSignal);
307
+ this.registerBridge();
308
+ await this.initializeCryptoIfNeeded(opts.abortSignal);
309
+ await this.client.startClient({
310
+ initialSyncLimit: this.initialSyncLimit
311
+ });
312
+ await this.waitForInitialSyncReady({
313
+ abortSignal: opts.abortSignal,
314
+ timeoutMs: opts.readyTimeoutMs
315
+ });
316
+ throwIfMatrixStartupAborted(opts.abortSignal);
317
+ if (opts.bootstrapCrypto && this.autoBootstrapCrypto) {
318
+ await this.bootstrapCryptoIfNeeded(opts.abortSignal);
319
+ }
320
+ throwIfMatrixStartupAborted(opts.abortSignal);
321
+ this.started = true;
322
+ this.emitOutstandingInviteEvents();
323
+ await this.refreshDmCache().catch(noop);
324
+ }
325
+ async prepareForOneOff() {
326
+ if (!this.encryptionEnabled) {
327
+ return;
328
+ }
329
+ await this.ensureCryptoSupportInitialized();
330
+ await this.initializeCryptoIfNeeded();
331
+ if (!this.crypto) {
332
+ return;
333
+ }
334
+ try {
335
+ const joinedRooms = await this.getJoinedRooms();
336
+ await this.crypto.prepare(joinedRooms);
337
+ } catch {
338
+ }
339
+ }
340
+ hasPersistedSyncState() {
341
+ return this.syncStore?.hasSavedSyncFromCleanShutdown() === true;
342
+ }
343
+ async ensureStartedForCryptoControlPlane() {
344
+ if (this.started) {
345
+ return;
346
+ }
347
+ await this.startSyncSession({ bootstrapCrypto: false });
348
+ }
349
+ stopSyncWithoutPersist() {
350
+ if (this.idbPersistTimer) {
351
+ clearInterval(this.idbPersistTimer);
352
+ this.idbPersistTimer = null;
353
+ }
354
+ this.currentSyncState = null;
355
+ this.client.stopClient();
356
+ this.started = false;
357
+ }
358
+ async drainPendingDecryptions(reason = "matrix client shutdown") {
359
+ await this.decryptBridge?.drainPendingDecryptions(reason);
360
+ }
361
+ stop() {
362
+ this.stopSyncWithoutPersist();
363
+ this.decryptBridge?.stop();
364
+ this.syncStore?.markCleanShutdown();
365
+ if (loadedMatrixCryptoRuntime) {
366
+ const { persistIdbToDisk } = loadedMatrixCryptoRuntime;
367
+ this.stopPersistPromise = Promise.all([
368
+ persistIdbToDisk({
369
+ snapshotPath: this.idbSnapshotPath,
370
+ databasePrefix: this.cryptoDatabasePrefix
371
+ }).catch(noop),
372
+ this.syncStore?.flush().catch(noop)
373
+ ]).then(() => void 0);
374
+ return;
375
+ }
376
+ this.stopPersistPromise = loadMatrixCryptoRuntime().then(async ({ persistIdbToDisk }) => {
377
+ await Promise.all([
378
+ persistIdbToDisk({
379
+ snapshotPath: this.idbSnapshotPath,
380
+ databasePrefix: this.cryptoDatabasePrefix
381
+ }).catch(noop),
382
+ this.syncStore?.flush().catch(noop)
383
+ ]);
384
+ }).catch(noop).then(() => void 0);
385
+ }
386
+ async stopAndPersist() {
387
+ this.stop();
388
+ await this.stopPersistPromise;
389
+ }
390
+ async bootstrapCryptoIfNeeded(abortSignal) {
391
+ if (!this.encryptionEnabled || !this.cryptoInitialized || this.cryptoBootstrapped) {
392
+ return;
393
+ }
394
+ throwIfMatrixStartupAborted(abortSignal);
395
+ await this.ensureCryptoSupportInitialized();
396
+ const crypto = this.client.getCrypto();
397
+ if (!crypto) {
398
+ return;
399
+ }
400
+ const cryptoBootstrapper = this.cryptoBootstrapper;
401
+ if (!cryptoBootstrapper) {
402
+ return;
403
+ }
404
+ const initial = await cryptoBootstrapper.bootstrap(
405
+ crypto,
406
+ MATRIX_INITIAL_CRYPTO_BOOTSTRAP_OPTIONS
407
+ );
408
+ throwIfMatrixStartupAborted(abortSignal);
409
+ if (!initial.crossSigningPublished || initial.ownDeviceVerified === false) {
410
+ const status = await this.getOwnDeviceVerificationStatus();
411
+ if (status.signedByOwner) {
412
+ LogService.warn(
413
+ "MatrixClientLite",
414
+ "Cross-signing/bootstrap is incomplete for an already owner-signed device; skipping automatic reset and preserving the current identity. Restore the recovery key or run an explicit verification bootstrap if repair is needed."
415
+ );
416
+ } else if (this.password?.trim()) {
417
+ try {
418
+ const repaired = await cryptoBootstrapper.bootstrap(
419
+ crypto,
420
+ MATRIX_AUTOMATIC_REPAIR_BOOTSTRAP_OPTIONS
421
+ );
422
+ throwIfMatrixStartupAborted(abortSignal);
423
+ if (repaired.crossSigningPublished && repaired.ownDeviceVerified !== false) {
424
+ LogService.info(
425
+ "MatrixClientLite",
426
+ "Cross-signing/bootstrap recovered after forced reset"
427
+ );
428
+ }
429
+ } catch (err) {
430
+ LogService.warn(
431
+ "MatrixClientLite",
432
+ "Failed to recover cross-signing/bootstrap with forced reset:",
433
+ err
434
+ );
435
+ }
436
+ } else {
437
+ LogService.warn(
438
+ "MatrixClientLite",
439
+ "Cross-signing/bootstrap incomplete and no password is configured for UIA fallback"
440
+ );
441
+ }
442
+ }
443
+ this.cryptoBootstrapped = true;
444
+ }
445
+ async initializeCryptoIfNeeded(abortSignal) {
446
+ if (!this.encryptionEnabled || this.cryptoInitialized) {
447
+ return;
448
+ }
449
+ throwIfMatrixStartupAborted(abortSignal);
450
+ const { persistIdbToDisk, restoreIdbFromDisk } = await loadMatrixCryptoRuntime();
451
+ await restoreIdbFromDisk(this.idbSnapshotPath);
452
+ throwIfMatrixStartupAborted(abortSignal);
453
+ try {
454
+ await this.client.initRustCrypto({
455
+ cryptoDatabasePrefix: this.cryptoDatabasePrefix
456
+ });
457
+ this.cryptoInitialized = true;
458
+ throwIfMatrixStartupAborted(abortSignal);
459
+ await persistIdbToDisk({
460
+ snapshotPath: this.idbSnapshotPath,
461
+ databasePrefix: this.cryptoDatabasePrefix
462
+ });
463
+ throwIfMatrixStartupAborted(abortSignal);
464
+ this.idbPersistTimer = setInterval(() => {
465
+ persistIdbToDisk({
466
+ snapshotPath: this.idbSnapshotPath,
467
+ databasePrefix: this.cryptoDatabasePrefix
468
+ }).catch(noop);
469
+ }, MATRIX_IDB_PERSIST_INTERVAL_MS);
470
+ } catch (err) {
471
+ LogService.warn("MatrixClientLite", "Failed to initialize rust crypto:", err);
472
+ }
473
+ }
474
+ async getUserId() {
475
+ const fromClient = this.client.getUserId();
476
+ if (fromClient) {
477
+ this.selfUserId = fromClient;
478
+ return fromClient;
479
+ }
480
+ if (this.selfUserId) {
481
+ return this.selfUserId;
482
+ }
483
+ const whoami = await this.doRequest("GET", "/_lobi/client/v3/account/whoami");
484
+ const resolved = whoami.user_id?.trim();
485
+ if (!resolved) {
486
+ throw new Error("Matrix whoami did not return user_id");
487
+ }
488
+ this.selfUserId = resolved;
489
+ return resolved;
490
+ }
491
+ async getJoinedRooms() {
492
+ const joined = await this.client.getJoinedRooms();
493
+ return Array.isArray(joined.joined_rooms) ? joined.joined_rooms : [];
494
+ }
495
+ async getJoinedRoomMembers(roomId) {
496
+ const members = await this.client.getJoinedRoomMembers(roomId);
497
+ const joined = members?.joined;
498
+ if (!joined || typeof joined !== "object") {
499
+ return [];
500
+ }
501
+ return Object.keys(joined);
502
+ }
503
+ async getRoomStateEvent(roomId, eventType, stateKey = "") {
504
+ const state = await this.client.getStateEvent(roomId, eventType, stateKey);
505
+ return state ?? {};
506
+ }
507
+ async getAccountData(eventType) {
508
+ const event = this.client.getAccountData(eventType);
509
+ return event?.getContent() ?? void 0;
510
+ }
511
+ async setAccountData(eventType, content) {
512
+ await this.client.setAccountData(eventType, content);
513
+ await this.refreshDmCache().catch(noop);
514
+ }
515
+ async resolveRoom(aliasOrRoomId) {
516
+ if (aliasOrRoomId.startsWith("!")) {
517
+ return aliasOrRoomId;
518
+ }
519
+ if (!aliasOrRoomId.startsWith("#")) {
520
+ return aliasOrRoomId;
521
+ }
522
+ try {
523
+ const resolved = await this.client.getRoomIdForAlias(aliasOrRoomId);
524
+ return resolved.room_id ?? null;
525
+ } catch {
526
+ return null;
527
+ }
528
+ }
529
+ async createDirectRoom(remoteUserId, opts = {}) {
530
+ const initialState = opts.encrypted ? [
531
+ {
532
+ type: "m.room.encryption",
533
+ state_key: "",
534
+ content: {
535
+ algorithm: "m.megolm.v1.aes-sha2"
536
+ }
537
+ }
538
+ ] : void 0;
539
+ const result = await this.client.createRoom({
540
+ invite: [remoteUserId],
541
+ is_direct: true,
542
+ preset: Preset.TrustedPrivateChat,
543
+ initial_state: initialState
544
+ });
545
+ return result.room_id;
546
+ }
547
+ async sendMessage(roomId, content) {
548
+ return await this.runSerializedRoomSend(roomId, async () => {
549
+ const sent = await this.client.sendMessage(roomId, content);
550
+ return sent.event_id;
551
+ });
552
+ }
553
+ async sendEvent(roomId, eventType, content) {
554
+ return await this.runSerializedRoomSend(roomId, async () => {
555
+ const sent = await this.client.sendEvent(roomId, eventType, content);
556
+ return sent.event_id;
557
+ });
558
+ }
559
+ // Keep outbound room events ordered when multiple plugin paths emit
560
+ // messages/reactions/polls into the same Matrix room concurrently.
561
+ async runSerializedRoomSend(roomId, task) {
562
+ return await this.sendQueue.enqueue(roomId, task);
563
+ }
564
+ async sendStateEvent(roomId, eventType, stateKey, content) {
565
+ const sent = await this.client.sendStateEvent(
566
+ roomId,
567
+ eventType,
568
+ content,
569
+ stateKey
570
+ );
571
+ return sent.event_id;
572
+ }
573
+ async redactEvent(roomId, eventId, reason) {
574
+ const sent = await this.client.redactEvent(
575
+ roomId,
576
+ eventId,
577
+ void 0,
578
+ reason?.trim() ? { reason } : void 0
579
+ );
580
+ return sent.event_id;
581
+ }
582
+ async doRequest(method, endpoint, qs, body, opts) {
583
+ return await this.httpClient.requestJson({
584
+ method,
585
+ endpoint,
586
+ qs,
587
+ body,
588
+ timeoutMs: this.localTimeoutMs,
589
+ allowAbsoluteEndpoint: opts?.allowAbsoluteEndpoint
590
+ });
591
+ }
592
+ async getUserProfile(userId) {
593
+ return await this.client.getProfileInfo(userId);
594
+ }
595
+ async setDisplayName(displayName) {
596
+ await this.client.setDisplayName(displayName);
597
+ }
598
+ async setAvatarUrl(avatarUrl) {
599
+ await this.client.setAvatarUrl(avatarUrl);
600
+ }
601
+ async joinRoom(roomId) {
602
+ await this.client.joinRoom(roomId);
603
+ }
604
+ mxcToHttp(mxcUrl) {
605
+ return this.client.mxcUrlToHttp(mxcUrl, void 0, void 0, void 0, true, false, true);
606
+ }
607
+ async downloadContent(mxcUrl, opts = {}) {
608
+ const parsed = parseMxc(mxcUrl);
609
+ if (!parsed) {
610
+ throw new Error(`Invalid Matrix content URI: ${mxcUrl}`);
611
+ }
612
+ const encodedServer = encodeURIComponent(parsed.server);
613
+ const encodedMediaId = encodeURIComponent(parsed.mediaId);
614
+ const request = async (endpoint) => await this.httpClient.requestRaw({
615
+ method: "GET",
616
+ endpoint,
617
+ qs: { allow_remote: opts.allowRemote ?? true },
618
+ timeoutMs: this.localTimeoutMs,
619
+ maxBytes: opts.maxBytes,
620
+ readIdleTimeoutMs: opts.readIdleTimeoutMs
621
+ });
622
+ const authenticatedEndpoint = `/_lobi/client/v1/media/download/${encodedServer}/${encodedMediaId}`;
623
+ try {
624
+ return await request(authenticatedEndpoint);
625
+ } catch (err) {
626
+ if (!isUnsupportedAuthenticatedMediaEndpointError(err)) {
627
+ throw err;
628
+ }
629
+ }
630
+ const legacyEndpoint = `/_lobi/media/v3/download/${encodedServer}/${encodedMediaId}`;
631
+ return await request(legacyEndpoint);
632
+ }
633
+ async uploadContent(file, contentType, filename) {
634
+ const uploaded = await this.client.uploadContent(new Uint8Array(file), {
635
+ type: contentType || "application/octet-stream",
636
+ name: filename,
637
+ includeFilename: Boolean(filename)
638
+ });
639
+ return uploaded.content_uri;
640
+ }
641
+ async getEvent(roomId, eventId) {
642
+ const rawEvent = await this.client.fetchRoomEvent(roomId, eventId);
643
+ if (rawEvent.type !== "m.room.encrypted") {
644
+ return rawEvent;
645
+ }
646
+ const mapper = this.client.getEventMapper();
647
+ const event = mapper(rawEvent);
648
+ let decryptedEvent;
649
+ const onDecrypted = (candidate) => {
650
+ decryptedEvent = candidate;
651
+ };
652
+ event.once("Event.decrypted", onDecrypted);
653
+ try {
654
+ await this.client.decryptEventIfNeeded(event);
655
+ } finally {
656
+ event.off("Event.decrypted", onDecrypted);
657
+ }
658
+ return matrixEventToRaw(decryptedEvent ?? event);
659
+ }
660
+ async getRelations(roomId, eventId, relationType, eventType, opts = {}) {
661
+ const result = await this.client.relations(roomId, eventId, relationType, eventType, opts);
662
+ return {
663
+ originalEvent: result.originalEvent ? matrixEventToRaw(result.originalEvent) : null,
664
+ events: result.events.map((event) => matrixEventToRaw(event)),
665
+ nextBatch: result.nextBatch ?? null,
666
+ prevBatch: result.prevBatch ?? null
667
+ };
668
+ }
669
+ async hydrateEvents(roomId, events) {
670
+ if (events.length === 0) {
671
+ return [];
672
+ }
673
+ const mapper = this.client.getEventMapper();
674
+ const mappedEvents = events.map(
675
+ (event) => mapper({
676
+ room_id: roomId,
677
+ ...event
678
+ })
679
+ );
680
+ await Promise.all(mappedEvents.map((event) => this.client.decryptEventIfNeeded(event)));
681
+ return mappedEvents.map((event) => matrixEventToRaw(event));
682
+ }
683
+ async setTyping(roomId, typing, timeoutMs) {
684
+ await this.client.sendTyping(roomId, typing, timeoutMs);
685
+ }
686
+ async sendReadReceipt(roomId, eventId) {
687
+ await this.httpClient.requestJson({
688
+ method: "POST",
689
+ endpoint: `/_lobi/client/v3/rooms/${encodeURIComponent(roomId)}/receipt/m.read/${encodeURIComponent(
690
+ eventId
691
+ )}`,
692
+ body: {},
693
+ timeoutMs: this.localTimeoutMs
694
+ });
695
+ }
696
+ async getRoomKeyBackupStatus() {
697
+ if (!this.encryptionEnabled) {
698
+ return {
699
+ serverVersion: null,
700
+ activeVersion: null,
701
+ trusted: null,
702
+ matchesDecryptionKey: null,
703
+ decryptionKeyCached: null,
704
+ keyLoadAttempted: false,
705
+ keyLoadError: null
706
+ };
707
+ }
708
+ const crypto = this.client.getCrypto();
709
+ const serverVersionFallback = await this.resolveRoomKeyBackupVersion();
710
+ if (!crypto) {
711
+ return {
712
+ serverVersion: serverVersionFallback,
713
+ activeVersion: null,
714
+ trusted: null,
715
+ matchesDecryptionKey: null,
716
+ decryptionKeyCached: null,
717
+ keyLoadAttempted: false,
718
+ keyLoadError: null
719
+ };
720
+ }
721
+ let { activeVersion, decryptionKeyCached } = await this.resolveRoomKeyBackupLocalState(crypto);
722
+ let { serverVersion, trusted, matchesDecryptionKey } = await this.resolveRoomKeyBackupTrustState(crypto, serverVersionFallback);
723
+ const shouldLoadBackupKey = Boolean(serverVersion) && (decryptionKeyCached === false || matchesDecryptionKey === false);
724
+ const shouldActivateBackup = Boolean(serverVersion) && !activeVersion;
725
+ let keyLoadAttempted = false;
726
+ let keyLoadError = null;
727
+ if (serverVersion && (shouldLoadBackupKey || shouldActivateBackup)) {
728
+ if (shouldLoadBackupKey) {
729
+ if (typeof crypto.loadSessionBackupPrivateKeyFromSecretStorage === "function") {
730
+ keyLoadAttempted = true;
731
+ try {
732
+ await crypto.loadSessionBackupPrivateKeyFromSecretStorage();
733
+ } catch (err) {
734
+ keyLoadError = formatMatrixErrorMessage(err);
735
+ }
736
+ } else {
737
+ keyLoadError = "Matrix crypto backend does not support loading backup keys from secret storage";
738
+ }
739
+ }
740
+ if (!keyLoadError) {
741
+ await this.enableTrustedRoomKeyBackupIfPossible(crypto);
742
+ }
743
+ ({ activeVersion, decryptionKeyCached } = await this.resolveRoomKeyBackupLocalState(crypto));
744
+ ({ serverVersion, trusted, matchesDecryptionKey } = await this.resolveRoomKeyBackupTrustState(
745
+ crypto,
746
+ serverVersion
747
+ ));
748
+ }
749
+ return {
750
+ serverVersion,
751
+ activeVersion,
752
+ trusted,
753
+ matchesDecryptionKey,
754
+ decryptionKeyCached,
755
+ keyLoadAttempted,
756
+ keyLoadError
757
+ };
758
+ }
759
+ async getOwnDeviceVerificationStatus() {
760
+ const recoveryKey = this.recoveryKeyStore.getRecoveryKeySummary();
761
+ const userId = this.client.getUserId() ?? this.selfUserId ?? null;
762
+ const deviceId = this.client.getDeviceId()?.trim() || null;
763
+ const backup = await this.getRoomKeyBackupStatus();
764
+ if (!this.encryptionEnabled) {
765
+ return {
766
+ encryptionEnabled: false,
767
+ userId,
768
+ deviceId,
769
+ verified: false,
770
+ localVerified: false,
771
+ crossSigningVerified: false,
772
+ signedByOwner: false,
773
+ recoveryKeyStored: Boolean(recoveryKey),
774
+ recoveryKeyCreatedAt: recoveryKey?.createdAt ?? null,
775
+ recoveryKeyId: recoveryKey?.keyId ?? null,
776
+ backupVersion: backup.serverVersion,
777
+ backup
778
+ };
779
+ }
780
+ const crypto = this.client.getCrypto();
781
+ let deviceStatus = null;
782
+ if (crypto && userId && deviceId && typeof crypto.getDeviceVerificationStatus === "function") {
783
+ deviceStatus = await crypto.getDeviceVerificationStatus(userId, deviceId).catch(() => null);
784
+ }
785
+ const { isMatrixDeviceOwnerVerified } = await loadMatrixCryptoRuntime();
786
+ return {
787
+ encryptionEnabled: true,
788
+ userId,
789
+ deviceId,
790
+ verified: isMatrixDeviceOwnerVerified(deviceStatus),
791
+ localVerified: deviceStatus?.localVerified === true,
792
+ crossSigningVerified: deviceStatus?.crossSigningVerified === true,
793
+ signedByOwner: deviceStatus?.signedByOwner === true,
794
+ recoveryKeyStored: Boolean(recoveryKey),
795
+ recoveryKeyCreatedAt: recoveryKey?.createdAt ?? null,
796
+ recoveryKeyId: recoveryKey?.keyId ?? null,
797
+ backupVersion: backup.serverVersion,
798
+ backup
799
+ };
800
+ }
801
+ async verifyWithRecoveryKey(rawRecoveryKey) {
802
+ const fail = async (error) => ({
803
+ success: false,
804
+ error,
805
+ ...await this.getOwnDeviceVerificationStatus()
806
+ });
807
+ if (!this.encryptionEnabled) {
808
+ return await fail("Matrix encryption is disabled for this client");
809
+ }
810
+ await this.ensureStartedForCryptoControlPlane();
811
+ await this.ensureCryptoSupportInitialized();
812
+ const crypto = this.client.getCrypto();
813
+ if (!crypto) {
814
+ return await fail("Matrix crypto is not available (start client with encryption enabled)");
815
+ }
816
+ const trimmedRecoveryKey = rawRecoveryKey.trim();
817
+ if (!trimmedRecoveryKey) {
818
+ return await fail("Matrix recovery key is required");
819
+ }
820
+ try {
821
+ this.recoveryKeyStore.stageEncodedRecoveryKey({
822
+ encodedPrivateKey: trimmedRecoveryKey,
823
+ keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
824
+ });
825
+ } catch (err) {
826
+ return await fail(formatMatrixErrorMessage(err));
827
+ }
828
+ try {
829
+ const cryptoBootstrapper = this.cryptoBootstrapper;
830
+ if (!cryptoBootstrapper) {
831
+ return await fail("Matrix crypto bootstrapper is not available");
832
+ }
833
+ await cryptoBootstrapper.bootstrap(crypto, {
834
+ allowAutomaticCrossSigningReset: false
835
+ });
836
+ await this.enableTrustedRoomKeyBackupIfPossible(crypto);
837
+ const status = await this.getOwnDeviceVerificationStatus();
838
+ if (!status.verified) {
839
+ this.recoveryKeyStore.discardStagedRecoveryKey();
840
+ return {
841
+ success: false,
842
+ error: "Matrix device is still not verified by its owner after applying the recovery key. Ensure cross-signing is available and the device is signed.",
843
+ ...status
844
+ };
845
+ }
846
+ const backupError = resolveMatrixRoomKeyBackupReadinessError(status.backup, {
847
+ requireServerBackup: false
848
+ });
849
+ if (backupError) {
850
+ this.recoveryKeyStore.discardStagedRecoveryKey();
851
+ return {
852
+ success: false,
853
+ error: backupError,
854
+ ...status
855
+ };
856
+ }
857
+ this.recoveryKeyStore.commitStagedRecoveryKey({
858
+ keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
859
+ });
860
+ const committedStatus = await this.getOwnDeviceVerificationStatus();
861
+ return {
862
+ success: true,
863
+ verifiedAt: (/* @__PURE__ */ new Date()).toISOString(),
864
+ ...committedStatus
865
+ };
866
+ } catch (err) {
867
+ this.recoveryKeyStore.discardStagedRecoveryKey();
868
+ return await fail(formatMatrixErrorMessage(err));
869
+ }
870
+ }
871
+ async restoreRoomKeyBackup(params = {}) {
872
+ let loadedFromSecretStorage = false;
873
+ const fail = async (error) => {
874
+ const backup = await this.getRoomKeyBackupStatus();
875
+ return {
876
+ success: false,
877
+ error,
878
+ backupVersion: backup.serverVersion,
879
+ imported: 0,
880
+ total: 0,
881
+ loadedFromSecretStorage,
882
+ backup
883
+ };
884
+ };
885
+ if (!this.encryptionEnabled) {
886
+ return await fail("Matrix encryption is disabled for this client");
887
+ }
888
+ await this.ensureStartedForCryptoControlPlane();
889
+ const crypto = this.client.getCrypto();
890
+ if (!crypto) {
891
+ return await fail("Matrix crypto is not available (start client with encryption enabled)");
892
+ }
893
+ try {
894
+ const rawRecoveryKey = params.recoveryKey?.trim();
895
+ if (rawRecoveryKey) {
896
+ this.recoveryKeyStore.stageEncodedRecoveryKey({
897
+ encodedPrivateKey: rawRecoveryKey,
898
+ keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
899
+ });
900
+ }
901
+ const backup = await this.getRoomKeyBackupStatus();
902
+ loadedFromSecretStorage = backup.keyLoadAttempted && !backup.keyLoadError;
903
+ const backupError = resolveMatrixRoomKeyBackupReadinessError(backup, {
904
+ requireServerBackup: true
905
+ });
906
+ if (backupError) {
907
+ this.recoveryKeyStore.discardStagedRecoveryKey();
908
+ return await fail(backupError);
909
+ }
910
+ if (typeof crypto.restoreKeyBackup !== "function") {
911
+ this.recoveryKeyStore.discardStagedRecoveryKey();
912
+ return await fail("Matrix crypto backend does not support full key backup restore");
913
+ }
914
+ const restore = await crypto.restoreKeyBackup();
915
+ if (rawRecoveryKey) {
916
+ this.recoveryKeyStore.commitStagedRecoveryKey({
917
+ keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
918
+ });
919
+ }
920
+ const finalBackup = await this.getRoomKeyBackupStatus();
921
+ return {
922
+ success: true,
923
+ backupVersion: backup.serverVersion,
924
+ imported: typeof restore.imported === "number" ? restore.imported : 0,
925
+ total: typeof restore.total === "number" ? restore.total : 0,
926
+ loadedFromSecretStorage,
927
+ restoredAt: (/* @__PURE__ */ new Date()).toISOString(),
928
+ backup: finalBackup
929
+ };
930
+ } catch (err) {
931
+ this.recoveryKeyStore.discardStagedRecoveryKey();
932
+ return await fail(formatMatrixErrorMessage(err));
933
+ }
934
+ }
935
+ async resetRoomKeyBackup() {
936
+ let previousVersion = null;
937
+ let deletedVersion = null;
938
+ const fail = async (error) => {
939
+ const backup = await this.getRoomKeyBackupStatus();
940
+ return {
941
+ success: false,
942
+ error,
943
+ previousVersion,
944
+ deletedVersion,
945
+ createdVersion: backup.serverVersion,
946
+ backup
947
+ };
948
+ };
949
+ if (!this.encryptionEnabled) {
950
+ return await fail("Matrix encryption is disabled for this client");
951
+ }
952
+ await this.ensureStartedForCryptoControlPlane();
953
+ const crypto = this.client.getCrypto();
954
+ if (!crypto) {
955
+ return await fail("Matrix crypto is not available (start client with encryption enabled)");
956
+ }
957
+ previousVersion = await this.resolveRoomKeyBackupVersion();
958
+ const forceNewSecretStorage = await this.shouldForceSecretStorageRecreationForBackupReset(crypto);
959
+ try {
960
+ if (previousVersion) {
961
+ try {
962
+ await this.doRequest(
963
+ "DELETE",
964
+ `/_lobi/client/v3/room_keys/version/${encodeURIComponent(previousVersion)}`
965
+ );
966
+ } catch (err) {
967
+ if (!isMatrixNotFoundError(err)) {
968
+ throw err;
969
+ }
970
+ }
971
+ deletedVersion = previousVersion;
972
+ }
973
+ await this.recoveryKeyStore.bootstrapSecretStorageWithRecoveryKey(crypto, {
974
+ setupNewKeyBackup: true,
975
+ // Force SSSS recreation when the existing SSSS key is broken (bad MAC), so
976
+ // the new backup key is written into a fresh SSSS consistent with recovery_key.json.
977
+ forceNewSecretStorage,
978
+ // Also allow recreation if bootstrapSecretStorage itself surfaces a repairable
979
+ // error (e.g. bad MAC from a different SSSS entry).
980
+ allowSecretStorageRecreateWithoutRecoveryKey: true
981
+ });
982
+ await this.enableTrustedRoomKeyBackupIfPossible(crypto);
983
+ const backup = await this.getRoomKeyBackupStatus();
984
+ const createdVersion = backup.serverVersion;
985
+ if (!createdVersion) {
986
+ return await fail("Matrix room key backup is still missing after reset.");
987
+ }
988
+ if (backup.activeVersion !== createdVersion) {
989
+ return await fail(
990
+ "Matrix room key backup was recreated on the server but is not active on this device."
991
+ );
992
+ }
993
+ if (backup.decryptionKeyCached === false) {
994
+ return await fail(
995
+ "Matrix room key backup was recreated but its decryption key is not cached on this device."
996
+ );
997
+ }
998
+ if (backup.matchesDecryptionKey === false) {
999
+ return await fail(
1000
+ "Matrix room key backup was recreated but this device does not have the matching backup decryption key."
1001
+ );
1002
+ }
1003
+ if (backup.trusted === false) {
1004
+ return await fail(
1005
+ "Matrix room key backup was recreated but is not trusted on this device."
1006
+ );
1007
+ }
1008
+ return {
1009
+ success: true,
1010
+ previousVersion,
1011
+ deletedVersion,
1012
+ createdVersion,
1013
+ resetAt: (/* @__PURE__ */ new Date()).toISOString(),
1014
+ backup
1015
+ };
1016
+ } catch (err) {
1017
+ return await fail(formatMatrixErrorMessage(err));
1018
+ }
1019
+ }
1020
+ async getOwnCrossSigningPublicationStatus() {
1021
+ const userId = this.client.getUserId() ?? this.selfUserId ?? null;
1022
+ if (!userId) {
1023
+ return {
1024
+ userId: null,
1025
+ masterKeyPublished: false,
1026
+ selfSigningKeyPublished: false,
1027
+ userSigningKeyPublished: false,
1028
+ published: false
1029
+ };
1030
+ }
1031
+ try {
1032
+ const response = await this.doRequest("POST", "/_lobi/client/v3/keys/query", void 0, {
1033
+ device_keys: { [userId]: [] }
1034
+ });
1035
+ const masterKeyPublished = Boolean(response.master_keys?.[userId]);
1036
+ const selfSigningKeyPublished = Boolean(response.self_signing_keys?.[userId]);
1037
+ const userSigningKeyPublished = Boolean(response.user_signing_keys?.[userId]);
1038
+ return {
1039
+ userId,
1040
+ masterKeyPublished,
1041
+ selfSigningKeyPublished,
1042
+ userSigningKeyPublished,
1043
+ published: masterKeyPublished && selfSigningKeyPublished && userSigningKeyPublished
1044
+ };
1045
+ } catch {
1046
+ return {
1047
+ userId,
1048
+ masterKeyPublished: false,
1049
+ selfSigningKeyPublished: false,
1050
+ userSigningKeyPublished: false,
1051
+ published: false
1052
+ };
1053
+ }
1054
+ }
1055
+ async bootstrapOwnDeviceVerification(params) {
1056
+ const pendingVerifications = async () => this.crypto ? (await this.crypto.listVerifications()).length : 0;
1057
+ if (!this.encryptionEnabled) {
1058
+ return {
1059
+ success: false,
1060
+ error: "Matrix encryption is disabled for this client",
1061
+ verification: await this.getOwnDeviceVerificationStatus(),
1062
+ crossSigning: await this.getOwnCrossSigningPublicationStatus(),
1063
+ pendingVerifications: await pendingVerifications(),
1064
+ cryptoBootstrap: null
1065
+ };
1066
+ }
1067
+ let bootstrapError;
1068
+ let bootstrapSummary = null;
1069
+ try {
1070
+ await this.ensureStartedForCryptoControlPlane();
1071
+ await this.ensureCryptoSupportInitialized();
1072
+ const crypto = this.client.getCrypto();
1073
+ if (!crypto) {
1074
+ throw new Error("Matrix crypto is not available (start client with encryption enabled)");
1075
+ }
1076
+ const rawRecoveryKey = params?.recoveryKey?.trim();
1077
+ if (rawRecoveryKey) {
1078
+ this.recoveryKeyStore.stageEncodedRecoveryKey({
1079
+ encodedPrivateKey: rawRecoveryKey,
1080
+ keyId: await this.resolveDefaultSecretStorageKeyId(crypto)
1081
+ });
1082
+ }
1083
+ const cryptoBootstrapper = this.cryptoBootstrapper;
1084
+ if (!cryptoBootstrapper) {
1085
+ throw new Error("Matrix crypto bootstrapper is not available");
1086
+ }
1087
+ bootstrapSummary = await cryptoBootstrapper.bootstrap(
1088
+ crypto,
1089
+ createMatrixExplicitBootstrapOptions(params)
1090
+ );
1091
+ await this.ensureRoomKeyBackupEnabled(crypto);
1092
+ } catch (err) {
1093
+ this.recoveryKeyStore.discardStagedRecoveryKey();
1094
+ bootstrapError = formatMatrixErrorMessage(err);
1095
+ }
1096
+ const verification = await this.getOwnDeviceVerificationStatus();
1097
+ const crossSigning = await this.getOwnCrossSigningPublicationStatus();
1098
+ const verificationError = verification.verified && crossSigning.published ? null : bootstrapError ?? "Matrix verification bootstrap did not produce a device verified by its owner with published cross-signing keys";
1099
+ const backupError = verificationError === null ? resolveMatrixRoomKeyBackupReadinessError(verification.backup, {
1100
+ requireServerBackup: true
1101
+ }) : null;
1102
+ const success = verificationError === null && backupError === null;
1103
+ if (success) {
1104
+ this.recoveryKeyStore.commitStagedRecoveryKey({
1105
+ keyId: await this.resolveDefaultSecretStorageKeyId(
1106
+ this.client.getCrypto()
1107
+ )
1108
+ });
1109
+ } else {
1110
+ this.recoveryKeyStore.discardStagedRecoveryKey();
1111
+ }
1112
+ const error = success ? void 0 : backupError ?? verificationError ?? void 0;
1113
+ return {
1114
+ success,
1115
+ error,
1116
+ verification: success ? await this.getOwnDeviceVerificationStatus() : verification,
1117
+ crossSigning,
1118
+ pendingVerifications: await pendingVerifications(),
1119
+ cryptoBootstrap: bootstrapSummary
1120
+ };
1121
+ }
1122
+ async listOwnDevices() {
1123
+ const currentDeviceId = this.client.getDeviceId()?.trim() || null;
1124
+ const devices = await this.client.getDevices();
1125
+ const entries = Array.isArray(devices?.devices) ? devices.devices : [];
1126
+ return entries.map((device) => ({
1127
+ deviceId: device.device_id,
1128
+ displayName: device.display_name?.trim() || null,
1129
+ lastSeenIp: device.last_seen_ip?.trim() || null,
1130
+ lastSeenTs: typeof device.last_seen_ts === "number" && Number.isFinite(device.last_seen_ts) ? device.last_seen_ts : null,
1131
+ current: currentDeviceId !== null && device.device_id === currentDeviceId
1132
+ }));
1133
+ }
1134
+ async deleteOwnDevices(deviceIds) {
1135
+ const uniqueDeviceIds = [...new Set(deviceIds.map((value) => value.trim()).filter(Boolean))];
1136
+ const currentDeviceId = this.client.getDeviceId()?.trim() || null;
1137
+ const protectedDeviceIds = uniqueDeviceIds.filter((deviceId) => deviceId === currentDeviceId);
1138
+ if (protectedDeviceIds.length > 0) {
1139
+ throw new Error(`Refusing to delete the current Matrix device: ${protectedDeviceIds[0]}`);
1140
+ }
1141
+ const deleteWithAuth = async (authData) => {
1142
+ await this.client.deleteMultipleDevices(uniqueDeviceIds, authData);
1143
+ };
1144
+ if (uniqueDeviceIds.length > 0) {
1145
+ try {
1146
+ await deleteWithAuth();
1147
+ } catch (err) {
1148
+ const session = err && typeof err === "object" && "data" in err && err.data && typeof err.data === "object" && "session" in err.data && typeof err.data.session === "string" ? err.data.session : null;
1149
+ const userId = await this.getUserId().catch(() => this.selfUserId);
1150
+ if (!session || !userId || !this.password?.trim()) {
1151
+ throw err;
1152
+ }
1153
+ await deleteWithAuth({
1154
+ type: "m.login.password",
1155
+ session,
1156
+ identifier: { type: "m.id.user", user: userId },
1157
+ password: this.password
1158
+ });
1159
+ }
1160
+ }
1161
+ return {
1162
+ currentDeviceId,
1163
+ deletedDeviceIds: uniqueDeviceIds,
1164
+ remainingDevices: await this.listOwnDevices()
1165
+ };
1166
+ }
1167
+ async resolveActiveRoomKeyBackupVersion(crypto) {
1168
+ if (typeof crypto.getActiveSessionBackupVersion !== "function") {
1169
+ return null;
1170
+ }
1171
+ const version = await crypto.getActiveSessionBackupVersion().catch(() => null);
1172
+ return normalizeOptionalString(version);
1173
+ }
1174
+ async resolveCachedRoomKeyBackupDecryptionKey(crypto) {
1175
+ const getSessionBackupPrivateKey = crypto.getSessionBackupPrivateKey;
1176
+ if (typeof getSessionBackupPrivateKey !== "function") {
1177
+ return null;
1178
+ }
1179
+ const key = await getSessionBackupPrivateKey.call(crypto).catch(() => null);
1180
+ return key ? key.length > 0 : false;
1181
+ }
1182
+ async resolveRoomKeyBackupLocalState(crypto) {
1183
+ const [activeVersion, decryptionKeyCached] = await Promise.all([
1184
+ this.resolveActiveRoomKeyBackupVersion(crypto),
1185
+ this.resolveCachedRoomKeyBackupDecryptionKey(crypto)
1186
+ ]);
1187
+ return { activeVersion, decryptionKeyCached };
1188
+ }
1189
+ async shouldForceSecretStorageRecreationForBackupReset(crypto) {
1190
+ const decryptionKeyCached = await this.resolveCachedRoomKeyBackupDecryptionKey(crypto);
1191
+ if (decryptionKeyCached !== false) {
1192
+ return false;
1193
+ }
1194
+ const loadSessionBackupPrivateKeyFromSecretStorage = crypto.loadSessionBackupPrivateKeyFromSecretStorage;
1195
+ if (typeof loadSessionBackupPrivateKeyFromSecretStorage !== "function") {
1196
+ return false;
1197
+ }
1198
+ try {
1199
+ await loadSessionBackupPrivateKeyFromSecretStorage.call(crypto);
1200
+ return false;
1201
+ } catch (err) {
1202
+ return isRepairableSecretStorageAccessError(err);
1203
+ }
1204
+ }
1205
+ async resolveRoomKeyBackupTrustState(crypto, fallbackVersion) {
1206
+ let serverVersion = fallbackVersion;
1207
+ let trusted = null;
1208
+ let matchesDecryptionKey = null;
1209
+ if (typeof crypto.getKeyBackupInfo === "function") {
1210
+ const info = await crypto.getKeyBackupInfo().catch(() => null);
1211
+ serverVersion = normalizeOptionalString(info?.version) ?? serverVersion;
1212
+ if (info && typeof crypto.isKeyBackupTrusted === "function") {
1213
+ const trustInfo = await crypto.isKeyBackupTrusted(info).catch(() => null);
1214
+ trusted = typeof trustInfo?.trusted === "boolean" ? trustInfo.trusted : null;
1215
+ matchesDecryptionKey = typeof trustInfo?.matchesDecryptionKey === "boolean" ? trustInfo.matchesDecryptionKey : null;
1216
+ }
1217
+ }
1218
+ return { serverVersion, trusted, matchesDecryptionKey };
1219
+ }
1220
+ async resolveDefaultSecretStorageKeyId(crypto) {
1221
+ const getSecretStorageStatus = crypto?.getSecretStorageStatus;
1222
+ if (typeof getSecretStorageStatus !== "function") {
1223
+ return void 0;
1224
+ }
1225
+ const status = await getSecretStorageStatus.call(crypto).catch(() => null);
1226
+ return status?.defaultKeyId;
1227
+ }
1228
+ async resolveRoomKeyBackupVersion() {
1229
+ try {
1230
+ const response = await this.doRequest("GET", "/_lobi/client/v3/room_keys/version");
1231
+ return normalizeOptionalString(response.version);
1232
+ } catch {
1233
+ return null;
1234
+ }
1235
+ }
1236
+ async enableTrustedRoomKeyBackupIfPossible(crypto) {
1237
+ if (typeof crypto.checkKeyBackupAndEnable !== "function") {
1238
+ return;
1239
+ }
1240
+ await crypto.checkKeyBackupAndEnable();
1241
+ }
1242
+ async ensureRoomKeyBackupEnabled(crypto) {
1243
+ const existingVersion = await this.resolveRoomKeyBackupVersion();
1244
+ if (existingVersion) {
1245
+ return;
1246
+ }
1247
+ LogService.info(
1248
+ "MatrixClientLite",
1249
+ "No room key backup version found on server, creating one via secret storage bootstrap"
1250
+ );
1251
+ await this.recoveryKeyStore.bootstrapSecretStorageWithRecoveryKey(crypto, {
1252
+ setupNewKeyBackup: true
1253
+ });
1254
+ const createdVersion = await this.resolveRoomKeyBackupVersion();
1255
+ if (!createdVersion) {
1256
+ throw new Error("Matrix room key backup is still missing after bootstrap");
1257
+ }
1258
+ LogService.info("MatrixClientLite", `Room key backup enabled (version ${createdVersion})`);
1259
+ }
1260
+ registerBridge() {
1261
+ if (this.bridgeRegistered || !this.decryptBridge) {
1262
+ return;
1263
+ }
1264
+ this.bridgeRegistered = true;
1265
+ const decryptBridge = this.decryptBridge;
1266
+ this.client.on(ClientEvent.Event, (event) => {
1267
+ const roomId = event.getRoomId();
1268
+ if (!roomId) {
1269
+ return;
1270
+ }
1271
+ const raw = matrixEventToRaw(event);
1272
+ const isEncryptedEvent = raw.type === "m.room.encrypted";
1273
+ this.emitter.emit("room.event", roomId, raw);
1274
+ if (isEncryptedEvent) {
1275
+ this.emitter.emit("room.encrypted_event", roomId, raw);
1276
+ } else {
1277
+ if (decryptBridge.shouldEmitUnencryptedMessage(roomId, raw.event_id)) {
1278
+ this.emitter.emit("room.message", roomId, raw);
1279
+ }
1280
+ }
1281
+ const stateKey = raw.state_key ?? "";
1282
+ const selfUserId = this.client.getUserId() ?? this.selfUserId ?? "";
1283
+ const membership = raw.type === "m.room.member" ? raw.content.membership : void 0;
1284
+ if (stateKey && selfUserId && stateKey === selfUserId) {
1285
+ if (membership === "invite") {
1286
+ this.emitter.emit("room.invite", roomId, raw);
1287
+ } else if (membership === "join") {
1288
+ this.emitter.emit("room.join", roomId, raw);
1289
+ }
1290
+ }
1291
+ if (isEncryptedEvent) {
1292
+ decryptBridge.attachEncryptedEvent(event, roomId);
1293
+ }
1294
+ });
1295
+ this.client.on(ClientEvent.Room, (room) => {
1296
+ this.emitMembershipForRoom(room);
1297
+ });
1298
+ this.client.on(
1299
+ ClientEvent.Sync,
1300
+ (state, prevState, data) => {
1301
+ this.currentSyncState = state;
1302
+ const error = data && typeof data === "object" && "error" in data ? data.error : void 0;
1303
+ this.emitter.emit("sync.state", state, prevState, error);
1304
+ }
1305
+ );
1306
+ this.client.on(ClientEvent.SyncUnexpectedError, (error) => {
1307
+ this.emitter.emit("sync.unexpected_error", error);
1308
+ });
1309
+ }
1310
+ emitMembershipForRoom(room) {
1311
+ const roomObj = room;
1312
+ const roomId = roomObj.roomId?.trim();
1313
+ if (!roomId) {
1314
+ return;
1315
+ }
1316
+ const membership = roomObj.getMyMembership?.() ?? roomObj.selfMembership ?? void 0;
1317
+ const selfUserId = this.client.getUserId() ?? this.selfUserId ?? "";
1318
+ if (!selfUserId) {
1319
+ return;
1320
+ }
1321
+ const raw = {
1322
+ event_id: `$membership-${roomId}-${Date.now()}`,
1323
+ type: "m.room.member",
1324
+ sender: selfUserId,
1325
+ state_key: selfUserId,
1326
+ content: { membership },
1327
+ origin_server_ts: Date.now(),
1328
+ unsigned: { age: 0 }
1329
+ };
1330
+ if (membership === "invite") {
1331
+ this.emitter.emit("room.invite", roomId, raw);
1332
+ return;
1333
+ }
1334
+ if (membership === "join") {
1335
+ this.emitter.emit("room.join", roomId, raw);
1336
+ }
1337
+ }
1338
+ emitOutstandingInviteEvents() {
1339
+ const listRooms = this.client.getRooms;
1340
+ if (typeof listRooms !== "function") {
1341
+ return;
1342
+ }
1343
+ const rooms = listRooms.call(this.client);
1344
+ if (!Array.isArray(rooms)) {
1345
+ return;
1346
+ }
1347
+ for (const room of rooms) {
1348
+ this.emitMembershipForRoom(room);
1349
+ }
1350
+ }
1351
+ async refreshDmCache() {
1352
+ const direct = await this.getAccountData("m.direct");
1353
+ this.dmRoomIds.clear();
1354
+ if (!direct || typeof direct !== "object") {
1355
+ return false;
1356
+ }
1357
+ for (const value of Object.values(direct)) {
1358
+ if (!Array.isArray(value)) {
1359
+ continue;
1360
+ }
1361
+ for (const roomId of value) {
1362
+ if (typeof roomId === "string" && roomId.trim()) {
1363
+ this.dmRoomIds.add(roomId);
1364
+ }
1365
+ }
1366
+ }
1367
+ return true;
1368
+ }
1369
+ };
1370
+ export {
1371
+ ConsoleLogger,
1372
+ LogService,
1373
+ MatrixClient
1374
+ };
1375
+ //# sourceMappingURL=sdk.js.map