UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

45 lines (44 loc) 1.48 kB
//#region src/channels/targets.ts function normalizeTargetId(kind, id) { return `${kind}:${id}`.toLowerCase(); } function buildMessagingTarget(kind, id, raw) { return { kind, id, raw, normalized: normalizeTargetId(kind, id) }; } function ensureTargetId(params) { if (!params.pattern.test(params.candidate)) throw new Error(params.errorMessage); return params.candidate; } function parseTargetMention(params) { const match = params.raw.match(params.mentionPattern); if (!match?.[1]) return; return buildMessagingTarget(params.kind, match[1], params.raw); } function parseTargetPrefix(params) { if (!params.raw.startsWith(params.prefix)) return; const id = params.raw.slice(params.prefix.length).trim(); return id ? buildMessagingTarget(params.kind, id, params.raw) : void 0; } function parseTargetPrefixes(params) { for (const entry of params.prefixes) { const parsed = parseTargetPrefix({ raw: params.raw, prefix: entry.prefix, kind: entry.kind }); if (parsed) return parsed; } } function requireTargetKind(params) { const kindLabel = params.kind; if (!params.target) throw new Error(`${params.platform} ${kindLabel} id is required.`); if (params.target.kind !== params.kind) throw new Error(`${params.platform} ${kindLabel} id is required (use ${kindLabel}:<id>).`); return params.target.id; } //#endregion export { requireTargetKind as a, parseTargetPrefixes as i, ensureTargetId as n, parseTargetMention as r, buildMessagingTarget as t };