import type { ChatMessage, ChatRequest } from "@/lib/chat/types"; export const MAX_CHAT_REQUEST_MESSAGES = 100; export const MAX_CHAT_MESSAGE_CHARACTERS = 32_000; export const MAX_CHAT_REQUEST_CHARACTERS = 128_000; export function createRequestMessages( messages: readonly ChatMessage[], ): ChatRequest["messages"] { const newestFirst: ChatRequest["messages"] = []; let totalCharacters = 0; for (let index = messages.length - 1; index >= 0; index -= 1) { const message = messages[index]; if (message.status !== "complete" || !message.content.trim()) continue; const nextTotal = totalCharacters + message.content.length; if ( newestFirst.length === MAX_CHAT_REQUEST_MESSAGES || message.content.length > MAX_CHAT_MESSAGE_CHARACTERS || nextTotal > MAX_CHAT_REQUEST_CHARACTERS ) { break; } newestFirst.push({ role: message.role, content: message.content }); totalCharacters = nextTotal; } return newestFirst.reverse(); }