@kodelyth/matrix 2026.5.39 → 2026.5.42

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 (321) hide show
  1. package/CHANGELOG.md +321 -0
  2. package/SPEC-SUPPORT.md +116 -0
  3. package/api.ts +38 -0
  4. package/auth-presence.ts +56 -0
  5. package/channel-plugin-api.ts +3 -0
  6. package/cli-metadata.ts +11 -0
  7. package/contract-api.ts +17 -0
  8. package/dist/account-selection-Y50DNJ2l.js +158 -0
  9. package/dist/active-client-CmFdvPdO.js +20 -0
  10. package/dist/api.js +12 -0
  11. package/dist/approval-handler.runtime-BIi4fL0R.js +377 -0
  12. package/dist/approval-ids-BGHK7PnZ.js +7 -0
  13. package/dist/approval-reaction-auth-CL0-nCNV.js +27 -0
  14. package/dist/approval-reactions-nDm2x-K5.js +162 -0
  15. package/dist/async-lock-SsmtFXtt.js +19 -0
  16. package/dist/auth-presence.js +26 -0
  17. package/dist/backup-health-3BHbHxyd.js +60 -0
  18. package/dist/channel-C0kCyTNB.js +1380 -0
  19. package/dist/channel-plugin-api.js +2 -0
  20. package/dist/channel.runtime-CdrdEN-0.js +250 -0
  21. package/dist/cli-FtY6Nuzw.js +1338 -0
  22. package/dist/cli-metadata-Dkwua7CB.js +22 -0
  23. package/dist/cli-metadata.js +2 -0
  24. package/dist/client-BnohYygh.js +25 -0
  25. package/dist/client-PhrTwuC4.js +30 -0
  26. package/dist/client-bootstrap-Mcj8ChJ5.js +114 -0
  27. package/dist/config-paths-DVvt6vM3.js +114 -0
  28. package/dist/config-schema-BMGOlhdI.js +308 -0
  29. package/dist/config-secret-input.runtime-Dv_4Br_f.js +2 -0
  30. package/dist/contract-api.js +8 -0
  31. package/dist/create-client-J0htTaRj.js +64 -0
  32. package/dist/credentials-B7GsBbgQ.js +56 -0
  33. package/dist/credentials-read-8fE4qoWs.js +112 -0
  34. package/dist/credentials-write.runtime-BibplB4Y.js +17 -0
  35. package/dist/crypto-node.runtime-D9qxgRPa.js +12 -0
  36. package/dist/crypto-runtime-1pKW4O2F.js +1214 -0
  37. package/dist/deps-DVpDS81G.js +208 -0
  38. package/dist/device-health-Ct2wDSPG.js +16 -0
  39. package/dist/directory-live-i3T8uORc.js +150 -0
  40. package/dist/doctor-contract-BLzYHl_9.js +246 -0
  41. package/dist/doctor-contract-api.js +2 -0
  42. package/dist/doctor-diR5gE7D.js +153 -0
  43. package/dist/draft-stream-HpPJ_VJt.js +143 -0
  44. package/dist/encryption-guidance-BNEgckrZ.js +15 -0
  45. package/dist/env-auth-UFiTGkDM.js +63 -0
  46. package/dist/env-vars-EQKQv-FE.js +63 -0
  47. package/dist/errors-BETj3zr9.js +17 -0
  48. package/dist/exec-approval-resolver-BxPorU_t.js +15 -0
  49. package/dist/helper-api.js +4 -0
  50. package/dist/http-client-DoQgbQsU.js +331 -0
  51. package/dist/index.js +46 -0
  52. package/dist/legacy-crypto-inspector-zK0hDCbt.js +41 -0
  53. package/dist/legacy-crypto-restore-DSFIXuDo.js +85 -0
  54. package/dist/logging-Df7aPD1z.js +99 -0
  55. package/dist/matrix-migration.runtime-BNoT1Prt.js +525 -0
  56. package/dist/media-text-ZhGA8Pcs.js +146 -0
  57. package/dist/messages-CRA9WGg0.js +140 -0
  58. package/dist/migration-snapshot-backup-BR-xD7Ew.js +69 -0
  59. package/dist/migration-snapshot.runtime-BLcy_Nvw.js +2 -0
  60. package/dist/monitor-DQm7_13y.js +4331 -0
  61. package/dist/plugin-entry.handlers.runtime.js +51 -0
  62. package/dist/probe.runtime-CjJS53Kz.js +3 -0
  63. package/dist/profile-update-DqkPgZ1P.js +68 -0
  64. package/dist/reaction-common-CmVLzP-u.js +71 -0
  65. package/dist/reaction-events-D0nUJuZV.js +121 -0
  66. package/dist/record-shared-DGvSFn5M.js +2 -0
  67. package/dist/resolve-targets-ChECUzD2.js +140 -0
  68. package/dist/resolver.runtime-hdY3n0GO.js +5 -0
  69. package/dist/rolldown-runtime-DUslC3ob.js +14 -0
  70. package/dist/route-xRKj_ESW.js +161 -0
  71. package/dist/runtime-B-Fyrmxo.js +8 -0
  72. package/dist/runtime-api-BYXXkxq2.js +24 -0
  73. package/dist/runtime-api.js +25 -0
  74. package/dist/runtime-heavy-api.js +3 -0
  75. package/dist/runtime-lwTSy9Yt.js +6 -0
  76. package/dist/runtime-setter-api.js +2 -0
  77. package/dist/sdk-Jhq7mLtD.js +1704 -0
  78. package/dist/secret-contract-DEMcDsjl.js +120 -0
  79. package/dist/secret-contract-api.js +2 -0
  80. package/dist/send-CJunc6QM.js +1517 -0
  81. package/dist/setup-bootstrap-rJ0qZWPe.js +62 -0
  82. package/dist/setup-core-BEYoXF3J.js +677 -0
  83. package/dist/setup-entry.js +19 -0
  84. package/dist/setup-plugin-api.js +43 -0
  85. package/dist/setup-surface-c28ON6jq.js +537 -0
  86. package/dist/shared-D6MFMnpG.js +642 -0
  87. package/dist/startup-abort-B2J3MU_h.js +109 -0
  88. package/dist/startup-verification-CkD4Cwce.js +132 -0
  89. package/dist/storage-nyO0DOFE.js +281 -0
  90. package/dist/storage-paths-BTAketfg.js +52 -0
  91. package/dist/subagent-hooks-api-Dr_xnMRG.js +170 -0
  92. package/dist/subagent-hooks-api.js +2 -0
  93. package/dist/sync-state-Bx0gPaGA.js +12 -0
  94. package/dist/target-ids-Bsazo8si.js +77 -0
  95. package/dist/test-api.js +4 -0
  96. package/dist/thread-binding-api-IGU0-L70.js +17 -0
  97. package/dist/thread-binding-api.js +2 -0
  98. package/dist/thread-bindings-FjAZmDUP.js +352 -0
  99. package/dist/thread-bindings-runtime.js +2 -0
  100. package/dist/thread-bindings-shared-fvfP7jVs.js +97 -0
  101. package/dist/timeout-abort-signal-DpSHDHhR.js +2 -0
  102. package/dist/tool-actions.runtime-Cbo7YcYZ.js +532 -0
  103. package/dist/url-validation-DlrXNjAE.js +36 -0
  104. package/dist/verification-7tDPRpJU.js +345 -0
  105. package/doctor-contract-api.ts +1 -0
  106. package/helper-api.ts +3 -0
  107. package/index.ts +55 -0
  108. package/klaw.plugin.json +3 -891
  109. package/package.json +4 -4
  110. package/plugin-entry.handlers.runtime.ts +1 -0
  111. package/runtime-api.ts +72 -0
  112. package/runtime-heavy-api.ts +1 -0
  113. package/runtime-setter-api.ts +3 -0
  114. package/secret-contract-api.ts +5 -0
  115. package/setup-entry.ts +17 -0
  116. package/setup-plugin-api.ts +3 -0
  117. package/src/account-selection.ts +223 -0
  118. package/src/actions.ts +346 -0
  119. package/src/approval-auth.ts +25 -0
  120. package/src/approval-handler.runtime.ts +592 -0
  121. package/src/approval-ids.ts +6 -0
  122. package/src/approval-native.ts +345 -0
  123. package/src/approval-reaction-auth.ts +45 -0
  124. package/src/approval-reactions.ts +313 -0
  125. package/src/auth-precedence.ts +61 -0
  126. package/src/channel-account-paths.ts +97 -0
  127. package/src/channel.runtime.ts +17 -0
  128. package/src/channel.setup.ts +48 -0
  129. package/src/channel.ts +667 -0
  130. package/src/cli-metadata.ts +19 -0
  131. package/src/cli.ts +2298 -0
  132. package/src/config-adapter.ts +41 -0
  133. package/src/config-schema.ts +159 -0
  134. package/src/config-ui-hints.ts +56 -0
  135. package/src/directory-live.ts +238 -0
  136. package/src/doctor-contract.ts +287 -0
  137. package/src/doctor.ts +262 -0
  138. package/src/env-vars.ts +92 -0
  139. package/src/exec-approval-resolver.ts +23 -0
  140. package/src/exec-approvals.ts +287 -0
  141. package/src/group-mentions.ts +41 -0
  142. package/src/legacy-crypto-inspector-availability.ts +60 -0
  143. package/src/legacy-crypto.ts +531 -0
  144. package/src/legacy-state.ts +156 -0
  145. package/src/matrix/account-config.ts +175 -0
  146. package/src/matrix/accounts.ts +194 -0
  147. package/src/matrix/actions/client.ts +31 -0
  148. package/src/matrix/actions/devices.ts +34 -0
  149. package/src/matrix/actions/limits.ts +6 -0
  150. package/src/matrix/actions/messages.ts +129 -0
  151. package/src/matrix/actions/pins.ts +63 -0
  152. package/src/matrix/actions/polls.ts +109 -0
  153. package/src/matrix/actions/profile.ts +37 -0
  154. package/src/matrix/actions/reactions.ts +59 -0
  155. package/src/matrix/actions/room.ts +71 -0
  156. package/src/matrix/actions/summary.ts +88 -0
  157. package/src/matrix/actions/types.ts +63 -0
  158. package/src/matrix/actions/verification.ts +589 -0
  159. package/src/matrix/actions.ts +37 -0
  160. package/src/matrix/active-client.ts +26 -0
  161. package/src/matrix/async-lock.ts +18 -0
  162. package/src/matrix/backup-health.ts +124 -0
  163. package/src/matrix/client/config-runtime-api.ts +9 -0
  164. package/src/matrix/client/config-secret-input.runtime.ts +1 -0
  165. package/src/matrix/client/config.ts +853 -0
  166. package/src/matrix/client/create-client.ts +105 -0
  167. package/src/matrix/client/env-auth.ts +95 -0
  168. package/src/matrix/client/file-sync-store.ts +289 -0
  169. package/src/matrix/client/logging.ts +140 -0
  170. package/src/matrix/client/migration-snapshot.runtime.ts +1 -0
  171. package/src/matrix/client/private-network-host.ts +1 -0
  172. package/src/matrix/client/runtime.ts +4 -0
  173. package/src/matrix/client/shared.ts +316 -0
  174. package/src/matrix/client/storage.ts +543 -0
  175. package/src/matrix/client/types.ts +50 -0
  176. package/src/matrix/client/url-validation.ts +73 -0
  177. package/src/matrix/client-bootstrap.ts +173 -0
  178. package/src/matrix/client.ts +23 -0
  179. package/src/matrix/config-paths.ts +31 -0
  180. package/src/matrix/config-update.ts +292 -0
  181. package/src/matrix/credentials-read.ts +208 -0
  182. package/src/matrix/credentials-write.runtime.ts +35 -0
  183. package/src/matrix/credentials.ts +95 -0
  184. package/src/matrix/deps.ts +309 -0
  185. package/src/matrix/device-health.ts +29 -0
  186. package/src/matrix/direct-management.ts +349 -0
  187. package/src/matrix/direct-room.ts +128 -0
  188. package/src/matrix/draft-stream.ts +225 -0
  189. package/src/matrix/encryption-guidance.ts +24 -0
  190. package/src/matrix/errors.ts +21 -0
  191. package/src/matrix/format.ts +426 -0
  192. package/src/matrix/legacy-crypto-inspector.ts +95 -0
  193. package/src/matrix/media-errors.ts +20 -0
  194. package/src/matrix/media-text.ts +162 -0
  195. package/src/matrix/monitor/access-state.ts +145 -0
  196. package/src/matrix/monitor/ack-config.ts +27 -0
  197. package/src/matrix/monitor/allowlist.ts +89 -0
  198. package/src/matrix/monitor/auto-join.ts +86 -0
  199. package/src/matrix/monitor/config.ts +569 -0
  200. package/src/matrix/monitor/context-summary.ts +43 -0
  201. package/src/matrix/monitor/direct.ts +296 -0
  202. package/src/matrix/monitor/events.ts +397 -0
  203. package/src/matrix/monitor/handler.ts +2266 -0
  204. package/src/matrix/monitor/inbound-dedupe.ts +267 -0
  205. package/src/matrix/monitor/index.ts +540 -0
  206. package/src/matrix/monitor/legacy-crypto-restore.ts +139 -0
  207. package/src/matrix/monitor/location.ts +108 -0
  208. package/src/matrix/monitor/media.ts +119 -0
  209. package/src/matrix/monitor/mentions.ts +256 -0
  210. package/src/matrix/monitor/reaction-events.ts +197 -0
  211. package/src/matrix/monitor/recent-invite.ts +30 -0
  212. package/src/matrix/monitor/replies.ts +136 -0
  213. package/src/matrix/monitor/reply-context.ts +92 -0
  214. package/src/matrix/monitor/room-history.ts +301 -0
  215. package/src/matrix/monitor/room-info.ts +126 -0
  216. package/src/matrix/monitor/rooms.ts +52 -0
  217. package/src/matrix/monitor/route.ts +179 -0
  218. package/src/matrix/monitor/runtime-api.ts +28 -0
  219. package/src/matrix/monitor/startup-verification.ts +237 -0
  220. package/src/matrix/monitor/startup.ts +218 -0
  221. package/src/matrix/monitor/status.ts +120 -0
  222. package/src/matrix/monitor/sync-lifecycle.ts +91 -0
  223. package/src/matrix/monitor/task-runner.ts +38 -0
  224. package/src/matrix/monitor/test-events.ts +21 -0
  225. package/src/matrix/monitor/thread-context.ts +108 -0
  226. package/src/matrix/monitor/threads.ts +85 -0
  227. package/src/matrix/monitor/types.ts +30 -0
  228. package/src/matrix/monitor/verification-events.ts +643 -0
  229. package/src/matrix/monitor/verification-utils.ts +46 -0
  230. package/src/matrix/outbound-media-runtime.ts +1 -0
  231. package/src/matrix/poll-summary.ts +110 -0
  232. package/src/matrix/poll-types.ts +429 -0
  233. package/src/matrix/probe.runtime.ts +4 -0
  234. package/src/matrix/probe.ts +97 -0
  235. package/src/matrix/profile.ts +184 -0
  236. package/src/matrix/reaction-common.ts +147 -0
  237. package/src/matrix/sdk/crypto-bootstrap.ts +438 -0
  238. package/src/matrix/sdk/crypto-facade.ts +242 -0
  239. package/src/matrix/sdk/crypto-node.runtime.ts +17 -0
  240. package/src/matrix/sdk/crypto-runtime.ts +14 -0
  241. package/src/matrix/sdk/decrypt-bridge.ts +410 -0
  242. package/src/matrix/sdk/event-helpers.ts +83 -0
  243. package/src/matrix/sdk/http-client.ts +87 -0
  244. package/src/matrix/sdk/idb-persistence-lock.ts +51 -0
  245. package/src/matrix/sdk/idb-persistence.ts +288 -0
  246. package/src/matrix/sdk/logger.ts +108 -0
  247. package/src/matrix/sdk/read-response-with-limit.ts +19 -0
  248. package/src/matrix/sdk/recovery-key-store.ts +453 -0
  249. package/src/matrix/sdk/timeout-abort-signal.ts +1 -0
  250. package/src/matrix/sdk/transport-runtime-api.ts +18 -0
  251. package/src/matrix/sdk/transport.ts +352 -0
  252. package/src/matrix/sdk/types.ts +245 -0
  253. package/src/matrix/sdk/verification-manager.ts +795 -0
  254. package/src/matrix/sdk/verification-status.ts +23 -0
  255. package/src/matrix/sdk.ts +2152 -0
  256. package/src/matrix/send/client.ts +93 -0
  257. package/src/matrix/send/formatting.ts +189 -0
  258. package/src/matrix/send/media.ts +244 -0
  259. package/src/matrix/send/targets.ts +104 -0
  260. package/src/matrix/send/types.ts +131 -0
  261. package/src/matrix/send.ts +660 -0
  262. package/src/matrix/session-store-metadata.ts +108 -0
  263. package/src/matrix/startup-abort.ts +44 -0
  264. package/src/matrix/subagent-hooks.ts +308 -0
  265. package/src/matrix/sync-state.ts +27 -0
  266. package/src/matrix/target-ids.ts +79 -0
  267. package/src/matrix/thread-bindings-shared.ts +206 -0
  268. package/src/matrix/thread-bindings.ts +580 -0
  269. package/src/matrix-migration.runtime.ts +9 -0
  270. package/src/migration-config.ts +243 -0
  271. package/src/migration-snapshot-backup.ts +116 -0
  272. package/src/migration-snapshot.ts +53 -0
  273. package/src/onboarding.ts +775 -0
  274. package/src/outbound.ts +248 -0
  275. package/src/plugin-entry.runtime.js +115 -0
  276. package/src/plugin-entry.runtime.ts +70 -0
  277. package/src/profile-update.ts +71 -0
  278. package/src/record-shared.ts +3 -0
  279. package/src/resolve-targets.ts +175 -0
  280. package/src/resolver.runtime.ts +5 -0
  281. package/src/resolver.ts +21 -0
  282. package/src/runtime-api.ts +106 -0
  283. package/src/runtime.ts +13 -0
  284. package/src/secret-contract.ts +174 -0
  285. package/src/session-route.ts +126 -0
  286. package/src/setup-bootstrap.ts +102 -0
  287. package/src/setup-config.ts +222 -0
  288. package/src/setup-contract.ts +90 -0
  289. package/src/setup-core.ts +146 -0
  290. package/src/setup-dm-policy.ts +15 -0
  291. package/src/setup-surface.ts +4 -0
  292. package/src/startup-maintenance.ts +114 -0
  293. package/src/storage-paths.ts +92 -0
  294. package/src/thread-binding-api.ts +23 -0
  295. package/src/tool-actions.runtime.ts +1 -0
  296. package/src/tool-actions.ts +498 -0
  297. package/src/types.ts +257 -0
  298. package/subagent-hooks-api.ts +31 -0
  299. package/test-api.ts +21 -0
  300. package/thread-binding-api.ts +4 -0
  301. package/thread-bindings-runtime.ts +4 -0
  302. package/tsconfig.json +16 -0
  303. package/api.js +0 -7
  304. package/auth-presence.js +0 -7
  305. package/channel-plugin-api.js +0 -7
  306. package/cli-metadata.js +0 -7
  307. package/contract-api.js +0 -7
  308. package/doctor-contract-api.js +0 -7
  309. package/helper-api.js +0 -7
  310. package/index.js +0 -7
  311. package/plugin-entry.handlers.runtime.js +0 -7
  312. package/runtime-api.js +0 -7
  313. package/runtime-heavy-api.js +0 -7
  314. package/runtime-setter-api.js +0 -7
  315. package/secret-contract-api.js +0 -7
  316. package/setup-entry.js +0 -7
  317. package/setup-plugin-api.js +0 -7
  318. package/subagent-hooks-api.js +0 -7
  319. package/test-api.js +0 -7
  320. package/thread-binding-api.js +0 -7
  321. package/thread-bindings-runtime.js +0 -7
@@ -0,0 +1,140 @@
1
+ import { r as isMatrixNotFoundError } from "./errors-BETj3zr9.js";
2
+ import { a as sendMessageMatrix, n as editMessageMatrix, w as isPollEventType } from "./send-CJunc6QM.js";
3
+ import { n as MATRIX_REACTION_EVENT_TYPE } from "./reaction-common-CmVLzP-u.js";
4
+ import { a as resolveMatrixMessageBody, c as resolveMatrixPollRootEventId, i as resolveMatrixMessageAttachment, o as fetchMatrixPollMessageSummary } from "./media-text-ZhGA8Pcs.js";
5
+ import { r as withResolvedRoomAction } from "./client-BnohYygh.js";
6
+ import { normalizeOptionalString } from "klaw/plugin-sdk/string-coerce-runtime";
7
+ //#region extensions/matrix/src/matrix/actions/limits.ts
8
+ function resolveMatrixActionLimit(raw, fallback) {
9
+ if (typeof raw !== "number" || !Number.isFinite(raw)) return fallback;
10
+ return Math.max(1, Math.floor(raw));
11
+ }
12
+ //#endregion
13
+ //#region extensions/matrix/src/matrix/actions/types.ts
14
+ const EventType = {
15
+ RoomMessage: "m.room.message",
16
+ RoomPinnedEvents: "m.room.pinned_events",
17
+ RoomTopic: "m.room.topic",
18
+ Reaction: MATRIX_REACTION_EVENT_TYPE
19
+ };
20
+ //#endregion
21
+ //#region extensions/matrix/src/matrix/actions/summary.ts
22
+ function summarizeMatrixRawEvent(event) {
23
+ const content = event.content;
24
+ const relates = content["m.relates_to"];
25
+ let relType;
26
+ let eventId;
27
+ if (relates) {
28
+ if ("rel_type" in relates) {
29
+ relType = relates.rel_type;
30
+ eventId = relates.event_id;
31
+ } else if ("m.in_reply_to" in relates) eventId = relates["m.in_reply_to"]?.event_id;
32
+ }
33
+ const relatesTo = relType || eventId ? {
34
+ relType,
35
+ eventId
36
+ } : void 0;
37
+ return {
38
+ eventId: event.event_id,
39
+ sender: event.sender,
40
+ body: resolveMatrixMessageBody({
41
+ body: content.body,
42
+ filename: content.filename,
43
+ msgtype: content.msgtype
44
+ }),
45
+ msgtype: content.msgtype,
46
+ attachment: resolveMatrixMessageAttachment({
47
+ body: content.body,
48
+ filename: content.filename,
49
+ msgtype: content.msgtype
50
+ }),
51
+ timestamp: event.origin_server_ts,
52
+ relatesTo
53
+ };
54
+ }
55
+ async function readPinnedEvents(client, roomId) {
56
+ try {
57
+ return (await client.getRoomStateEvent(roomId, EventType.RoomPinnedEvents, "")).pinned.filter((id) => id.trim().length > 0);
58
+ } catch (err) {
59
+ if (isMatrixNotFoundError(err)) return [];
60
+ throw err;
61
+ }
62
+ }
63
+ async function fetchEventSummary(client, roomId, eventId) {
64
+ try {
65
+ const raw = await client.getEvent(roomId, eventId);
66
+ if (raw.unsigned?.redacted_because) return null;
67
+ const pollSummary = await fetchMatrixPollMessageSummary(client, roomId, raw);
68
+ if (pollSummary) return pollSummary;
69
+ return summarizeMatrixRawEvent(raw);
70
+ } catch {
71
+ return null;
72
+ }
73
+ }
74
+ //#endregion
75
+ //#region extensions/matrix/src/matrix/actions/messages.ts
76
+ async function sendMatrixMessage(to, content, opts = {}) {
77
+ if (!opts.cfg) throw new Error("Matrix message actions require a resolved runtime config.");
78
+ return await sendMessageMatrix(to, content, {
79
+ cfg: opts.cfg,
80
+ mediaUrl: opts.mediaUrl,
81
+ mediaLocalRoots: opts.mediaLocalRoots,
82
+ replyToId: opts.replyToId,
83
+ threadId: opts.threadId,
84
+ audioAsVoice: opts.audioAsVoice,
85
+ accountId: opts.accountId ?? void 0,
86
+ client: opts.client,
87
+ timeoutMs: opts.timeoutMs
88
+ });
89
+ }
90
+ async function editMatrixMessage(roomId, messageId, content, opts = {}) {
91
+ if (!opts.cfg) throw new Error("Matrix message actions require a resolved runtime config.");
92
+ const trimmed = content.trim();
93
+ if (!trimmed) throw new Error("Matrix edit requires content");
94
+ return { eventId: await editMessageMatrix(roomId, messageId, trimmed, {
95
+ cfg: opts.cfg,
96
+ accountId: opts.accountId ?? void 0,
97
+ client: opts.client,
98
+ timeoutMs: opts.timeoutMs
99
+ }) || null };
100
+ }
101
+ async function deleteMatrixMessage(roomId, messageId, opts = {}) {
102
+ await withResolvedRoomAction(roomId, opts, async (client, resolvedRoom) => {
103
+ await client.redactEvent(resolvedRoom, messageId, opts.reason);
104
+ });
105
+ }
106
+ async function readMatrixMessages(roomId, opts = {}) {
107
+ return await withResolvedRoomAction(roomId, opts, async (client, resolvedRoom) => {
108
+ const limit = resolveMatrixActionLimit(opts.limit, 20);
109
+ const token = normalizeOptionalString(opts.before) ?? normalizeOptionalString(opts.after);
110
+ const dir = opts.after ? "f" : "b";
111
+ const res = await client.doRequest("GET", `/_matrix/client/v3/rooms/${encodeURIComponent(resolvedRoom)}/messages`, {
112
+ dir,
113
+ limit,
114
+ from: token
115
+ });
116
+ const hydratedChunk = await client.hydrateEvents(resolvedRoom, res.chunk);
117
+ const seenPollRoots = /* @__PURE__ */ new Set();
118
+ const messages = [];
119
+ for (const event of hydratedChunk) {
120
+ if (event.unsigned?.redacted_because) continue;
121
+ if (event.type === EventType.RoomMessage) {
122
+ messages.push(summarizeMatrixRawEvent(event));
123
+ continue;
124
+ }
125
+ if (!isPollEventType(event.type)) continue;
126
+ const pollRootId = resolveMatrixPollRootEventId(event);
127
+ if (!pollRootId || seenPollRoots.has(pollRootId)) continue;
128
+ seenPollRoots.add(pollRootId);
129
+ const pollSummary = await fetchMatrixPollMessageSummary(client, resolvedRoom, event);
130
+ if (pollSummary) messages.push(pollSummary);
131
+ }
132
+ return {
133
+ messages,
134
+ nextBatch: res.end ?? null,
135
+ prevBatch: res.start ?? null
136
+ };
137
+ });
138
+ }
139
+ //#endregion
140
+ export { fetchEventSummary as a, resolveMatrixActionLimit as c, sendMatrixMessage as i, editMatrixMessage as n, readPinnedEvents as o, readMatrixMessages as r, EventType as s, deleteMatrixMessage as t };
@@ -0,0 +1,69 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { resolveRequiredHomeDir, resolveStateDir } from "klaw/plugin-sdk/state-paths";
5
+ import { writeJsonFileAtomically } from "klaw/plugin-sdk/json-store";
6
+ //#region extensions/matrix/src/migration-snapshot-backup.ts
7
+ const MATRIX_MIGRATION_SNAPSHOT_DIRNAME = "klaw-migrations";
8
+ function loadSnapshotMarker(filePath) {
9
+ try {
10
+ if (!fs.existsSync(filePath)) return null;
11
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
12
+ if (parsed.version !== 1 || typeof parsed.createdAt !== "string" || typeof parsed.archivePath !== "string" || typeof parsed.trigger !== "string") return null;
13
+ return {
14
+ version: 1,
15
+ createdAt: parsed.createdAt,
16
+ archivePath: parsed.archivePath,
17
+ trigger: parsed.trigger,
18
+ includeWorkspace: parsed.includeWorkspace === true
19
+ };
20
+ } catch {
21
+ return null;
22
+ }
23
+ }
24
+ function resolveMatrixMigrationSnapshotMarkerPath(env = process.env) {
25
+ const stateDir = resolveStateDir(env, os.homedir);
26
+ return path.join(stateDir, "matrix", "migration-snapshot.json");
27
+ }
28
+ function resolveMatrixMigrationSnapshotOutputDir(env = process.env) {
29
+ const homeDir = resolveRequiredHomeDir(env, os.homedir);
30
+ return path.join(homeDir, "Backups", MATRIX_MIGRATION_SNAPSHOT_DIRNAME);
31
+ }
32
+ async function maybeCreateMatrixMigrationSnapshot(params) {
33
+ const env = params.env ?? process.env;
34
+ const createBackupArchive = params.createBackupArchive ?? (await import("klaw/plugin-sdk/runtime")).createBackupArchive;
35
+ const markerPath = resolveMatrixMigrationSnapshotMarkerPath(env);
36
+ const existingMarker = loadSnapshotMarker(markerPath);
37
+ if (existingMarker?.archivePath && fs.existsSync(existingMarker.archivePath)) {
38
+ params.log?.info?.(`matrix: reusing existing pre-migration backup snapshot: ${existingMarker.archivePath}`);
39
+ return {
40
+ created: false,
41
+ archivePath: existingMarker.archivePath,
42
+ markerPath
43
+ };
44
+ }
45
+ if (existingMarker?.archivePath && !fs.existsSync(existingMarker.archivePath)) params.log?.warn?.(`matrix: previous migration snapshot is missing (${existingMarker.archivePath}); creating a replacement backup before continuing`);
46
+ const snapshot = await createBackupArchive({
47
+ output: (() => {
48
+ const outputDir = params.outputDir ?? resolveMatrixMigrationSnapshotOutputDir(env);
49
+ fs.mkdirSync(outputDir, { recursive: true });
50
+ return outputDir;
51
+ })(),
52
+ includeWorkspace: false
53
+ });
54
+ await writeJsonFileAtomically(markerPath, {
55
+ version: 1,
56
+ createdAt: snapshot.createdAt,
57
+ archivePath: snapshot.archivePath,
58
+ trigger: params.trigger,
59
+ includeWorkspace: snapshot.includeWorkspace
60
+ });
61
+ params.log?.info?.(`matrix: created pre-migration backup snapshot: ${snapshot.archivePath}`);
62
+ return {
63
+ created: true,
64
+ archivePath: snapshot.archivePath,
65
+ markerPath
66
+ };
67
+ }
68
+ //#endregion
69
+ export { maybeCreateMatrixMigrationSnapshot as t };
@@ -0,0 +1,2 @@
1
+ import { t as maybeCreateMatrixMigrationSnapshot } from "./migration-snapshot-backup-BR-xD7Ew.js";
2
+ export { maybeCreateMatrixMigrationSnapshot };