Spaces:
Paused
Paused
| import type { loadConfig } from "../../../config/config.js"; | |
| import type { WebInboundMsg } from "../types.js"; | |
| import { resolveMessagePrefix } from "../../../agents/identity.js"; | |
| import { formatInboundEnvelope, type EnvelopeFormatOptions } from "../../../auto-reply/envelope.js"; | |
| export function formatReplyContext(msg: WebInboundMsg) { | |
| if (!msg.replyToBody) { | |
| return null; | |
| } | |
| const sender = msg.replyToSender ?? "unknown sender"; | |
| const idPart = msg.replyToId ? ` id:${msg.replyToId}` : ""; | |
| return `[Replying to ${sender}${idPart}]\n${msg.replyToBody}\n[/Replying]`; | |
| } | |
| export function buildInboundLine(params: { | |
| cfg: ReturnType<typeof loadConfig>; | |
| msg: WebInboundMsg; | |
| agentId: string; | |
| previousTimestamp?: number; | |
| envelope?: EnvelopeFormatOptions; | |
| }) { | |
| const { cfg, msg, agentId, previousTimestamp, envelope } = params; | |
| // WhatsApp inbound prefix: channels.whatsapp.messagePrefix > legacy messages.messagePrefix > identity/defaults | |
| const messagePrefix = resolveMessagePrefix(cfg, agentId, { | |
| configured: cfg.channels?.whatsapp?.messagePrefix, | |
| hasAllowFrom: (cfg.channels?.whatsapp?.allowFrom?.length ?? 0) > 0, | |
| }); | |
| const prefixStr = messagePrefix ? `${messagePrefix} ` : ""; | |
| const replyContext = formatReplyContext(msg); | |
| const baseLine = `${prefixStr}${msg.body}${replyContext ? `\n\n${replyContext}` : ""}`; | |
| // Wrap with standardized envelope for the agent. | |
| return formatInboundEnvelope({ | |
| channel: "WhatsApp", | |
| from: msg.chatType === "group" ? msg.from : msg.from?.replace(/^whatsapp:/, ""), | |
| timestamp: msg.timestamp, | |
| body: baseLine, | |
| chatType: msg.chatType, | |
| sender: { | |
| name: msg.senderName, | |
| e164: msg.senderE164, | |
| id: msg.senderJid, | |
| }, | |
| previousTimestamp, | |
| envelope, | |
| }); | |
| } | |