function copyMessage(message, includeReasoning = true) { const copy = { role: message.role, content: message.content }; if (includeReasoning && message.reasoning) copy.reasoning = message.reasoning; return copy; } function create(systemPrompt, messages = []) { const conversation = { systemPrompt, messages: messages.map(message => copyMessage(message)), add(source) { if (Array.isArray(source?.messages)) { for (const message of source.messages) conversation.messages.push(copyMessage(message, false)); return conversation; } conversation.messages.push(copyMessage(source)); return conversation; } }; return conversation; } function start(systemPrompt = null) { return create(systemPrompt); } function from(blob, fallbackSystemPrompt = null) { const systemPrompt = blob.systemPrompt === undefined ? fallbackSystemPrompt : blob.systemPrompt; return create(systemPrompt, blob.messages || []); } module.exports = { start, from };