refactor: centralize WhatsApp target normalization

This commit is contained in:
Peter Steinberger
2026-01-10 02:39:50 +01:00
parent 8f8caa8d89
commit 9cd2662a86
9 changed files with 191 additions and 130 deletions

View File

@@ -48,12 +48,11 @@ import {
import { registerAgentRunContext } from "../infra/agent-events.js";
import { parseTelegramTarget } from "../telegram/targets.js";
import { resolveTelegramToken } from "../telegram/token.js";
import { normalizeE164, truncateUtf16Safe } from "../utils.js";
import {
isWhatsAppGroupJid,
normalizeE164,
normalizeWhatsAppTarget,
truncateUtf16Safe,
} from "../utils.js";
} from "../whatsapp/normalize.js";
import type { CronJob } from "./types.js";
export type RunCronAgentTurnResult = {
@@ -209,21 +208,21 @@ function resolveDeliveryTarget(
const sanitizedWhatsappTo = (() => {
if (provider !== "whatsapp") return rawTo;
if (rawTo && isWhatsAppGroupJid(rawTo)) {
return normalizeWhatsAppTarget(rawTo) || rawTo;
return normalizeWhatsAppTarget(rawTo) ?? rawTo;
}
const rawAllow = cfg.whatsapp?.allowFrom ?? [];
if (rawAllow.includes("*")) {
return rawTo ? normalizeWhatsAppTarget(rawTo) : rawTo;
return rawTo ? (normalizeWhatsAppTarget(rawTo) ?? rawTo) : rawTo;
}
const allowFrom = rawAllow
.map((val) => normalizeE164(val))
.filter((val) => val.length > 1);
if (allowFrom.length === 0) {
return rawTo ? normalizeWhatsAppTarget(rawTo) : rawTo;
return rawTo ? (normalizeWhatsAppTarget(rawTo) ?? rawTo) : rawTo;
}
if (!rawTo) return allowFrom[0];
const normalized = normalizeWhatsAppTarget(rawTo);
if (allowFrom.includes(normalized)) return normalized;
if (normalized && allowFrom.includes(normalized)) return normalized;
return allowFrom[0];
})();
@@ -555,7 +554,8 @@ export async function runCronIsolatedAgentTurn(params: {
summary: "Delivery skipped (no WhatsApp recipient).",
};
}
const to = normalizeWhatsAppTarget(resolvedDelivery.to);
const rawTo = resolvedDelivery.to;
const to = normalizeWhatsAppTarget(rawTo) ?? rawTo;
try {
await deliverPayloadsWithMedia({
payloads,