UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

139 lines (138 loc) 5.75 kB
import { a as resolveChannelEntryMatchWithFallback, n as buildChannelKeyCandidates, r as normalizeChannelSlug, s as resolveNestedAllowlistDecision } from "./channel-config-C-DSDncb.js"; import { a as resolveAllowlistMatchSimple } from "./allowlist-match-B04-UeMC.js"; import { i as resolveToolsBySender } from "./group-policy-CShy7eWv.js"; import { n as isDangerousNameMatchingEnabled } from "./dangerous-name-matching-D4QRC91G.js"; import "./runtime-api-B9a52KOD.js"; //#region extensions/msteams/src/policy.ts function resolveMSTeamsRouteConfig(params) { const teamId = params.teamId?.trim(); const teamName = params.teamName?.trim(); const conversationId = params.conversationId?.trim(); const channelName = params.channelName?.trim(); const teams = params.cfg?.teams ?? {}; const allowlistConfigured = Object.keys(teams).length > 0; const teamMatch = resolveChannelEntryMatchWithFallback({ entries: teams, keys: buildChannelKeyCandidates(teamId, params.allowNameMatching ? teamName : void 0, params.allowNameMatching && teamName ? normalizeChannelSlug(teamName) : void 0), wildcardKey: "*", normalizeKey: normalizeChannelSlug }); const teamConfig = teamMatch.entry; const channels = teamConfig?.channels ?? {}; const channelAllowlistConfigured = Object.keys(channels).length > 0; const channelMatch = resolveChannelEntryMatchWithFallback({ entries: channels, keys: buildChannelKeyCandidates(conversationId, params.allowNameMatching ? channelName : void 0, params.allowNameMatching && channelName ? normalizeChannelSlug(channelName) : void 0), wildcardKey: "*", normalizeKey: normalizeChannelSlug }); const channelConfig = channelMatch.entry; return { teamConfig, channelConfig, allowlistConfigured, allowed: resolveNestedAllowlistDecision({ outerConfigured: allowlistConfigured, outerMatched: Boolean(teamConfig), innerConfigured: channelAllowlistConfigured, innerMatched: Boolean(channelConfig) }), teamKey: teamMatch.matchKey ?? teamMatch.key, channelKey: channelMatch.matchKey ?? channelMatch.key, channelMatchKey: channelMatch.matchKey, channelMatchSource: channelMatch.matchSource === "direct" || channelMatch.matchSource === "wildcard" ? channelMatch.matchSource : void 0 }; } function resolveMSTeamsGroupToolPolicy(params) { const cfg = params.cfg.channels?.msteams; if (!cfg) return; const groupId = params.groupId?.trim(); const groupChannel = params.groupChannel?.trim(); const groupSpace = params.groupSpace?.trim(); const allowNameMatching = isDangerousNameMatchingEnabled(cfg); const resolved = resolveMSTeamsRouteConfig({ cfg, teamId: groupSpace, teamName: groupSpace, conversationId: groupId, channelName: groupChannel, allowNameMatching }); if (resolved.channelConfig) { const senderPolicy = resolveToolsBySender({ toolsBySender: resolved.channelConfig.toolsBySender, senderId: params.senderId, senderName: params.senderName, senderUsername: params.senderUsername, senderE164: params.senderE164 }); if (senderPolicy) return senderPolicy; if (resolved.channelConfig.tools) return resolved.channelConfig.tools; const teamSenderPolicy = resolveToolsBySender({ toolsBySender: resolved.teamConfig?.toolsBySender, senderId: params.senderId, senderName: params.senderName, senderUsername: params.senderUsername, senderE164: params.senderE164 }); if (teamSenderPolicy) return teamSenderPolicy; return resolved.teamConfig?.tools; } if (resolved.teamConfig) { const teamSenderPolicy = resolveToolsBySender({ toolsBySender: resolved.teamConfig.toolsBySender, senderId: params.senderId, senderName: params.senderName, senderUsername: params.senderUsername, senderE164: params.senderE164 }); if (teamSenderPolicy) return teamSenderPolicy; if (resolved.teamConfig.tools) return resolved.teamConfig.tools; } if (!groupId) return; const channelCandidates = buildChannelKeyCandidates(groupId, allowNameMatching ? groupChannel : void 0, allowNameMatching && groupChannel ? normalizeChannelSlug(groupChannel) : void 0); for (const teamConfig of Object.values(cfg.teams ?? {})) { const match = resolveChannelEntryMatchWithFallback({ entries: teamConfig?.channels ?? {}, keys: channelCandidates, wildcardKey: "*", normalizeKey: normalizeChannelSlug }); if (match.entry) { const senderPolicy = resolveToolsBySender({ toolsBySender: match.entry.toolsBySender, senderId: params.senderId, senderName: params.senderName, senderUsername: params.senderUsername, senderE164: params.senderE164 }); if (senderPolicy) return senderPolicy; if (match.entry.tools) return match.entry.tools; const teamSenderPolicy = resolveToolsBySender({ toolsBySender: teamConfig?.toolsBySender, senderId: params.senderId, senderName: params.senderName, senderUsername: params.senderUsername, senderE164: params.senderE164 }); if (teamSenderPolicy) return teamSenderPolicy; return teamConfig?.tools; } } } function resolveMSTeamsAllowlistMatch(params) { return resolveAllowlistMatchSimple(params); } function resolveMSTeamsReplyPolicy(params) { if (params.isDirectMessage) return { requireMention: false, replyStyle: "thread" }; const requireMention = params.channelConfig?.requireMention ?? params.teamConfig?.requireMention ?? params.globalConfig?.requireMention ?? true; return { requireMention, replyStyle: params.channelConfig?.replyStyle ?? params.teamConfig?.replyStyle ?? params.globalConfig?.replyStyle ?? (requireMention ? "thread" : "top-level") }; } //#endregion export { resolveMSTeamsRouteConfig as i, resolveMSTeamsGroupToolPolicy as n, resolveMSTeamsReplyPolicy as r, resolveMSTeamsAllowlistMatch as t };