openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
35 lines (34 loc) • 1.79 kB
JavaScript
import { t as normalizeChatType } from "./chat-type-CxEvM45e.js";
import { t as deriveSessionChatTypeFromKey } from "./session-chat-type-shared-CUSf8dvh.js";
import { i as resolveSourceReplyDeliveryMode } from "./source-reply-delivery-mode-DwzhG4UZ.js";
//#region src/auto-reply/reply/completion-delivery-policy.ts
function resolveCompletionChatType(params) {
const explicit = normalizeChatType(params.requesterEntry?.chatType ?? params.requesterEntry?.origin?.chatType ?? void 0);
if (explicit) return explicit;
for (const key of [params.targetRequesterSessionKey, params.requesterSessionKey]) {
const derived = deriveSessionChatTypeFromKey(key);
if (derived !== "unknown") return derived;
}
return inferCompletionChatTypeFromTarget(params.directOrigin?.to ?? params.requesterSessionOrigin?.to);
}
function completionRequiresMessageToolDelivery(params) {
return resolveSourceReplyDeliveryMode({
cfg: params.cfg,
ctx: { ChatType: resolveCompletionChatType(params) },
messageToolAvailable: params.messageToolAvailable
}) === "message_tool_only";
}
function shouldRouteCompletionThroughRequesterSession(sessionKey) {
const chatType = deriveSessionChatTypeFromKey(sessionKey);
return chatType === "group" || chatType === "channel";
}
function inferCompletionChatTypeFromTarget(to) {
const normalized = to?.trim().toLowerCase();
if (!normalized) return "unknown";
if (normalized.startsWith("group:")) return "group";
if (normalized.startsWith("channel:") || normalized.startsWith("thread:")) return "channel";
if (normalized.startsWith("dm:") || normalized.startsWith("direct:") || normalized.startsWith("user:")) return "direct";
return "unknown";
}
//#endregion
export { shouldRouteCompletionThroughRequesterSession as n, completionRequiresMessageToolDelivery as t };