// Feishu plugin module implements approval auth behavior. import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers, } from "openclaw/plugin-sdk/approval-auth-runtime"; import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime"; import { resolveFeishuAccount } from "./accounts.js"; import { normalizeFeishuTarget } from "./targets.js"; function normalizeFeishuApproverId(value: string | number): string | undefined { const normalized = normalizeFeishuTarget(String(value)); const trimmed = normalizeOptionalLowercaseString(normalized); return trimmed?.startsWith("ou_") ? trimmed : undefined; } export const feishuApprovalAuth = createResolvedApproverActionAuthAdapter({ channelLabel: "Feishu", resolveApprovers: ({ cfg, accountId }) => { const account = resolveFeishuAccount({ cfg, accountId }).config; return resolveApprovalApprovers({ allowFrom: account.allowFrom, normalizeApprover: normalizeFeishuApproverId, }); }, normalizeSenderId: (value) => normalizeFeishuApproverId(value), });