UNPKG

@gguf/claw

Version:

WhatsApp gateway CLI (Baileys web) with Pi RPC agent

106 lines (97 loc) 3.27 kB
import { normalizeShip } from "../targets.js"; export function formatModelName(modelString?: string | null): string { if (!modelString) { return "AI"; } const modelName = modelString.includes("/") ? modelString.split("/")[1] : modelString; const modelMappings: Record<string, string> = { "claude-opus-4-5": "Claude Opus 4.5", "claude-sonnet-4-5": "Claude Sonnet 4.5", "claude-sonnet-3-5": "Claude Sonnet 3.5", "gpt-4o": "GPT-4o", "gpt-4-turbo": "GPT-4 Turbo", "gpt-4": "GPT-4", "gemini-2.0-flash": "Gemini 2.0 Flash", "gemini-pro": "Gemini Pro", }; if (modelMappings[modelName]) { return modelMappings[modelName]; } return modelName .replace(/-/g, " ") .split(" ") .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) .join(" "); } export function isBotMentioned(messageText: string, botShipName: string): boolean { if (!messageText || !botShipName) { return false; } const normalizedBotShip = normalizeShip(botShipName); const escapedShip = normalizedBotShip.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); const mentionPattern = new RegExp(`(^|\\s)${escapedShip}(?=\\s|$)`, "i"); return mentionPattern.test(messageText); } export function isDmAllowed(senderShip: string, allowlist: string[] | undefined): boolean { if (!allowlist || allowlist.length === 0) { return true; } const normalizedSender = normalizeShip(senderShip); return allowlist.map((ship) => normalizeShip(ship)).some((ship) => ship === normalizedSender); } export function extractMessageText(content: unknown): string { if (!content || !Array.isArray(content)) { return ""; } return ( content // oxlint-disable-next-line typescript/no-explicit-any .map((block: any) => { if (block.inline && Array.isArray(block.inline)) { return ( block.inline // oxlint-disable-next-line typescript/no-explicit-any .map((item: any) => { if (typeof item === "string") { return item; } if (item && typeof item === "object") { if (item.ship) { return item.ship; } if (item.break !== undefined) { return "\n"; } if (item.link && item.link.href) { return item.link.href; } } return ""; }) .join("") ); } return ""; }) .join("\n") .trim() ); } export function isSummarizationRequest(messageText: string): boolean { const patterns = [ /summarize\s+(this\s+)?(channel|chat|conversation)/i, /what\s+did\s+i\s+miss/i, /catch\s+me\s+up/i, /channel\s+summary/i, /tldr/i, ]; return patterns.some((pattern) => pattern.test(messageText)); } export function formatChangesDate(daysAgo = 5): string { const now = new Date(); const targetDate = new Date(now.getTime() - daysAgo * 24 * 60 * 60 * 1000); const year = targetDate.getFullYear(); const month = targetDate.getMonth() + 1; const day = targetDate.getDate(); return `~${year}.${month}.${day}..20.19.51..9b9d`; }