Matrix: remove unused internal helpers

This commit is contained in:
Gustavo Madeira Santana
2026-03-09 03:55:10 -04:00
parent 2c40d47429
commit 54fc9ecf7d
4 changed files with 4 additions and 141 deletions

View File

@@ -5,9 +5,7 @@ export function resolveMatrixBaseConfig(cfg: CoreConfig): MatrixConfig {
return cfg.channels?.matrix ?? {};
}
export function resolveMatrixAccountsMap(
cfg: CoreConfig,
): Readonly<Record<string, MatrixAccountConfig>> {
function resolveMatrixAccountsMap(cfg: CoreConfig): Readonly<Record<string, MatrixAccountConfig>> {
const accounts = resolveMatrixBaseConfig(cfg).accounts;
if (!accounts || typeof accounts !== "object") {
return {};

View File

@@ -1,10 +1,6 @@
import { ensureMatrixNodeRuntime, resolveRuntimeMatrixClient } from "../client-bootstrap.js";
import { resolveRuntimeMatrixClient } from "../client-bootstrap.js";
import type { MatrixActionClient, MatrixActionClientOpts } from "./types.js";
export function ensureNodeRuntime() {
ensureMatrixNodeRuntime();
}
async function ensureActionClientReadiness(
client: MatrixActionClient["client"],
readiness: MatrixActionClientOpts["readiness"],
@@ -34,7 +30,7 @@ export async function resolveActionClient(
});
}
export type MatrixActionClientStopMode = "stop" | "persist";
type MatrixActionClientStopMode = "stop" | "persist";
export async function stopActionClient(
resolved: MatrixActionClient,

View File

@@ -1,126 +0,0 @@
import {
formatAllowlistMatchMeta,
issuePairingChallenge,
readStoreAllowFromForDmPolicy,
resolveDmGroupAccessWithLists,
resolveSenderScopedGroupPolicy,
} from "openclaw/plugin-sdk/matrix";
import {
normalizeMatrixAllowList,
resolveMatrixAllowListMatch,
resolveMatrixAllowListMatches,
} from "./allowlist.js";
type MatrixDmPolicy = "open" | "pairing" | "allowlist" | "disabled";
type MatrixGroupPolicy = "open" | "allowlist" | "disabled";
export async function resolveMatrixAccessState(params: {
isDirectMessage: boolean;
resolvedAccountId: string;
dmPolicy: MatrixDmPolicy;
groupPolicy: MatrixGroupPolicy;
allowFrom: string[];
groupAllowFrom: Array<string | number>;
senderId: string;
readStoreForDmPolicy: (provider: string, accountId: string) => Promise<string[]>;
}) {
const storeAllowFrom = params.isDirectMessage
? await readStoreAllowFromForDmPolicy({
provider: "matrix",
accountId: params.resolvedAccountId,
dmPolicy: params.dmPolicy,
readStore: params.readStoreForDmPolicy,
})
: [];
const normalizedGroupAllowFrom = normalizeMatrixAllowList(params.groupAllowFrom);
const senderGroupPolicy = resolveSenderScopedGroupPolicy({
groupPolicy: params.groupPolicy,
groupAllowFrom: normalizedGroupAllowFrom,
});
const access = resolveDmGroupAccessWithLists({
isGroup: !params.isDirectMessage,
dmPolicy: params.dmPolicy,
groupPolicy: senderGroupPolicy,
allowFrom: params.allowFrom,
groupAllowFrom: normalizedGroupAllowFrom,
storeAllowFrom,
groupAllowFromFallbackToAllowFrom: false,
isSenderAllowed: (allowFrom) =>
resolveMatrixAllowListMatches({
allowList: normalizeMatrixAllowList(allowFrom),
userId: params.senderId,
}),
});
const effectiveAllowFrom = normalizeMatrixAllowList(access.effectiveAllowFrom);
const effectiveGroupAllowFrom = normalizeMatrixAllowList(access.effectiveGroupAllowFrom);
return {
access,
effectiveAllowFrom,
effectiveGroupAllowFrom,
groupAllowConfigured: effectiveGroupAllowFrom.length > 0,
};
}
export async function enforceMatrixDirectMessageAccess(params: {
dmEnabled: boolean;
dmPolicy: MatrixDmPolicy;
accessDecision: "allow" | "block" | "pairing";
senderId: string;
senderName: string;
effectiveAllowFrom: string[];
upsertPairingRequest: (input: {
id: string;
meta?: Record<string, string | undefined>;
}) => Promise<{
code: string;
created: boolean;
}>;
sendPairingReply: (text: string) => Promise<void>;
logVerboseMessage: (message: string) => void;
}): Promise<boolean> {
if (!params.dmEnabled) {
return false;
}
if (params.accessDecision === "allow") {
return true;
}
const allowMatch = resolveMatrixAllowListMatch({
allowList: params.effectiveAllowFrom,
userId: params.senderId,
});
const allowMatchMeta = formatAllowlistMatchMeta(allowMatch);
if (params.accessDecision === "pairing") {
await issuePairingChallenge({
channel: "matrix",
senderId: params.senderId,
senderIdLine: `Matrix user id: ${params.senderId}`,
meta: { name: params.senderName },
upsertPairingRequest: params.upsertPairingRequest,
buildReplyText: ({ code }) =>
[
"OpenClaw: access not configured.",
"",
`Pairing code: ${code}`,
"",
"Ask the bot owner to approve with:",
"openclaw pairing approve matrix <code>",
].join("\n"),
sendPairingReply: params.sendPairingReply,
onCreated: () => {
params.logVerboseMessage(
`matrix pairing request sender=${params.senderId} name=${params.senderName ?? "unknown"} (${allowMatchMeta})`,
);
},
onReplyError: (err) => {
params.logVerboseMessage(
`matrix pairing reply failed for ${params.senderId}: ${String(err)}`,
);
},
});
return false;
}
params.logVerboseMessage(
`matrix: blocked dm sender ${params.senderId} (dmPolicy=${params.dmPolicy}, ${allowMatchMeta})`,
);
return false;
}

View File

@@ -2,7 +2,6 @@ import { getMatrixRuntime } from "../../runtime.js";
import type { CoreConfig } from "../../types.js";
import { resolveMatrixAccountConfig } from "../accounts.js";
import {
ensureMatrixNodeRuntime,
resolveRuntimeMatrixClient,
type ResolvedRuntimeMatrixClient,
} from "../client-bootstrap.js";
@@ -10,10 +9,6 @@ import type { MatrixClient } from "../sdk.js";
const getCore = () => getMatrixRuntime();
export function ensureNodeRuntime() {
ensureMatrixNodeRuntime();
}
export function resolveMediaMaxBytes(accountId?: string | null): number | undefined {
const cfg = getCore().config.loadConfig() as CoreConfig;
const matrixCfg = resolveMatrixAccountConfig({ cfg, accountId });
@@ -41,7 +36,7 @@ export async function resolveMatrixClient(opts: {
});
}
export function stopResolvedMatrixClient(resolved: ResolvedRuntimeMatrixClient): void {
function stopResolvedMatrixClient(resolved: ResolvedRuntimeMatrixClient): void {
if (resolved.stopOnDone) {
resolved.client.stop();
}