@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.
- package/CHANGELOG.md +321 -0
- package/SPEC-SUPPORT.md +116 -0
- package/api.ts +38 -0
- package/auth-presence.ts +56 -0
- package/channel-plugin-api.ts +3 -0
- package/cli-metadata.ts +11 -0
- package/contract-api.ts +17 -0
- package/dist/account-selection-Y50DNJ2l.js +158 -0
- package/dist/active-client-CmFdvPdO.js +20 -0
- package/dist/api.js +12 -0
- package/dist/approval-handler.runtime-BIi4fL0R.js +377 -0
- package/dist/approval-ids-BGHK7PnZ.js +7 -0
- package/dist/approval-reaction-auth-CL0-nCNV.js +27 -0
- package/dist/approval-reactions-nDm2x-K5.js +162 -0
- package/dist/async-lock-SsmtFXtt.js +19 -0
- package/dist/auth-presence.js +26 -0
- package/dist/backup-health-3BHbHxyd.js +60 -0
- package/dist/channel-C0kCyTNB.js +1380 -0
- package/dist/channel-plugin-api.js +2 -0
- package/dist/channel.runtime-CdrdEN-0.js +250 -0
- package/dist/cli-FtY6Nuzw.js +1338 -0
- package/dist/cli-metadata-Dkwua7CB.js +22 -0
- package/dist/cli-metadata.js +2 -0
- package/dist/client-BnohYygh.js +25 -0
- package/dist/client-PhrTwuC4.js +30 -0
- package/dist/client-bootstrap-Mcj8ChJ5.js +114 -0
- package/dist/config-paths-DVvt6vM3.js +114 -0
- package/dist/config-schema-BMGOlhdI.js +308 -0
- package/dist/config-secret-input.runtime-Dv_4Br_f.js +2 -0
- package/dist/contract-api.js +8 -0
- package/dist/create-client-J0htTaRj.js +64 -0
- package/dist/credentials-B7GsBbgQ.js +56 -0
- package/dist/credentials-read-8fE4qoWs.js +112 -0
- package/dist/credentials-write.runtime-BibplB4Y.js +17 -0
- package/dist/crypto-node.runtime-D9qxgRPa.js +12 -0
- package/dist/crypto-runtime-1pKW4O2F.js +1214 -0
- package/dist/deps-DVpDS81G.js +208 -0
- package/dist/device-health-Ct2wDSPG.js +16 -0
- package/dist/directory-live-i3T8uORc.js +150 -0
- package/dist/doctor-contract-BLzYHl_9.js +246 -0
- package/dist/doctor-contract-api.js +2 -0
- package/dist/doctor-diR5gE7D.js +153 -0
- package/dist/draft-stream-HpPJ_VJt.js +143 -0
- package/dist/encryption-guidance-BNEgckrZ.js +15 -0
- package/dist/env-auth-UFiTGkDM.js +63 -0
- package/dist/env-vars-EQKQv-FE.js +63 -0
- package/dist/errors-BETj3zr9.js +17 -0
- package/dist/exec-approval-resolver-BxPorU_t.js +15 -0
- package/dist/helper-api.js +4 -0
- package/dist/http-client-DoQgbQsU.js +331 -0
- package/dist/index.js +46 -0
- package/dist/legacy-crypto-inspector-zK0hDCbt.js +41 -0
- package/dist/legacy-crypto-restore-DSFIXuDo.js +85 -0
- package/dist/logging-Df7aPD1z.js +99 -0
- package/dist/matrix-migration.runtime-BNoT1Prt.js +525 -0
- package/dist/media-text-ZhGA8Pcs.js +146 -0
- package/dist/messages-CRA9WGg0.js +140 -0
- package/dist/migration-snapshot-backup-BR-xD7Ew.js +69 -0
- package/dist/migration-snapshot.runtime-BLcy_Nvw.js +2 -0
- package/dist/monitor-DQm7_13y.js +4331 -0
- package/dist/plugin-entry.handlers.runtime.js +51 -0
- package/dist/probe.runtime-CjJS53Kz.js +3 -0
- package/dist/profile-update-DqkPgZ1P.js +68 -0
- package/dist/reaction-common-CmVLzP-u.js +71 -0
- package/dist/reaction-events-D0nUJuZV.js +121 -0
- package/dist/record-shared-DGvSFn5M.js +2 -0
- package/dist/resolve-targets-ChECUzD2.js +140 -0
- package/dist/resolver.runtime-hdY3n0GO.js +5 -0
- package/dist/rolldown-runtime-DUslC3ob.js +14 -0
- package/dist/route-xRKj_ESW.js +161 -0
- package/dist/runtime-B-Fyrmxo.js +8 -0
- package/dist/runtime-api-BYXXkxq2.js +24 -0
- package/dist/runtime-api.js +25 -0
- package/dist/runtime-heavy-api.js +3 -0
- package/dist/runtime-lwTSy9Yt.js +6 -0
- package/dist/runtime-setter-api.js +2 -0
- package/dist/sdk-Jhq7mLtD.js +1704 -0
- package/dist/secret-contract-DEMcDsjl.js +120 -0
- package/dist/secret-contract-api.js +2 -0
- package/dist/send-CJunc6QM.js +1517 -0
- package/dist/setup-bootstrap-rJ0qZWPe.js +62 -0
- package/dist/setup-core-BEYoXF3J.js +677 -0
- package/dist/setup-entry.js +19 -0
- package/dist/setup-plugin-api.js +43 -0
- package/dist/setup-surface-c28ON6jq.js +537 -0
- package/dist/shared-D6MFMnpG.js +642 -0
- package/dist/startup-abort-B2J3MU_h.js +109 -0
- package/dist/startup-verification-CkD4Cwce.js +132 -0
- package/dist/storage-nyO0DOFE.js +281 -0
- package/dist/storage-paths-BTAketfg.js +52 -0
- package/dist/subagent-hooks-api-Dr_xnMRG.js +170 -0
- package/dist/subagent-hooks-api.js +2 -0
- package/dist/sync-state-Bx0gPaGA.js +12 -0
- package/dist/target-ids-Bsazo8si.js +77 -0
- package/dist/test-api.js +4 -0
- package/dist/thread-binding-api-IGU0-L70.js +17 -0
- package/dist/thread-binding-api.js +2 -0
- package/dist/thread-bindings-FjAZmDUP.js +352 -0
- package/dist/thread-bindings-runtime.js +2 -0
- package/dist/thread-bindings-shared-fvfP7jVs.js +97 -0
- package/dist/timeout-abort-signal-DpSHDHhR.js +2 -0
- package/dist/tool-actions.runtime-Cbo7YcYZ.js +532 -0
- package/dist/url-validation-DlrXNjAE.js +36 -0
- package/dist/verification-7tDPRpJU.js +345 -0
- package/doctor-contract-api.ts +1 -0
- package/helper-api.ts +3 -0
- package/index.ts +55 -0
- package/klaw.plugin.json +3 -891
- package/package.json +4 -4
- package/plugin-entry.handlers.runtime.ts +1 -0
- package/runtime-api.ts +72 -0
- package/runtime-heavy-api.ts +1 -0
- package/runtime-setter-api.ts +3 -0
- package/secret-contract-api.ts +5 -0
- package/setup-entry.ts +17 -0
- package/setup-plugin-api.ts +3 -0
- package/src/account-selection.ts +223 -0
- package/src/actions.ts +346 -0
- package/src/approval-auth.ts +25 -0
- package/src/approval-handler.runtime.ts +592 -0
- package/src/approval-ids.ts +6 -0
- package/src/approval-native.ts +345 -0
- package/src/approval-reaction-auth.ts +45 -0
- package/src/approval-reactions.ts +313 -0
- package/src/auth-precedence.ts +61 -0
- package/src/channel-account-paths.ts +97 -0
- package/src/channel.runtime.ts +17 -0
- package/src/channel.setup.ts +48 -0
- package/src/channel.ts +667 -0
- package/src/cli-metadata.ts +19 -0
- package/src/cli.ts +2298 -0
- package/src/config-adapter.ts +41 -0
- package/src/config-schema.ts +159 -0
- package/src/config-ui-hints.ts +56 -0
- package/src/directory-live.ts +238 -0
- package/src/doctor-contract.ts +287 -0
- package/src/doctor.ts +262 -0
- package/src/env-vars.ts +92 -0
- package/src/exec-approval-resolver.ts +23 -0
- package/src/exec-approvals.ts +287 -0
- package/src/group-mentions.ts +41 -0
- package/src/legacy-crypto-inspector-availability.ts +60 -0
- package/src/legacy-crypto.ts +531 -0
- package/src/legacy-state.ts +156 -0
- package/src/matrix/account-config.ts +175 -0
- package/src/matrix/accounts.ts +194 -0
- package/src/matrix/actions/client.ts +31 -0
- package/src/matrix/actions/devices.ts +34 -0
- package/src/matrix/actions/limits.ts +6 -0
- package/src/matrix/actions/messages.ts +129 -0
- package/src/matrix/actions/pins.ts +63 -0
- package/src/matrix/actions/polls.ts +109 -0
- package/src/matrix/actions/profile.ts +37 -0
- package/src/matrix/actions/reactions.ts +59 -0
- package/src/matrix/actions/room.ts +71 -0
- package/src/matrix/actions/summary.ts +88 -0
- package/src/matrix/actions/types.ts +63 -0
- package/src/matrix/actions/verification.ts +589 -0
- package/src/matrix/actions.ts +37 -0
- package/src/matrix/active-client.ts +26 -0
- package/src/matrix/async-lock.ts +18 -0
- package/src/matrix/backup-health.ts +124 -0
- package/src/matrix/client/config-runtime-api.ts +9 -0
- package/src/matrix/client/config-secret-input.runtime.ts +1 -0
- package/src/matrix/client/config.ts +853 -0
- package/src/matrix/client/create-client.ts +105 -0
- package/src/matrix/client/env-auth.ts +95 -0
- package/src/matrix/client/file-sync-store.ts +289 -0
- package/src/matrix/client/logging.ts +140 -0
- package/src/matrix/client/migration-snapshot.runtime.ts +1 -0
- package/src/matrix/client/private-network-host.ts +1 -0
- package/src/matrix/client/runtime.ts +4 -0
- package/src/matrix/client/shared.ts +316 -0
- package/src/matrix/client/storage.ts +543 -0
- package/src/matrix/client/types.ts +50 -0
- package/src/matrix/client/url-validation.ts +73 -0
- package/src/matrix/client-bootstrap.ts +173 -0
- package/src/matrix/client.ts +23 -0
- package/src/matrix/config-paths.ts +31 -0
- package/src/matrix/config-update.ts +292 -0
- package/src/matrix/credentials-read.ts +208 -0
- package/src/matrix/credentials-write.runtime.ts +35 -0
- package/src/matrix/credentials.ts +95 -0
- package/src/matrix/deps.ts +309 -0
- package/src/matrix/device-health.ts +29 -0
- package/src/matrix/direct-management.ts +349 -0
- package/src/matrix/direct-room.ts +128 -0
- package/src/matrix/draft-stream.ts +225 -0
- package/src/matrix/encryption-guidance.ts +24 -0
- package/src/matrix/errors.ts +21 -0
- package/src/matrix/format.ts +426 -0
- package/src/matrix/legacy-crypto-inspector.ts +95 -0
- package/src/matrix/media-errors.ts +20 -0
- package/src/matrix/media-text.ts +162 -0
- package/src/matrix/monitor/access-state.ts +145 -0
- package/src/matrix/monitor/ack-config.ts +27 -0
- package/src/matrix/monitor/allowlist.ts +89 -0
- package/src/matrix/monitor/auto-join.ts +86 -0
- package/src/matrix/monitor/config.ts +569 -0
- package/src/matrix/monitor/context-summary.ts +43 -0
- package/src/matrix/monitor/direct.ts +296 -0
- package/src/matrix/monitor/events.ts +397 -0
- package/src/matrix/monitor/handler.ts +2266 -0
- package/src/matrix/monitor/inbound-dedupe.ts +267 -0
- package/src/matrix/monitor/index.ts +540 -0
- package/src/matrix/monitor/legacy-crypto-restore.ts +139 -0
- package/src/matrix/monitor/location.ts +108 -0
- package/src/matrix/monitor/media.ts +119 -0
- package/src/matrix/monitor/mentions.ts +256 -0
- package/src/matrix/monitor/reaction-events.ts +197 -0
- package/src/matrix/monitor/recent-invite.ts +30 -0
- package/src/matrix/monitor/replies.ts +136 -0
- package/src/matrix/monitor/reply-context.ts +92 -0
- package/src/matrix/monitor/room-history.ts +301 -0
- package/src/matrix/monitor/room-info.ts +126 -0
- package/src/matrix/monitor/rooms.ts +52 -0
- package/src/matrix/monitor/route.ts +179 -0
- package/src/matrix/monitor/runtime-api.ts +28 -0
- package/src/matrix/monitor/startup-verification.ts +237 -0
- package/src/matrix/monitor/startup.ts +218 -0
- package/src/matrix/monitor/status.ts +120 -0
- package/src/matrix/monitor/sync-lifecycle.ts +91 -0
- package/src/matrix/monitor/task-runner.ts +38 -0
- package/src/matrix/monitor/test-events.ts +21 -0
- package/src/matrix/monitor/thread-context.ts +108 -0
- package/src/matrix/monitor/threads.ts +85 -0
- package/src/matrix/monitor/types.ts +30 -0
- package/src/matrix/monitor/verification-events.ts +643 -0
- package/src/matrix/monitor/verification-utils.ts +46 -0
- package/src/matrix/outbound-media-runtime.ts +1 -0
- package/src/matrix/poll-summary.ts +110 -0
- package/src/matrix/poll-types.ts +429 -0
- package/src/matrix/probe.runtime.ts +4 -0
- package/src/matrix/probe.ts +97 -0
- package/src/matrix/profile.ts +184 -0
- package/src/matrix/reaction-common.ts +147 -0
- package/src/matrix/sdk/crypto-bootstrap.ts +438 -0
- package/src/matrix/sdk/crypto-facade.ts +242 -0
- package/src/matrix/sdk/crypto-node.runtime.ts +17 -0
- package/src/matrix/sdk/crypto-runtime.ts +14 -0
- package/src/matrix/sdk/decrypt-bridge.ts +410 -0
- package/src/matrix/sdk/event-helpers.ts +83 -0
- package/src/matrix/sdk/http-client.ts +87 -0
- package/src/matrix/sdk/idb-persistence-lock.ts +51 -0
- package/src/matrix/sdk/idb-persistence.ts +288 -0
- package/src/matrix/sdk/logger.ts +108 -0
- package/src/matrix/sdk/read-response-with-limit.ts +19 -0
- package/src/matrix/sdk/recovery-key-store.ts +453 -0
- package/src/matrix/sdk/timeout-abort-signal.ts +1 -0
- package/src/matrix/sdk/transport-runtime-api.ts +18 -0
- package/src/matrix/sdk/transport.ts +352 -0
- package/src/matrix/sdk/types.ts +245 -0
- package/src/matrix/sdk/verification-manager.ts +795 -0
- package/src/matrix/sdk/verification-status.ts +23 -0
- package/src/matrix/sdk.ts +2152 -0
- package/src/matrix/send/client.ts +93 -0
- package/src/matrix/send/formatting.ts +189 -0
- package/src/matrix/send/media.ts +244 -0
- package/src/matrix/send/targets.ts +104 -0
- package/src/matrix/send/types.ts +131 -0
- package/src/matrix/send.ts +660 -0
- package/src/matrix/session-store-metadata.ts +108 -0
- package/src/matrix/startup-abort.ts +44 -0
- package/src/matrix/subagent-hooks.ts +308 -0
- package/src/matrix/sync-state.ts +27 -0
- package/src/matrix/target-ids.ts +79 -0
- package/src/matrix/thread-bindings-shared.ts +206 -0
- package/src/matrix/thread-bindings.ts +580 -0
- package/src/matrix-migration.runtime.ts +9 -0
- package/src/migration-config.ts +243 -0
- package/src/migration-snapshot-backup.ts +116 -0
- package/src/migration-snapshot.ts +53 -0
- package/src/onboarding.ts +775 -0
- package/src/outbound.ts +248 -0
- package/src/plugin-entry.runtime.js +115 -0
- package/src/plugin-entry.runtime.ts +70 -0
- package/src/profile-update.ts +71 -0
- package/src/record-shared.ts +3 -0
- package/src/resolve-targets.ts +175 -0
- package/src/resolver.runtime.ts +5 -0
- package/src/resolver.ts +21 -0
- package/src/runtime-api.ts +106 -0
- package/src/runtime.ts +13 -0
- package/src/secret-contract.ts +174 -0
- package/src/session-route.ts +126 -0
- package/src/setup-bootstrap.ts +102 -0
- package/src/setup-config.ts +222 -0
- package/src/setup-contract.ts +90 -0
- package/src/setup-core.ts +146 -0
- package/src/setup-dm-policy.ts +15 -0
- package/src/setup-surface.ts +4 -0
- package/src/startup-maintenance.ts +114 -0
- package/src/storage-paths.ts +92 -0
- package/src/thread-binding-api.ts +23 -0
- package/src/tool-actions.runtime.ts +1 -0
- package/src/tool-actions.ts +498 -0
- package/src/types.ts +257 -0
- package/subagent-hooks-api.ts +31 -0
- package/test-api.ts +21 -0
- package/thread-binding-api.ts +4 -0
- package/thread-bindings-runtime.ts +4 -0
- package/tsconfig.json +16 -0
- package/api.js +0 -7
- package/auth-presence.js +0 -7
- package/channel-plugin-api.js +0 -7
- package/cli-metadata.js +0 -7
- package/contract-api.js +0 -7
- package/doctor-contract-api.js +0 -7
- package/helper-api.js +0 -7
- package/index.js +0 -7
- package/plugin-entry.handlers.runtime.js +0 -7
- package/runtime-api.js +0 -7
- package/runtime-heavy-api.js +0 -7
- package/runtime-setter-api.js +0 -7
- package/secret-contract-api.js +0 -7
- package/setup-entry.js +0 -7
- package/setup-plugin-api.js +0 -7
- package/subagent-hooks-api.js +0 -7
- package/test-api.js +0 -7
- package/thread-binding-api.js +0 -7
- 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 };
|