UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

72 lines (71 loc) 3.17 kB
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js"; import { t as createDedupeCache } from "./dedupe-gst1CUro.js"; //#region src/config/runtime-group-policy.ts /** * Resolve the effective group policy for a channel/provider runtime. * Missing provider config can fail closed separately from configured providers. */ function resolveRuntimeGroupPolicy(params) { const configuredFallbackPolicy = params.configuredFallbackPolicy ?? "open"; const missingProviderFallbackPolicy = params.missingProviderFallbackPolicy ?? "allowlist"; return { groupPolicy: params.providerConfigPresent ? params.groupPolicy ?? params.defaultGroupPolicy ?? configuredFallbackPolicy : params.groupPolicy ?? missingProviderFallbackPolicy, providerMissingFallbackApplied: !params.providerConfigPresent && params.groupPolicy === void 0 }; } /** Read the shared channels default group policy used by provider-specific resolvers. */ function resolveDefaultGroupPolicy(cfg) { return cfg.channels?.defaults?.groupPolicy; } /** Human labels for the access surface blocked by a missing-provider fallback. */ const GROUP_POLICY_BLOCKED_LABEL = { group: "group messages", guild: "guild messages", room: "room messages", channel: "channel messages", space: "space messages" }; /** * Resolve the standard channel-provider policy. * Configured providers default open; missing provider config defaults allowlist. */ function resolveOpenProviderRuntimeGroupPolicy(params) { return resolveRuntimeGroupPolicy({ providerConfigPresent: params.providerConfigPresent, groupPolicy: params.groupPolicy, defaultGroupPolicy: params.defaultGroupPolicy, configuredFallbackPolicy: "open", missingProviderFallbackPolicy: "allowlist" }); } /** * Resolve the strict channel-provider policy. * Configured and missing provider config both default allowlist. */ function resolveAllowlistProviderRuntimeGroupPolicy(params) { return resolveRuntimeGroupPolicy({ providerConfigPresent: params.providerConfigPresent, groupPolicy: params.groupPolicy, defaultGroupPolicy: params.defaultGroupPolicy, configuredFallbackPolicy: "allowlist", missingProviderFallbackPolicy: "allowlist" }); } const warnedMissingProviderGroupPolicy = createDedupeCache({ ttlMs: 0, maxSize: 4096 }); /** * Log the missing-provider fail-closed fallback once per provider/account. * Returns true only when this call emitted the warning. */ function warnMissingProviderGroupPolicyFallbackOnce(params) { if (!params.providerMissingFallbackApplied) return false; const key = `${params.providerKey}:${params.accountId ?? "*"}`; if (warnedMissingProviderGroupPolicy.check(key)) return false; const blockedLabel = normalizeOptionalString(params.blockedLabel) || "group messages"; params.log(`${params.providerKey}: channels.${params.providerKey} is missing; defaulting groupPolicy to "allowlist" (${blockedLabel} blocked until explicitly configured).`); return true; } //#endregion export { warnMissingProviderGroupPolicyFallbackOnce as a, resolveOpenProviderRuntimeGroupPolicy as i, resolveAllowlistProviderRuntimeGroupPolicy as n, resolveDefaultGroupPolicy as r, GROUP_POLICY_BLOCKED_LABEL as t };