@archipelagolab/lobi 1.0.1 → 1.0.6

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 (1538) hide show
  1. package/dist/APEv2Parser-6EMKXRZS.js +15 -0
  2. package/dist/APEv2Parser-6EMKXRZS.js.map +7 -0
  3. package/dist/APEv2Parser-FYYGMFPI.js +15 -0
  4. package/dist/APEv2Parser-FYYGMFPI.js.map +7 -0
  5. package/dist/AiffParser-E6XWRTXM.js +194 -0
  6. package/dist/AiffParser-E6XWRTXM.js.map +7 -0
  7. package/dist/AiffParser-JHSDQA7T.js +194 -0
  8. package/dist/AiffParser-JHSDQA7T.js.map +7 -0
  9. package/dist/AsfParser-TPCQDEJB.js +620 -0
  10. package/dist/AsfParser-TPCQDEJB.js.map +7 -0
  11. package/dist/AsfParser-WSOH2JQY.js +620 -0
  12. package/dist/AsfParser-WSOH2JQY.js.map +7 -0
  13. package/dist/DsdiffParser-CGD3C3TL.js +192 -0
  14. package/dist/DsdiffParser-CGD3C3TL.js.map +7 -0
  15. package/dist/DsdiffParser-EUWJ4YAR.js +192 -0
  16. package/dist/DsdiffParser-EUWJ4YAR.js.map +7 -0
  17. package/dist/DsfParser-3UTIJVNF.js +114 -0
  18. package/dist/DsfParser-3UTIJVNF.js.map +7 -0
  19. package/dist/DsfParser-R6TPBJIY.js +114 -0
  20. package/dist/DsfParser-R6TPBJIY.js.map +7 -0
  21. package/dist/FlacParser-HLLYPJ76.js +16 -0
  22. package/dist/FlacParser-HLLYPJ76.js.map +7 -0
  23. package/dist/FlacParser-VDASGZ3E.js +16 -0
  24. package/dist/FlacParser-VDASGZ3E.js.map +7 -0
  25. package/dist/MP4Parser-64RGJLUM.js +1145 -0
  26. package/dist/MP4Parser-64RGJLUM.js.map +7 -0
  27. package/dist/MP4Parser-SM7HYL3Z.js +1145 -0
  28. package/dist/MP4Parser-SM7HYL3Z.js.map +7 -0
  29. package/dist/MatroskaParser-O6RXAKYA.js +662 -0
  30. package/dist/MatroskaParser-O6RXAKYA.js.map +7 -0
  31. package/dist/MatroskaParser-X7WRZ6D4.js +662 -0
  32. package/dist/MatroskaParser-X7WRZ6D4.js.map +7 -0
  33. package/dist/MpegParser-B6NX6DS3.js +652 -0
  34. package/dist/MpegParser-B6NX6DS3.js.map +7 -0
  35. package/dist/MpegParser-KXQEC6KD.js +652 -0
  36. package/dist/MpegParser-KXQEC6KD.js.map +7 -0
  37. package/dist/MusepackParser-NURI46TG.js +331 -0
  38. package/dist/MusepackParser-NURI46TG.js.map +7 -0
  39. package/dist/MusepackParser-WUBT63DS.js +331 -0
  40. package/dist/MusepackParser-WUBT63DS.js.map +7 -0
  41. package/dist/OggParser-5IYVBXPS.js +448 -0
  42. package/dist/OggParser-5IYVBXPS.js.map +7 -0
  43. package/dist/OggParser-ZY6E5C2P.js +448 -0
  44. package/dist/OggParser-ZY6E5C2P.js.map +7 -0
  45. package/dist/WavPackParser-5KTCSQEU.js +209 -0
  46. package/dist/WavPackParser-5KTCSQEU.js.map +7 -0
  47. package/dist/WavPackParser-RTEHKSJH.js +209 -0
  48. package/dist/WavPackParser-RTEHKSJH.js.map +7 -0
  49. package/dist/WaveParser-3R2NLXGP.js +300 -0
  50. package/dist/WaveParser-3R2NLXGP.js.map +7 -0
  51. package/dist/WaveParser-RZSHVQPZ.js +300 -0
  52. package/dist/WaveParser-RZSHVQPZ.js.map +7 -0
  53. package/dist/auth-presence.js +46 -0
  54. package/dist/auth-presence.js.map +7 -0
  55. package/dist/channel-plugin-api.js +79 -0
  56. package/dist/channel-plugin-api.js.map +7 -0
  57. package/dist/chunk-22WAAZ6I.js +114 -0
  58. package/dist/chunk-22WAAZ6I.js.map +7 -0
  59. package/dist/chunk-2A6HEFSO.js +676 -0
  60. package/dist/chunk-2A6HEFSO.js.map +7 -0
  61. package/dist/chunk-2GFROLI2.js +261 -0
  62. package/dist/chunk-2GFROLI2.js.map +7 -0
  63. package/dist/chunk-2IQWKATM.js +127 -0
  64. package/dist/chunk-2IQWKATM.js.map +7 -0
  65. package/dist/chunk-2KGHUHKU.js +169 -0
  66. package/dist/chunk-2KGHUHKU.js.map +7 -0
  67. package/dist/chunk-2NEQI4K6.js +171 -0
  68. package/dist/chunk-2NEQI4K6.js.map +7 -0
  69. package/dist/chunk-2OSJ3MTW.js +175 -0
  70. package/dist/chunk-2OSJ3MTW.js.map +7 -0
  71. package/dist/chunk-2Q626TDO.js +27 -0
  72. package/dist/chunk-2Q626TDO.js.map +7 -0
  73. package/dist/chunk-2U6OZ7N2.js +155 -0
  74. package/dist/chunk-2U6OZ7N2.js.map +7 -0
  75. package/dist/chunk-2V6Y4CAN.js +25 -0
  76. package/dist/chunk-2V6Y4CAN.js.map +7 -0
  77. package/dist/chunk-2WHRUMOM.js +321 -0
  78. package/dist/chunk-2WHRUMOM.js.map +7 -0
  79. package/dist/chunk-2Z4IOUDZ.js +129 -0
  80. package/dist/chunk-2Z4IOUDZ.js.map +7 -0
  81. package/dist/chunk-2ZEPAW7U.js +154 -0
  82. package/dist/chunk-2ZEPAW7U.js.map +7 -0
  83. package/dist/chunk-2ZI6JK5O.js +63 -0
  84. package/dist/chunk-2ZI6JK5O.js.map +7 -0
  85. package/dist/chunk-34UY6D6X.js +36 -0
  86. package/dist/chunk-34UY6D6X.js.map +7 -0
  87. package/dist/chunk-3GIK7SAA.js +109 -0
  88. package/dist/chunk-3GIK7SAA.js.map +7 -0
  89. package/dist/chunk-3JD6JSJD.js +111 -0
  90. package/dist/chunk-3JD6JSJD.js.map +7 -0
  91. package/dist/chunk-3OXOEMBS.js +123 -0
  92. package/dist/chunk-3OXOEMBS.js.map +7 -0
  93. package/dist/chunk-3R4ATE4Q.js +176 -0
  94. package/dist/chunk-3R4ATE4Q.js.map +7 -0
  95. package/dist/chunk-3TOEIHG5.js +314 -0
  96. package/dist/chunk-3TOEIHG5.js.map +7 -0
  97. package/dist/chunk-3TRKKAVT.js +130 -0
  98. package/dist/chunk-3TRKKAVT.js.map +7 -0
  99. package/dist/chunk-3UFTTK7C.js +418 -0
  100. package/dist/chunk-3UFTTK7C.js.map +7 -0
  101. package/dist/chunk-3XO6AAIC.js +25 -0
  102. package/dist/chunk-3XO6AAIC.js.map +7 -0
  103. package/dist/chunk-427SAQME.js +321 -0
  104. package/dist/chunk-427SAQME.js.map +7 -0
  105. package/dist/chunk-4CFQNJ7F.js +7 -0
  106. package/dist/chunk-4CFQNJ7F.js.map +7 -0
  107. package/dist/chunk-4COI4L2Y.js +31 -0
  108. package/dist/chunk-4COI4L2Y.js.map +7 -0
  109. package/dist/chunk-4EKKDVG3.js +1662 -0
  110. package/dist/chunk-4EKKDVG3.js.map +7 -0
  111. package/dist/chunk-4JVNTZAI.js +80 -0
  112. package/dist/chunk-4JVNTZAI.js.map +7 -0
  113. package/dist/chunk-4L2QI6AY.js +71 -0
  114. package/dist/chunk-4L2QI6AY.js.map +7 -0
  115. package/dist/chunk-4O3BEYYM.js +187 -0
  116. package/dist/chunk-4O3BEYYM.js.map +7 -0
  117. package/dist/chunk-4OXPPDV6.js +676 -0
  118. package/dist/chunk-4OXPPDV6.js.map +7 -0
  119. package/dist/chunk-4QTZHELX.js +51 -0
  120. package/dist/chunk-4QTZHELX.js.map +7 -0
  121. package/dist/chunk-4U42OJMK.js +217 -0
  122. package/dist/chunk-4U42OJMK.js.map +7 -0
  123. package/dist/chunk-4WCKVGQ5.js +193 -0
  124. package/dist/chunk-4WCKVGQ5.js.map +7 -0
  125. package/dist/chunk-4XXERLFH.js +95 -0
  126. package/dist/chunk-4XXERLFH.js.map +7 -0
  127. package/dist/chunk-4Z2N4GW6.js +247 -0
  128. package/dist/chunk-4Z2N4GW6.js.map +7 -0
  129. package/dist/chunk-4ZY2BOQ4.js +123 -0
  130. package/dist/chunk-4ZY2BOQ4.js.map +7 -0
  131. package/dist/chunk-56HN4SH6.js +46 -0
  132. package/dist/chunk-56HN4SH6.js.map +7 -0
  133. package/dist/chunk-57ROEOHB.js +183 -0
  134. package/dist/chunk-57ROEOHB.js.map +7 -0
  135. package/dist/chunk-5APBBTGW.js +7 -0
  136. package/dist/chunk-5APBBTGW.js.map +7 -0
  137. package/dist/chunk-5BQ6LLNU.js +39 -0
  138. package/dist/chunk-5BQ6LLNU.js.map +7 -0
  139. package/dist/chunk-5LNGMBWW.js +93 -0
  140. package/dist/chunk-5LNGMBWW.js.map +7 -0
  141. package/dist/chunk-5XFQSYZ4.js +52 -0
  142. package/dist/chunk-5XFQSYZ4.js.map +7 -0
  143. package/dist/chunk-62N5N4AC.js +241 -0
  144. package/dist/chunk-62N5N4AC.js.map +7 -0
  145. package/dist/chunk-63QTHDJL.js +52 -0
  146. package/dist/chunk-63QTHDJL.js.map +7 -0
  147. package/dist/chunk-65UUVZ6B.js +151 -0
  148. package/dist/chunk-65UUVZ6B.js.map +7 -0
  149. package/dist/chunk-6COVTMAO.js +3586 -0
  150. package/dist/chunk-6COVTMAO.js.map +7 -0
  151. package/dist/chunk-6EYPDJUD.js +34 -0
  152. package/dist/chunk-6EYPDJUD.js.map +7 -0
  153. package/dist/chunk-6HDYPVA4.js +15 -0
  154. package/dist/chunk-6HDYPVA4.js.map +7 -0
  155. package/dist/chunk-6HX3DEXK.js +178 -0
  156. package/dist/chunk-6HX3DEXK.js.map +7 -0
  157. package/dist/chunk-6NO5VEVV.js +18 -0
  158. package/dist/chunk-6NO5VEVV.js.map +7 -0
  159. package/dist/chunk-6OP3FK5F.js +266 -0
  160. package/dist/chunk-6OP3FK5F.js.map +7 -0
  161. package/dist/chunk-6PZGDVLR.js +465 -0
  162. package/dist/chunk-6PZGDVLR.js.map +7 -0
  163. package/dist/chunk-6RBDFNSX.js +88 -0
  164. package/dist/chunk-6RBDFNSX.js.map +7 -0
  165. package/dist/chunk-6SOGH3TW.js +163 -0
  166. package/dist/chunk-6SOGH3TW.js.map +7 -0
  167. package/dist/chunk-6TWWCETB.js +70 -0
  168. package/dist/chunk-6TWWCETB.js.map +7 -0
  169. package/dist/chunk-6WFHPMUF.js +17 -0
  170. package/dist/chunk-6WFHPMUF.js.map +7 -0
  171. package/dist/chunk-72TGY3LX.js +104 -0
  172. package/dist/chunk-72TGY3LX.js.map +7 -0
  173. package/dist/chunk-76IE55K7.js +392 -0
  174. package/dist/chunk-76IE55K7.js.map +7 -0
  175. package/dist/chunk-77BEEAPD.js +86 -0
  176. package/dist/chunk-77BEEAPD.js.map +7 -0
  177. package/dist/chunk-77JJ6QJK.js +50 -0
  178. package/dist/chunk-77JJ6QJK.js.map +7 -0
  179. package/dist/chunk-7BIUNV33.js +62 -0
  180. package/dist/chunk-7BIUNV33.js.map +7 -0
  181. package/dist/chunk-7F3242AO.js +86 -0
  182. package/dist/chunk-7F3242AO.js.map +7 -0
  183. package/dist/chunk-7FLQSTPG.js +57 -0
  184. package/dist/chunk-7FLQSTPG.js.map +7 -0
  185. package/dist/chunk-7L37R42D.js +52 -0
  186. package/dist/chunk-7L37R42D.js.map +7 -0
  187. package/dist/chunk-7MP46JBP.js +177 -0
  188. package/dist/chunk-7MP46JBP.js.map +7 -0
  189. package/dist/chunk-7MVZYR2T.js +87 -0
  190. package/dist/chunk-7MVZYR2T.js.map +7 -0
  191. package/dist/chunk-7N7ISMPG.js +50 -0
  192. package/dist/chunk-7N7ISMPG.js.map +7 -0
  193. package/dist/chunk-7S7LQQPX.js +127 -0
  194. package/dist/chunk-7S7LQQPX.js.map +7 -0
  195. package/dist/chunk-7TTNY5FK.js +21 -0
  196. package/dist/chunk-7TTNY5FK.js.map +7 -0
  197. package/dist/chunk-7W73QCTR.js +244 -0
  198. package/dist/chunk-7W73QCTR.js.map +7 -0
  199. package/dist/chunk-7XXLU33Y.js +76 -0
  200. package/dist/chunk-7XXLU33Y.js.map +7 -0
  201. package/dist/chunk-7ZP3KYVO.js +104 -0
  202. package/dist/chunk-7ZP3KYVO.js.map +7 -0
  203. package/dist/chunk-AAO7BQEV.js +258 -0
  204. package/dist/chunk-AAO7BQEV.js.map +7 -0
  205. package/dist/chunk-AH4MLRYT.js +91 -0
  206. package/dist/chunk-AH4MLRYT.js.map +7 -0
  207. package/dist/chunk-AHKR32FH.js +7 -0
  208. package/dist/chunk-AHKR32FH.js.map +7 -0
  209. package/dist/chunk-ALKRFDAW.js +94 -0
  210. package/dist/chunk-ALKRFDAW.js.map +7 -0
  211. package/dist/chunk-AQQGAE7N.js +12 -0
  212. package/dist/chunk-AQQGAE7N.js.map +7 -0
  213. package/dist/chunk-ARGF232V.js +32 -0
  214. package/dist/chunk-ARGF232V.js.map +7 -0
  215. package/dist/chunk-ATCJOK3K.js +24 -0
  216. package/dist/chunk-ATCJOK3K.js.map +7 -0
  217. package/dist/chunk-AUUABFHL.js +124 -0
  218. package/dist/chunk-AUUABFHL.js.map +7 -0
  219. package/dist/chunk-AWW3YUGJ.js +193 -0
  220. package/dist/chunk-AWW3YUGJ.js.map +7 -0
  221. package/dist/chunk-AX7VEEWJ.js +158 -0
  222. package/dist/chunk-AX7VEEWJ.js.map +7 -0
  223. package/dist/chunk-B3NTODO7.js +57 -0
  224. package/dist/chunk-B3NTODO7.js.map +7 -0
  225. package/dist/chunk-BAX7Q6GR.js +55 -0
  226. package/dist/chunk-BAX7Q6GR.js.map +7 -0
  227. package/dist/chunk-BBM6BR3Z.js +28 -0
  228. package/dist/chunk-BBM6BR3Z.js.map +7 -0
  229. package/dist/chunk-BHXZMHSX.js +109 -0
  230. package/dist/chunk-BHXZMHSX.js.map +7 -0
  231. package/dist/chunk-BIUXDLVY.js +62 -0
  232. package/dist/chunk-BIUXDLVY.js.map +7 -0
  233. package/dist/chunk-BM7J2W36.js +86 -0
  234. package/dist/chunk-BM7J2W36.js.map +7 -0
  235. package/dist/chunk-BMFZL2P4.js +97 -0
  236. package/dist/chunk-BMFZL2P4.js.map +7 -0
  237. package/dist/chunk-BQXEXK4H.js +114 -0
  238. package/dist/chunk-BQXEXK4H.js.map +7 -0
  239. package/dist/chunk-BU2CTWBG.js +30 -0
  240. package/dist/chunk-BU2CTWBG.js.map +7 -0
  241. package/dist/chunk-BVKSCLF7.js +195 -0
  242. package/dist/chunk-BVKSCLF7.js.map +7 -0
  243. package/dist/chunk-BWA3D22L.js +88 -0
  244. package/dist/chunk-BWA3D22L.js.map +7 -0
  245. package/dist/chunk-CE24RSPL.js +506 -0
  246. package/dist/chunk-CE24RSPL.js.map +7 -0
  247. package/dist/chunk-CEB5S2Z5.js +127 -0
  248. package/dist/chunk-CEB5S2Z5.js.map +7 -0
  249. package/dist/chunk-CEKNTCJD.js +177 -0
  250. package/dist/chunk-CEKNTCJD.js.map +7 -0
  251. package/dist/chunk-CETZGSCP.js +71 -0
  252. package/dist/chunk-CETZGSCP.js.map +7 -0
  253. package/dist/chunk-CGBWMONK.js +412 -0
  254. package/dist/chunk-CGBWMONK.js.map +7 -0
  255. package/dist/chunk-CGFDIH77.js +94 -0
  256. package/dist/chunk-CGFDIH77.js.map +7 -0
  257. package/dist/chunk-CPLEC5LJ.js +26 -0
  258. package/dist/chunk-CPLEC5LJ.js.map +7 -0
  259. package/dist/chunk-CPNIXMGX.js +127 -0
  260. package/dist/chunk-CPNIXMGX.js.map +7 -0
  261. package/dist/chunk-CSJO73LD.js +84 -0
  262. package/dist/chunk-CSJO73LD.js.map +7 -0
  263. package/dist/chunk-CTKBDSL6.js +81 -0
  264. package/dist/chunk-CTKBDSL6.js.map +7 -0
  265. package/dist/chunk-CY6WHUCW.js +54 -0
  266. package/dist/chunk-CY6WHUCW.js.map +7 -0
  267. package/dist/chunk-D4GYYYMW.js +155 -0
  268. package/dist/chunk-D4GYYYMW.js.map +7 -0
  269. package/dist/chunk-D64CZG54.js +78 -0
  270. package/dist/chunk-D64CZG54.js.map +7 -0
  271. package/dist/chunk-D7Q6Z74D.js +123 -0
  272. package/dist/chunk-D7Q6Z74D.js.map +7 -0
  273. package/dist/chunk-DSGPDHF2.js +737 -0
  274. package/dist/chunk-DSGPDHF2.js.map +7 -0
  275. package/dist/chunk-DZIM4OWK.js +17 -0
  276. package/dist/chunk-DZIM4OWK.js.map +7 -0
  277. package/dist/chunk-E3GC4V5V.js +30 -0
  278. package/dist/chunk-E3GC4V5V.js.map +7 -0
  279. package/dist/chunk-E5HPDHCW.js +34 -0
  280. package/dist/chunk-E5HPDHCW.js.map +7 -0
  281. package/dist/chunk-E75BJJZ2.js +635 -0
  282. package/dist/chunk-E75BJJZ2.js.map +7 -0
  283. package/dist/chunk-EBXHW7ZO.js +108 -0
  284. package/dist/chunk-EBXHW7ZO.js.map +7 -0
  285. package/dist/chunk-EE4DHUUZ.js +472 -0
  286. package/dist/chunk-EE4DHUUZ.js.map +7 -0
  287. package/dist/chunk-EHELTAAD.js +198 -0
  288. package/dist/chunk-EHELTAAD.js.map +7 -0
  289. package/dist/chunk-EKXPSI7Z.js +135 -0
  290. package/dist/chunk-EKXPSI7Z.js.map +7 -0
  291. package/dist/chunk-EO35SCFP.js +7 -0
  292. package/dist/chunk-EO35SCFP.js.map +7 -0
  293. package/dist/chunk-ER2XTD2S.js +271 -0
  294. package/dist/chunk-ER2XTD2S.js.map +7 -0
  295. package/dist/chunk-ERCH75SH.js +292 -0
  296. package/dist/chunk-ERCH75SH.js.map +7 -0
  297. package/dist/chunk-ERXO3674.js +54 -0
  298. package/dist/chunk-ERXO3674.js.map +7 -0
  299. package/dist/chunk-EVFWZGFL.js +235 -0
  300. package/dist/chunk-EVFWZGFL.js.map +7 -0
  301. package/dist/chunk-EVPBRKMZ.js +45 -0
  302. package/dist/chunk-EVPBRKMZ.js.map +7 -0
  303. package/dist/chunk-F43CC2X2.js +49 -0
  304. package/dist/chunk-F43CC2X2.js.map +7 -0
  305. package/dist/chunk-F64TXVJJ.js +158 -0
  306. package/dist/chunk-F64TXVJJ.js.map +7 -0
  307. package/dist/chunk-F6AFJHWV.js +45 -0
  308. package/dist/chunk-F6AFJHWV.js.map +7 -0
  309. package/dist/chunk-F6APWSAA.js +51 -0
  310. package/dist/chunk-F6APWSAA.js.map +7 -0
  311. package/dist/chunk-F7LNS7G3.js +235 -0
  312. package/dist/chunk-F7LNS7G3.js.map +7 -0
  313. package/dist/chunk-FCNWR7ZX.js +16352 -0
  314. package/dist/chunk-FCNWR7ZX.js.map +7 -0
  315. package/dist/chunk-FFCG5NRU.js +87 -0
  316. package/dist/chunk-FFCG5NRU.js.map +7 -0
  317. package/dist/chunk-FG4NVFKM.js +455 -0
  318. package/dist/chunk-FG4NVFKM.js.map +7 -0
  319. package/dist/chunk-FHNEN6IR.js +14 -0
  320. package/dist/chunk-FHNEN6IR.js.map +7 -0
  321. package/dist/chunk-FJFC6CRR.js +446 -0
  322. package/dist/chunk-FJFC6CRR.js.map +7 -0
  323. package/dist/chunk-FK6RGYBB.js +46 -0
  324. package/dist/chunk-FK6RGYBB.js.map +7 -0
  325. package/dist/chunk-FMY6KXK6.js +251 -0
  326. package/dist/chunk-FMY6KXK6.js.map +7 -0
  327. package/dist/chunk-FPH56SCM.js +21 -0
  328. package/dist/chunk-FPH56SCM.js.map +7 -0
  329. package/dist/chunk-FQ4R7IOX.js +32 -0
  330. package/dist/chunk-FQ4R7IOX.js.map +7 -0
  331. package/dist/chunk-FQPYAPJJ.js +124 -0
  332. package/dist/chunk-FQPYAPJJ.js.map +7 -0
  333. package/dist/chunk-FQTLJO4W.js +335 -0
  334. package/dist/chunk-FQTLJO4W.js.map +7 -0
  335. package/dist/chunk-FVLJSB2W.js +124 -0
  336. package/dist/chunk-FVLJSB2W.js.map +7 -0
  337. package/dist/chunk-FVSH4Z6T.js +173 -0
  338. package/dist/chunk-FVSH4Z6T.js.map +7 -0
  339. package/dist/chunk-FVWBLEAD.js +44 -0
  340. package/dist/chunk-FVWBLEAD.js.map +7 -0
  341. package/dist/chunk-FYRKBNTI.js +18 -0
  342. package/dist/chunk-FYRKBNTI.js.map +7 -0
  343. package/dist/chunk-FYSARMGS.js +93 -0
  344. package/dist/chunk-FYSARMGS.js.map +7 -0
  345. package/dist/chunk-FZJOJ6P4.js +28 -0
  346. package/dist/chunk-FZJOJ6P4.js.map +7 -0
  347. package/dist/chunk-G46GHNDU.js +4890 -0
  348. package/dist/chunk-G46GHNDU.js.map +7 -0
  349. package/dist/chunk-G4TIS2SC.js +56 -0
  350. package/dist/chunk-G4TIS2SC.js.map +7 -0
  351. package/dist/chunk-GD6L3SLC.js +30 -0
  352. package/dist/chunk-GD6L3SLC.js.map +7 -0
  353. package/dist/chunk-GGWS7NQP.js +247 -0
  354. package/dist/chunk-GGWS7NQP.js.map +7 -0
  355. package/dist/chunk-GI2ZANRY.js +24 -0
  356. package/dist/chunk-GI2ZANRY.js.map +7 -0
  357. package/dist/chunk-GK3XVKXT.js +737 -0
  358. package/dist/chunk-GK3XVKXT.js.map +7 -0
  359. package/dist/chunk-GKOWCDQV.js +699 -0
  360. package/dist/chunk-GKOWCDQV.js.map +7 -0
  361. package/dist/chunk-GLLRCKKE.js +26 -0
  362. package/dist/chunk-GLLRCKKE.js.map +7 -0
  363. package/dist/chunk-GNYG6I36.js +175 -0
  364. package/dist/chunk-GNYG6I36.js.map +7 -0
  365. package/dist/chunk-GRBJYAYF.js +129 -0
  366. package/dist/chunk-GRBJYAYF.js.map +7 -0
  367. package/dist/chunk-GVYGUH2V.js +7 -0
  368. package/dist/chunk-GVYGUH2V.js.map +7 -0
  369. package/dist/chunk-GXDQGBA2.js +106 -0
  370. package/dist/chunk-GXDQGBA2.js.map +7 -0
  371. package/dist/chunk-GZAGAWSU.js +28 -0
  372. package/dist/chunk-GZAGAWSU.js.map +7 -0
  373. package/dist/chunk-H23E72SB.js +163 -0
  374. package/dist/chunk-H23E72SB.js.map +7 -0
  375. package/dist/chunk-H2HY73I6.js +122 -0
  376. package/dist/chunk-H2HY73I6.js.map +7 -0
  377. package/dist/chunk-H5MLA6PA.js +29 -0
  378. package/dist/chunk-H5MLA6PA.js.map +7 -0
  379. package/dist/chunk-H6YVV7GE.js +22 -0
  380. package/dist/chunk-H6YVV7GE.js.map +7 -0
  381. package/dist/chunk-H7KAUMBC.js +635 -0
  382. package/dist/chunk-H7KAUMBC.js.map +7 -0
  383. package/dist/chunk-HDPICD3P.js +4890 -0
  384. package/dist/chunk-HDPICD3P.js.map +7 -0
  385. package/dist/chunk-HGHU3TVL.js +174 -0
  386. package/dist/chunk-HGHU3TVL.js.map +7 -0
  387. package/dist/chunk-HJ5E2JRL.js +88 -0
  388. package/dist/chunk-HJ5E2JRL.js.map +7 -0
  389. package/dist/chunk-HJW3CKZL.js +94 -0
  390. package/dist/chunk-HJW3CKZL.js.map +7 -0
  391. package/dist/chunk-HKF5EBER.js +418 -0
  392. package/dist/chunk-HKF5EBER.js.map +7 -0
  393. package/dist/chunk-HLUR35G5.js +30 -0
  394. package/dist/chunk-HLUR35G5.js.map +7 -0
  395. package/dist/chunk-HNIW2NZU.js +120 -0
  396. package/dist/chunk-HNIW2NZU.js.map +7 -0
  397. package/dist/chunk-HP5HMWOM.js +123 -0
  398. package/dist/chunk-HP5HMWOM.js.map +7 -0
  399. package/dist/chunk-HQSHS6IB.js +88 -0
  400. package/dist/chunk-HQSHS6IB.js.map +7 -0
  401. package/dist/chunk-HSXRCP25.js +171 -0
  402. package/dist/chunk-HSXRCP25.js.map +7 -0
  403. package/dist/chunk-HTV3R73W.js +51 -0
  404. package/dist/chunk-HTV3R73W.js.map +7 -0
  405. package/dist/chunk-I26OPZLO.js +28 -0
  406. package/dist/chunk-I26OPZLO.js.map +7 -0
  407. package/dist/chunk-I7JJQ4BQ.js +30 -0
  408. package/dist/chunk-I7JJQ4BQ.js.map +7 -0
  409. package/dist/chunk-IJ6Y4W7F.js +392 -0
  410. package/dist/chunk-IJ6Y4W7F.js.map +7 -0
  411. package/dist/chunk-IJCMYMZB.js +239 -0
  412. package/dist/chunk-IJCMYMZB.js.map +7 -0
  413. package/dist/chunk-IJH4NOQ4.js +18 -0
  414. package/dist/chunk-IJH4NOQ4.js.map +7 -0
  415. package/dist/chunk-IMHRZQRH.js +76 -0
  416. package/dist/chunk-IMHRZQRH.js.map +7 -0
  417. package/dist/chunk-INNENDEE.js +472 -0
  418. package/dist/chunk-INNENDEE.js.map +7 -0
  419. package/dist/chunk-IOTLSMEQ.js +177 -0
  420. package/dist/chunk-IOTLSMEQ.js.map +7 -0
  421. package/dist/chunk-IQYYEHSM.js +300 -0
  422. package/dist/chunk-IQYYEHSM.js.map +7 -0
  423. package/dist/chunk-IRA5NJ4Q.js +21 -0
  424. package/dist/chunk-IRA5NJ4Q.js.map +7 -0
  425. package/dist/chunk-IU7EXXK7.js +1662 -0
  426. package/dist/chunk-IU7EXXK7.js.map +7 -0
  427. package/dist/chunk-IUXAKDAY.js +102 -0
  428. package/dist/chunk-IUXAKDAY.js.map +7 -0
  429. package/dist/chunk-JB6ZQEVR.js +465 -0
  430. package/dist/chunk-JB6ZQEVR.js.map +7 -0
  431. package/dist/chunk-JCWNMWNY.js +102 -0
  432. package/dist/chunk-JCWNMWNY.js.map +7 -0
  433. package/dist/chunk-JGIZPU2Y.js +39 -0
  434. package/dist/chunk-JGIZPU2Y.js.map +7 -0
  435. package/dist/chunk-JIU4FXA7.js +485 -0
  436. package/dist/chunk-JIU4FXA7.js.map +7 -0
  437. package/dist/chunk-JMYIFYY5.js +233 -0
  438. package/dist/chunk-JMYIFYY5.js.map +7 -0
  439. package/dist/chunk-JSZBX2TA.js +5853 -0
  440. package/dist/chunk-JSZBX2TA.js.map +7 -0
  441. package/dist/chunk-JU2Y33DB.js +60 -0
  442. package/dist/chunk-JU2Y33DB.js.map +7 -0
  443. package/dist/chunk-JVLRI4RU.js +62 -0
  444. package/dist/chunk-JVLRI4RU.js.map +7 -0
  445. package/dist/chunk-JZ3AVNZC.js +44117 -0
  446. package/dist/chunk-JZ3AVNZC.js.map +7 -0
  447. package/dist/chunk-K3HEWOHN.js +30 -0
  448. package/dist/chunk-K3HEWOHN.js.map +7 -0
  449. package/dist/chunk-K5EK4WZV.js +7 -0
  450. package/dist/chunk-K5EK4WZV.js.map +7 -0
  451. package/dist/chunk-KAWXMSYC.js +58 -0
  452. package/dist/chunk-KAWXMSYC.js.map +7 -0
  453. package/dist/chunk-KEGPHS4C.js +80 -0
  454. package/dist/chunk-KEGPHS4C.js.map +7 -0
  455. package/dist/chunk-KHFWQ334.js +138 -0
  456. package/dist/chunk-KHFWQ334.js.map +7 -0
  457. package/dist/chunk-KJW6JLM6.js +95 -0
  458. package/dist/chunk-KJW6JLM6.js.map +7 -0
  459. package/dist/chunk-KSEANSJE.js +40 -0
  460. package/dist/chunk-KSEANSJE.js.map +7 -0
  461. package/dist/chunk-KVU54E6W.js +63 -0
  462. package/dist/chunk-KVU54E6W.js.map +7 -0
  463. package/dist/chunk-KXXVR3DC.js +244 -0
  464. package/dist/chunk-KXXVR3DC.js.map +7 -0
  465. package/dist/chunk-L5OUVMHK.js +174 -0
  466. package/dist/chunk-L5OUVMHK.js.map +7 -0
  467. package/dist/chunk-L5T6XUDP.js +412 -0
  468. package/dist/chunk-L5T6XUDP.js.map +7 -0
  469. package/dist/chunk-LIFXTQ4U.js +7287 -0
  470. package/dist/chunk-LIFXTQ4U.js.map +7 -0
  471. package/dist/chunk-LIVQ7GIO.js +86 -0
  472. package/dist/chunk-LIVQ7GIO.js.map +7 -0
  473. package/dist/chunk-LMD5UTKM.js +169 -0
  474. package/dist/chunk-LMD5UTKM.js.map +7 -0
  475. package/dist/chunk-LO4F6E3N.js +163 -0
  476. package/dist/chunk-LO4F6E3N.js.map +7 -0
  477. package/dist/chunk-LSVKDUNM.js +151 -0
  478. package/dist/chunk-LSVKDUNM.js.map +7 -0
  479. package/dist/chunk-LTXNC6JX.js +27 -0
  480. package/dist/chunk-LTXNC6JX.js.map +7 -0
  481. package/dist/chunk-LUGTGPT6.js +138 -0
  482. package/dist/chunk-LUGTGPT6.js.map +7 -0
  483. package/dist/chunk-LVMK2GPM.js +18 -0
  484. package/dist/chunk-LVMK2GPM.js.map +7 -0
  485. package/dist/chunk-LXVPETLK.js +1405 -0
  486. package/dist/chunk-LXVPETLK.js.map +7 -0
  487. package/dist/chunk-LZNW24OB.js +78 -0
  488. package/dist/chunk-LZNW24OB.js.map +7 -0
  489. package/dist/chunk-LZQFDJNW.js +300 -0
  490. package/dist/chunk-LZQFDJNW.js.map +7 -0
  491. package/dist/chunk-M4VQPIF4.js +5853 -0
  492. package/dist/chunk-M4VQPIF4.js.map +7 -0
  493. package/dist/chunk-M64QE4QC.js +64 -0
  494. package/dist/chunk-M64QE4QC.js.map +7 -0
  495. package/dist/chunk-MAF6PSCJ.js +44 -0
  496. package/dist/chunk-MAF6PSCJ.js.map +7 -0
  497. package/dist/chunk-MBIX6Z7U.js +80 -0
  498. package/dist/chunk-MBIX6Z7U.js.map +7 -0
  499. package/dist/chunk-MDLLXMC3.js +183 -0
  500. package/dist/chunk-MDLLXMC3.js.map +7 -0
  501. package/dist/chunk-MEI5HTWV.js +127 -0
  502. package/dist/chunk-MEI5HTWV.js.map +7 -0
  503. package/dist/chunk-MH74AJ3A.js +82 -0
  504. package/dist/chunk-MH74AJ3A.js.map +7 -0
  505. package/dist/chunk-MIFIM4PI.js +163 -0
  506. package/dist/chunk-MIFIM4PI.js.map +7 -0
  507. package/dist/chunk-MISZB5QJ.js +22 -0
  508. package/dist/chunk-MISZB5QJ.js.map +7 -0
  509. package/dist/chunk-MJ27XQYG.js +125 -0
  510. package/dist/chunk-MJ27XQYG.js.map +7 -0
  511. package/dist/chunk-MJ2GW6SU.js +163 -0
  512. package/dist/chunk-MJ2GW6SU.js.map +7 -0
  513. package/dist/chunk-MLQY5SKR.js +52 -0
  514. package/dist/chunk-MLQY5SKR.js.map +7 -0
  515. package/dist/chunk-MTMHGC3G.js +39 -0
  516. package/dist/chunk-MTMHGC3G.js.map +7 -0
  517. package/dist/chunk-MWBAW3YV.js +244 -0
  518. package/dist/chunk-MWBAW3YV.js.map +7 -0
  519. package/dist/chunk-MYSK3SIM.js +55 -0
  520. package/dist/chunk-MYSK3SIM.js.map +7 -0
  521. package/dist/chunk-MZGGB2YT.js +50 -0
  522. package/dist/chunk-MZGGB2YT.js.map +7 -0
  523. package/dist/chunk-N46MIZXB.js +154 -0
  524. package/dist/chunk-N46MIZXB.js.map +7 -0
  525. package/dist/chunk-N53537P6.js +31 -0
  526. package/dist/chunk-N53537P6.js.map +7 -0
  527. package/dist/chunk-N5CTFOLX.js +40 -0
  528. package/dist/chunk-N5CTFOLX.js.map +7 -0
  529. package/dist/chunk-N5SNGZJV.js +217 -0
  530. package/dist/chunk-N5SNGZJV.js.map +7 -0
  531. package/dist/chunk-NGCTBYQ3.js +181 -0
  532. package/dist/chunk-NGCTBYQ3.js.map +7 -0
  533. package/dist/chunk-NIFG55CE.js +52 -0
  534. package/dist/chunk-NIFG55CE.js.map +7 -0
  535. package/dist/chunk-NJ63ALPX.js +7 -0
  536. package/dist/chunk-NJ63ALPX.js.map +7 -0
  537. package/dist/chunk-NMUX7SGU.js +676 -0
  538. package/dist/chunk-NMUX7SGU.js.map +7 -0
  539. package/dist/chunk-NO7GMLNU.js +292 -0
  540. package/dist/chunk-NO7GMLNU.js.map +7 -0
  541. package/dist/chunk-NTOGVX2Y.js +92 -0
  542. package/dist/chunk-NTOGVX2Y.js.map +7 -0
  543. package/dist/chunk-NZVHE4IT.js +3101 -0
  544. package/dist/chunk-NZVHE4IT.js.map +7 -0
  545. package/dist/chunk-O5IVKDX7.js +30 -0
  546. package/dist/chunk-O5IVKDX7.js.map +7 -0
  547. package/dist/chunk-O7ORICEC.js +82 -0
  548. package/dist/chunk-O7ORICEC.js.map +7 -0
  549. package/dist/chunk-OBMBAM3N.js +73 -0
  550. package/dist/chunk-OBMBAM3N.js.map +7 -0
  551. package/dist/chunk-OFWMLQMU.js +7287 -0
  552. package/dist/chunk-OFWMLQMU.js.map +7 -0
  553. package/dist/chunk-OJ3ZUKBI.js +73 -0
  554. package/dist/chunk-OJ3ZUKBI.js.map +7 -0
  555. package/dist/chunk-OJJBD5K3.js +45 -0
  556. package/dist/chunk-OJJBD5K3.js.map +7 -0
  557. package/dist/chunk-OJTHE4B7.js +50 -0
  558. package/dist/chunk-OJTHE4B7.js.map +7 -0
  559. package/dist/chunk-OKDOVX4B.js +699 -0
  560. package/dist/chunk-OKDOVX4B.js.map +7 -0
  561. package/dist/chunk-OOYPYBTA.js +446 -0
  562. package/dist/chunk-OOYPYBTA.js.map +7 -0
  563. package/dist/chunk-OQP4W4AR.js +105 -0
  564. package/dist/chunk-OQP4W4AR.js.map +7 -0
  565. package/dist/chunk-OVMDMCZ5.js +241 -0
  566. package/dist/chunk-OVMDMCZ5.js.map +7 -0
  567. package/dist/chunk-OVTT2EKA.js +516 -0
  568. package/dist/chunk-OVTT2EKA.js.map +7 -0
  569. package/dist/chunk-OVU43GJK.js +63 -0
  570. package/dist/chunk-OVU43GJK.js.map +7 -0
  571. package/dist/chunk-P3TMARA6.js +18 -0
  572. package/dist/chunk-P3TMARA6.js.map +7 -0
  573. package/dist/chunk-P5N63LBS.js +94 -0
  574. package/dist/chunk-P5N63LBS.js.map +7 -0
  575. package/dist/chunk-PARITZ7F.js +28 -0
  576. package/dist/chunk-PARITZ7F.js.map +7 -0
  577. package/dist/chunk-PBQK4KY4.js +195 -0
  578. package/dist/chunk-PBQK4KY4.js.map +7 -0
  579. package/dist/chunk-PLMOTQ42.js +335 -0
  580. package/dist/chunk-PLMOTQ42.js.map +7 -0
  581. package/dist/chunk-PSL2AHIA.js +27 -0
  582. package/dist/chunk-PSL2AHIA.js.map +7 -0
  583. package/dist/chunk-Q5QT7JBM.js +92 -0
  584. package/dist/chunk-Q5QT7JBM.js.map +7 -0
  585. package/dist/chunk-Q6H5OV2R.js +180 -0
  586. package/dist/chunk-Q6H5OV2R.js.map +7 -0
  587. package/dist/chunk-Q7WA5DCR.js +62 -0
  588. package/dist/chunk-Q7WA5DCR.js.map +7 -0
  589. package/dist/chunk-QAR5POXD.js +472 -0
  590. package/dist/chunk-QAR5POXD.js.map +7 -0
  591. package/dist/chunk-QATEENP2.js +7 -0
  592. package/dist/chunk-QATEENP2.js.map +7 -0
  593. package/dist/chunk-QDT24CIA.js +485 -0
  594. package/dist/chunk-QDT24CIA.js.map +7 -0
  595. package/dist/chunk-QI3NB7D5.js +455 -0
  596. package/dist/chunk-QI3NB7D5.js.map +7 -0
  597. package/dist/chunk-QIDAVXSX.js +106 -0
  598. package/dist/chunk-QIDAVXSX.js.map +7 -0
  599. package/dist/chunk-QKIGQVP2.js +104 -0
  600. package/dist/chunk-QKIGQVP2.js.map +7 -0
  601. package/dist/chunk-QNJENPK2.js +81 -0
  602. package/dist/chunk-QNJENPK2.js.map +7 -0
  603. package/dist/chunk-R5S76YR5.js +12 -0
  604. package/dist/chunk-R5S76YR5.js.map +7 -0
  605. package/dist/chunk-R7ZBOXPS.js +163 -0
  606. package/dist/chunk-R7ZBOXPS.js.map +7 -0
  607. package/dist/chunk-RAL3KX76.js +239 -0
  608. package/dist/chunk-RAL3KX76.js.map +7 -0
  609. package/dist/chunk-REVXXWAS.js +31 -0
  610. package/dist/chunk-REVXXWAS.js.map +7 -0
  611. package/dist/chunk-RFH4HRZP.js +94 -0
  612. package/dist/chunk-RFH4HRZP.js.map +7 -0
  613. package/dist/chunk-RHITG64O.js +50 -0
  614. package/dist/chunk-RHITG64O.js.map +7 -0
  615. package/dist/chunk-RK5HZFP6.js +111 -0
  616. package/dist/chunk-RK5HZFP6.js.map +7 -0
  617. package/dist/chunk-RNGAGYCL.js +49 -0
  618. package/dist/chunk-RNGAGYCL.js.map +7 -0
  619. package/dist/chunk-RPCVN3JA.js +261 -0
  620. package/dist/chunk-RPCVN3JA.js.map +7 -0
  621. package/dist/chunk-RQ26XXFS.js +45 -0
  622. package/dist/chunk-RQ26XXFS.js.map +7 -0
  623. package/dist/chunk-RQQE5DDT.js +193 -0
  624. package/dist/chunk-RQQE5DDT.js.map +7 -0
  625. package/dist/chunk-RSA7PKZH.js +187 -0
  626. package/dist/chunk-RSA7PKZH.js.map +7 -0
  627. package/dist/chunk-RTSINQ4T.js +78 -0
  628. package/dist/chunk-RTSINQ4T.js.map +7 -0
  629. package/dist/chunk-RVOD3ESA.js +38 -0
  630. package/dist/chunk-RVOD3ESA.js.map +7 -0
  631. package/dist/chunk-SAOUP24A.js +70 -0
  632. package/dist/chunk-SAOUP24A.js.map +7 -0
  633. package/dist/chunk-SFZL2TCV.js +55 -0
  634. package/dist/chunk-SFZL2TCV.js.map +7 -0
  635. package/dist/chunk-SH6Y4CGQ.js +175 -0
  636. package/dist/chunk-SH6Y4CGQ.js.map +7 -0
  637. package/dist/chunk-SHBAAFFH.js +74 -0
  638. package/dist/chunk-SHBAAFFH.js.map +7 -0
  639. package/dist/chunk-SJPFUXBV.js +45 -0
  640. package/dist/chunk-SJPFUXBV.js.map +7 -0
  641. package/dist/chunk-SLIUQWAR.js +58 -0
  642. package/dist/chunk-SLIUQWAR.js.map +7 -0
  643. package/dist/chunk-SPNSM6SB.js +36 -0
  644. package/dist/chunk-SPNSM6SB.js.map +7 -0
  645. package/dist/chunk-SQUHLLK5.js +125 -0
  646. package/dist/chunk-SQUHLLK5.js.map +7 -0
  647. package/dist/chunk-SSEX66OL.js +39 -0
  648. package/dist/chunk-SSEX66OL.js.map +7 -0
  649. package/dist/chunk-SWWK35VQ.js +84 -0
  650. package/dist/chunk-SWWK35VQ.js.map +7 -0
  651. package/dist/chunk-SX2LOHOX.js +251 -0
  652. package/dist/chunk-SX2LOHOX.js.map +7 -0
  653. package/dist/chunk-T72EMFTX.js +74 -0
  654. package/dist/chunk-T72EMFTX.js.map +7 -0
  655. package/dist/chunk-TA2QJPPG.js +169 -0
  656. package/dist/chunk-TA2QJPPG.js.map +7 -0
  657. package/dist/chunk-TC5ZVFV6.js +292 -0
  658. package/dist/chunk-TC5ZVFV6.js.map +7 -0
  659. package/dist/chunk-TFD7ZIYD.js +105 -0
  660. package/dist/chunk-TFD7ZIYD.js.map +7 -0
  661. package/dist/chunk-TFEETDNY.js +78 -0
  662. package/dist/chunk-TFEETDNY.js.map +7 -0
  663. package/dist/chunk-TH6ONRWT.js +516 -0
  664. package/dist/chunk-TH6ONRWT.js.map +7 -0
  665. package/dist/chunk-THM2QV25.js +108 -0
  666. package/dist/chunk-THM2QV25.js.map +7 -0
  667. package/dist/chunk-TMQMQ67T.js +81 -0
  668. package/dist/chunk-TMQMQ67T.js.map +7 -0
  669. package/dist/chunk-TPYWUZOR.js +178 -0
  670. package/dist/chunk-TPYWUZOR.js.map +7 -0
  671. package/dist/chunk-TRWT2N6Z.js +15 -0
  672. package/dist/chunk-TRWT2N6Z.js.map +7 -0
  673. package/dist/chunk-TTXEM54Y.js +76 -0
  674. package/dist/chunk-TTXEM54Y.js.map +7 -0
  675. package/dist/chunk-U2O4LE6S.js +22 -0
  676. package/dist/chunk-U2O4LE6S.js.map +7 -0
  677. package/dist/chunk-U44IVNP2.js +91 -0
  678. package/dist/chunk-U44IVNP2.js.map +7 -0
  679. package/dist/chunk-U4LVIY5F.js +1405 -0
  680. package/dist/chunk-U4LVIY5F.js.map +7 -0
  681. package/dist/chunk-U767LCSG.js +78 -0
  682. package/dist/chunk-U767LCSG.js.map +7 -0
  683. package/dist/chunk-U7GKLHU6.js +120 -0
  684. package/dist/chunk-U7GKLHU6.js.map +7 -0
  685. package/dist/chunk-UAB5P5QO.js +60 -0
  686. package/dist/chunk-UAB5P5QO.js.map +7 -0
  687. package/dist/chunk-UDDWLWKZ.js +82 -0
  688. package/dist/chunk-UDDWLWKZ.js.map +7 -0
  689. package/dist/chunk-UEHPJQBL.js +38 -0
  690. package/dist/chunk-UEHPJQBL.js.map +7 -0
  691. package/dist/chunk-UIBV6IGR.js +31 -0
  692. package/dist/chunk-UIBV6IGR.js.map +7 -0
  693. package/dist/chunk-UIYFRUET.js +16352 -0
  694. package/dist/chunk-UIYFRUET.js.map +7 -0
  695. package/dist/chunk-UJS3TIVS.js +52 -0
  696. package/dist/chunk-UJS3TIVS.js.map +7 -0
  697. package/dist/chunk-UMMPB6FL.js +506 -0
  698. package/dist/chunk-UMMPB6FL.js.map +7 -0
  699. package/dist/chunk-UP42ACP7.js +27 -0
  700. package/dist/chunk-UP42ACP7.js.map +7 -0
  701. package/dist/chunk-UPEF7ETP.js +92 -0
  702. package/dist/chunk-UPEF7ETP.js.map +7 -0
  703. package/dist/chunk-UU5PSBSI.js +176 -0
  704. package/dist/chunk-UU5PSBSI.js.map +7 -0
  705. package/dist/chunk-UV63XYFU.js +173 -0
  706. package/dist/chunk-UV63XYFU.js.map +7 -0
  707. package/dist/chunk-UWPHOAOC.js +29 -0
  708. package/dist/chunk-UWPHOAOC.js.map +7 -0
  709. package/dist/chunk-UXDDOSJC.js +52 -0
  710. package/dist/chunk-UXDDOSJC.js.map +7 -0
  711. package/dist/chunk-V3VAOMCO.js +465 -0
  712. package/dist/chunk-V3VAOMCO.js.map +7 -0
  713. package/dist/chunk-VA7ENH2S.js +38 -0
  714. package/dist/chunk-VA7ENH2S.js.map +7 -0
  715. package/dist/chunk-VBDLTKI2.js +130 -0
  716. package/dist/chunk-VBDLTKI2.js.map +7 -0
  717. package/dist/chunk-VCWIKEJ7.js +7 -0
  718. package/dist/chunk-VCWIKEJ7.js.map +7 -0
  719. package/dist/chunk-VFPDFLVE.js +516 -0
  720. package/dist/chunk-VFPDFLVE.js.map +7 -0
  721. package/dist/chunk-VHG4FNIJ.js +93 -0
  722. package/dist/chunk-VHG4FNIJ.js.map +7 -0
  723. package/dist/chunk-VKOO6MIZ.js +51 -0
  724. package/dist/chunk-VKOO6MIZ.js.map +7 -0
  725. package/dist/chunk-VKXKRZG7.js +62 -0
  726. package/dist/chunk-VKXKRZG7.js.map +7 -0
  727. package/dist/chunk-VPQICZQR.js +93 -0
  728. package/dist/chunk-VPQICZQR.js.map +7 -0
  729. package/dist/chunk-VRBJNFPL.js +114 -0
  730. package/dist/chunk-VRBJNFPL.js.map +7 -0
  731. package/dist/chunk-VUOLPEUZ.js +7 -0
  732. package/dist/chunk-VUOLPEUZ.js.map +7 -0
  733. package/dist/chunk-VUU5KFH3.js +38 -0
  734. package/dist/chunk-VUU5KFH3.js.map +7 -0
  735. package/dist/chunk-VVBL5CFF.js +7 -0
  736. package/dist/chunk-VVBL5CFF.js.map +7 -0
  737. package/dist/chunk-VYZEQ6KY.js +22 -0
  738. package/dist/chunk-VYZEQ6KY.js.map +7 -0
  739. package/dist/chunk-W6SOBS7M.js +138 -0
  740. package/dist/chunk-W6SOBS7M.js.map +7 -0
  741. package/dist/chunk-WBPQVWSU.js +198 -0
  742. package/dist/chunk-WBPQVWSU.js.map +7 -0
  743. package/dist/chunk-WDOKKRTE.js +7 -0
  744. package/dist/chunk-WDOKKRTE.js.map +7 -0
  745. package/dist/chunk-WGXXKFN5.js +7 -0
  746. package/dist/chunk-WGXXKFN5.js.map +7 -0
  747. package/dist/chunk-WHPUUP3J.js +25 -0
  748. package/dist/chunk-WHPUUP3J.js.map +7 -0
  749. package/dist/chunk-WS6HWBKT.js +30 -0
  750. package/dist/chunk-WS6HWBKT.js.map +7 -0
  751. package/dist/chunk-XF7LD6VV.js +122 -0
  752. package/dist/chunk-XF7LD6VV.js.map +7 -0
  753. package/dist/chunk-XFTXM3RE.js +64 -0
  754. package/dist/chunk-XFTXM3RE.js.map +7 -0
  755. package/dist/chunk-XJABPO2T.js +235 -0
  756. package/dist/chunk-XJABPO2T.js.map +7 -0
  757. package/dist/chunk-XK6VF3H7.js +3586 -0
  758. package/dist/chunk-XK6VF3H7.js.map +7 -0
  759. package/dist/chunk-XOZPOHLG.js +233 -0
  760. package/dist/chunk-XOZPOHLG.js.map +7 -0
  761. package/dist/chunk-XQYIIPOJ.js +266 -0
  762. package/dist/chunk-XQYIIPOJ.js.map +7 -0
  763. package/dist/chunk-XR7DPSNX.js +195 -0
  764. package/dist/chunk-XR7DPSNX.js.map +7 -0
  765. package/dist/chunk-XYH4JC3U.js +7 -0
  766. package/dist/chunk-XYH4JC3U.js.map +7 -0
  767. package/dist/chunk-XZSAN55E.js +58 -0
  768. package/dist/chunk-XZSAN55E.js.map +7 -0
  769. package/dist/chunk-Y3KJR4OG.js +64 -0
  770. package/dist/chunk-Y3KJR4OG.js.map +7 -0
  771. package/dist/chunk-Y4JKH7FF.js +45 -0
  772. package/dist/chunk-Y4JKH7FF.js.map +7 -0
  773. package/dist/chunk-Y6CJN4ID.js +31 -0
  774. package/dist/chunk-Y6CJN4ID.js.map +7 -0
  775. package/dist/chunk-YABGJU5M.js +271 -0
  776. package/dist/chunk-YABGJU5M.js.map +7 -0
  777. package/dist/chunk-YB5UCHLN.js +314 -0
  778. package/dist/chunk-YB5UCHLN.js.map +7 -0
  779. package/dist/chunk-YEJH7ZC2.js +34 -0
  780. package/dist/chunk-YEJH7ZC2.js.map +7 -0
  781. package/dist/chunk-YF5DYD3X.js +97 -0
  782. package/dist/chunk-YF5DYD3X.js.map +7 -0
  783. package/dist/chunk-YFTE4H54.js +44117 -0
  784. package/dist/chunk-YFTE4H54.js.map +7 -0
  785. package/dist/chunk-YGVQZCE7.js +30 -0
  786. package/dist/chunk-YGVQZCE7.js.map +7 -0
  787. package/dist/chunk-YNHADHHS.js +138 -0
  788. package/dist/chunk-YNHADHHS.js.map +7 -0
  789. package/dist/chunk-YNJYMD43.js +392 -0
  790. package/dist/chunk-YNJYMD43.js.map +7 -0
  791. package/dist/chunk-YNYEQGVN.js +251 -0
  792. package/dist/chunk-YNYEQGVN.js.map +7 -0
  793. package/dist/chunk-YOAMBAM2.js +70 -0
  794. package/dist/chunk-YOAMBAM2.js.map +7 -0
  795. package/dist/chunk-YUPBD27Z.js +70 -0
  796. package/dist/chunk-YUPBD27Z.js.map +7 -0
  797. package/dist/chunk-YWE5AQPZ.js +258 -0
  798. package/dist/chunk-YWE5AQPZ.js.map +7 -0
  799. package/dist/chunk-YWHH3MB6.js +1405 -0
  800. package/dist/chunk-YWHH3MB6.js.map +7 -0
  801. package/dist/chunk-YXJ52FD5.js +271 -0
  802. package/dist/chunk-YXJ52FD5.js.map +7 -0
  803. package/dist/chunk-YZ6F5N7R.js +455 -0
  804. package/dist/chunk-YZ6F5N7R.js.map +7 -0
  805. package/dist/chunk-YZGORRQN.js +3101 -0
  806. package/dist/chunk-YZGORRQN.js.map +7 -0
  807. package/dist/chunk-Z6IVJ6ZW.js +30 -0
  808. package/dist/chunk-Z6IVJ6ZW.js.map +7 -0
  809. package/dist/chunk-ZFC44XJJ.js +86 -0
  810. package/dist/chunk-ZFC44XJJ.js.map +7 -0
  811. package/dist/chunk-ZFGRQIB6.js +38 -0
  812. package/dist/chunk-ZFGRQIB6.js.map +7 -0
  813. package/dist/chunk-ZGAUVPAB.js +14 -0
  814. package/dist/chunk-ZGAUVPAB.js.map +7 -0
  815. package/dist/chunk-ZGCATLM5.js +18 -0
  816. package/dist/chunk-ZGCATLM5.js.map +7 -0
  817. package/dist/chunk-ZJDJC5TP.js +82 -0
  818. package/dist/chunk-ZJDJC5TP.js.map +7 -0
  819. package/dist/chunk-ZJGZNPDK.js +171 -0
  820. package/dist/chunk-ZJGZNPDK.js.map +7 -0
  821. package/dist/chunk-ZJHBJWZX.js +699 -0
  822. package/dist/chunk-ZJHBJWZX.js.map +7 -0
  823. package/dist/chunk-ZNOTD65D.js +95 -0
  824. package/dist/chunk-ZNOTD65D.js.map +7 -0
  825. package/dist/chunk-ZQ2QIFXW.js +122 -0
  826. package/dist/chunk-ZQ2QIFXW.js.map +7 -0
  827. package/dist/chunk-ZRMXPQGY.js +241 -0
  828. package/dist/chunk-ZRMXPQGY.js.map +7 -0
  829. package/dist/chunk-ZSOPE7DO.js +92 -0
  830. package/dist/chunk-ZSOPE7DO.js.map +7 -0
  831. package/dist/chunk-ZVEE5IDC.js +3101 -0
  832. package/dist/chunk-ZVEE5IDC.js.map +7 -0
  833. package/dist/chunk-ZY247PXY.js +135 -0
  834. package/dist/chunk-ZY247PXY.js.map +7 -0
  835. package/dist/cli-metadata.js +12 -0
  836. package/dist/cli-metadata.js.map +7 -0
  837. package/dist/contract-api.js +104 -0
  838. package/dist/contract-api.js.map +7 -0
  839. package/dist/dist-DVBXHDB4.js +549 -0
  840. package/dist/dist-DVBXHDB4.js.map +7 -0
  841. package/dist/dist-F3K7S5SS.js +549 -0
  842. package/dist/dist-F3K7S5SS.js.map +7 -0
  843. package/dist/helper-api.js +51 -0
  844. package/dist/helper-api.js.map +7 -0
  845. package/dist/index.js +70 -0
  846. package/dist/index.js.map +7 -0
  847. package/dist/magic-string.es-ITIPPYGW.js +1315 -0
  848. package/dist/magic-string.es-ITIPPYGW.js.map +7 -0
  849. package/dist/magic-string.es-V5NOGTUV.js +1315 -0
  850. package/dist/magic-string.es-V5NOGTUV.js.map +7 -0
  851. package/dist/openclaw.plugin.json +23 -0
  852. package/dist/package.json +59 -0
  853. package/dist/plugin-entry.handlers.runtime-JLRK5XTV.js +20 -0
  854. package/dist/plugin-entry.handlers.runtime-JLRK5XTV.js.map +7 -0
  855. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js +20 -0
  856. package/dist/plugin-entry.handlers.runtime-POD4CSHM.js.map +7 -0
  857. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js +20 -0
  858. package/dist/plugin-entry.handlers.runtime-YOSG6V6U.js.map +7 -0
  859. package/dist/runtime-api.js +104 -0
  860. package/dist/runtime-api.js.map +7 -0
  861. package/dist/rust-crypto-7KS7OJ3F.js +5323 -0
  862. package/dist/rust-crypto-7KS7OJ3F.js.map +7 -0
  863. package/dist/rust-crypto-H35BXWUU.js +5323 -0
  864. package/dist/rust-crypto-H35BXWUU.js.map +7 -0
  865. package/dist/secret-contract-api.js +18 -0
  866. package/dist/secret-contract-api.js.map +7 -0
  867. package/dist/setup-entry.js +22 -0
  868. package/dist/setup-entry.js.map +7 -0
  869. package/dist/src/account-selection.js +19 -0
  870. package/dist/src/account-selection.js.map +7 -0
  871. package/dist/src/actions.js +24 -0
  872. package/dist/src/actions.js.map +7 -0
  873. package/dist/src/approval-auth.js +27 -0
  874. package/dist/src/approval-auth.js.map +7 -0
  875. package/dist/src/approval-handler.runtime.js +378 -0
  876. package/dist/src/approval-handler.runtime.js.map +7 -0
  877. package/dist/src/approval-ids.js +9 -0
  878. package/dist/src/approval-ids.js.map +7 -0
  879. package/dist/src/approval-native.js +28 -0
  880. package/dist/src/approval-native.js.map +7 -0
  881. package/dist/src/approval-reactions.js +20 -0
  882. package/dist/src/approval-reactions.js.map +7 -0
  883. package/dist/src/auth-precedence.js +8 -0
  884. package/dist/src/auth-precedence.js.map +7 -0
  885. package/dist/src/channel-account-paths.js +11 -0
  886. package/dist/src/channel-account-paths.js.map +7 -0
  887. package/dist/src/channel.js +74 -0
  888. package/dist/src/channel.js.map +7 -0
  889. package/dist/src/channel.runtime.js +82 -0
  890. package/dist/src/channel.runtime.js.map +7 -0
  891. package/dist/src/cli-metadata.js +8 -0
  892. package/dist/src/cli-metadata.js.map +7 -0
  893. package/dist/src/cli.js +936 -0
  894. package/dist/src/cli.js.map +7 -0
  895. package/dist/src/config-adapter.js +26 -0
  896. package/dist/src/config-adapter.js.map +7 -0
  897. package/dist/src/config-schema.js +8 -0
  898. package/dist/src/config-schema.js.map +7 -0
  899. package/dist/src/directory-live.js +35 -0
  900. package/dist/src/directory-live.js.map +7 -0
  901. package/dist/src/doctor-contract.js +11 -0
  902. package/dist/src/doctor-contract.js.map +7 -0
  903. package/dist/src/doctor.js +42 -0
  904. package/dist/src/doctor.js.map +7 -0
  905. package/dist/src/env-vars.js +12 -0
  906. package/dist/src/env-vars.js.map +7 -0
  907. package/dist/src/exec-approval-resolver.js +10 -0
  908. package/dist/src/exec-approval-resolver.js.map +7 -0
  909. package/dist/src/exec-approvals.js +51 -0
  910. package/dist/src/exec-approvals.js.map +7 -0
  911. package/dist/src/group-mentions.js +28 -0
  912. package/dist/src/group-mentions.js.map +7 -0
  913. package/dist/src/legacy-crypto-inspector-availability.js +8 -0
  914. package/dist/src/legacy-crypto-inspector-availability.js.map +7 -0
  915. package/dist/src/legacy-crypto.js +26 -0
  916. package/dist/src/legacy-crypto.js.map +7 -0
  917. package/dist/src/legacy-state.js +24 -0
  918. package/dist/src/legacy-state.js.map +7 -0
  919. package/dist/src/matrix/account-config.js +16 -0
  920. package/dist/src/matrix/account-config.js.map +7 -0
  921. package/dist/src/matrix/accounts.js +31 -0
  922. package/dist/src/matrix/accounts.js.map +7 -0
  923. package/dist/src/matrix/actions/client.js +40 -0
  924. package/dist/src/matrix/actions/client.js.map +7 -0
  925. package/dist/src/matrix/actions/devices.js +42 -0
  926. package/dist/src/matrix/actions/devices.js.map +7 -0
  927. package/dist/src/matrix/actions/limits.js +8 -0
  928. package/dist/src/matrix/actions/limits.js.map +7 -0
  929. package/dist/src/matrix/actions/messages.js +49 -0
  930. package/dist/src/matrix/actions/messages.js.map +7 -0
  931. package/dist/src/matrix/actions/pins.js +46 -0
  932. package/dist/src/matrix/actions/pins.js.map +7 -0
  933. package/dist/src/matrix/actions/polls.js +37 -0
  934. package/dist/src/matrix/actions/polls.js.map +7 -0
  935. package/dist/src/matrix/actions/profile.js +38 -0
  936. package/dist/src/matrix/actions/profile.js.map +7 -0
  937. package/dist/src/matrix/actions/reactions.js +40 -0
  938. package/dist/src/matrix/actions/reactions.js.map +7 -0
  939. package/dist/src/matrix/actions/room.js +40 -0
  940. package/dist/src/matrix/actions/room.js.map +7 -0
  941. package/dist/src/matrix/actions/summary.js +19 -0
  942. package/dist/src/matrix/actions/summary.js.map +7 -0
  943. package/dist/src/matrix/actions/types.js +13 -0
  944. package/dist/src/matrix/actions/types.js.map +7 -0
  945. package/dist/src/matrix/actions/verification.js +77 -0
  946. package/dist/src/matrix/actions/verification.js.map +7 -0
  947. package/dist/src/matrix/actions.js +126 -0
  948. package/dist/src/matrix/actions.js.map +7 -0
  949. package/dist/src/matrix/active-client.js +10 -0
  950. package/dist/src/matrix/active-client.js.map +7 -0
  951. package/dist/src/matrix/async-lock.js +8 -0
  952. package/dist/src/matrix/async-lock.js.map +7 -0
  953. package/dist/src/matrix/backup-health.js +10 -0
  954. package/dist/src/matrix/backup-health.js.map +7 -0
  955. package/dist/src/matrix/client/config-runtime-api.js +24 -0
  956. package/dist/src/matrix/client/config-runtime-api.js.map +7 -0
  957. package/dist/src/matrix/client/config-secret-input.runtime.js +11 -0
  958. package/dist/src/matrix/client/config-secret-input.runtime.js.map +7 -0
  959. package/dist/src/matrix/client/config.js +42 -0
  960. package/dist/src/matrix/client/config.js.map +7 -0
  961. package/dist/src/matrix/client/create-client.js +20 -0
  962. package/dist/src/matrix/client/create-client.js.map +7 -0
  963. package/dist/src/matrix/client/env-auth.js +26 -0
  964. package/dist/src/matrix/client/env-auth.js.map +7 -0
  965. package/dist/src/matrix/client/file-sync-store.js +23 -0
  966. package/dist/src/matrix/client/file-sync-store.js.map +7 -0
  967. package/dist/src/matrix/client/logging.js +17 -0
  968. package/dist/src/matrix/client/logging.js.map +7 -0
  969. package/dist/src/matrix/client/migration-snapshot.runtime.js +13 -0
  970. package/dist/src/matrix/client/migration-snapshot.runtime.js.map +7 -0
  971. package/dist/src/matrix/client/private-network-host.js +8 -0
  972. package/dist/src/matrix/client/private-network-host.js.map +7 -0
  973. package/dist/src/matrix/client/runtime.js +8 -0
  974. package/dist/src/matrix/client/runtime.js.map +7 -0
  975. package/dist/src/matrix/client/shared.js +34 -0
  976. package/dist/src/matrix/client/shared.js.map +7 -0
  977. package/dist/src/matrix/client/storage.js +26 -0
  978. package/dist/src/matrix/client/storage.js.map +7 -0
  979. package/dist/src/matrix/client/types.js +7 -0
  980. package/dist/src/matrix/client/types.js.map +7 -0
  981. package/dist/src/matrix/client-bootstrap.js +15 -0
  982. package/dist/src/matrix/client-bootstrap.js.map +7 -0
  983. package/dist/src/matrix/client-resolver.test-helpers.js +122 -0
  984. package/dist/src/matrix/client-resolver.test-helpers.js.map +7 -0
  985. package/dist/src/matrix/client.js +63 -0
  986. package/dist/src/matrix/client.js.map +7 -0
  987. package/dist/src/matrix/config-paths.js +12 -0
  988. package/dist/src/matrix/config-paths.js.map +7 -0
  989. package/dist/src/matrix/config-update.js +17 -0
  990. package/dist/src/matrix/config-update.js.map +7 -0
  991. package/dist/src/matrix/credentials-read.js +22 -0
  992. package/dist/src/matrix/credentials-read.js.map +7 -0
  993. package/dist/src/matrix/credentials-write.runtime.js +24 -0
  994. package/dist/src/matrix/credentials-write.runtime.js.map +7 -0
  995. package/dist/src/matrix/credentials.js +90 -0
  996. package/dist/src/matrix/credentials.js.map +7 -0
  997. package/dist/src/matrix/deps.js +12 -0
  998. package/dist/src/matrix/deps.js.map +7 -0
  999. package/dist/src/matrix/device-health.js +10 -0
  1000. package/dist/src/matrix/device-health.js.map +7 -0
  1001. package/dist/src/matrix/direct-management.js +18 -0
  1002. package/dist/src/matrix/direct-management.js.map +7 -0
  1003. package/dist/src/matrix/direct-room.js +18 -0
  1004. package/dist/src/matrix/direct-room.js.map +7 -0
  1005. package/dist/src/matrix/draft-stream.js +33 -0
  1006. package/dist/src/matrix/draft-stream.js.map +7 -0
  1007. package/dist/src/matrix/encryption-guidance.js +17 -0
  1008. package/dist/src/matrix/encryption-guidance.js.map +7 -0
  1009. package/dist/src/matrix/errors.js +12 -0
  1010. package/dist/src/matrix/errors.js.map +7 -0
  1011. package/dist/src/matrix/format.js +13 -0
  1012. package/dist/src/matrix/format.js.map +7 -0
  1013. package/dist/src/matrix/legacy-crypto-inspector.js +72 -0
  1014. package/dist/src/matrix/legacy-crypto-inspector.js.map +7 -0
  1015. package/dist/src/matrix/media-errors.js +12 -0
  1016. package/dist/src/matrix/media-errors.js.map +7 -0
  1017. package/dist/src/matrix/media-text.js +22 -0
  1018. package/dist/src/matrix/media-text.js.map +7 -0
  1019. package/dist/src/matrix/monitor/access-state.js +9 -0
  1020. package/dist/src/matrix/monitor/access-state.js.map +7 -0
  1021. package/dist/src/matrix/monitor/ack-config.js +10 -0
  1022. package/dist/src/matrix/monitor/ack-config.js.map +7 -0
  1023. package/dist/src/matrix/monitor/allowlist.js +12 -0
  1024. package/dist/src/matrix/monitor/allowlist.js.map +7 -0
  1025. package/dist/src/matrix/monitor/auto-join.js +9 -0
  1026. package/dist/src/matrix/monitor/auto-join.js.map +7 -0
  1027. package/dist/src/matrix/monitor/config.js +37 -0
  1028. package/dist/src/matrix/monitor/config.js.map +7 -0
  1029. package/dist/src/matrix/monitor/context-summary.js +13 -0
  1030. package/dist/src/matrix/monitor/context-summary.js.map +7 -0
  1031. package/dist/src/matrix/monitor/direct.js +13 -0
  1032. package/dist/src/matrix/monitor/direct.js.map +7 -0
  1033. package/dist/src/matrix/monitor/events.js +20 -0
  1034. package/dist/src/matrix/monitor/events.js.map +7 -0
  1035. package/dist/src/matrix/monitor/handler.js +76 -0
  1036. package/dist/src/matrix/monitor/handler.js.map +7 -0
  1037. package/dist/src/matrix/monitor/handler.test-helpers.js +268 -0
  1038. package/dist/src/matrix/monitor/handler.test-helpers.js.map +7 -0
  1039. package/dist/src/matrix/monitor/inbound-dedupe.js +17 -0
  1040. package/dist/src/matrix/monitor/inbound-dedupe.js.map +7 -0
  1041. package/dist/src/matrix/monitor/index.js +502 -0
  1042. package/dist/src/matrix/monitor/index.js.map +7 -0
  1043. package/dist/src/matrix/monitor/legacy-crypto-restore.js +99 -0
  1044. package/dist/src/matrix/monitor/legacy-crypto-restore.js.map +7 -0
  1045. package/dist/src/matrix/monitor/location.js +11 -0
  1046. package/dist/src/matrix/monitor/location.js.map +7 -0
  1047. package/dist/src/matrix/monitor/media.js +10 -0
  1048. package/dist/src/matrix/monitor/media.js.map +7 -0
  1049. package/dist/src/matrix/monitor/mentions.js +9 -0
  1050. package/dist/src/matrix/monitor/mentions.js.map +7 -0
  1051. package/dist/src/matrix/monitor/reaction-events.js +38 -0
  1052. package/dist/src/matrix/monitor/reaction-events.js.map +7 -0
  1053. package/dist/src/matrix/monitor/recent-invite.js +10 -0
  1054. package/dist/src/matrix/monitor/recent-invite.js.map +7 -0
  1055. package/dist/src/matrix/monitor/replies.js +33 -0
  1056. package/dist/src/matrix/monitor/replies.js.map +7 -0
  1057. package/dist/src/matrix/monitor/reply-context.js +14 -0
  1058. package/dist/src/matrix/monitor/reply-context.js.map +7 -0
  1059. package/dist/src/matrix/monitor/room-history.js +10 -0
  1060. package/dist/src/matrix/monitor/room-history.js.map +7 -0
  1061. package/dist/src/matrix/monitor/room-info.js +9 -0
  1062. package/dist/src/matrix/monitor/room-info.js.map +7 -0
  1063. package/dist/src/matrix/monitor/rooms.js +9 -0
  1064. package/dist/src/matrix/monitor/rooms.js.map +7 -0
  1065. package/dist/src/matrix/monitor/route.js +12 -0
  1066. package/dist/src/matrix/monitor/route.js.map +7 -0
  1067. package/dist/src/matrix/monitor/runtime-api.js +40 -0
  1068. package/dist/src/matrix/monitor/runtime-api.js.map +7 -0
  1069. package/dist/src/matrix/monitor/startup-verification.js +174 -0
  1070. package/dist/src/matrix/monitor/startup-verification.js.map +7 -0
  1071. package/dist/src/matrix/monitor/startup.js +9 -0
  1072. package/dist/src/matrix/monitor/startup.js.map +7 -0
  1073. package/dist/src/matrix/monitor/status.js +10 -0
  1074. package/dist/src/matrix/monitor/status.js.map +7 -0
  1075. package/dist/src/matrix/monitor/sync-lifecycle.js +9 -0
  1076. package/dist/src/matrix/monitor/sync-lifecycle.js.map +7 -0
  1077. package/dist/src/matrix/monitor/task-runner.js +8 -0
  1078. package/dist/src/matrix/monitor/task-runner.js.map +7 -0
  1079. package/dist/src/matrix/monitor/thread-context.js +14 -0
  1080. package/dist/src/matrix/monitor/thread-context.js.map +7 -0
  1081. package/dist/src/matrix/monitor/threads.js +16 -0
  1082. package/dist/src/matrix/monitor/threads.js.map +7 -0
  1083. package/dist/src/matrix/monitor/types.js +11 -0
  1084. package/dist/src/matrix/monitor/types.js.map +7 -0
  1085. package/dist/src/matrix/monitor/verification-events.js +13 -0
  1086. package/dist/src/matrix/monitor/verification-events.js.map +7 -0
  1087. package/dist/src/matrix/monitor/verification-utils.js +16 -0
  1088. package/dist/src/matrix/monitor/verification-utils.js.map +7 -0
  1089. package/dist/src/matrix/outbound-media-runtime.js +9 -0
  1090. package/dist/src/matrix/outbound-media-runtime.js.map +7 -0
  1091. package/dist/src/matrix/poll-summary.js +14 -0
  1092. package/dist/src/matrix/poll-summary.js.map +7 -0
  1093. package/dist/src/matrix/poll-types.js +55 -0
  1094. package/dist/src/matrix/poll-types.js.map +7 -0
  1095. package/dist/src/matrix/probe.js +9 -0
  1096. package/dist/src/matrix/probe.js.map +7 -0
  1097. package/dist/src/matrix/probe.runtime.js +30 -0
  1098. package/dist/src/matrix/probe.runtime.js.map +7 -0
  1099. package/dist/src/matrix/profile.js +16 -0
  1100. package/dist/src/matrix/profile.js.map +7 -0
  1101. package/dist/src/matrix/reaction-common.js +26 -0
  1102. package/dist/src/matrix/reaction-common.js.map +7 -0
  1103. package/dist/src/matrix/sdk/crypto-bootstrap.js +15 -0
  1104. package/dist/src/matrix/sdk/crypto-bootstrap.js.map +7 -0
  1105. package/dist/src/matrix/sdk/crypto-facade.js +8 -0
  1106. package/dist/src/matrix/sdk/crypto-facade.js.map +7 -0
  1107. package/dist/src/matrix/sdk/crypto-node.runtime.js +14 -0
  1108. package/dist/src/matrix/sdk/crypto-node.runtime.js.map +7 -0
  1109. package/dist/src/matrix/sdk/crypto-runtime.js +84 -0
  1110. package/dist/src/matrix/sdk/crypto-runtime.js.map +7 -0
  1111. package/dist/src/matrix/sdk/decrypt-bridge.js +11 -0
  1112. package/dist/src/matrix/sdk/decrypt-bridge.js.map +7 -0
  1113. package/dist/src/matrix/sdk/event-helpers.js +12 -0
  1114. package/dist/src/matrix/sdk/event-helpers.js.map +7 -0
  1115. package/dist/src/matrix/sdk/http-client.js +13 -0
  1116. package/dist/src/matrix/sdk/http-client.js.map +7 -0
  1117. package/dist/src/matrix/sdk/idb-persistence-lock.js +12 -0
  1118. package/dist/src/matrix/sdk/idb-persistence-lock.js.map +7 -0
  1119. package/dist/src/matrix/sdk/idb-persistence.js +13 -0
  1120. package/dist/src/matrix/sdk/idb-persistence.js.map +7 -0
  1121. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js +83 -0
  1122. package/dist/src/matrix/sdk/idb-persistence.test-helpers.js.map +7 -0
  1123. package/dist/src/matrix/sdk/logger.js +15 -0
  1124. package/dist/src/matrix/sdk/logger.js.map +7 -0
  1125. package/dist/src/matrix/sdk/read-response-with-limit.js +8 -0
  1126. package/dist/src/matrix/sdk/read-response-with-limit.js.map +7 -0
  1127. package/dist/src/matrix/sdk/recovery-key-store.js +14 -0
  1128. package/dist/src/matrix/sdk/recovery-key-store.js.map +7 -0
  1129. package/dist/src/matrix/sdk/transport.js +13 -0
  1130. package/dist/src/matrix/sdk/transport.js.map +7 -0
  1131. package/dist/src/matrix/sdk/types.js +7 -0
  1132. package/dist/src/matrix/sdk/types.js.map +7 -0
  1133. package/dist/src/matrix/sdk/verification-manager.js +11 -0
  1134. package/dist/src/matrix/sdk/verification-manager.js.map +7 -0
  1135. package/dist/src/matrix/sdk/verification-status.js +12 -0
  1136. package/dist/src/matrix/sdk/verification-status.js.map +7 -0
  1137. package/dist/src/matrix/sdk.js +1375 -0
  1138. package/dist/src/matrix/sdk.js.map +7 -0
  1139. package/dist/src/matrix/send/client.js +14 -0
  1140. package/dist/src/matrix/send/client.js.map +7 -0
  1141. package/dist/src/matrix/send/formatting.js +29 -0
  1142. package/dist/src/matrix/send/formatting.js.map +7 -0
  1143. package/dist/src/matrix/send/media.js +26 -0
  1144. package/dist/src/matrix/send/media.js.map +7 -0
  1145. package/dist/src/matrix/send/targets.js +15 -0
  1146. package/dist/src/matrix/send/targets.js.map +7 -0
  1147. package/dist/src/matrix/send/types.js +17 -0
  1148. package/dist/src/matrix/send/types.js.map +7 -0
  1149. package/dist/src/matrix/send.js +51 -0
  1150. package/dist/src/matrix/send.js.map +7 -0
  1151. package/dist/src/matrix/session-store-metadata.js +15 -0
  1152. package/dist/src/matrix/session-store-metadata.js.map +7 -0
  1153. package/dist/src/matrix/startup-abort.js +14 -0
  1154. package/dist/src/matrix/startup-abort.js.map +7 -0
  1155. package/dist/src/matrix/sync-state.js +12 -0
  1156. package/dist/src/matrix/sync-state.js.map +7 -0
  1157. package/dist/src/matrix/target-ids.js +20 -0
  1158. package/dist/src/matrix/target-ids.js.map +7 -0
  1159. package/dist/src/matrix/thread-bindings-shared.js +34 -0
  1160. package/dist/src/matrix/thread-bindings-shared.js.map +7 -0
  1161. package/dist/src/matrix/thread-bindings.js +49 -0
  1162. package/dist/src/matrix/thread-bindings.js.map +7 -0
  1163. package/dist/src/matrix-migration.runtime.js +45 -0
  1164. package/dist/src/matrix-migration.runtime.js.map +7 -0
  1165. package/dist/src/migration-config.js +29 -0
  1166. package/dist/src/migration-config.js.map +7 -0
  1167. package/dist/src/migration-snapshot-backup.js +12 -0
  1168. package/dist/src/migration-snapshot-backup.js.map +7 -0
  1169. package/dist/src/migration-snapshot.js +38 -0
  1170. package/dist/src/migration-snapshot.js.map +7 -0
  1171. package/dist/src/onboarding.js +43 -0
  1172. package/dist/src/onboarding.js.map +7 -0
  1173. package/dist/src/onboarding.test-harness.js +124 -0
  1174. package/dist/src/onboarding.test-harness.js.map +7 -0
  1175. package/dist/src/outbound.js +33 -0
  1176. package/dist/src/outbound.js.map +7 -0
  1177. package/dist/src/plugin-entry.runtime.js +15 -0
  1178. package/dist/src/plugin-entry.runtime.js.map +7 -0
  1179. package/dist/src/profile-update.js +41 -0
  1180. package/dist/src/profile-update.js.map +7 -0
  1181. package/dist/src/record-shared.js +8 -0
  1182. package/dist/src/record-shared.js.map +7 -0
  1183. package/dist/src/resolve-targets.js +34 -0
  1184. package/dist/src/resolve-targets.js.map +7 -0
  1185. package/dist/src/resolver.js +8 -0
  1186. package/dist/src/resolver.js.map +7 -0
  1187. package/dist/src/runtime-api.js +120 -0
  1188. package/dist/src/runtime-api.js.map +7 -0
  1189. package/dist/src/runtime.js +10 -0
  1190. package/dist/src/runtime.js.map +7 -0
  1191. package/dist/src/secret-contract.js +13 -0
  1192. package/dist/src/secret-contract.js.map +7 -0
  1193. package/dist/src/session-route.js +25 -0
  1194. package/dist/src/session-route.js.map +7 -0
  1195. package/dist/src/setup-bootstrap.js +124 -0
  1196. package/dist/src/setup-bootstrap.js.map +7 -0
  1197. package/dist/src/setup-config.js +28 -0
  1198. package/dist/src/setup-config.js.map +7 -0
  1199. package/dist/src/setup-contract.js +16 -0
  1200. package/dist/src/setup-contract.js.map +7 -0
  1201. package/dist/src/setup-core.js +25 -0
  1202. package/dist/src/setup-core.js.map +7 -0
  1203. package/dist/src/setup-surface.js +45 -0
  1204. package/dist/src/setup-surface.js.map +7 -0
  1205. package/dist/src/startup-maintenance.js +29 -0
  1206. package/dist/src/startup-maintenance.js.map +7 -0
  1207. package/dist/src/storage-paths.js +24 -0
  1208. package/dist/src/storage-paths.js.map +7 -0
  1209. package/dist/src/test-helpers.js +49 -0
  1210. package/dist/src/test-helpers.js.map +7 -0
  1211. package/dist/src/test-mocks.js +40 -0
  1212. package/dist/src/test-mocks.js.map +7 -0
  1213. package/dist/src/test-runtime.js +65 -0
  1214. package/dist/src/test-runtime.js.map +7 -0
  1215. package/dist/src/tool-actions.js +68 -0
  1216. package/dist/src/tool-actions.js.map +7 -0
  1217. package/dist/src/tool-actions.runtime.js +73 -0
  1218. package/dist/src/tool-actions.runtime.js.map +7 -0
  1219. package/dist/src/types.js +7 -0
  1220. package/dist/src/types.js.map +7 -0
  1221. package/dist/test-api.js +82 -0
  1222. package/dist/test-api.js.map +7 -0
  1223. package/dist/thread-bindings-runtime.js +15 -0
  1224. package/dist/thread-bindings-runtime.js.map +7 -0
  1225. package/package.json +12 -6
  1226. package/CHANGELOG.md +0 -164
  1227. package/ENDOFFILE +0 -0
  1228. package/EOF +0 -0
  1229. package/SPEC-SUPPORT.md +0 -116
  1230. package/YAMLEND +0 -0
  1231. package/api.ts +0 -18
  1232. package/archipelagolab-lobi-1.0.0.tgz +0 -0
  1233. package/archipelagolab-lobi-1.0.1.tgz +0 -0
  1234. package/auth-presence.ts +0 -56
  1235. package/channel-plugin-api.ts +0 -3
  1236. package/cli-metadata.ts +0 -11
  1237. package/contract-api.ts +0 -17
  1238. package/docs/CHECKLIST.md +0 -83
  1239. package/docs/FORK_SDK_GUIDE.md +0 -279
  1240. package/helper-api.ts +0 -3
  1241. package/index.test.ts +0 -61
  1242. package/index.ts +0 -65
  1243. package/plugin-entry.handlers.runtime.ts +0 -1
  1244. package/runtime-api.ts +0 -54
  1245. package/runtime-heavy-api.ts +0 -1
  1246. package/scripts/migrate-to-lobi.sh +0 -72
  1247. package/secret-contract-api.ts +0 -5
  1248. package/setup-entry.ts +0 -13
  1249. package/src/account-selection.test.ts +0 -124
  1250. package/src/account-selection.ts +0 -226
  1251. package/src/actions.account-propagation.test.ts +0 -251
  1252. package/src/actions.test.ts +0 -251
  1253. package/src/actions.ts +0 -336
  1254. package/src/approval-auth.test.ts +0 -23
  1255. package/src/approval-auth.ts +0 -25
  1256. package/src/approval-handler.runtime.test.ts +0 -46
  1257. package/src/approval-handler.runtime.ts +0 -400
  1258. package/src/approval-ids.ts +0 -6
  1259. package/src/approval-native.test.ts +0 -329
  1260. package/src/approval-native.ts +0 -336
  1261. package/src/approval-reactions.test.ts +0 -107
  1262. package/src/approval-reactions.ts +0 -158
  1263. package/src/auth-precedence.ts +0 -61
  1264. package/src/channel-account-paths.ts +0 -92
  1265. package/src/channel.account-paths.test.ts +0 -102
  1266. package/src/channel.directory.test.ts +0 -601
  1267. package/src/channel.resolve.test.ts +0 -38
  1268. package/src/channel.runtime.ts +0 -16
  1269. package/src/channel.setup.test.ts +0 -269
  1270. package/src/channel.ts +0 -570
  1271. package/src/cli-metadata.ts +0 -19
  1272. package/src/cli.test.ts +0 -1015
  1273. package/src/cli.ts +0 -1198
  1274. package/src/config-adapter.ts +0 -41
  1275. package/src/config-schema.test.ts +0 -90
  1276. package/src/config-schema.ts +0 -114
  1277. package/src/directory-live.test.ts +0 -200
  1278. package/src/directory-live.ts +0 -238
  1279. package/src/doctor-contract.ts +0 -287
  1280. package/src/doctor.test.ts +0 -440
  1281. package/src/doctor.ts +0 -262
  1282. package/src/env-vars.ts +0 -92
  1283. package/src/exec-approval-resolver.test.ts +0 -68
  1284. package/src/exec-approval-resolver.ts +0 -23
  1285. package/src/exec-approvals.test.ts +0 -483
  1286. package/src/exec-approvals.ts +0 -290
  1287. package/src/group-mentions.ts +0 -41
  1288. package/src/legacy-crypto-inspector-availability.test.ts +0 -81
  1289. package/src/legacy-crypto-inspector-availability.ts +0 -60
  1290. package/src/legacy-crypto.test.ts +0 -234
  1291. package/src/legacy-crypto.ts +0 -549
  1292. package/src/legacy-state.test.ts +0 -86
  1293. package/src/legacy-state.ts +0 -156
  1294. package/src/matrix/account-config.ts +0 -150
  1295. package/src/matrix/accounts.readiness.test.ts +0 -27
  1296. package/src/matrix/accounts.test.ts +0 -757
  1297. package/src/matrix/accounts.ts +0 -194
  1298. package/src/matrix/actions/client.test.ts +0 -215
  1299. package/src/matrix/actions/client.ts +0 -31
  1300. package/src/matrix/actions/devices.test.ts +0 -114
  1301. package/src/matrix/actions/devices.ts +0 -34
  1302. package/src/matrix/actions/limits.test.ts +0 -15
  1303. package/src/matrix/actions/limits.ts +0 -6
  1304. package/src/matrix/actions/messages.test.ts +0 -289
  1305. package/src/matrix/actions/messages.ts +0 -123
  1306. package/src/matrix/actions/pins.test.ts +0 -74
  1307. package/src/matrix/actions/pins.ts +0 -64
  1308. package/src/matrix/actions/polls.test.ts +0 -71
  1309. package/src/matrix/actions/polls.ts +0 -109
  1310. package/src/matrix/actions/profile.test.ts +0 -109
  1311. package/src/matrix/actions/profile.ts +0 -37
  1312. package/src/matrix/actions/reactions.test.ts +0 -135
  1313. package/src/matrix/actions/reactions.ts +0 -59
  1314. package/src/matrix/actions/room.test.ts +0 -79
  1315. package/src/matrix/actions/room.ts +0 -71
  1316. package/src/matrix/actions/summary.test.ts +0 -87
  1317. package/src/matrix/actions/summary.ts +0 -88
  1318. package/src/matrix/actions/types.ts +0 -82
  1319. package/src/matrix/actions/verification.test.ts +0 -105
  1320. package/src/matrix/actions/verification.ts +0 -237
  1321. package/src/matrix/actions.ts +0 -37
  1322. package/src/matrix/active-client.ts +0 -26
  1323. package/src/matrix/async-lock.ts +0 -18
  1324. package/src/matrix/backup-health.ts +0 -115
  1325. package/src/matrix/client/config-runtime-api.ts +0 -14
  1326. package/src/matrix/client/config-secret-input.runtime.ts +0 -1
  1327. package/src/matrix/client/config.ts +0 -982
  1328. package/src/matrix/client/create-client.test.ts +0 -115
  1329. package/src/matrix/client/create-client.ts +0 -101
  1330. package/src/matrix/client/env-auth.ts +0 -6
  1331. package/src/matrix/client/file-sync-store.test.ts +0 -265
  1332. package/src/matrix/client/file-sync-store.ts +0 -289
  1333. package/src/matrix/client/logging.ts +0 -123
  1334. package/src/matrix/client/migration-snapshot.runtime.ts +0 -1
  1335. package/src/matrix/client/private-network-host.ts +0 -56
  1336. package/src/matrix/client/runtime.ts +0 -4
  1337. package/src/matrix/client/shared.test.ts +0 -344
  1338. package/src/matrix/client/shared.ts +0 -306
  1339. package/src/matrix/client/storage.test.ts +0 -634
  1340. package/src/matrix/client/storage.ts +0 -544
  1341. package/src/matrix/client/types.ts +0 -50
  1342. package/src/matrix/client-bootstrap.test.ts +0 -84
  1343. package/src/matrix/client-bootstrap.ts +0 -164
  1344. package/src/matrix/client-resolver.test-helpers.ts +0 -147
  1345. package/src/matrix/client.test.ts +0 -1521
  1346. package/src/matrix/client.ts +0 -23
  1347. package/src/matrix/config-paths.ts +0 -31
  1348. package/src/matrix/config-update.test.ts +0 -237
  1349. package/src/matrix/config-update.ts +0 -291
  1350. package/src/matrix/credentials-read.ts +0 -206
  1351. package/src/matrix/credentials-write.runtime.ts +0 -26
  1352. package/src/matrix/credentials.test.ts +0 -501
  1353. package/src/matrix/credentials.ts +0 -95
  1354. package/src/matrix/deps.test.ts +0 -74
  1355. package/src/matrix/deps.ts +0 -225
  1356. package/src/matrix/device-health.test.ts +0 -45
  1357. package/src/matrix/device-health.ts +0 -31
  1358. package/src/matrix/direct-management.test.ts +0 -350
  1359. package/src/matrix/direct-management.ts +0 -347
  1360. package/src/matrix/direct-room.test.ts +0 -61
  1361. package/src/matrix/direct-room.ts +0 -128
  1362. package/src/matrix/draft-stream.test.ts +0 -406
  1363. package/src/matrix/draft-stream.ts +0 -216
  1364. package/src/matrix/encryption-guidance.ts +0 -27
  1365. package/src/matrix/errors.ts +0 -21
  1366. package/src/matrix/format.test.ts +0 -340
  1367. package/src/matrix/format.ts +0 -428
  1368. package/src/matrix/legacy-crypto-inspector.ts +0 -95
  1369. package/src/matrix/media-errors.ts +0 -20
  1370. package/src/matrix/media-text.ts +0 -169
  1371. package/src/matrix/monitor/access-state.test.ts +0 -45
  1372. package/src/matrix/monitor/access-state.ts +0 -77
  1373. package/src/matrix/monitor/ack-config.test.ts +0 -57
  1374. package/src/matrix/monitor/ack-config.ts +0 -26
  1375. package/src/matrix/monitor/allowlist.test.ts +0 -45
  1376. package/src/matrix/monitor/allowlist.ts +0 -94
  1377. package/src/matrix/monitor/auto-join.test.ts +0 -203
  1378. package/src/matrix/monitor/auto-join.ts +0 -86
  1379. package/src/matrix/monitor/config.test.ts +0 -197
  1380. package/src/matrix/monitor/config.ts +0 -303
  1381. package/src/matrix/monitor/context-summary.ts +0 -43
  1382. package/src/matrix/monitor/direct.test.ts +0 -529
  1383. package/src/matrix/monitor/direct.ts +0 -270
  1384. package/src/matrix/monitor/events.test.ts +0 -1524
  1385. package/src/matrix/monitor/events.ts +0 -213
  1386. package/src/matrix/monitor/handler.body-for-agent.test.ts +0 -396
  1387. package/src/matrix/monitor/handler.group-history.test.ts +0 -648
  1388. package/src/matrix/monitor/handler.media-failure.test.ts +0 -267
  1389. package/src/matrix/monitor/handler.test-helpers.ts +0 -308
  1390. package/src/matrix/monitor/handler.test.ts +0 -2952
  1391. package/src/matrix/monitor/handler.thread-root-media.test.ts +0 -82
  1392. package/src/matrix/monitor/handler.ts +0 -1679
  1393. package/src/matrix/monitor/inbound-dedupe.test.ts +0 -146
  1394. package/src/matrix/monitor/inbound-dedupe.ts +0 -267
  1395. package/src/matrix/monitor/index.test.ts +0 -920
  1396. package/src/matrix/monitor/index.ts +0 -434
  1397. package/src/matrix/monitor/legacy-crypto-restore.test.ts +0 -206
  1398. package/src/matrix/monitor/legacy-crypto-restore.ts +0 -139
  1399. package/src/matrix/monitor/location.ts +0 -100
  1400. package/src/matrix/monitor/media.test.ts +0 -159
  1401. package/src/matrix/monitor/media.ts +0 -119
  1402. package/src/matrix/monitor/mentions.test.ts +0 -289
  1403. package/src/matrix/monitor/mentions.ts +0 -177
  1404. package/src/matrix/monitor/reaction-events.test.ts +0 -326
  1405. package/src/matrix/monitor/reaction-events.ts +0 -187
  1406. package/src/matrix/monitor/recent-invite.test.ts +0 -92
  1407. package/src/matrix/monitor/recent-invite.ts +0 -30
  1408. package/src/matrix/monitor/replies.test.ts +0 -265
  1409. package/src/matrix/monitor/replies.ts +0 -136
  1410. package/src/matrix/monitor/reply-context.test.ts +0 -276
  1411. package/src/matrix/monitor/reply-context.ts +0 -92
  1412. package/src/matrix/monitor/room-history.test.ts +0 -258
  1413. package/src/matrix/monitor/room-history.ts +0 -301
  1414. package/src/matrix/monitor/room-info.test.ts +0 -201
  1415. package/src/matrix/monitor/room-info.ts +0 -126
  1416. package/src/matrix/monitor/rooms.test.ts +0 -121
  1417. package/src/matrix/monitor/rooms.ts +0 -52
  1418. package/src/matrix/monitor/route.test.ts +0 -255
  1419. package/src/matrix/monitor/route.ts +0 -178
  1420. package/src/matrix/monitor/runtime-api.ts +0 -31
  1421. package/src/matrix/monitor/startup-verification.test.ts +0 -294
  1422. package/src/matrix/monitor/startup-verification.ts +0 -237
  1423. package/src/matrix/monitor/startup.test.ts +0 -257
  1424. package/src/matrix/monitor/startup.ts +0 -218
  1425. package/src/matrix/monitor/status.ts +0 -111
  1426. package/src/matrix/monitor/sync-lifecycle.test.ts +0 -224
  1427. package/src/matrix/monitor/sync-lifecycle.ts +0 -91
  1428. package/src/matrix/monitor/task-runner.ts +0 -38
  1429. package/src/matrix/monitor/thread-context.test.ts +0 -149
  1430. package/src/matrix/monitor/thread-context.ts +0 -108
  1431. package/src/matrix/monitor/threads.test.ts +0 -68
  1432. package/src/matrix/monitor/threads.ts +0 -85
  1433. package/src/matrix/monitor/types.ts +0 -30
  1434. package/src/matrix/monitor/verification-events.ts +0 -627
  1435. package/src/matrix/monitor/verification-utils.test.ts +0 -47
  1436. package/src/matrix/monitor/verification-utils.ts +0 -46
  1437. package/src/matrix/outbound-media-runtime.ts +0 -1
  1438. package/src/matrix/poll-summary.ts +0 -110
  1439. package/src/matrix/poll-types.test.ts +0 -205
  1440. package/src/matrix/poll-types.ts +0 -433
  1441. package/src/matrix/probe.runtime.ts +0 -4
  1442. package/src/matrix/probe.test.ts +0 -154
  1443. package/src/matrix/probe.ts +0 -96
  1444. package/src/matrix/profile.test.ts +0 -154
  1445. package/src/matrix/profile.ts +0 -184
  1446. package/src/matrix/reaction-common.test.ts +0 -96
  1447. package/src/matrix/reaction-common.ts +0 -147
  1448. package/src/matrix/sdk/crypto-bootstrap.test.ts +0 -505
  1449. package/src/matrix/sdk/crypto-bootstrap.ts +0 -341
  1450. package/src/matrix/sdk/crypto-facade.test.ts +0 -197
  1451. package/src/matrix/sdk/crypto-facade.ts +0 -207
  1452. package/src/matrix/sdk/crypto-node.runtime.test.ts +0 -27
  1453. package/src/matrix/sdk/crypto-node.runtime.ts +0 -9
  1454. package/src/matrix/sdk/crypto-runtime.ts +0 -11
  1455. package/src/matrix/sdk/decrypt-bridge.ts +0 -356
  1456. package/src/matrix/sdk/event-helpers.test.ts +0 -60
  1457. package/src/matrix/sdk/event-helpers.ts +0 -71
  1458. package/src/matrix/sdk/http-client.test.ts +0 -134
  1459. package/src/matrix/sdk/http-client.ts +0 -87
  1460. package/src/matrix/sdk/idb-persistence-lock.ts +0 -51
  1461. package/src/matrix/sdk/idb-persistence.lock-order.test.ts +0 -108
  1462. package/src/matrix/sdk/idb-persistence.test-helpers.ts +0 -88
  1463. package/src/matrix/sdk/idb-persistence.test.ts +0 -149
  1464. package/src/matrix/sdk/idb-persistence.ts +0 -283
  1465. package/src/matrix/sdk/logger.test.ts +0 -25
  1466. package/src/matrix/sdk/logger.ts +0 -108
  1467. package/src/matrix/sdk/read-response-with-limit.ts +0 -19
  1468. package/src/matrix/sdk/recovery-key-store.test.ts +0 -385
  1469. package/src/matrix/sdk/recovery-key-store.ts +0 -430
  1470. package/src/matrix/sdk/transport.test.ts +0 -161
  1471. package/src/matrix/sdk/transport.ts +0 -344
  1472. package/src/matrix/sdk/types.ts +0 -236
  1473. package/src/matrix/sdk/verification-manager.test.ts +0 -509
  1474. package/src/matrix/sdk/verification-manager.ts +0 -694
  1475. package/src/matrix/sdk/verification-status.ts +0 -23
  1476. package/src/matrix/sdk.test.ts +0 -2568
  1477. package/src/matrix/sdk.ts +0 -1789
  1478. package/src/matrix/send/client.test.ts +0 -174
  1479. package/src/matrix/send/client.ts +0 -90
  1480. package/src/matrix/send/formatting.ts +0 -189
  1481. package/src/matrix/send/media.ts +0 -244
  1482. package/src/matrix/send/targets.test.ts +0 -254
  1483. package/src/matrix/send/targets.ts +0 -104
  1484. package/src/matrix/send/types.ts +0 -134
  1485. package/src/matrix/send.test.ts +0 -958
  1486. package/src/matrix/send.ts +0 -609
  1487. package/src/matrix/session-store-metadata.ts +0 -108
  1488. package/src/matrix/startup-abort.ts +0 -44
  1489. package/src/matrix/sync-state.ts +0 -27
  1490. package/src/matrix/target-ids.ts +0 -102
  1491. package/src/matrix/thread-bindings-shared.ts +0 -201
  1492. package/src/matrix/thread-bindings.test.ts +0 -673
  1493. package/src/matrix/thread-bindings.ts +0 -577
  1494. package/src/matrix-migration.runtime.ts +0 -9
  1495. package/src/migration-config.test.ts +0 -228
  1496. package/src/migration-config.ts +0 -243
  1497. package/src/migration-snapshot-backup.ts +0 -117
  1498. package/src/migration-snapshot.test.ts +0 -184
  1499. package/src/migration-snapshot.ts +0 -55
  1500. package/src/onboarding.resolve.test.ts +0 -55
  1501. package/src/onboarding.test-harness.ts +0 -158
  1502. package/src/onboarding.test.ts +0 -665
  1503. package/src/onboarding.ts +0 -773
  1504. package/src/outbound.test.ts +0 -173
  1505. package/src/outbound.ts +0 -78
  1506. package/src/plugin-entry.runtime.js +0 -159
  1507. package/src/plugin-entry.runtime.test.ts +0 -108
  1508. package/src/plugin-entry.runtime.ts +0 -68
  1509. package/src/profile-update.ts +0 -68
  1510. package/src/record-shared.ts +0 -3
  1511. package/src/resolve-targets.test.ts +0 -178
  1512. package/src/resolve-targets.ts +0 -175
  1513. package/src/resolver.ts +0 -21
  1514. package/src/runtime-api.ts +0 -144
  1515. package/src/runtime.ts +0 -7
  1516. package/src/secret-contract.ts +0 -174
  1517. package/src/session-route.test.ts +0 -315
  1518. package/src/session-route.ts +0 -113
  1519. package/src/setup-bootstrap.ts +0 -94
  1520. package/src/setup-config.ts +0 -222
  1521. package/src/setup-contract.ts +0 -89
  1522. package/src/setup-core.test.ts +0 -326
  1523. package/src/setup-core.ts +0 -50
  1524. package/src/setup-surface.ts +0 -4
  1525. package/src/startup-maintenance.test.ts +0 -227
  1526. package/src/startup-maintenance.ts +0 -114
  1527. package/src/storage-paths.ts +0 -92
  1528. package/src/test-helpers.ts +0 -42
  1529. package/src/test-mocks.ts +0 -55
  1530. package/src/test-runtime.ts +0 -72
  1531. package/src/test-support/monitor-route-test-support.ts +0 -8
  1532. package/src/tool-actions.runtime.ts +0 -1
  1533. package/src/tool-actions.test.ts +0 -422
  1534. package/src/tool-actions.ts +0 -498
  1535. package/src/types.ts +0 -230
  1536. package/test-api.ts +0 -2
  1537. package/thread-bindings-runtime.ts +0 -4
  1538. package/tsconfig.json +0 -16
package/src/matrix/sdk.ts DELETED
@@ -1,1789 +0,0 @@
1
- import { EventEmitter } from "node:events";
2
- import {
3
- ClientEvent,
4
- MatrixEventEvent,
5
- Preset,
6
- createClient as createMatrixJsClient,
7
- type MatrixClient as MatrixJsClient,
8
- type MatrixEvent,
9
- } from "@archipelagolab/lobi-js-sdk/lib/lobi.js";
10
- import { VerificationMethod } from "@archipelagolab/lobi-js-sdk/lib/types.js";
11
- import type { PinnedDispatcherPolicy } from "openclaw/plugin-sdk/infra-runtime";
12
- import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
13
- import { normalizeNullableString } from "openclaw/plugin-sdk/text-runtime";
14
- import type { SsrFPolicy } from "../runtime-api.js";
15
- import { resolveMatrixRoomKeyBackupReadinessError } from "./backup-health.js";
16
- import { FileBackedMatrixSyncStore } from "./client/file-sync-store.js";
17
- import { createMatrixJsSdkClientLogger } from "./client/logging.js";
18
- import {
19
- formatMatrixErrorMessage,
20
- formatMatrixErrorReason,
21
- isMatrixNotFoundError,
22
- } from "./errors.js";
23
- import type {
24
- MatrixCryptoBootstrapOptions,
25
- MatrixCryptoBootstrapResult,
26
- } from "./sdk/crypto-bootstrap.js";
27
- import type { MatrixCryptoFacade } from "./sdk/crypto-facade.js";
28
- import type { MatrixDecryptBridge } from "./sdk/decrypt-bridge.js";
29
- import { matrixEventToRaw, parseMxc } from "./sdk/event-helpers.js";
30
- import { MatrixAuthedHttpClient } from "./sdk/http-client.js";
31
- import { MATRIX_IDB_PERSIST_INTERVAL_MS } from "./sdk/idb-persistence-lock.js";
32
- import { ConsoleLogger, LogService, noop } from "./sdk/logger.js";
33
- import {
34
- MatrixRecoveryKeyStore,
35
- isRepairableSecretStorageAccessError,
36
- } from "./sdk/recovery-key-store.js";
37
- import { createMatrixGuardedFetch, type HttpMethod, type QueryParams } from "./sdk/transport.js";
38
- import type {
39
- MatrixClientEventMap,
40
- MatrixCryptoBootstrapApi,
41
- MatrixDeviceVerificationStatusLike,
42
- MatrixRelationsPage,
43
- MatrixRawEvent,
44
- MessageEventContent,
45
- } from "./sdk/types.js";
46
- import type { MatrixVerificationSummary } from "./sdk/verification-manager.js";
47
- import { createMatrixStartupAbortError, throwIfMatrixStartupAborted } from "./startup-abort.js";
48
- import {
49
- isMatrixReadySyncState,
50
- isMatrixTerminalSyncState,
51
- type MatrixSyncState,
52
- } from "./sync-state.js";
53
-
54
- export { ConsoleLogger, LogService };
55
- export type {
56
- DimensionalFileInfo,
57
- FileWithThumbnailInfo,
58
- TimedFileInfo,
59
- VideoFileInfo,
60
- } from "./sdk/types.js";
61
- export type {
62
- EncryptedFile,
63
- LocationMessageEventContent,
64
- MatrixRawEvent,
65
- MessageEventContent,
66
- TextualMessageEventContent,
67
- } from "./sdk/types.js";
68
-
69
- export type MatrixOwnDeviceVerificationStatus = {
70
- encryptionEnabled: boolean;
71
- userId: string | null;
72
- deviceId: string | null;
73
- // "verified" is intentionally strict: other Matrix clients should trust messages
74
- // from this device without showing "not verified by its owner" warnings.
75
- verified: boolean;
76
- localVerified: boolean;
77
- crossSigningVerified: boolean;
78
- signedByOwner: boolean;
79
- recoveryKeyStored: boolean;
80
- recoveryKeyCreatedAt: string | null;
81
- recoveryKeyId: string | null;
82
- backupVersion: string | null;
83
- backup: MatrixRoomKeyBackupStatus;
84
- };
85
-
86
- export type MatrixRoomKeyBackupStatus = {
87
- serverVersion: string | null;
88
- activeVersion: string | null;
89
- trusted: boolean | null;
90
- matchesDecryptionKey: boolean | null;
91
- decryptionKeyCached: boolean | null;
92
- keyLoadAttempted: boolean;
93
- keyLoadError: string | null;
94
- };
95
-
96
- export type MatrixRoomKeyBackupRestoreResult = {
97
- success: boolean;
98
- error?: string;
99
- backupVersion: string | null;
100
- imported: number;
101
- total: number;
102
- loadedFromSecretStorage: boolean;
103
- restoredAt?: string;
104
- backup: MatrixRoomKeyBackupStatus;
105
- };
106
-
107
- export type MatrixRoomKeyBackupResetResult = {
108
- success: boolean;
109
- error?: string;
110
- previousVersion: string | null;
111
- deletedVersion: string | null;
112
- createdVersion: string | null;
113
- resetAt?: string;
114
- backup: MatrixRoomKeyBackupStatus;
115
- };
116
-
117
- export type MatrixRecoveryKeyVerificationResult = MatrixOwnDeviceVerificationStatus & {
118
- success: boolean;
119
- verifiedAt?: string;
120
- error?: string;
121
- };
122
-
123
- export type MatrixOwnCrossSigningPublicationStatus = {
124
- userId: string | null;
125
- masterKeyPublished: boolean;
126
- selfSigningKeyPublished: boolean;
127
- userSigningKeyPublished: boolean;
128
- published: boolean;
129
- };
130
-
131
- export type MatrixVerificationBootstrapResult = {
132
- success: boolean;
133
- error?: string;
134
- verification: MatrixOwnDeviceVerificationStatus;
135
- crossSigning: MatrixOwnCrossSigningPublicationStatus;
136
- pendingVerifications: number;
137
- cryptoBootstrap: MatrixCryptoBootstrapResult | null;
138
- };
139
-
140
- const MATRIX_INITIAL_CRYPTO_BOOTSTRAP_OPTIONS = {
141
- allowAutomaticCrossSigningReset: false,
142
- } satisfies MatrixCryptoBootstrapOptions;
143
-
144
- const MATRIX_AUTOMATIC_REPAIR_BOOTSTRAP_OPTIONS = {
145
- forceResetCrossSigning: true,
146
- allowSecretStorageRecreateWithoutRecoveryKey: true,
147
- strict: true,
148
- } satisfies MatrixCryptoBootstrapOptions;
149
-
150
- function createMatrixExplicitBootstrapOptions(params?: {
151
- forceResetCrossSigning?: boolean;
152
- }): MatrixCryptoBootstrapOptions {
153
- return {
154
- forceResetCrossSigning: params?.forceResetCrossSigning === true,
155
- allowSecretStorageRecreateWithoutRecoveryKey: true,
156
- strict: true,
157
- };
158
- }
159
-
160
- export type MatrixOwnDeviceInfo = {
161
- deviceId: string;
162
- displayName: string | null;
163
- lastSeenIp: string | null;
164
- lastSeenTs: number | null;
165
- current: boolean;
166
- };
167
-
168
- export type MatrixOwnDeviceDeleteResult = {
169
- currentDeviceId: string | null;
170
- deletedDeviceIds: string[];
171
- remainingDevices: MatrixOwnDeviceInfo[];
172
- };
173
-
174
- type MatrixCryptoRuntime = typeof import("./sdk/crypto-runtime.js");
175
-
176
- let loadedMatrixCryptoRuntime: MatrixCryptoRuntime | null = null;
177
- let matrixCryptoRuntimePromise: Promise<MatrixCryptoRuntime> | null = null;
178
-
179
- async function loadMatrixCryptoRuntime(): Promise<MatrixCryptoRuntime> {
180
- matrixCryptoRuntimePromise ??= import("./sdk/crypto-runtime.js").then((runtime) => {
181
- loadedMatrixCryptoRuntime = runtime;
182
- return runtime;
183
- });
184
- return await matrixCryptoRuntimePromise;
185
- }
186
-
187
- const normalizeOptionalString = normalizeNullableString;
188
-
189
- function isUnsupportedAuthenticatedMediaEndpointError(err: unknown): boolean {
190
- const statusCode = (err as { statusCode?: number })?.statusCode;
191
- if (statusCode === 404 || statusCode === 405 || statusCode === 501) {
192
- return true;
193
- }
194
- const message = formatMatrixErrorReason(err);
195
- return (
196
- message.includes("m_unrecognized") ||
197
- message.includes("unrecognized request") ||
198
- message.includes("method not allowed") ||
199
- message.includes("not implemented")
200
- );
201
- }
202
-
203
- export class MatrixClient {
204
- private readonly client: MatrixJsClient;
205
- private readonly emitter = new EventEmitter();
206
- private readonly httpClient: MatrixAuthedHttpClient;
207
- private readonly localTimeoutMs: number;
208
- private readonly initialSyncLimit?: number;
209
- private readonly encryptionEnabled: boolean;
210
- private readonly password?: string;
211
- private readonly syncStore?: FileBackedMatrixSyncStore;
212
- private readonly idbSnapshotPath?: string;
213
- private readonly cryptoDatabasePrefix?: string;
214
- private bridgeRegistered = false;
215
- private started = false;
216
- private cryptoBootstrapped = false;
217
- private selfUserId: string | null;
218
- private readonly dmRoomIds = new Set<string>();
219
- private cryptoInitialized = false;
220
- private decryptBridge?: MatrixDecryptBridge<MatrixRawEvent>;
221
- private verificationManager?: import("./sdk/verification-manager.js").MatrixVerificationManager;
222
- private readonly sendQueue = new KeyedAsyncQueue();
223
- private readonly recoveryKeyStore: MatrixRecoveryKeyStore;
224
- private cryptoBootstrapper?:
225
- | import("./sdk/crypto-bootstrap.js").MatrixCryptoBootstrapper<MatrixRawEvent>
226
- | undefined;
227
- private readonly autoBootstrapCrypto: boolean;
228
- private stopPersistPromise: Promise<void> | null = null;
229
- private verificationSummaryListenerBound = false;
230
- private currentSyncState: MatrixSyncState | null = null;
231
-
232
- readonly dms = {
233
- update: async (): Promise<boolean> => {
234
- return await this.refreshDmCache();
235
- },
236
- isDm: (roomId: string): boolean => this.dmRoomIds.has(roomId),
237
- };
238
-
239
- crypto?: MatrixCryptoFacade;
240
-
241
- constructor(
242
- homeserver: string,
243
- accessToken: string,
244
- opts: {
245
- userId?: string;
246
- password?: string;
247
- deviceId?: string;
248
- localTimeoutMs?: number;
249
- encryption?: boolean;
250
- initialSyncLimit?: number;
251
- storagePath?: string;
252
- recoveryKeyPath?: string;
253
- idbSnapshotPath?: string;
254
- cryptoDatabasePrefix?: string;
255
- autoBootstrapCrypto?: boolean;
256
- ssrfPolicy?: SsrFPolicy;
257
- dispatcherPolicy?: PinnedDispatcherPolicy;
258
- } = {},
259
- ) {
260
- this.httpClient = new MatrixAuthedHttpClient({
261
- homeserver,
262
- accessToken,
263
- ssrfPolicy: opts.ssrfPolicy,
264
- dispatcherPolicy: opts.dispatcherPolicy,
265
- });
266
- this.localTimeoutMs = Math.max(1, opts.localTimeoutMs ?? 60_000);
267
- this.initialSyncLimit = opts.initialSyncLimit;
268
- this.encryptionEnabled = opts.encryption === true;
269
- this.password = opts.password;
270
- this.syncStore = opts.storagePath ? new FileBackedMatrixSyncStore(opts.storagePath) : undefined;
271
- this.idbSnapshotPath = opts.idbSnapshotPath;
272
- this.cryptoDatabasePrefix = opts.cryptoDatabasePrefix;
273
- this.selfUserId = opts.userId?.trim() || null;
274
- this.autoBootstrapCrypto = opts.autoBootstrapCrypto !== false;
275
- this.recoveryKeyStore = new MatrixRecoveryKeyStore(opts.recoveryKeyPath);
276
- const cryptoCallbacks = this.encryptionEnabled
277
- ? this.recoveryKeyStore.buildCryptoCallbacks()
278
- : undefined;
279
- this.client = createMatrixJsClient({
280
- baseUrl: homeserver,
281
- accessToken,
282
- userId: opts.userId,
283
- deviceId: opts.deviceId,
284
- logger: createMatrixJsSdkClientLogger("MatrixClient"),
285
- localTimeoutMs: this.localTimeoutMs,
286
- fetchFn: createMatrixGuardedFetch({
287
- ssrfPolicy: opts.ssrfPolicy,
288
- dispatcherPolicy: opts.dispatcherPolicy,
289
- }),
290
- store: this.syncStore,
291
- cryptoCallbacks: cryptoCallbacks as never,
292
- verificationMethods: [
293
- VerificationMethod.Sas,
294
- VerificationMethod.ShowQrCode,
295
- VerificationMethod.ScanQrCode,
296
- VerificationMethod.Reciprocate,
297
- ],
298
- });
299
- }
300
-
301
- on<TEvent extends keyof MatrixClientEventMap>(
302
- eventName: TEvent,
303
- listener: (...args: MatrixClientEventMap[TEvent]) => void,
304
- ): this;
305
- on(eventName: string, listener: (...args: unknown[]) => void): this;
306
- on(eventName: string, listener: (...args: unknown[]) => void): this {
307
- this.emitter.on(eventName, listener as (...args: unknown[]) => void);
308
- return this;
309
- }
310
-
311
- off<TEvent extends keyof MatrixClientEventMap>(
312
- eventName: TEvent,
313
- listener: (...args: MatrixClientEventMap[TEvent]) => void,
314
- ): this;
315
- off(eventName: string, listener: (...args: unknown[]) => void): this;
316
- off(eventName: string, listener: (...args: unknown[]) => void): this {
317
- this.emitter.off(eventName, listener as (...args: unknown[]) => void);
318
- return this;
319
- }
320
-
321
- private idbPersistTimer: ReturnType<typeof setInterval> | null = null;
322
-
323
- private async ensureCryptoSupportInitialized(): Promise<void> {
324
- if (
325
- this.decryptBridge &&
326
- (!this.encryptionEnabled ||
327
- (this.verificationManager && this.cryptoBootstrapper && this.crypto))
328
- ) {
329
- return;
330
- }
331
-
332
- const runtime = await loadMatrixCryptoRuntime();
333
- this.decryptBridge ??= new runtime.MatrixDecryptBridge<MatrixRawEvent>({
334
- client: this.client,
335
- toRaw: (event) => matrixEventToRaw(event),
336
- emitDecryptedEvent: (roomId, event) => {
337
- this.emitter.emit("room.decrypted_event", roomId, event);
338
- },
339
- emitMessage: (roomId, event) => {
340
- this.emitter.emit("room.message", roomId, event);
341
- },
342
- emitFailedDecryption: (roomId, event, error) => {
343
- this.emitter.emit("room.failed_decryption", roomId, event, error);
344
- },
345
- });
346
- if (!this.encryptionEnabled) {
347
- return;
348
- }
349
-
350
- this.verificationManager ??= new runtime.MatrixVerificationManager();
351
- this.cryptoBootstrapper ??= new runtime.MatrixCryptoBootstrapper<MatrixRawEvent>({
352
- getUserId: () => this.getUserId(),
353
- getPassword: () => this.password,
354
- getDeviceId: () => this.client.getDeviceId(),
355
- verificationManager: this.verificationManager,
356
- recoveryKeyStore: this.recoveryKeyStore,
357
- decryptBridge: this.decryptBridge,
358
- });
359
- if (!this.crypto) {
360
- this.crypto = runtime.createMatrixCryptoFacade({
361
- client: this.client,
362
- verificationManager: this.verificationManager,
363
- recoveryKeyStore: this.recoveryKeyStore,
364
- getRoomStateEvent: (roomId, eventType, stateKey = "") =>
365
- this.getRoomStateEvent(roomId, eventType, stateKey),
366
- downloadContent: (mxcUrl) => this.downloadContent(mxcUrl),
367
- });
368
- }
369
- if (!this.verificationSummaryListenerBound) {
370
- this.verificationSummaryListenerBound = true;
371
- this.verificationManager.onSummaryChanged((summary: MatrixVerificationSummary) => {
372
- this.emitter.emit("verification.summary", summary);
373
- });
374
- }
375
- }
376
-
377
- async start(opts: { abortSignal?: AbortSignal; readyTimeoutMs?: number } = {}): Promise<void> {
378
- await this.startSyncSession({
379
- bootstrapCrypto: true,
380
- abortSignal: opts.abortSignal,
381
- readyTimeoutMs: opts.readyTimeoutMs,
382
- });
383
- }
384
-
385
- private async waitForInitialSyncReady(
386
- params: {
387
- timeoutMs?: number;
388
- abortSignal?: AbortSignal;
389
- } = {},
390
- ): Promise<void> {
391
- const timeoutMs = params.timeoutMs ?? 30_000;
392
- if (isMatrixReadySyncState(this.currentSyncState)) {
393
- return;
394
- }
395
- if (isMatrixTerminalSyncState(this.currentSyncState)) {
396
- throw new Error(`Matrix sync entered ${this.currentSyncState} during startup`);
397
- }
398
-
399
- await new Promise<void>((resolve, reject) => {
400
- let settled = false;
401
- let timeoutId: ReturnType<typeof setTimeout> | undefined;
402
- const abortSignal = params.abortSignal;
403
-
404
- const cleanup = () => {
405
- this.off("sync.state", onSyncState);
406
- this.off("sync.unexpected_error", onUnexpectedError);
407
- abortSignal?.removeEventListener("abort", onAbort);
408
- if (timeoutId) {
409
- clearTimeout(timeoutId);
410
- timeoutId = undefined;
411
- }
412
- };
413
-
414
- const settleResolve = () => {
415
- if (settled) {
416
- return;
417
- }
418
- settled = true;
419
- cleanup();
420
- resolve();
421
- };
422
-
423
- const settleReject = (error: Error) => {
424
- if (settled) {
425
- return;
426
- }
427
- settled = true;
428
- cleanup();
429
- reject(error);
430
- };
431
-
432
- const onSyncState = (state: MatrixSyncState, _prevState: string | null, error?: unknown) => {
433
- if (isMatrixReadySyncState(state)) {
434
- settleResolve();
435
- return;
436
- }
437
- if (isMatrixTerminalSyncState(state)) {
438
- settleReject(
439
- new Error(
440
- error instanceof Error && error.message
441
- ? error.message
442
- : `Matrix sync entered ${state} during startup`,
443
- ),
444
- );
445
- }
446
- };
447
-
448
- const onUnexpectedError = (error: Error) => {
449
- settleReject(error);
450
- };
451
-
452
- const onAbort = () => {
453
- settleReject(createMatrixStartupAbortError());
454
- };
455
-
456
- this.on("sync.state", onSyncState);
457
- this.on("sync.unexpected_error", onUnexpectedError);
458
- if (abortSignal?.aborted) {
459
- onAbort();
460
- return;
461
- }
462
- abortSignal?.addEventListener("abort", onAbort, { once: true });
463
- timeoutId = setTimeout(() => {
464
- settleReject(
465
- new Error(`Matrix client did not reach a ready sync state within ${timeoutMs}ms`),
466
- );
467
- }, timeoutMs);
468
- timeoutId.unref?.();
469
- });
470
- }
471
-
472
- private async startSyncSession(opts: {
473
- bootstrapCrypto: boolean;
474
- abortSignal?: AbortSignal;
475
- readyTimeoutMs?: number;
476
- }): Promise<void> {
477
- if (this.started) {
478
- return;
479
- }
480
-
481
- throwIfMatrixStartupAborted(opts.abortSignal);
482
- await this.ensureCryptoSupportInitialized();
483
- throwIfMatrixStartupAborted(opts.abortSignal);
484
- this.registerBridge();
485
- await this.initializeCryptoIfNeeded(opts.abortSignal);
486
-
487
- await this.client.startClient({
488
- initialSyncLimit: this.initialSyncLimit,
489
- });
490
- await this.waitForInitialSyncReady({
491
- abortSignal: opts.abortSignal,
492
- timeoutMs: opts.readyTimeoutMs,
493
- });
494
- throwIfMatrixStartupAborted(opts.abortSignal);
495
- if (opts.bootstrapCrypto && this.autoBootstrapCrypto) {
496
- await this.bootstrapCryptoIfNeeded(opts.abortSignal);
497
- }
498
- throwIfMatrixStartupAborted(opts.abortSignal);
499
- this.started = true;
500
- this.emitOutstandingInviteEvents();
501
- await this.refreshDmCache().catch(noop);
502
- }
503
-
504
- async prepareForOneOff(): Promise<void> {
505
- if (!this.encryptionEnabled) {
506
- return;
507
- }
508
- await this.ensureCryptoSupportInitialized();
509
- await this.initializeCryptoIfNeeded();
510
- if (!this.crypto) {
511
- return;
512
- }
513
- try {
514
- const joinedRooms = await this.getJoinedRooms();
515
- await this.crypto.prepare(joinedRooms);
516
- } catch {
517
- // One-off commands should continue even if crypto room prep is incomplete.
518
- }
519
- }
520
-
521
- hasPersistedSyncState(): boolean {
522
- // Only trust restart replay when the previous process completed a final
523
- // sync-store persist. A stale cursor can make Matrix re-surface old events.
524
- return this.syncStore?.hasSavedSyncFromCleanShutdown() === true;
525
- }
526
-
527
- private async ensureStartedForCryptoControlPlane(): Promise<void> {
528
- if (this.started) {
529
- return;
530
- }
531
- await this.startSyncSession({ bootstrapCrypto: false });
532
- }
533
-
534
- stopSyncWithoutPersist(): void {
535
- if (this.idbPersistTimer) {
536
- clearInterval(this.idbPersistTimer);
537
- this.idbPersistTimer = null;
538
- }
539
- this.currentSyncState = null;
540
- this.client.stopClient();
541
- this.started = false;
542
- }
543
-
544
- async drainPendingDecryptions(reason = "matrix client shutdown"): Promise<void> {
545
- await this.decryptBridge?.drainPendingDecryptions(reason);
546
- }
547
-
548
- stop(): void {
549
- this.stopSyncWithoutPersist();
550
- this.decryptBridge?.stop();
551
- // Final persist on shutdown
552
- this.syncStore?.markCleanShutdown();
553
- if (loadedMatrixCryptoRuntime) {
554
- const { persistIdbToDisk } = loadedMatrixCryptoRuntime;
555
- this.stopPersistPromise = Promise.all([
556
- persistIdbToDisk({
557
- snapshotPath: this.idbSnapshotPath,
558
- databasePrefix: this.cryptoDatabasePrefix,
559
- }).catch(noop),
560
- this.syncStore?.flush().catch(noop),
561
- ]).then(() => undefined);
562
- return;
563
- }
564
- this.stopPersistPromise = loadMatrixCryptoRuntime()
565
- .then(async ({ persistIdbToDisk }) => {
566
- await Promise.all([
567
- persistIdbToDisk({
568
- snapshotPath: this.idbSnapshotPath,
569
- databasePrefix: this.cryptoDatabasePrefix,
570
- }).catch(noop),
571
- this.syncStore?.flush().catch(noop),
572
- ]);
573
- })
574
- .catch(noop)
575
- .then(() => undefined);
576
- }
577
-
578
- async stopAndPersist(): Promise<void> {
579
- this.stop();
580
- await this.stopPersistPromise;
581
- }
582
-
583
- private async bootstrapCryptoIfNeeded(abortSignal?: AbortSignal): Promise<void> {
584
- if (!this.encryptionEnabled || !this.cryptoInitialized || this.cryptoBootstrapped) {
585
- return;
586
- }
587
- throwIfMatrixStartupAborted(abortSignal);
588
- await this.ensureCryptoSupportInitialized();
589
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
590
- if (!crypto) {
591
- return;
592
- }
593
- const cryptoBootstrapper = this.cryptoBootstrapper;
594
- if (!cryptoBootstrapper) {
595
- return;
596
- }
597
- const initial = await cryptoBootstrapper.bootstrap(
598
- crypto,
599
- MATRIX_INITIAL_CRYPTO_BOOTSTRAP_OPTIONS,
600
- );
601
- throwIfMatrixStartupAborted(abortSignal);
602
- if (!initial.crossSigningPublished || initial.ownDeviceVerified === false) {
603
- const status = await this.getOwnDeviceVerificationStatus();
604
- if (status.signedByOwner) {
605
- LogService.warn(
606
- "MatrixClientLite",
607
- "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.",
608
- );
609
- } else if (this.password?.trim()) {
610
- try {
611
- // The repair path already force-resets cross-signing; allow secret storage
612
- // recreation so the new keys can be persisted. Without this, a device that
613
- // lost its recovery key enters a permanent failure loop because the new
614
- // cross-signing keys have nowhere to be stored.
615
- const repaired = await cryptoBootstrapper.bootstrap(
616
- crypto,
617
- MATRIX_AUTOMATIC_REPAIR_BOOTSTRAP_OPTIONS,
618
- );
619
- throwIfMatrixStartupAborted(abortSignal);
620
- if (repaired.crossSigningPublished && repaired.ownDeviceVerified !== false) {
621
- LogService.info(
622
- "MatrixClientLite",
623
- "Cross-signing/bootstrap recovered after forced reset",
624
- );
625
- }
626
- } catch (err) {
627
- LogService.warn(
628
- "MatrixClientLite",
629
- "Failed to recover cross-signing/bootstrap with forced reset:",
630
- err,
631
- );
632
- }
633
- } else {
634
- LogService.warn(
635
- "MatrixClientLite",
636
- "Cross-signing/bootstrap incomplete and no password is configured for UIA fallback",
637
- );
638
- }
639
- }
640
- this.cryptoBootstrapped = true;
641
- }
642
-
643
- private async initializeCryptoIfNeeded(abortSignal?: AbortSignal): Promise<void> {
644
- if (!this.encryptionEnabled || this.cryptoInitialized) {
645
- return;
646
- }
647
- throwIfMatrixStartupAborted(abortSignal);
648
- const { persistIdbToDisk, restoreIdbFromDisk } = await loadMatrixCryptoRuntime();
649
-
650
- // Restore persisted IndexedDB crypto store before initializing WASM crypto.
651
- await restoreIdbFromDisk(this.idbSnapshotPath);
652
- throwIfMatrixStartupAborted(abortSignal);
653
-
654
- try {
655
- await this.client.initRustCrypto({
656
- cryptoDatabasePrefix: this.cryptoDatabasePrefix,
657
- });
658
- this.cryptoInitialized = true;
659
- throwIfMatrixStartupAborted(abortSignal);
660
-
661
- // Persist the crypto store after successful init (captures fresh keys on first run).
662
- await persistIdbToDisk({
663
- snapshotPath: this.idbSnapshotPath,
664
- databasePrefix: this.cryptoDatabasePrefix,
665
- });
666
- throwIfMatrixStartupAborted(abortSignal);
667
-
668
- // Periodically persist to capture new Olm sessions and room keys.
669
- this.idbPersistTimer = setInterval(() => {
670
- persistIdbToDisk({
671
- snapshotPath: this.idbSnapshotPath,
672
- databasePrefix: this.cryptoDatabasePrefix,
673
- }).catch(noop);
674
- }, MATRIX_IDB_PERSIST_INTERVAL_MS);
675
- } catch (err) {
676
- LogService.warn("MatrixClientLite", "Failed to initialize rust crypto:", err);
677
- }
678
- }
679
-
680
- async getUserId(): Promise<string> {
681
- const fromClient = this.client.getUserId();
682
- if (fromClient) {
683
- this.selfUserId = fromClient;
684
- return fromClient;
685
- }
686
- if (this.selfUserId) {
687
- return this.selfUserId;
688
- }
689
- const whoami = (await this.doRequest("GET", "/_lobi/client/v3/account/whoami")) as {
690
- user_id?: string;
691
- };
692
- const resolved = whoami.user_id?.trim();
693
- if (!resolved) {
694
- throw new Error("Matrix whoami did not return user_id");
695
- }
696
- this.selfUserId = resolved;
697
- return resolved;
698
- }
699
-
700
- async getJoinedRooms(): Promise<string[]> {
701
- const joined = await this.client.getJoinedRooms();
702
- return Array.isArray(joined.joined_rooms) ? joined.joined_rooms : [];
703
- }
704
-
705
- async getJoinedRoomMembers(roomId: string): Promise<string[]> {
706
- const members = await this.client.getJoinedRoomMembers(roomId);
707
- const joined = members?.joined;
708
- if (!joined || typeof joined !== "object") {
709
- return [];
710
- }
711
- return Object.keys(joined);
712
- }
713
-
714
- async getRoomStateEvent(
715
- roomId: string,
716
- eventType: string,
717
- stateKey = "",
718
- ): Promise<Record<string, unknown>> {
719
- const state = await this.client.getStateEvent(roomId, eventType, stateKey);
720
- return (state ?? {}) as Record<string, unknown>;
721
- }
722
-
723
- async getAccountData(eventType: string): Promise<Record<string, unknown> | undefined> {
724
- const event = this.client.getAccountData(eventType as never);
725
- return (event?.getContent() as Record<string, unknown> | undefined) ?? undefined;
726
- }
727
-
728
- async setAccountData(eventType: string, content: Record<string, unknown>): Promise<void> {
729
- await this.client.setAccountData(eventType as never, content as never);
730
- await this.refreshDmCache().catch(noop);
731
- }
732
-
733
- async resolveRoom(aliasOrRoomId: string): Promise<string | null> {
734
- if (aliasOrRoomId.startsWith("!")) {
735
- return aliasOrRoomId;
736
- }
737
- if (!aliasOrRoomId.startsWith("#")) {
738
- return aliasOrRoomId;
739
- }
740
- try {
741
- const resolved = await this.client.getRoomIdForAlias(aliasOrRoomId);
742
- return resolved.room_id ?? null;
743
- } catch {
744
- return null;
745
- }
746
- }
747
-
748
- async createDirectRoom(
749
- remoteUserId: string,
750
- opts: { encrypted?: boolean } = {},
751
- ): Promise<string> {
752
- const initialState = opts.encrypted
753
- ? [
754
- {
755
- type: "m.room.encryption",
756
- state_key: "",
757
- content: {
758
- algorithm: "m.megolm.v1.aes-sha2",
759
- },
760
- },
761
- ]
762
- : undefined;
763
- const result = await this.client.createRoom({
764
- invite: [remoteUserId],
765
- is_direct: true,
766
- preset: Preset.TrustedPrivateChat,
767
- initial_state: initialState,
768
- });
769
- return result.room_id;
770
- }
771
-
772
- async sendMessage(roomId: string, content: MessageEventContent): Promise<string> {
773
- return await this.runSerializedRoomSend(roomId, async () => {
774
- const sent = await this.client.sendMessage(roomId, content as never);
775
- return sent.event_id;
776
- });
777
- }
778
-
779
- async sendEvent(
780
- roomId: string,
781
- eventType: string,
782
- content: Record<string, unknown>,
783
- ): Promise<string> {
784
- return await this.runSerializedRoomSend(roomId, async () => {
785
- const sent = await this.client.sendEvent(roomId, eventType as never, content as never);
786
- return sent.event_id;
787
- });
788
- }
789
-
790
- // Keep outbound room events ordered when multiple plugin paths emit
791
- // messages/reactions/polls into the same Matrix room concurrently.
792
- private async runSerializedRoomSend<T>(roomId: string, task: () => Promise<T>): Promise<T> {
793
- return await this.sendQueue.enqueue(roomId, task);
794
- }
795
-
796
- async sendStateEvent(
797
- roomId: string,
798
- eventType: string,
799
- stateKey: string,
800
- content: Record<string, unknown>,
801
- ): Promise<string> {
802
- const sent = await this.client.sendStateEvent(
803
- roomId,
804
- eventType as never,
805
- content as never,
806
- stateKey,
807
- );
808
- return sent.event_id;
809
- }
810
-
811
- async redactEvent(roomId: string, eventId: string, reason?: string): Promise<string> {
812
- const sent = await this.client.redactEvent(
813
- roomId,
814
- eventId,
815
- undefined,
816
- reason?.trim() ? { reason } : undefined,
817
- );
818
- return sent.event_id;
819
- }
820
-
821
- async doRequest(
822
- method: HttpMethod,
823
- endpoint: string,
824
- qs?: QueryParams,
825
- body?: unknown,
826
- opts?: { allowAbsoluteEndpoint?: boolean },
827
- ): Promise<unknown> {
828
- return await this.httpClient.requestJson({
829
- method,
830
- endpoint,
831
- qs,
832
- body,
833
- timeoutMs: this.localTimeoutMs,
834
- allowAbsoluteEndpoint: opts?.allowAbsoluteEndpoint,
835
- });
836
- }
837
-
838
- async getUserProfile(userId: string): Promise<{ displayname?: string; avatar_url?: string }> {
839
- return await this.client.getProfileInfo(userId);
840
- }
841
-
842
- async setDisplayName(displayName: string): Promise<void> {
843
- await this.client.setDisplayName(displayName);
844
- }
845
-
846
- async setAvatarUrl(avatarUrl: string): Promise<void> {
847
- await this.client.setAvatarUrl(avatarUrl);
848
- }
849
-
850
- async joinRoom(roomId: string): Promise<void> {
851
- await this.client.joinRoom(roomId);
852
- }
853
-
854
- mxcToHttp(mxcUrl: string): string | null {
855
- return this.client.mxcUrlToHttp(mxcUrl, undefined, undefined, undefined, true, false, true);
856
- }
857
-
858
- async downloadContent(
859
- mxcUrl: string,
860
- opts: {
861
- allowRemote?: boolean;
862
- maxBytes?: number;
863
- readIdleTimeoutMs?: number;
864
- } = {},
865
- ): Promise<Buffer> {
866
- const parsed = parseMxc(mxcUrl);
867
- if (!parsed) {
868
- throw new Error(`Invalid Matrix content URI: ${mxcUrl}`);
869
- }
870
- const encodedServer = encodeURIComponent(parsed.server);
871
- const encodedMediaId = encodeURIComponent(parsed.mediaId);
872
- const request = async (endpoint: string): Promise<Buffer> =>
873
- await this.httpClient.requestRaw({
874
- method: "GET",
875
- endpoint,
876
- qs: { allow_remote: opts.allowRemote ?? true },
877
- timeoutMs: this.localTimeoutMs,
878
- maxBytes: opts.maxBytes,
879
- readIdleTimeoutMs: opts.readIdleTimeoutMs,
880
- });
881
-
882
- const authenticatedEndpoint = `/_lobi/client/v1/media/download/${encodedServer}/${encodedMediaId}`;
883
- try {
884
- return await request(authenticatedEndpoint);
885
- } catch (err) {
886
- if (!isUnsupportedAuthenticatedMediaEndpointError(err)) {
887
- throw err;
888
- }
889
- }
890
-
891
- const legacyEndpoint = `/_lobi/media/v3/download/${encodedServer}/${encodedMediaId}`;
892
- return await request(legacyEndpoint);
893
- }
894
-
895
- async uploadContent(file: Buffer, contentType?: string, filename?: string): Promise<string> {
896
- const uploaded = await this.client.uploadContent(new Uint8Array(file), {
897
- type: contentType || "application/octet-stream",
898
- name: filename,
899
- includeFilename: Boolean(filename),
900
- });
901
- return uploaded.content_uri;
902
- }
903
-
904
- async getEvent(roomId: string, eventId: string): Promise<Record<string, unknown>> {
905
- const rawEvent = (await this.client.fetchRoomEvent(roomId, eventId)) as Record<string, unknown>;
906
- if (rawEvent.type !== "m.room.encrypted") {
907
- return rawEvent;
908
- }
909
-
910
- const mapper = this.client.getEventMapper();
911
- const event = mapper(rawEvent);
912
- let decryptedEvent: MatrixEvent | undefined;
913
- const onDecrypted = (candidate: MatrixEvent) => {
914
- decryptedEvent = candidate;
915
- };
916
- event.once(MatrixEventEvent.Decrypted, onDecrypted);
917
- try {
918
- await this.client.decryptEventIfNeeded(event);
919
- } finally {
920
- event.off(MatrixEventEvent.Decrypted, onDecrypted);
921
- }
922
- return matrixEventToRaw(decryptedEvent ?? event);
923
- }
924
-
925
- async getRelations(
926
- roomId: string,
927
- eventId: string,
928
- relationType: string | null,
929
- eventType?: string | null,
930
- opts: {
931
- from?: string;
932
- } = {},
933
- ): Promise<MatrixRelationsPage> {
934
- const result = await this.client.relations(roomId, eventId, relationType, eventType, opts);
935
- return {
936
- originalEvent: result.originalEvent ? matrixEventToRaw(result.originalEvent) : null,
937
- events: result.events.map((event) => matrixEventToRaw(event)),
938
- nextBatch: result.nextBatch ?? null,
939
- prevBatch: result.prevBatch ?? null,
940
- };
941
- }
942
-
943
- async hydrateEvents(
944
- roomId: string,
945
- events: Array<Record<string, unknown>>,
946
- ): Promise<MatrixRawEvent[]> {
947
- if (events.length === 0) {
948
- return [];
949
- }
950
-
951
- const mapper = this.client.getEventMapper();
952
- const mappedEvents = events.map((event) =>
953
- mapper({
954
- room_id: roomId,
955
- ...event,
956
- }),
957
- );
958
- await Promise.all(mappedEvents.map((event) => this.client.decryptEventIfNeeded(event)));
959
- return mappedEvents.map((event) => matrixEventToRaw(event));
960
- }
961
-
962
- async setTyping(roomId: string, typing: boolean, timeoutMs: number): Promise<void> {
963
- await this.client.sendTyping(roomId, typing, timeoutMs);
964
- }
965
-
966
- async sendReadReceipt(roomId: string, eventId: string): Promise<void> {
967
- await this.httpClient.requestJson({
968
- method: "POST",
969
- endpoint: `/_lobi/client/v3/rooms/${encodeURIComponent(roomId)}/receipt/m.read/${encodeURIComponent(
970
- eventId,
971
- )}`,
972
- body: {},
973
- timeoutMs: this.localTimeoutMs,
974
- });
975
- }
976
-
977
- async getRoomKeyBackupStatus(): Promise<MatrixRoomKeyBackupStatus> {
978
- if (!this.encryptionEnabled) {
979
- return {
980
- serverVersion: null,
981
- activeVersion: null,
982
- trusted: null,
983
- matchesDecryptionKey: null,
984
- decryptionKeyCached: null,
985
- keyLoadAttempted: false,
986
- keyLoadError: null,
987
- };
988
- }
989
-
990
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
991
- const serverVersionFallback = await this.resolveRoomKeyBackupVersion();
992
- if (!crypto) {
993
- return {
994
- serverVersion: serverVersionFallback,
995
- activeVersion: null,
996
- trusted: null,
997
- matchesDecryptionKey: null,
998
- decryptionKeyCached: null,
999
- keyLoadAttempted: false,
1000
- keyLoadError: null,
1001
- };
1002
- }
1003
-
1004
- let { activeVersion, decryptionKeyCached } = await this.resolveRoomKeyBackupLocalState(crypto);
1005
- let { serverVersion, trusted, matchesDecryptionKey } =
1006
- await this.resolveRoomKeyBackupTrustState(crypto, serverVersionFallback);
1007
- const shouldLoadBackupKey =
1008
- Boolean(serverVersion) && (decryptionKeyCached === false || matchesDecryptionKey === false);
1009
- const shouldActivateBackup = Boolean(serverVersion) && !activeVersion;
1010
- let keyLoadAttempted = false;
1011
- let keyLoadError: string | null = null;
1012
- if (serverVersion && (shouldLoadBackupKey || shouldActivateBackup)) {
1013
- if (shouldLoadBackupKey) {
1014
- if (
1015
- typeof crypto.loadSessionBackupPrivateKeyFromSecretStorage ===
1016
- "function" /* pragma: allowlist secret */
1017
- ) {
1018
- keyLoadAttempted = true;
1019
- try {
1020
- await crypto.loadSessionBackupPrivateKeyFromSecretStorage(); // pragma: allowlist secret
1021
- } catch (err) {
1022
- keyLoadError = formatMatrixErrorMessage(err);
1023
- }
1024
- } else {
1025
- keyLoadError =
1026
- "Matrix crypto backend does not support loading backup keys from secret storage";
1027
- }
1028
- }
1029
- if (!keyLoadError) {
1030
- await this.enableTrustedRoomKeyBackupIfPossible(crypto);
1031
- }
1032
- ({ activeVersion, decryptionKeyCached } = await this.resolveRoomKeyBackupLocalState(crypto));
1033
- ({ serverVersion, trusted, matchesDecryptionKey } = await this.resolveRoomKeyBackupTrustState(
1034
- crypto,
1035
- serverVersion,
1036
- ));
1037
- }
1038
-
1039
- return {
1040
- serverVersion,
1041
- activeVersion,
1042
- trusted,
1043
- matchesDecryptionKey,
1044
- decryptionKeyCached,
1045
- keyLoadAttempted,
1046
- keyLoadError,
1047
- };
1048
- }
1049
-
1050
- async getOwnDeviceVerificationStatus(): Promise<MatrixOwnDeviceVerificationStatus> {
1051
- const recoveryKey = this.recoveryKeyStore.getRecoveryKeySummary();
1052
- const userId = this.client.getUserId() ?? this.selfUserId ?? null;
1053
- const deviceId = this.client.getDeviceId()?.trim() || null;
1054
- const backup = await this.getRoomKeyBackupStatus();
1055
-
1056
- if (!this.encryptionEnabled) {
1057
- return {
1058
- encryptionEnabled: false,
1059
- userId,
1060
- deviceId,
1061
- verified: false,
1062
- localVerified: false,
1063
- crossSigningVerified: false,
1064
- signedByOwner: false,
1065
- recoveryKeyStored: Boolean(recoveryKey),
1066
- recoveryKeyCreatedAt: recoveryKey?.createdAt ?? null,
1067
- recoveryKeyId: recoveryKey?.keyId ?? null,
1068
- backupVersion: backup.serverVersion,
1069
- backup,
1070
- };
1071
- }
1072
-
1073
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
1074
- let deviceStatus: MatrixDeviceVerificationStatusLike | null = null;
1075
- if (crypto && userId && deviceId && typeof crypto.getDeviceVerificationStatus === "function") {
1076
- deviceStatus = await crypto.getDeviceVerificationStatus(userId, deviceId).catch(() => null);
1077
- }
1078
- const { isMatrixDeviceOwnerVerified } = await loadMatrixCryptoRuntime();
1079
-
1080
- return {
1081
- encryptionEnabled: true,
1082
- userId,
1083
- deviceId,
1084
- verified: isMatrixDeviceOwnerVerified(deviceStatus),
1085
- localVerified: deviceStatus?.localVerified === true,
1086
- crossSigningVerified: deviceStatus?.crossSigningVerified === true,
1087
- signedByOwner: deviceStatus?.signedByOwner === true,
1088
- recoveryKeyStored: Boolean(recoveryKey),
1089
- recoveryKeyCreatedAt: recoveryKey?.createdAt ?? null,
1090
- recoveryKeyId: recoveryKey?.keyId ?? null,
1091
- backupVersion: backup.serverVersion,
1092
- backup,
1093
- };
1094
- }
1095
-
1096
- async verifyWithRecoveryKey(
1097
- rawRecoveryKey: string,
1098
- ): Promise<MatrixRecoveryKeyVerificationResult> {
1099
- const fail = async (error: string): Promise<MatrixRecoveryKeyVerificationResult> => ({
1100
- success: false,
1101
- error,
1102
- ...(await this.getOwnDeviceVerificationStatus()),
1103
- });
1104
-
1105
- if (!this.encryptionEnabled) {
1106
- return await fail("Matrix encryption is disabled for this client");
1107
- }
1108
-
1109
- await this.ensureStartedForCryptoControlPlane();
1110
- await this.ensureCryptoSupportInitialized();
1111
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
1112
- if (!crypto) {
1113
- return await fail("Matrix crypto is not available (start client with encryption enabled)");
1114
- }
1115
-
1116
- const trimmedRecoveryKey = rawRecoveryKey.trim();
1117
- if (!trimmedRecoveryKey) {
1118
- return await fail("Matrix recovery key is required");
1119
- }
1120
-
1121
- try {
1122
- this.recoveryKeyStore.stageEncodedRecoveryKey({
1123
- encodedPrivateKey: trimmedRecoveryKey,
1124
- keyId: await this.resolveDefaultSecretStorageKeyId(crypto),
1125
- });
1126
- } catch (err) {
1127
- return await fail(formatMatrixErrorMessage(err));
1128
- }
1129
-
1130
- try {
1131
- const cryptoBootstrapper = this.cryptoBootstrapper;
1132
- if (!cryptoBootstrapper) {
1133
- return await fail("Matrix crypto bootstrapper is not available");
1134
- }
1135
- await cryptoBootstrapper.bootstrap(crypto, {
1136
- allowAutomaticCrossSigningReset: false,
1137
- });
1138
- await this.enableTrustedRoomKeyBackupIfPossible(crypto);
1139
- const status = await this.getOwnDeviceVerificationStatus();
1140
- if (!status.verified) {
1141
- this.recoveryKeyStore.discardStagedRecoveryKey();
1142
- return {
1143
- success: false,
1144
- error:
1145
- "Matrix device is still not verified by its owner after applying the recovery key. Ensure cross-signing is available and the device is signed.",
1146
- ...status,
1147
- };
1148
- }
1149
- const backupError = resolveMatrixRoomKeyBackupReadinessError(status.backup, {
1150
- requireServerBackup: false,
1151
- });
1152
- if (backupError) {
1153
- this.recoveryKeyStore.discardStagedRecoveryKey();
1154
- return {
1155
- success: false,
1156
- error: backupError,
1157
- ...status,
1158
- };
1159
- }
1160
-
1161
- this.recoveryKeyStore.commitStagedRecoveryKey({
1162
- keyId: await this.resolveDefaultSecretStorageKeyId(crypto),
1163
- });
1164
- const committedStatus = await this.getOwnDeviceVerificationStatus();
1165
- return {
1166
- success: true,
1167
- verifiedAt: new Date().toISOString(),
1168
- ...committedStatus,
1169
- };
1170
- } catch (err) {
1171
- this.recoveryKeyStore.discardStagedRecoveryKey();
1172
- return await fail(formatMatrixErrorMessage(err));
1173
- }
1174
- }
1175
-
1176
- async restoreRoomKeyBackup(
1177
- params: {
1178
- recoveryKey?: string;
1179
- } = {},
1180
- ): Promise<MatrixRoomKeyBackupRestoreResult> {
1181
- let loadedFromSecretStorage = false;
1182
- const fail = async (error: string): Promise<MatrixRoomKeyBackupRestoreResult> => {
1183
- const backup = await this.getRoomKeyBackupStatus();
1184
- return {
1185
- success: false,
1186
- error,
1187
- backupVersion: backup.serverVersion,
1188
- imported: 0,
1189
- total: 0,
1190
- loadedFromSecretStorage,
1191
- backup,
1192
- };
1193
- };
1194
-
1195
- if (!this.encryptionEnabled) {
1196
- return await fail("Matrix encryption is disabled for this client");
1197
- }
1198
-
1199
- await this.ensureStartedForCryptoControlPlane();
1200
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
1201
- if (!crypto) {
1202
- return await fail("Matrix crypto is not available (start client with encryption enabled)");
1203
- }
1204
-
1205
- try {
1206
- const rawRecoveryKey = params.recoveryKey?.trim();
1207
- if (rawRecoveryKey) {
1208
- this.recoveryKeyStore.stageEncodedRecoveryKey({
1209
- encodedPrivateKey: rawRecoveryKey,
1210
- keyId: await this.resolveDefaultSecretStorageKeyId(crypto),
1211
- });
1212
- }
1213
-
1214
- const backup = await this.getRoomKeyBackupStatus();
1215
- loadedFromSecretStorage = backup.keyLoadAttempted && !backup.keyLoadError;
1216
- const backupError = resolveMatrixRoomKeyBackupReadinessError(backup, {
1217
- requireServerBackup: true,
1218
- });
1219
- if (backupError) {
1220
- this.recoveryKeyStore.discardStagedRecoveryKey();
1221
- return await fail(backupError);
1222
- }
1223
- if (typeof crypto.restoreKeyBackup !== "function") {
1224
- this.recoveryKeyStore.discardStagedRecoveryKey();
1225
- return await fail("Matrix crypto backend does not support full key backup restore");
1226
- }
1227
-
1228
- const restore = await crypto.restoreKeyBackup();
1229
- if (rawRecoveryKey) {
1230
- this.recoveryKeyStore.commitStagedRecoveryKey({
1231
- keyId: await this.resolveDefaultSecretStorageKeyId(crypto),
1232
- });
1233
- }
1234
- const finalBackup = await this.getRoomKeyBackupStatus();
1235
- return {
1236
- success: true,
1237
- backupVersion: backup.serverVersion,
1238
- imported: typeof restore.imported === "number" ? restore.imported : 0,
1239
- total: typeof restore.total === "number" ? restore.total : 0,
1240
- loadedFromSecretStorage,
1241
- restoredAt: new Date().toISOString(),
1242
- backup: finalBackup,
1243
- };
1244
- } catch (err) {
1245
- this.recoveryKeyStore.discardStagedRecoveryKey();
1246
- return await fail(formatMatrixErrorMessage(err));
1247
- }
1248
- }
1249
-
1250
- async resetRoomKeyBackup(): Promise<MatrixRoomKeyBackupResetResult> {
1251
- let previousVersion: string | null = null;
1252
- let deletedVersion: string | null = null;
1253
- const fail = async (error: string): Promise<MatrixRoomKeyBackupResetResult> => {
1254
- const backup = await this.getRoomKeyBackupStatus();
1255
- return {
1256
- success: false,
1257
- error,
1258
- previousVersion,
1259
- deletedVersion,
1260
- createdVersion: backup.serverVersion,
1261
- backup,
1262
- };
1263
- };
1264
-
1265
- if (!this.encryptionEnabled) {
1266
- return await fail("Matrix encryption is disabled for this client");
1267
- }
1268
-
1269
- await this.ensureStartedForCryptoControlPlane();
1270
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
1271
- if (!crypto) {
1272
- return await fail("Matrix crypto is not available (start client with encryption enabled)");
1273
- }
1274
-
1275
- previousVersion = await this.resolveRoomKeyBackupVersion();
1276
-
1277
- // Probe backup-secret access directly before reset. This keeps the reset preflight
1278
- // focused on durable secret-storage health instead of the broader backup status flow,
1279
- // and still catches stale SSSS/recovery-key state even when the server backup is gone.
1280
- const forceNewSecretStorage =
1281
- await this.shouldForceSecretStorageRecreationForBackupReset(crypto);
1282
-
1283
- try {
1284
- if (previousVersion) {
1285
- try {
1286
- await this.doRequest(
1287
- "DELETE",
1288
- `/_lobi/client/v3/room_keys/version/${encodeURIComponent(previousVersion)}`,
1289
- );
1290
- } catch (err) {
1291
- if (!isMatrixNotFoundError(err)) {
1292
- throw err;
1293
- }
1294
- }
1295
- deletedVersion = previousVersion;
1296
- }
1297
-
1298
- await this.recoveryKeyStore.bootstrapSecretStorageWithRecoveryKey(crypto, {
1299
- setupNewKeyBackup: true,
1300
- // Force SSSS recreation when the existing SSSS key is broken (bad MAC), so
1301
- // the new backup key is written into a fresh SSSS consistent with recovery_key.json.
1302
- forceNewSecretStorage,
1303
- // Also allow recreation if bootstrapSecretStorage itself surfaces a repairable
1304
- // error (e.g. bad MAC from a different SSSS entry).
1305
- allowSecretStorageRecreateWithoutRecoveryKey: true,
1306
- });
1307
- await this.enableTrustedRoomKeyBackupIfPossible(crypto);
1308
-
1309
- const backup = await this.getRoomKeyBackupStatus();
1310
- const createdVersion = backup.serverVersion;
1311
- if (!createdVersion) {
1312
- return await fail("Matrix room key backup is still missing after reset.");
1313
- }
1314
- if (backup.activeVersion !== createdVersion) {
1315
- return await fail(
1316
- "Matrix room key backup was recreated on the server but is not active on this device.",
1317
- );
1318
- }
1319
- if (backup.decryptionKeyCached === false) {
1320
- return await fail(
1321
- "Matrix room key backup was recreated but its decryption key is not cached on this device.",
1322
- );
1323
- }
1324
- if (backup.matchesDecryptionKey === false) {
1325
- return await fail(
1326
- "Matrix room key backup was recreated but this device does not have the matching backup decryption key.",
1327
- );
1328
- }
1329
- if (backup.trusted === false) {
1330
- return await fail(
1331
- "Matrix room key backup was recreated but is not trusted on this device.",
1332
- );
1333
- }
1334
-
1335
- return {
1336
- success: true,
1337
- previousVersion,
1338
- deletedVersion,
1339
- createdVersion,
1340
- resetAt: new Date().toISOString(),
1341
- backup,
1342
- };
1343
- } catch (err) {
1344
- return await fail(formatMatrixErrorMessage(err));
1345
- }
1346
- }
1347
-
1348
- async getOwnCrossSigningPublicationStatus(): Promise<MatrixOwnCrossSigningPublicationStatus> {
1349
- const userId = this.client.getUserId() ?? this.selfUserId ?? null;
1350
- if (!userId) {
1351
- return {
1352
- userId: null,
1353
- masterKeyPublished: false,
1354
- selfSigningKeyPublished: false,
1355
- userSigningKeyPublished: false,
1356
- published: false,
1357
- };
1358
- }
1359
-
1360
- try {
1361
- const response = (await this.doRequest("POST", "/_lobi/client/v3/keys/query", undefined, {
1362
- device_keys: { [userId]: [] as string[] },
1363
- })) as {
1364
- master_keys?: Record<string, unknown>;
1365
- self_signing_keys?: Record<string, unknown>;
1366
- user_signing_keys?: Record<string, unknown>;
1367
- };
1368
- const masterKeyPublished = Boolean(response.master_keys?.[userId]);
1369
- const selfSigningKeyPublished = Boolean(response.self_signing_keys?.[userId]);
1370
- const userSigningKeyPublished = Boolean(response.user_signing_keys?.[userId]);
1371
- return {
1372
- userId,
1373
- masterKeyPublished,
1374
- selfSigningKeyPublished,
1375
- userSigningKeyPublished,
1376
- published: masterKeyPublished && selfSigningKeyPublished && userSigningKeyPublished,
1377
- };
1378
- } catch {
1379
- return {
1380
- userId,
1381
- masterKeyPublished: false,
1382
- selfSigningKeyPublished: false,
1383
- userSigningKeyPublished: false,
1384
- published: false,
1385
- };
1386
- }
1387
- }
1388
-
1389
- async bootstrapOwnDeviceVerification(params?: {
1390
- recoveryKey?: string;
1391
- forceResetCrossSigning?: boolean;
1392
- }): Promise<MatrixVerificationBootstrapResult> {
1393
- const pendingVerifications = async (): Promise<number> =>
1394
- this.crypto ? (await this.crypto.listVerifications()).length : 0;
1395
- if (!this.encryptionEnabled) {
1396
- return {
1397
- success: false,
1398
- error: "Matrix encryption is disabled for this client",
1399
- verification: await this.getOwnDeviceVerificationStatus(),
1400
- crossSigning: await this.getOwnCrossSigningPublicationStatus(),
1401
- pendingVerifications: await pendingVerifications(),
1402
- cryptoBootstrap: null,
1403
- };
1404
- }
1405
-
1406
- let bootstrapError: string | undefined;
1407
- let bootstrapSummary: MatrixCryptoBootstrapResult | null = null;
1408
- try {
1409
- await this.ensureStartedForCryptoControlPlane();
1410
- await this.ensureCryptoSupportInitialized();
1411
- const crypto = this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined;
1412
- if (!crypto) {
1413
- throw new Error("Matrix crypto is not available (start client with encryption enabled)");
1414
- }
1415
-
1416
- const rawRecoveryKey = params?.recoveryKey?.trim();
1417
- if (rawRecoveryKey) {
1418
- this.recoveryKeyStore.stageEncodedRecoveryKey({
1419
- encodedPrivateKey: rawRecoveryKey,
1420
- keyId: await this.resolveDefaultSecretStorageKeyId(crypto),
1421
- });
1422
- }
1423
-
1424
- const cryptoBootstrapper = this.cryptoBootstrapper;
1425
- if (!cryptoBootstrapper) {
1426
- throw new Error("Matrix crypto bootstrapper is not available");
1427
- }
1428
- bootstrapSummary = await cryptoBootstrapper.bootstrap(
1429
- crypto,
1430
- createMatrixExplicitBootstrapOptions(params),
1431
- );
1432
- await this.ensureRoomKeyBackupEnabled(crypto);
1433
- } catch (err) {
1434
- this.recoveryKeyStore.discardStagedRecoveryKey();
1435
- bootstrapError = formatMatrixErrorMessage(err);
1436
- }
1437
-
1438
- const verification = await this.getOwnDeviceVerificationStatus();
1439
- const crossSigning = await this.getOwnCrossSigningPublicationStatus();
1440
- const verificationError =
1441
- verification.verified && crossSigning.published
1442
- ? null
1443
- : (bootstrapError ??
1444
- "Matrix verification bootstrap did not produce a device verified by its owner with published cross-signing keys");
1445
- const backupError =
1446
- verificationError === null
1447
- ? resolveMatrixRoomKeyBackupReadinessError(verification.backup, {
1448
- requireServerBackup: true,
1449
- })
1450
- : null;
1451
- const success = verificationError === null && backupError === null;
1452
- if (success) {
1453
- this.recoveryKeyStore.commitStagedRecoveryKey({
1454
- keyId: await this.resolveDefaultSecretStorageKeyId(
1455
- this.client.getCrypto() as MatrixCryptoBootstrapApi | undefined,
1456
- ),
1457
- });
1458
- } else {
1459
- this.recoveryKeyStore.discardStagedRecoveryKey();
1460
- }
1461
- const error = success ? undefined : (backupError ?? verificationError ?? undefined);
1462
- return {
1463
- success,
1464
- error,
1465
- verification: success ? await this.getOwnDeviceVerificationStatus() : verification,
1466
- crossSigning,
1467
- pendingVerifications: await pendingVerifications(),
1468
- cryptoBootstrap: bootstrapSummary,
1469
- };
1470
- }
1471
-
1472
- async listOwnDevices(): Promise<MatrixOwnDeviceInfo[]> {
1473
- const currentDeviceId = this.client.getDeviceId()?.trim() || null;
1474
- const devices = await this.client.getDevices();
1475
- const entries = Array.isArray(devices?.devices) ? devices.devices : [];
1476
- return entries.map((device) => ({
1477
- deviceId: device.device_id,
1478
- displayName: device.display_name?.trim() || null,
1479
- lastSeenIp: device.last_seen_ip?.trim() || null,
1480
- lastSeenTs:
1481
- typeof device.last_seen_ts === "number" && Number.isFinite(device.last_seen_ts)
1482
- ? device.last_seen_ts
1483
- : null,
1484
- current: currentDeviceId !== null && device.device_id === currentDeviceId,
1485
- }));
1486
- }
1487
-
1488
- async deleteOwnDevices(deviceIds: string[]): Promise<MatrixOwnDeviceDeleteResult> {
1489
- const uniqueDeviceIds = [...new Set(deviceIds.map((value) => value.trim()).filter(Boolean))];
1490
- const currentDeviceId = this.client.getDeviceId()?.trim() || null;
1491
- const protectedDeviceIds = uniqueDeviceIds.filter((deviceId) => deviceId === currentDeviceId);
1492
- if (protectedDeviceIds.length > 0) {
1493
- throw new Error(`Refusing to delete the current Matrix device: ${protectedDeviceIds[0]}`);
1494
- }
1495
-
1496
- const deleteWithAuth = async (authData?: Record<string, unknown>): Promise<void> => {
1497
- await this.client.deleteMultipleDevices(uniqueDeviceIds, authData as never);
1498
- };
1499
-
1500
- if (uniqueDeviceIds.length > 0) {
1501
- try {
1502
- await deleteWithAuth();
1503
- } catch (err) {
1504
- const session =
1505
- err &&
1506
- typeof err === "object" &&
1507
- "data" in err &&
1508
- err.data &&
1509
- typeof err.data === "object" &&
1510
- "session" in err.data &&
1511
- typeof err.data.session === "string"
1512
- ? err.data.session
1513
- : null;
1514
- const userId = await this.getUserId().catch(() => this.selfUserId);
1515
- if (!session || !userId || !this.password?.trim()) {
1516
- throw err;
1517
- }
1518
- await deleteWithAuth({
1519
- type: "m.login.password",
1520
- session,
1521
- identifier: { type: "m.id.user", user: userId },
1522
- password: this.password,
1523
- });
1524
- }
1525
- }
1526
-
1527
- return {
1528
- currentDeviceId,
1529
- deletedDeviceIds: uniqueDeviceIds,
1530
- remainingDevices: await this.listOwnDevices(),
1531
- };
1532
- }
1533
-
1534
- private async resolveActiveRoomKeyBackupVersion(
1535
- crypto: MatrixCryptoBootstrapApi,
1536
- ): Promise<string | null> {
1537
- if (typeof crypto.getActiveSessionBackupVersion !== "function") {
1538
- return null;
1539
- }
1540
- const version = await crypto.getActiveSessionBackupVersion().catch(() => null);
1541
- return normalizeOptionalString(version);
1542
- }
1543
-
1544
- private async resolveCachedRoomKeyBackupDecryptionKey(
1545
- crypto: MatrixCryptoBootstrapApi,
1546
- ): Promise<boolean | null> {
1547
- const getSessionBackupPrivateKey = crypto.getSessionBackupPrivateKey; // pragma: allowlist secret
1548
- if (typeof getSessionBackupPrivateKey !== "function") {
1549
- return null;
1550
- }
1551
- const key = await getSessionBackupPrivateKey.call(crypto).catch(() => null); // pragma: allowlist secret
1552
- return key ? key.length > 0 : false;
1553
- }
1554
-
1555
- private async resolveRoomKeyBackupLocalState(
1556
- crypto: MatrixCryptoBootstrapApi,
1557
- ): Promise<{ activeVersion: string | null; decryptionKeyCached: boolean | null }> {
1558
- const [activeVersion, decryptionKeyCached] = await Promise.all([
1559
- this.resolveActiveRoomKeyBackupVersion(crypto),
1560
- this.resolveCachedRoomKeyBackupDecryptionKey(crypto),
1561
- ]);
1562
- return { activeVersion, decryptionKeyCached };
1563
- }
1564
-
1565
- private async shouldForceSecretStorageRecreationForBackupReset(
1566
- crypto: MatrixCryptoBootstrapApi,
1567
- ): Promise<boolean> {
1568
- const decryptionKeyCached = await this.resolveCachedRoomKeyBackupDecryptionKey(crypto);
1569
- if (decryptionKeyCached !== false) {
1570
- return false;
1571
- }
1572
- const loadSessionBackupPrivateKeyFromSecretStorage =
1573
- crypto.loadSessionBackupPrivateKeyFromSecretStorage; // pragma: allowlist secret
1574
- if (typeof loadSessionBackupPrivateKeyFromSecretStorage !== "function") {
1575
- return false;
1576
- }
1577
- try {
1578
- await loadSessionBackupPrivateKeyFromSecretStorage.call(crypto); // pragma: allowlist secret
1579
- return false;
1580
- } catch (err) {
1581
- return isRepairableSecretStorageAccessError(err);
1582
- }
1583
- }
1584
-
1585
- private async resolveRoomKeyBackupTrustState(
1586
- crypto: MatrixCryptoBootstrapApi,
1587
- fallbackVersion: string | null,
1588
- ): Promise<{
1589
- serverVersion: string | null;
1590
- trusted: boolean | null;
1591
- matchesDecryptionKey: boolean | null;
1592
- }> {
1593
- let serverVersion = fallbackVersion;
1594
- let trusted: boolean | null = null;
1595
- let matchesDecryptionKey: boolean | null = null;
1596
- if (typeof crypto.getKeyBackupInfo === "function") {
1597
- const info = await crypto.getKeyBackupInfo().catch(() => null);
1598
- serverVersion = normalizeOptionalString(info?.version) ?? serverVersion;
1599
- if (info && typeof crypto.isKeyBackupTrusted === "function") {
1600
- const trustInfo = await crypto.isKeyBackupTrusted(info).catch(() => null);
1601
- trusted = typeof trustInfo?.trusted === "boolean" ? trustInfo.trusted : null;
1602
- matchesDecryptionKey =
1603
- typeof trustInfo?.matchesDecryptionKey === "boolean"
1604
- ? trustInfo.matchesDecryptionKey
1605
- : null;
1606
- }
1607
- }
1608
- return { serverVersion, trusted, matchesDecryptionKey };
1609
- }
1610
-
1611
- private async resolveDefaultSecretStorageKeyId(
1612
- crypto: MatrixCryptoBootstrapApi | undefined,
1613
- ): Promise<string | null | undefined> {
1614
- const getSecretStorageStatus = crypto?.getSecretStorageStatus; // pragma: allowlist secret
1615
- if (typeof getSecretStorageStatus !== "function") {
1616
- return undefined;
1617
- }
1618
- const status = await getSecretStorageStatus.call(crypto).catch(() => null); // pragma: allowlist secret
1619
- return status?.defaultKeyId;
1620
- }
1621
-
1622
- private async resolveRoomKeyBackupVersion(): Promise<string | null> {
1623
- try {
1624
- const response = (await this.doRequest("GET", "/_lobi/client/v3/room_keys/version")) as {
1625
- version?: string;
1626
- };
1627
- return normalizeOptionalString(response.version);
1628
- } catch {
1629
- return null;
1630
- }
1631
- }
1632
-
1633
- private async enableTrustedRoomKeyBackupIfPossible(
1634
- crypto: MatrixCryptoBootstrapApi,
1635
- ): Promise<void> {
1636
- if (typeof crypto.checkKeyBackupAndEnable !== "function") {
1637
- return;
1638
- }
1639
- await crypto.checkKeyBackupAndEnable();
1640
- }
1641
-
1642
- private async ensureRoomKeyBackupEnabled(crypto: MatrixCryptoBootstrapApi): Promise<void> {
1643
- const existingVersion = await this.resolveRoomKeyBackupVersion();
1644
- if (existingVersion) {
1645
- return;
1646
- }
1647
- LogService.info(
1648
- "MatrixClientLite",
1649
- "No room key backup version found on server, creating one via secret storage bootstrap",
1650
- );
1651
- await this.recoveryKeyStore.bootstrapSecretStorageWithRecoveryKey(crypto, {
1652
- setupNewKeyBackup: true,
1653
- });
1654
- const createdVersion = await this.resolveRoomKeyBackupVersion();
1655
- if (!createdVersion) {
1656
- throw new Error("Matrix room key backup is still missing after bootstrap");
1657
- }
1658
- LogService.info("MatrixClientLite", `Room key backup enabled (version ${createdVersion})`);
1659
- }
1660
-
1661
- private registerBridge(): void {
1662
- if (this.bridgeRegistered || !this.decryptBridge) {
1663
- return;
1664
- }
1665
- this.bridgeRegistered = true;
1666
- const decryptBridge = this.decryptBridge;
1667
-
1668
- this.client.on(ClientEvent.Event, (event: MatrixEvent) => {
1669
- const roomId = event.getRoomId();
1670
- if (!roomId) {
1671
- return;
1672
- }
1673
-
1674
- const raw = matrixEventToRaw(event);
1675
- const isEncryptedEvent = raw.type === "m.room.encrypted";
1676
- this.emitter.emit("room.event", roomId, raw);
1677
- if (isEncryptedEvent) {
1678
- this.emitter.emit("room.encrypted_event", roomId, raw);
1679
- } else {
1680
- if (decryptBridge.shouldEmitUnencryptedMessage(roomId, raw.event_id)) {
1681
- this.emitter.emit("room.message", roomId, raw);
1682
- }
1683
- }
1684
-
1685
- const stateKey = raw.state_key ?? "";
1686
- const selfUserId = this.client.getUserId() ?? this.selfUserId ?? "";
1687
- const membership =
1688
- raw.type === "m.room.member"
1689
- ? (raw.content as { membership?: string }).membership
1690
- : undefined;
1691
- if (stateKey && selfUserId && stateKey === selfUserId) {
1692
- if (membership === "invite") {
1693
- this.emitter.emit("room.invite", roomId, raw);
1694
- } else if (membership === "join") {
1695
- this.emitter.emit("room.join", roomId, raw);
1696
- }
1697
- }
1698
-
1699
- if (isEncryptedEvent) {
1700
- decryptBridge.attachEncryptedEvent(event, roomId);
1701
- }
1702
- });
1703
-
1704
- // Some SDK invite transitions are surfaced as room lifecycle events instead of raw timeline events.
1705
- this.client.on(ClientEvent.Room, (room) => {
1706
- this.emitMembershipForRoom(room);
1707
- });
1708
- this.client.on(
1709
- ClientEvent.Sync,
1710
- (state: MatrixSyncState, prevState: string | null, data?: unknown) => {
1711
- this.currentSyncState = state;
1712
- const error =
1713
- data && typeof data === "object" && "error" in data
1714
- ? (data as { error?: unknown }).error
1715
- : undefined;
1716
- this.emitter.emit("sync.state", state, prevState, error);
1717
- },
1718
- );
1719
- this.client.on(ClientEvent.SyncUnexpectedError, (error: Error) => {
1720
- this.emitter.emit("sync.unexpected_error", error);
1721
- });
1722
- }
1723
-
1724
- private emitMembershipForRoom(room: unknown): void {
1725
- const roomObj = room as {
1726
- roomId?: string;
1727
- getMyMembership?: () => string | null | undefined;
1728
- selfMembership?: string | null | undefined;
1729
- };
1730
- const roomId = roomObj.roomId?.trim();
1731
- if (!roomId) {
1732
- return;
1733
- }
1734
- const membership = roomObj.getMyMembership?.() ?? roomObj.selfMembership ?? undefined;
1735
- const selfUserId = this.client.getUserId() ?? this.selfUserId ?? "";
1736
- if (!selfUserId) {
1737
- return;
1738
- }
1739
- const raw: MatrixRawEvent = {
1740
- event_id: `$membership-${roomId}-${Date.now()}`,
1741
- type: "m.room.member",
1742
- sender: selfUserId,
1743
- state_key: selfUserId,
1744
- content: { membership },
1745
- origin_server_ts: Date.now(),
1746
- unsigned: { age: 0 },
1747
- };
1748
- if (membership === "invite") {
1749
- this.emitter.emit("room.invite", roomId, raw);
1750
- return;
1751
- }
1752
- if (membership === "join") {
1753
- this.emitter.emit("room.join", roomId, raw);
1754
- }
1755
- }
1756
-
1757
- private emitOutstandingInviteEvents(): void {
1758
- const listRooms = (this.client as { getRooms?: () => unknown[] }).getRooms;
1759
- if (typeof listRooms !== "function") {
1760
- return;
1761
- }
1762
- const rooms = listRooms.call(this.client);
1763
- if (!Array.isArray(rooms)) {
1764
- return;
1765
- }
1766
- for (const room of rooms) {
1767
- this.emitMembershipForRoom(room);
1768
- }
1769
- }
1770
-
1771
- private async refreshDmCache(): Promise<boolean> {
1772
- const direct = await this.getAccountData("m.direct");
1773
- this.dmRoomIds.clear();
1774
- if (!direct || typeof direct !== "object") {
1775
- return false;
1776
- }
1777
- for (const value of Object.values(direct)) {
1778
- if (!Array.isArray(value)) {
1779
- continue;
1780
- }
1781
- for (const roomId of value) {
1782
- if (typeof roomId === "string" && roomId.trim()) {
1783
- this.dmRoomIds.add(roomId);
1784
- }
1785
- }
1786
- }
1787
- return true;
1788
- }
1789
- }