import {
createResolvedApproverActionAuthAdapter,
resolveApprovalApprovers,
} from "openclaw/plugin-sdk/approval-auth-runtime" ;
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime" ;
import { resolveSlackAccount } from "./accounts.js" ;
import { normalizeSlackApproverId } from "./exec-approvals.js" ;
export function getSlackApprovalApprovers(params: {
cfg: OpenClawConfig;
accountId?: string | null ;
}): string[] {
const account = resolveSlackAccount(params).config;
return resolveApprovalApprovers({
allowFrom: account.allowFrom,
extraAllowFrom: account.dm?.allowFrom,
defaultTo: account.defaultTo,
normalizeApprover: normalizeSlackApproverId,
normalizeDefaultTo: normalizeSlackApproverId,
});
}
export function isSlackApprovalAuthorizedSender(params: {
cfg: OpenClawConfig;
accountId?: string | null ;
senderId?: string | null ;
}): boolean {
const senderId = params.senderId ? normalizeSlackApproverId(params.senderId) : undefined;
if (!senderId) {
return false ;
}
return getSlackApprovalApprovers(params).includes(senderId);
}
export const slackApprovalAuth = createResolvedApproverActionAuthAdapter({
channelLabel: "Slack" ,
resolveApprovers: ({ cfg, accountId }) => getSlackApprovalApprovers({ cfg, accountId }),
normalizeSenderId: (value) => normalizeSlackApproverId(value),
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.29 Sekunden
¤
*© Formatika GbR, Deutschland