import { NextRequest, NextResponse } from 'next/server' import { auth } from '@/auth' import { getAIProvider } from '@/lib/ai/factory' import { getSystemConfig } from '@/lib/config' export async function POST(request: NextRequest) { try { const session = await auth() if (!session?.user?.id) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const { text } = await request.json() // Validation if (!text || typeof text !== 'string') { return NextResponse.json({ error: 'Text is required' }, { status: 400 }) } // Validate word count const wordCount = text.split(/\s+/).length if (wordCount < 10) { return NextResponse.json( { error: 'Text must have at least 10 words to transform' }, { status: 400 } ) } if (wordCount > 500) { return NextResponse.json( { error: 'Text must have maximum 500 words to transform' }, { status: 400 } ) } const config = await getSystemConfig() const provider = getAIProvider(config) // Detect language from text const hasFrench = /[àâäéèêëïîôùûüÿç]/i.test(text) const responseLanguage = hasFrench ? 'French' : 'English' // Build prompt to transform text to Markdown const prompt = hasFrench ? `Tu es un expert en Markdown. Transforme ce texte ${responseLanguage} en Markdown bien formaté. IMPORTANT : - Ajoute des titres avec ## pour les sections principales - Utilise des listes à puces (-) ou numérotées (1.) quand approprié - Ajoute de l'emphase (gras **texte**, italique *texte*) pour les mots clés - Utilise des blocs de code pour le code ou les commandes - Présente l'information de manière claire et structurée - GARDE le même sens et le contenu, seul le format change Texte à transformer : ${text} Réponds SEULEMENT avec le texte transformé en Markdown, sans explications.` : `You are a Markdown expert. Transform this ${responseLanguage} text into well-formatted Markdown. IMPORTANT: - Add headings with ## for main sections - Use bullet lists (-) or numbered lists (1.) when appropriate - Add emphasis (bold **text**, italic *text*) for key terms - Use code blocks for code or commands - Present information clearly and structured - KEEP the same meaning and content, only change the format Text to transform: ${text} Respond ONLY with the transformed Markdown text, no explanations.` const transformedText = await provider.generateText(prompt) return NextResponse.json({ originalText: text, transformedText: transformedText, language: responseLanguage }) } catch (error: any) { return NextResponse.json( { error: error.message || 'Failed to transform text to Markdown' }, { status: 500 } ) } }