openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
32 lines (31 loc) • 1.29 kB
JavaScript
import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString } from "./string-coerce-mnp54Vah.js";
import { h as stringifyRouteThreadId } from "./channel-route-D7X5briz.js";
//#region src/infra/outbound/conversation-id.ts
function resolveExplicitConversationTargetId(target) {
for (const prefix of [
"channel:",
"conversation:",
"group:",
"room:",
"dm:"
]) if (normalizeLowercaseStringOrEmpty(target).startsWith(prefix)) return normalizeOptionalString(target.slice(prefix.length));
}
/**
* Chooses the best conversation id from an explicit thread id or outbound targets.
*/
function resolveConversationIdFromTargets(params) {
const threadId = stringifyRouteThreadId(params.threadId);
if (threadId) return threadId;
for (const rawTarget of params.targets) {
const target = normalizeOptionalString(rawTarget);
if (!target) continue;
const explicitConversationId = resolveExplicitConversationTargetId(target);
if (explicitConversationId) return explicitConversationId;
if (target.includes(":") && explicitConversationId === void 0) continue;
const mentionMatch = target.match(/^<#(\d+)>$/);
if (mentionMatch?.[1]) return mentionMatch[1];
if (/^\d{6,}$/.test(target)) return target;
}
}
//#endregion
export { resolveConversationIdFromTargets as t };