openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
98 lines (97 loc) • 4.03 kB
JavaScript
import { t as resolveApprovalApprovers } from "./approval-approvers-CM-4zRvR.js";
import { t as matchesApprovalRequestFilters } from "./approval-request-filters-W2XYHus7.js";
import { p as getExecApprovalReplyMetadata } from "./exec-approval-reply-BXMsffTv.js";
import { n as isChannelExecApprovalClientEnabledFromConfig } from "./approval-client-helpers-CXfxNFTn.js";
import "./approval-client-runtime-iV-RyHdv.js";
import "./approval-delivery-runtime-CYw5jxIp.js";
import { a as doesApprovalRequestMatchChannelAccount } from "./exec-approval-session-target-DfDihhuU.js";
import "./approval-native-runtime-BeD_vgZw.js";
import { s as resolveDiscordAccount } from "./accounts-BI_6uJlY.js";
import { t as parseDiscordTarget } from "./target-parsing-CxulEx_f.js";
//#region extensions/discord/src/exec-approvals.ts
function normalizeDiscordApproverId(value) {
const trimmed = value.trim();
if (!trimmed) return;
if (/^\d+$/.test(trimmed)) return trimmed;
try {
const target = parseDiscordTarget(trimmed);
return target?.kind === "user" ? target.id : void 0;
} catch {
return;
}
}
function resolveDiscordOwnerApprovers(cfg) {
const ownerAllowFrom = cfg.commands?.ownerAllowFrom;
if (!Array.isArray(ownerAllowFrom) || ownerAllowFrom.length === 0) return [];
return resolveApprovalApprovers({
explicit: ownerAllowFrom,
normalizeApprover: (value) => normalizeDiscordApproverId(String(value))
});
}
function getDiscordExecApprovalApprovers(params) {
return resolveApprovalApprovers({
explicit: params.configOverride?.approvers ?? resolveDiscordAccount(params).config.execApprovals?.approvers ?? resolveDiscordOwnerApprovers(params.cfg),
normalizeApprover: (value) => normalizeDiscordApproverId(String(value))
});
}
function isDiscordExecApprovalClientEnabled(params) {
return isChannelExecApprovalClientEnabledFromConfig({
enabled: (params.configOverride ?? resolveDiscordAccount(params).config.execApprovals)?.enabled,
approverCount: getDiscordExecApprovalApprovers({
cfg: params.cfg,
accountId: params.accountId,
configOverride: params.configOverride
}).length
});
}
function isDiscordExecApprovalApprover(params) {
const senderId = params.senderId?.trim();
if (!senderId) return false;
return getDiscordExecApprovalApprovers({
cfg: params.cfg,
accountId: params.accountId,
configOverride: params.configOverride
}).includes(senderId);
}
function shouldSuppressLocalDiscordExecApprovalPrompt(params) {
const metadata = getExecApprovalReplyMetadata(params.payload);
const config = resolveDiscordAccount(params).config.execApprovals;
return params.hint?.kind === "approval-pending" && params.hint.nativeRouteActive === true && isDiscordExecApprovalClientEnabled(params) && metadata !== null && matchesApprovalRequestFilters({
request: {
agentId: metadata.agentId,
sessionKey: metadata.sessionKey
},
agentFilter: config?.agentFilter,
sessionFilter: config?.sessionFilter
});
}
//#endregion
//#region extensions/discord/src/approval-shared.ts
function shouldHandleDiscordApprovalRequest(params) {
const config = params.configOverride ?? resolveDiscordAccount({
cfg: params.cfg,
accountId: params.accountId
}).config.execApprovals;
const approvers = getDiscordExecApprovalApprovers({
cfg: params.cfg,
accountId: params.accountId,
configOverride: params.configOverride
});
if (!doesApprovalRequestMatchChannelAccount({
cfg: params.cfg,
request: params.request,
channel: "discord",
accountId: params.accountId
})) return false;
if (!isChannelExecApprovalClientEnabledFromConfig({
enabled: config?.enabled,
approverCount: approvers.length
})) return false;
return matchesApprovalRequestFilters({
request: params.request.request,
agentFilter: config?.agentFilter,
sessionFilter: config?.sessionFilter
});
}
//#endregion
export { shouldSuppressLocalDiscordExecApprovalPrompt as a, isDiscordExecApprovalClientEnabled as i, getDiscordExecApprovalApprovers as n, isDiscordExecApprovalApprover as r, shouldHandleDiscordApprovalRequest as t };