import crypto from 'node:crypto'; /** * Goosed requires user_message.metadata.userVisible/agentVisible and created on /reply. */ export function ensureGooseUserMessageMetadata(userMessage) { if (!userMessage || typeof userMessage !== 'object' || Array.isArray(userMessage)) { return userMessage; } const metadata = userMessage.metadata && typeof userMessage.metadata === 'object' && !Array.isArray(userMessage.metadata) ? { ...userMessage.metadata } : {}; if (metadata.userVisible == null) metadata.userVisible = true; if (metadata.agentVisible == null) metadata.agentVisible = true; const created = Number(userMessage.created ?? 0) || Math.floor(Date.now() / 1000); return { ...userMessage, id: userMessage.id ?? crypto.randomUUID(), role: userMessage.role ?? 'user', created, metadata, }; }