import {
createResolvedApproverActionAuthAdapter,
resolveApprovalApprovers,
} from "openclaw/plugin-sdk/approval-auth-runtime" ;
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtime" ;
import { resolveMattermostAccount } from "./mattermost/accounts.js" ;
const MATTERMOST_USER_ID_RE = /^[a-z0-9 ]{26 }$/;
function normalizeMattermostApproverId(value: string | number): string | undefined {
const normalized = String(value)
.trim()
.replace(/^(mattermost|user):/i, "" )
.replace(/^@/, "" )
.trim();
const lowered = normalizeLowercaseStringOrEmpty(normalized);
return MATTERMOST_USER_ID_RE.test(lowered) ? lowered : undefined;
}
export const mattermostApprovalAuth = createResolvedApproverActionAuthAdapter({
channelLabel: "Mattermost" ,
resolveApprovers: ({ cfg, accountId }) => {
const account = resolveMattermostAccount({ cfg, accountId }).config;
return resolveApprovalApprovers({
allowFrom: account.allowFrom,
normalizeApprover: normalizeMattermostApproverId,
});
},
normalizeSenderId: (value) => normalizeMattermostApproverId(value),
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland