UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

140 lines (139 loc) 6.94 kB
import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js"; import "./string-coerce-runtime-CEGJWkQ_.js"; import { i as splitChannelApprovalCapability, n as createApproverRestrictedNativeApprovalCapability } from "./approval-delivery-helpers-IkWw0ui8.js"; import "./approval-delivery-runtime-CYw5jxIp.js"; import { n as createLazyChannelApprovalNativeRuntimeAdapter } from "./approval-handler-adapter-runtime-DLWtIqHq.js"; import { c as shouldSuppressLocalNativeExecApprovalPrompt, i as createNativeApprovalChannelRouteGates, n as createChannelApproverDmTargetResolver, r as createChannelNativeOriginTargetResolver } from "./approval-native-helpers-WitYuyrm.js"; import "./approval-native-runtime-BeD_vgZw.js"; import { i as resolveGoogleChatAccount, n as listGoogleChatAccountIds, r as resolveDefaultGoogleChatAccountId } from "./accounts-BedKEwKe.js"; import { r as normalizeGoogleChatTarget, t as isGoogleChatSpaceTarget } from "./targets-BIe3h2UJ.js"; import { n as googleChatApprovalAuth, r as normalizeGoogleChatApproverId, t as getGoogleChatApprovalApprovers } from "./approval-auth-USWn0b35.js"; //#region extensions/googlechat/src/approval-native.ts const DEFAULT_APPROVAL_FORWARDING_MODE = "session"; function isGoogleChatAccountConfigured(params) { const account = resolveGoogleChatAccount(params); return account.enabled && account.credentialSource !== "none"; } function hasGoogleChatWebhookApprovalAuthConfig(params) { const account = resolveGoogleChatAccount(params).config; if (!normalizeOptionalString(account.audience)) return false; if (account.audienceType === "project-number") return true; return account.audienceType === "app-url"; } function isGoogleChatApprovalTransportEnabled(params) { return isGoogleChatAccountConfigured(params) && hasGoogleChatWebhookApprovalAuthConfig(params); } function normalizeGoogleChatForwardTarget(target) { if (normalizeLowercaseStringOrEmpty(target.channel) !== "googlechat") return null; const to = normalizeGoogleChatTarget(target.to); return to ? { to, accountId: normalizeOptionalString(target.accountId), threadId: target.threadId ?? null } : null; } function resolveTurnSourceGoogleChatOriginTarget(request) { if (normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel) !== "googlechat") return null; const target = normalizeGoogleChatTarget(request.request.turnSourceTo ?? ""); if (!target || !isGoogleChatSpaceTarget(target)) return null; return { to: target, accountId: normalizeOptionalString(request.request.turnSourceAccountId), threadId: request.request.turnSourceThreadId ?? null }; } const googleChatApprovalRouteGates = createNativeApprovalChannelRouteGates({ channel: "googlechat", defaultForwardingMode: DEFAULT_APPROVAL_FORWARDING_MODE, isTransportEnabled: isGoogleChatApprovalTransportEnabled, listAccountIds: listGoogleChatAccountIds, resolveDefaultAccountId: resolveDefaultGoogleChatAccountId, normalizeForwardTarget: normalizeGoogleChatForwardTarget, resolveTurnSourceTarget: resolveTurnSourceGoogleChatOriginTarget }); function isGoogleChatNativeApprovalClientEnabled(params) { return googleChatApprovalRouteGates.canAnyApprovalPotentiallyRouteToChannel({ ...params, nativeSessionOnly: true }) && getGoogleChatApprovalApprovers(params).length > 0; } function resolveSessionGoogleChatOriginTarget(sessionTarget) { const target = normalizeGoogleChatTarget(sessionTarget.to); return target && isGoogleChatSpaceTarget(target) ? { to: target, threadId: sessionTarget.threadId ?? null } : null; } function shouldHandleGoogleChatNativeApprovalRequest(params) { return googleChatApprovalRouteGates.shouldHandleApprovalRequest(params) && getGoogleChatApprovalApprovers(params).length > 0 && Boolean(resolveTurnSourceGoogleChatOriginTarget(params.request)); } function shouldSuppressLocalGoogleChatExecApprovalPrompt(params) { return shouldSuppressLocalNativeExecApprovalPrompt({ ...params, isNativeDeliveryEnabled: isGoogleChatNativeApprovalClientEnabled }); } const googleChatApprovalCapability = createApproverRestrictedNativeApprovalCapability({ channel: "googlechat", channelLabel: "Google Chat", describeExecApprovalSetup: ({ accountId }) => { const prefix = accountId && accountId !== "default" ? `channels.googlechat.accounts.${accountId}` : "channels.googlechat"; return `Approve it from the Web UI or terminal UI for now. Google Chat supports native approvals for this account when the webhook and service account are configured. Configure \`${prefix}.dm.allowFrom\` or \`${prefix}.defaultTo\` with numeric \`users/{id}\` approvers.`; }, listAccountIds: listGoogleChatAccountIds, hasApprovers: ({ cfg, accountId }) => getGoogleChatApprovalApprovers({ cfg, accountId }).length > 0, isExecAuthorizedSender: ({ cfg, accountId, senderId }) => googleChatApprovalAuth.authorizeActorAction?.({ cfg, accountId, senderId, action: "approve", approvalKind: "exec" })?.authorized ?? false, isPluginAuthorizedSender: ({ cfg, accountId, senderId }) => googleChatApprovalAuth.authorizeActorAction?.({ cfg, accountId, senderId, action: "approve", approvalKind: "plugin" })?.authorized ?? false, isNativeDeliveryEnabled: isGoogleChatNativeApprovalClientEnabled, resolveNativeDeliveryMode: () => "channel", requireMatchingTurnSourceChannel: true, resolveSuppressionAccountId: ({ target, request }) => normalizeOptionalString(target.accountId) ?? normalizeOptionalString(request.request.turnSourceAccountId), resolveOriginTarget: createChannelNativeOriginTargetResolver({ channel: "googlechat", shouldHandleRequest: shouldHandleGoogleChatNativeApprovalRequest, resolveTurnSourceTarget: resolveTurnSourceGoogleChatOriginTarget, resolveSessionTarget: resolveSessionGoogleChatOriginTarget }), resolveApproverDmTargets: createChannelApproverDmTargetResolver({ shouldHandleRequest: shouldHandleGoogleChatNativeApprovalRequest, resolveApprovers: getGoogleChatApprovalApprovers, mapApprover: (approver, params) => { const to = normalizeGoogleChatApproverId(approver); return to ? { to, accountId: normalizeOptionalString(params.accountId) } : null; } }), nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({ eventKinds: ["exec", "plugin"], isConfigured: ({ cfg, accountId }) => isGoogleChatNativeApprovalClientEnabled({ cfg, accountId }), shouldHandle: ({ cfg, accountId, request }) => shouldHandleGoogleChatNativeApprovalRequest({ cfg, accountId, request }), load: async () => (await import("./approval-handler.runtime-DDP-Hsc_.js")).googleChatApprovalNativeRuntime }) }); splitChannelApprovalCapability(googleChatApprovalCapability); //#endregion export { shouldSuppressLocalGoogleChatExecApprovalPrompt as i, isGoogleChatNativeApprovalClientEnabled as n, shouldHandleGoogleChatNativeApprovalRequest as r, googleChatApprovalCapability as t };