@kodelyth/matrix 2026.5.42 → 2026.6.2
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/klaw.plugin.json +891 -3
- package/package.json +18 -6
- package/CHANGELOG.md +0 -321
- package/SPEC-SUPPORT.md +0 -116
- package/api.ts +0 -38
- package/auth-presence.ts +0 -56
- package/channel-plugin-api.ts +0 -3
- package/cli-metadata.ts +0 -11
- package/contract-api.ts +0 -17
- package/doctor-contract-api.ts +0 -1
- package/helper-api.ts +0 -3
- package/index.ts +0 -55
- package/plugin-entry.handlers.runtime.ts +0 -1
- package/runtime-api.ts +0 -72
- package/runtime-heavy-api.ts +0 -1
- package/runtime-setter-api.ts +0 -3
- package/secret-contract-api.ts +0 -5
- package/setup-entry.ts +0 -17
- package/setup-plugin-api.ts +0 -3
- package/src/account-selection.ts +0 -223
- package/src/actions.ts +0 -346
- package/src/approval-auth.ts +0 -25
- package/src/approval-handler.runtime.ts +0 -592
- package/src/approval-ids.ts +0 -6
- package/src/approval-native.ts +0 -345
- package/src/approval-reaction-auth.ts +0 -45
- package/src/approval-reactions.ts +0 -313
- package/src/auth-precedence.ts +0 -61
- package/src/channel-account-paths.ts +0 -97
- package/src/channel.runtime.ts +0 -17
- package/src/channel.setup.ts +0 -48
- package/src/channel.ts +0 -667
- package/src/cli-metadata.ts +0 -19
- package/src/cli.ts +0 -2298
- package/src/config-adapter.ts +0 -41
- package/src/config-schema.ts +0 -159
- package/src/config-ui-hints.ts +0 -56
- package/src/directory-live.ts +0 -238
- package/src/doctor-contract.ts +0 -287
- package/src/doctor.ts +0 -262
- package/src/env-vars.ts +0 -92
- package/src/exec-approval-resolver.ts +0 -23
- package/src/exec-approvals.ts +0 -287
- package/src/group-mentions.ts +0 -41
- package/src/legacy-crypto-inspector-availability.ts +0 -60
- package/src/legacy-crypto.ts +0 -531
- package/src/legacy-state.ts +0 -156
- package/src/matrix/account-config.ts +0 -175
- package/src/matrix/accounts.ts +0 -194
- package/src/matrix/actions/client.ts +0 -31
- package/src/matrix/actions/devices.ts +0 -34
- package/src/matrix/actions/limits.ts +0 -6
- package/src/matrix/actions/messages.ts +0 -129
- package/src/matrix/actions/pins.ts +0 -63
- package/src/matrix/actions/polls.ts +0 -109
- package/src/matrix/actions/profile.ts +0 -37
- package/src/matrix/actions/reactions.ts +0 -59
- package/src/matrix/actions/room.ts +0 -71
- package/src/matrix/actions/summary.ts +0 -88
- package/src/matrix/actions/types.ts +0 -63
- package/src/matrix/actions/verification.ts +0 -589
- package/src/matrix/actions.ts +0 -37
- package/src/matrix/active-client.ts +0 -26
- package/src/matrix/async-lock.ts +0 -18
- package/src/matrix/backup-health.ts +0 -124
- package/src/matrix/client/config-runtime-api.ts +0 -9
- package/src/matrix/client/config-secret-input.runtime.ts +0 -1
- package/src/matrix/client/config.ts +0 -853
- package/src/matrix/client/create-client.ts +0 -105
- package/src/matrix/client/env-auth.ts +0 -95
- package/src/matrix/client/file-sync-store.ts +0 -289
- package/src/matrix/client/logging.ts +0 -140
- package/src/matrix/client/migration-snapshot.runtime.ts +0 -1
- package/src/matrix/client/private-network-host.ts +0 -1
- package/src/matrix/client/runtime.ts +0 -4
- package/src/matrix/client/shared.ts +0 -316
- package/src/matrix/client/storage.ts +0 -543
- package/src/matrix/client/types.ts +0 -50
- package/src/matrix/client/url-validation.ts +0 -73
- package/src/matrix/client-bootstrap.ts +0 -173
- package/src/matrix/client.ts +0 -23
- package/src/matrix/config-paths.ts +0 -31
- package/src/matrix/config-update.ts +0 -292
- package/src/matrix/credentials-read.ts +0 -208
- package/src/matrix/credentials-write.runtime.ts +0 -35
- package/src/matrix/credentials.ts +0 -95
- package/src/matrix/deps.ts +0 -309
- package/src/matrix/device-health.ts +0 -29
- package/src/matrix/direct-management.ts +0 -349
- package/src/matrix/direct-room.ts +0 -128
- package/src/matrix/draft-stream.ts +0 -225
- package/src/matrix/encryption-guidance.ts +0 -24
- package/src/matrix/errors.ts +0 -21
- package/src/matrix/format.ts +0 -426
- package/src/matrix/legacy-crypto-inspector.ts +0 -95
- package/src/matrix/media-errors.ts +0 -20
- package/src/matrix/media-text.ts +0 -162
- package/src/matrix/monitor/access-state.ts +0 -145
- package/src/matrix/monitor/ack-config.ts +0 -27
- package/src/matrix/monitor/allowlist.ts +0 -89
- package/src/matrix/monitor/auto-join.ts +0 -86
- package/src/matrix/monitor/config.ts +0 -569
- package/src/matrix/monitor/context-summary.ts +0 -43
- package/src/matrix/monitor/direct.ts +0 -296
- package/src/matrix/monitor/events.ts +0 -397
- package/src/matrix/monitor/handler.ts +0 -2266
- package/src/matrix/monitor/inbound-dedupe.ts +0 -267
- package/src/matrix/monitor/index.ts +0 -540
- package/src/matrix/monitor/legacy-crypto-restore.ts +0 -139
- package/src/matrix/monitor/location.ts +0 -108
- package/src/matrix/monitor/media.ts +0 -119
- package/src/matrix/monitor/mentions.ts +0 -256
- package/src/matrix/monitor/reaction-events.ts +0 -197
- package/src/matrix/monitor/recent-invite.ts +0 -30
- package/src/matrix/monitor/replies.ts +0 -136
- package/src/matrix/monitor/reply-context.ts +0 -92
- package/src/matrix/monitor/room-history.ts +0 -301
- package/src/matrix/monitor/room-info.ts +0 -126
- package/src/matrix/monitor/rooms.ts +0 -52
- package/src/matrix/monitor/route.ts +0 -179
- package/src/matrix/monitor/runtime-api.ts +0 -28
- package/src/matrix/monitor/startup-verification.ts +0 -237
- package/src/matrix/monitor/startup.ts +0 -218
- package/src/matrix/monitor/status.ts +0 -120
- package/src/matrix/monitor/sync-lifecycle.ts +0 -91
- package/src/matrix/monitor/task-runner.ts +0 -38
- package/src/matrix/monitor/test-events.ts +0 -21
- package/src/matrix/monitor/thread-context.ts +0 -108
- package/src/matrix/monitor/threads.ts +0 -85
- package/src/matrix/monitor/types.ts +0 -30
- package/src/matrix/monitor/verification-events.ts +0 -643
- package/src/matrix/monitor/verification-utils.ts +0 -46
- package/src/matrix/outbound-media-runtime.ts +0 -1
- package/src/matrix/poll-summary.ts +0 -110
- package/src/matrix/poll-types.ts +0 -429
- package/src/matrix/probe.runtime.ts +0 -4
- package/src/matrix/probe.ts +0 -97
- package/src/matrix/profile.ts +0 -184
- package/src/matrix/reaction-common.ts +0 -147
- package/src/matrix/sdk/crypto-bootstrap.ts +0 -438
- package/src/matrix/sdk/crypto-facade.ts +0 -242
- package/src/matrix/sdk/crypto-node.runtime.ts +0 -17
- package/src/matrix/sdk/crypto-runtime.ts +0 -14
- package/src/matrix/sdk/decrypt-bridge.ts +0 -410
- package/src/matrix/sdk/event-helpers.ts +0 -83
- package/src/matrix/sdk/http-client.ts +0 -87
- package/src/matrix/sdk/idb-persistence-lock.ts +0 -51
- package/src/matrix/sdk/idb-persistence.ts +0 -288
- package/src/matrix/sdk/logger.ts +0 -108
- package/src/matrix/sdk/read-response-with-limit.ts +0 -19
- package/src/matrix/sdk/recovery-key-store.ts +0 -453
- package/src/matrix/sdk/timeout-abort-signal.ts +0 -1
- package/src/matrix/sdk/transport-runtime-api.ts +0 -18
- package/src/matrix/sdk/transport.ts +0 -352
- package/src/matrix/sdk/types.ts +0 -245
- package/src/matrix/sdk/verification-manager.ts +0 -795
- package/src/matrix/sdk/verification-status.ts +0 -23
- package/src/matrix/sdk.ts +0 -2152
- package/src/matrix/send/client.ts +0 -93
- package/src/matrix/send/formatting.ts +0 -189
- package/src/matrix/send/media.ts +0 -244
- package/src/matrix/send/targets.ts +0 -104
- package/src/matrix/send/types.ts +0 -131
- package/src/matrix/send.ts +0 -660
- package/src/matrix/session-store-metadata.ts +0 -108
- package/src/matrix/startup-abort.ts +0 -44
- package/src/matrix/subagent-hooks.ts +0 -308
- package/src/matrix/sync-state.ts +0 -27
- package/src/matrix/target-ids.ts +0 -79
- package/src/matrix/thread-bindings-shared.ts +0 -206
- package/src/matrix/thread-bindings.ts +0 -580
- package/src/matrix-migration.runtime.ts +0 -9
- package/src/migration-config.ts +0 -243
- package/src/migration-snapshot-backup.ts +0 -116
- package/src/migration-snapshot.ts +0 -53
- package/src/onboarding.ts +0 -775
- package/src/outbound.ts +0 -248
- package/src/plugin-entry.runtime.js +0 -115
- package/src/plugin-entry.runtime.ts +0 -70
- package/src/profile-update.ts +0 -71
- package/src/record-shared.ts +0 -3
- package/src/resolve-targets.ts +0 -175
- package/src/resolver.runtime.ts +0 -5
- package/src/resolver.ts +0 -21
- package/src/runtime-api.ts +0 -106
- package/src/runtime.ts +0 -13
- package/src/secret-contract.ts +0 -174
- package/src/session-route.ts +0 -126
- package/src/setup-bootstrap.ts +0 -102
- package/src/setup-config.ts +0 -222
- package/src/setup-contract.ts +0 -90
- package/src/setup-core.ts +0 -146
- package/src/setup-dm-policy.ts +0 -15
- package/src/setup-surface.ts +0 -4
- package/src/startup-maintenance.ts +0 -114
- package/src/storage-paths.ts +0 -92
- package/src/thread-binding-api.ts +0 -23
- package/src/tool-actions.runtime.ts +0 -1
- package/src/tool-actions.ts +0 -498
- package/src/types.ts +0 -257
- package/subagent-hooks-api.ts +0 -31
- package/test-api.ts +0 -21
- package/thread-binding-api.ts +0 -4
- package/thread-bindings-runtime.ts +0 -4
- package/tsconfig.json +0 -16
package/index.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defineBundledChannelEntry,
|
|
3
|
-
type KlawPluginApi,
|
|
4
|
-
} from "klaw/plugin-sdk/channel-entry-contract";
|
|
5
|
-
import { registerMatrixCliMetadata } from "./cli-metadata.js";
|
|
6
|
-
import { registerMatrixSubagentHooks } from "./subagent-hooks-api.js";
|
|
7
|
-
|
|
8
|
-
type MatrixHandlersRuntimeModule = typeof import("./plugin-entry.handlers.runtime.js");
|
|
9
|
-
|
|
10
|
-
let matrixHandlersRuntimePromise: Promise<MatrixHandlersRuntimeModule> | null = null;
|
|
11
|
-
|
|
12
|
-
function loadMatrixHandlersRuntimeModule() {
|
|
13
|
-
matrixHandlersRuntimePromise ??= import("./plugin-entry.handlers.runtime.js");
|
|
14
|
-
return matrixHandlersRuntimePromise;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function registerMatrixFullRuntime(api: KlawPluginApi): void {
|
|
18
|
-
api.registerGatewayMethod("matrix.verify.recoveryKey", async (ctx) => {
|
|
19
|
-
const { handleVerifyRecoveryKey } = await loadMatrixHandlersRuntimeModule();
|
|
20
|
-
await handleVerifyRecoveryKey(ctx);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
api.registerGatewayMethod("matrix.verify.bootstrap", async (ctx) => {
|
|
24
|
-
const { handleVerificationBootstrap } = await loadMatrixHandlersRuntimeModule();
|
|
25
|
-
await handleVerificationBootstrap(ctx);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
api.registerGatewayMethod("matrix.verify.status", async (ctx) => {
|
|
29
|
-
const { handleVerificationStatus } = await loadMatrixHandlersRuntimeModule();
|
|
30
|
-
await handleVerificationStatus(ctx);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
registerMatrixSubagentHooks(api);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export default defineBundledChannelEntry({
|
|
37
|
-
id: "matrix",
|
|
38
|
-
name: "Matrix",
|
|
39
|
-
description: "Matrix channel plugin (matrix-js-sdk)",
|
|
40
|
-
importMetaUrl: import.meta.url,
|
|
41
|
-
plugin: {
|
|
42
|
-
specifier: "./channel-plugin-api.js",
|
|
43
|
-
exportName: "matrixPlugin",
|
|
44
|
-
},
|
|
45
|
-
secrets: {
|
|
46
|
-
specifier: "./secret-contract-api.js",
|
|
47
|
-
exportName: "channelSecrets",
|
|
48
|
-
},
|
|
49
|
-
runtime: {
|
|
50
|
-
specifier: "./runtime-setter-api.js",
|
|
51
|
-
exportName: "setMatrixRuntime",
|
|
52
|
-
},
|
|
53
|
-
registerCliMetadata: registerMatrixCliMetadata,
|
|
54
|
-
registerFull: registerMatrixFullRuntime,
|
|
55
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/plugin-entry.runtime.ts";
|
package/runtime-api.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
type MatrixResolvedStringField,
|
|
3
|
-
type MatrixResolvedStringValues,
|
|
4
|
-
resolveMatrixAccountStringValues,
|
|
5
|
-
} from "./src/auth-precedence.js";
|
|
6
|
-
export {
|
|
7
|
-
requiresExplicitMatrixDefaultAccount,
|
|
8
|
-
resolveMatrixDefaultOrOnlyAccountId,
|
|
9
|
-
} from "./src/account-selection.js";
|
|
10
|
-
export {
|
|
11
|
-
findMatrixAccountEntry,
|
|
12
|
-
resolveConfiguredMatrixAccountIds,
|
|
13
|
-
resolveMatrixChannelConfig,
|
|
14
|
-
} from "./src/account-selection.js";
|
|
15
|
-
export {
|
|
16
|
-
getMatrixScopedEnvVarNames,
|
|
17
|
-
listMatrixEnvAccountIds,
|
|
18
|
-
resolveMatrixEnvAccountToken,
|
|
19
|
-
} from "./src/env-vars.js";
|
|
20
|
-
export {
|
|
21
|
-
hashMatrixAccessToken,
|
|
22
|
-
resolveMatrixAccountStorageRoot,
|
|
23
|
-
resolveMatrixCredentialsDir,
|
|
24
|
-
resolveMatrixCredentialsFilename,
|
|
25
|
-
resolveMatrixCredentialsPath,
|
|
26
|
-
resolveMatrixHomeserverKey,
|
|
27
|
-
resolveMatrixLegacyFlatStoragePaths,
|
|
28
|
-
resolveMatrixLegacyFlatStoreRoot,
|
|
29
|
-
sanitizeMatrixPathSegment,
|
|
30
|
-
} from "./src/storage-paths.js";
|
|
31
|
-
export { ensureMatrixSdkInstalled, isMatrixSdkAvailable } from "./src/matrix/deps.js";
|
|
32
|
-
export {
|
|
33
|
-
assertHttpUrlTargetsPrivateNetwork,
|
|
34
|
-
closeDispatcher,
|
|
35
|
-
createPinnedDispatcher,
|
|
36
|
-
resolvePinnedHostnameWithPolicy,
|
|
37
|
-
ssrfPolicyFromDangerouslyAllowPrivateNetwork,
|
|
38
|
-
ssrfPolicyFromAllowPrivateNetwork,
|
|
39
|
-
type LookupFn,
|
|
40
|
-
type SsrFPolicy,
|
|
41
|
-
} from "klaw/plugin-sdk/ssrf-runtime";
|
|
42
|
-
export {
|
|
43
|
-
setMatrixThreadBindingIdleTimeoutBySessionKey,
|
|
44
|
-
setMatrixThreadBindingMaxAgeBySessionKey,
|
|
45
|
-
} from "./src/matrix/thread-bindings-shared.js";
|
|
46
|
-
export { setMatrixRuntime } from "./src/runtime.js";
|
|
47
|
-
export { writeJsonFileAtomically } from "klaw/plugin-sdk/json-store";
|
|
48
|
-
export type {
|
|
49
|
-
ChannelDirectoryEntry,
|
|
50
|
-
ChannelMessageActionContext,
|
|
51
|
-
} from "klaw/plugin-sdk/channel-contract";
|
|
52
|
-
export type { KlawConfig } from "klaw/plugin-sdk/config-contracts";
|
|
53
|
-
export { formatZonedTimestamp } from "klaw/plugin-sdk/time-runtime";
|
|
54
|
-
export type { PluginRuntime, RuntimeLogger } from "klaw/plugin-sdk/plugin-runtime";
|
|
55
|
-
export type { RuntimeEnv } from "klaw/plugin-sdk/runtime-env";
|
|
56
|
-
export type { WizardPrompter } from "klaw/plugin-sdk/setup";
|
|
57
|
-
|
|
58
|
-
export function chunkTextForOutbound(text: string, limit: number): string[] {
|
|
59
|
-
const chunks: string[] = [];
|
|
60
|
-
let remaining = text;
|
|
61
|
-
while (remaining.length > limit) {
|
|
62
|
-
const window = remaining.slice(0, limit);
|
|
63
|
-
const splitAt = Math.max(window.lastIndexOf("\n"), window.lastIndexOf(" "));
|
|
64
|
-
const breakAt = splitAt > 0 ? splitAt : limit;
|
|
65
|
-
chunks.push(remaining.slice(0, breakAt).trimEnd());
|
|
66
|
-
remaining = remaining.slice(breakAt).trimStart();
|
|
67
|
-
}
|
|
68
|
-
if (remaining.length > 0 || text.length === 0) {
|
|
69
|
-
chunks.push(remaining);
|
|
70
|
-
}
|
|
71
|
-
return chunks;
|
|
72
|
-
}
|
package/runtime-heavy-api.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./src/matrix-migration.runtime.js";
|
package/runtime-setter-api.ts
DELETED
package/secret-contract-api.ts
DELETED
package/setup-entry.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { defineBundledChannelSetupEntry } from "klaw/plugin-sdk/channel-entry-contract";
|
|
2
|
-
|
|
3
|
-
export default defineBundledChannelSetupEntry({
|
|
4
|
-
importMetaUrl: import.meta.url,
|
|
5
|
-
plugin: {
|
|
6
|
-
specifier: "./setup-plugin-api.js",
|
|
7
|
-
exportName: "matrixSetupPlugin",
|
|
8
|
-
},
|
|
9
|
-
secrets: {
|
|
10
|
-
specifier: "./secret-contract-api.js",
|
|
11
|
-
exportName: "channelSecrets",
|
|
12
|
-
},
|
|
13
|
-
runtime: {
|
|
14
|
-
specifier: "./runtime-setter-api.js",
|
|
15
|
-
exportName: "setMatrixRuntime",
|
|
16
|
-
},
|
|
17
|
-
});
|
package/setup-plugin-api.ts
DELETED
package/src/account-selection.ts
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
listCombinedAccountIds,
|
|
3
|
-
listConfiguredAccountIds,
|
|
4
|
-
resolveListedDefaultAccountId,
|
|
5
|
-
resolveNormalizedAccountEntry,
|
|
6
|
-
} from "klaw/plugin-sdk/account-core";
|
|
7
|
-
import {
|
|
8
|
-
DEFAULT_ACCOUNT_ID,
|
|
9
|
-
normalizeAccountId,
|
|
10
|
-
normalizeOptionalAccountId,
|
|
11
|
-
} from "klaw/plugin-sdk/account-id";
|
|
12
|
-
import type { KlawConfig } from "klaw/plugin-sdk/config-contracts";
|
|
13
|
-
import { hasConfiguredSecretInput } from "klaw/plugin-sdk/secret-input-runtime";
|
|
14
|
-
import { normalizeOptionalString } from "klaw/plugin-sdk/string-coerce-runtime";
|
|
15
|
-
import {
|
|
16
|
-
resolveMatrixAccountStringValues,
|
|
17
|
-
type MatrixResolvedStringField,
|
|
18
|
-
} from "./auth-precedence.js";
|
|
19
|
-
import { getMatrixScopedEnvVarNames, listMatrixEnvAccountIds } from "./env-vars.js";
|
|
20
|
-
import { isRecord } from "./record-shared.js";
|
|
21
|
-
|
|
22
|
-
type MatrixTopologyStringSources = Partial<Record<MatrixResolvedStringField, string>>;
|
|
23
|
-
|
|
24
|
-
function readConfiguredMatrixString(value: unknown): string {
|
|
25
|
-
return normalizeOptionalString(value) ?? "";
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function readConfiguredMatrixSecretSource(value: unknown): string {
|
|
29
|
-
return hasConfiguredSecretInput(value) ? "configured" : "";
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function resolveMatrixChannelStringSources(
|
|
33
|
-
entry: Record<string, unknown> | null,
|
|
34
|
-
): MatrixTopologyStringSources {
|
|
35
|
-
if (!entry) {
|
|
36
|
-
return {};
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
homeserver: readConfiguredMatrixString(entry.homeserver),
|
|
40
|
-
userId: readConfiguredMatrixString(entry.userId),
|
|
41
|
-
accessToken: readConfiguredMatrixSecretSource(entry.accessToken),
|
|
42
|
-
password: readConfiguredMatrixSecretSource(entry.password),
|
|
43
|
-
deviceId: readConfiguredMatrixString(entry.deviceId),
|
|
44
|
-
deviceName: readConfiguredMatrixString(entry.deviceName),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function readEnvMatrixString(env: NodeJS.ProcessEnv, key: string): string {
|
|
49
|
-
return normalizeOptionalString(env[key]) ?? "";
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function resolveScopedMatrixEnvStringSources(
|
|
53
|
-
accountId: string,
|
|
54
|
-
env: NodeJS.ProcessEnv,
|
|
55
|
-
): MatrixTopologyStringSources {
|
|
56
|
-
const keys = getMatrixScopedEnvVarNames(accountId);
|
|
57
|
-
return {
|
|
58
|
-
homeserver: readEnvMatrixString(env, keys.homeserver),
|
|
59
|
-
userId: readEnvMatrixString(env, keys.userId),
|
|
60
|
-
accessToken: readEnvMatrixString(env, keys.accessToken),
|
|
61
|
-
password: readEnvMatrixString(env, keys.password),
|
|
62
|
-
deviceId: readEnvMatrixString(env, keys.deviceId),
|
|
63
|
-
deviceName: readEnvMatrixString(env, keys.deviceName),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function resolveGlobalMatrixEnvStringSources(env: NodeJS.ProcessEnv): MatrixTopologyStringSources {
|
|
68
|
-
return {
|
|
69
|
-
homeserver: readEnvMatrixString(env, "MATRIX_HOMESERVER"),
|
|
70
|
-
userId: readEnvMatrixString(env, "MATRIX_USER_ID"),
|
|
71
|
-
accessToken: readEnvMatrixString(env, "MATRIX_ACCESS_TOKEN"),
|
|
72
|
-
password: readEnvMatrixString(env, "MATRIX_PASSWORD"),
|
|
73
|
-
deviceId: readEnvMatrixString(env, "MATRIX_DEVICE_ID"),
|
|
74
|
-
deviceName: readEnvMatrixString(env, "MATRIX_DEVICE_NAME"),
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function hasUsableResolvedMatrixAuth(values: {
|
|
79
|
-
homeserver: string;
|
|
80
|
-
userId: string;
|
|
81
|
-
accessToken: string;
|
|
82
|
-
}): boolean {
|
|
83
|
-
// Account discovery must keep homeserver+userId shapes because auth can still
|
|
84
|
-
// resolve through cached Matrix credentials even when no fresh token/password
|
|
85
|
-
// is present in config or env.
|
|
86
|
-
return Boolean(values.homeserver && (values.accessToken || values.userId));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function hasFreshResolvedMatrixAuth(values: {
|
|
90
|
-
homeserver: string;
|
|
91
|
-
userId: string;
|
|
92
|
-
accessToken: string;
|
|
93
|
-
password: string;
|
|
94
|
-
}): boolean {
|
|
95
|
-
return Boolean(values.homeserver && (values.accessToken || (values.userId && values.password)));
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function resolveEffectiveMatrixAccountSources(params: {
|
|
99
|
-
channel: Record<string, unknown> | null;
|
|
100
|
-
accountId: string;
|
|
101
|
-
env: NodeJS.ProcessEnv;
|
|
102
|
-
}): ReturnType<typeof resolveMatrixAccountStringValues> {
|
|
103
|
-
const normalizedAccountId = normalizeAccountId(params.accountId);
|
|
104
|
-
return resolveMatrixAccountStringValues({
|
|
105
|
-
accountId: normalizedAccountId,
|
|
106
|
-
scopedEnv: resolveScopedMatrixEnvStringSources(normalizedAccountId, params.env),
|
|
107
|
-
channel: resolveMatrixChannelStringSources(params.channel),
|
|
108
|
-
globalEnv: resolveGlobalMatrixEnvStringSources(params.env),
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function hasUsableEffectiveMatrixAccountSource(params: {
|
|
113
|
-
channel: Record<string, unknown> | null;
|
|
114
|
-
accountId: string;
|
|
115
|
-
env: NodeJS.ProcessEnv;
|
|
116
|
-
}): boolean {
|
|
117
|
-
return hasUsableResolvedMatrixAuth(resolveEffectiveMatrixAccountSources(params));
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function hasFreshEffectiveMatrixAccountSource(params: {
|
|
121
|
-
channel: Record<string, unknown> | null;
|
|
122
|
-
accountId: string;
|
|
123
|
-
env: NodeJS.ProcessEnv;
|
|
124
|
-
}): boolean {
|
|
125
|
-
return hasFreshResolvedMatrixAuth(resolveEffectiveMatrixAccountSources(params));
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function hasConfiguredDefaultMatrixAccountSource(params: {
|
|
129
|
-
channel: Record<string, unknown> | null;
|
|
130
|
-
env: NodeJS.ProcessEnv;
|
|
131
|
-
}): boolean {
|
|
132
|
-
return hasFreshEffectiveMatrixAccountSource({
|
|
133
|
-
channel: params.channel,
|
|
134
|
-
accountId: DEFAULT_ACCOUNT_ID,
|
|
135
|
-
env: params.env,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export function resolveMatrixChannelConfig(cfg: KlawConfig): Record<string, unknown> | null {
|
|
140
|
-
return isRecord(cfg.channels?.matrix) ? cfg.channels.matrix : null;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export function findMatrixAccountEntry(
|
|
144
|
-
cfg: KlawConfig,
|
|
145
|
-
accountId: string,
|
|
146
|
-
): Record<string, unknown> | null {
|
|
147
|
-
const channel = resolveMatrixChannelConfig(cfg);
|
|
148
|
-
if (!channel) {
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
const accounts = isRecord(channel.accounts) ? channel.accounts : null;
|
|
153
|
-
if (!accounts) {
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
const entry = resolveNormalizedAccountEntry(accounts, accountId, normalizeAccountId);
|
|
157
|
-
return isRecord(entry) ? entry : null;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
export function resolveConfiguredMatrixAccountIds(
|
|
161
|
-
cfg: KlawConfig,
|
|
162
|
-
env: NodeJS.ProcessEnv = process.env,
|
|
163
|
-
): string[] {
|
|
164
|
-
const channel = resolveMatrixChannelConfig(cfg);
|
|
165
|
-
const configuredAccountIds = listConfiguredAccountIds({
|
|
166
|
-
accounts: channel && isRecord(channel.accounts) ? channel.accounts : undefined,
|
|
167
|
-
normalizeAccountId,
|
|
168
|
-
});
|
|
169
|
-
if (hasConfiguredDefaultMatrixAccountSource({ channel, env })) {
|
|
170
|
-
configuredAccountIds.push(DEFAULT_ACCOUNT_ID);
|
|
171
|
-
}
|
|
172
|
-
const readyEnvAccountIds = listMatrixEnvAccountIds(env).filter((accountId) =>
|
|
173
|
-
normalizeAccountId(accountId) === DEFAULT_ACCOUNT_ID
|
|
174
|
-
? hasConfiguredDefaultMatrixAccountSource({ channel, env })
|
|
175
|
-
: hasUsableEffectiveMatrixAccountSource({ channel, accountId, env }),
|
|
176
|
-
);
|
|
177
|
-
return listCombinedAccountIds({
|
|
178
|
-
configuredAccountIds,
|
|
179
|
-
additionalAccountIds: readyEnvAccountIds,
|
|
180
|
-
fallbackAccountIdWhenEmpty: channel ? DEFAULT_ACCOUNT_ID : undefined,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export function resolveMatrixDefaultOrOnlyAccountId(
|
|
185
|
-
cfg: KlawConfig,
|
|
186
|
-
env: NodeJS.ProcessEnv = process.env,
|
|
187
|
-
): string {
|
|
188
|
-
const channel = resolveMatrixChannelConfig(cfg);
|
|
189
|
-
if (!channel) {
|
|
190
|
-
return DEFAULT_ACCOUNT_ID;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
const configuredDefault = normalizeOptionalAccountId(
|
|
194
|
-
typeof channel.defaultAccount === "string" ? channel.defaultAccount : undefined,
|
|
195
|
-
);
|
|
196
|
-
const configuredAccountIds = resolveConfiguredMatrixAccountIds(cfg, env);
|
|
197
|
-
return resolveListedDefaultAccountId({
|
|
198
|
-
accountIds: configuredAccountIds,
|
|
199
|
-
configuredDefaultAccountId: configuredDefault,
|
|
200
|
-
ambiguousFallbackAccountId: DEFAULT_ACCOUNT_ID,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export function requiresExplicitMatrixDefaultAccount(
|
|
205
|
-
cfg: KlawConfig,
|
|
206
|
-
env: NodeJS.ProcessEnv = process.env,
|
|
207
|
-
): boolean {
|
|
208
|
-
const channel = resolveMatrixChannelConfig(cfg);
|
|
209
|
-
if (!channel) {
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
const configuredAccountIds = resolveConfiguredMatrixAccountIds(cfg, env);
|
|
213
|
-
if (configuredAccountIds.length <= 1) {
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
if (configuredAccountIds.includes(DEFAULT_ACCOUNT_ID)) {
|
|
217
|
-
return false;
|
|
218
|
-
}
|
|
219
|
-
const configuredDefault = normalizeOptionalAccountId(
|
|
220
|
-
typeof channel.defaultAccount === "string" ? channel.defaultAccount : undefined,
|
|
221
|
-
);
|
|
222
|
-
return !(configuredDefault && configuredAccountIds.includes(configuredDefault));
|
|
223
|
-
}
|