import { json } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; import { getStyleById, getIntensityConfig } from '$lib/styles'; import { convertText } from '$lib/llm'; import type { ConversionRequest, ConversionResponse } from '$lib/types'; export const POST: RequestHandler = async ({ request }) => { let body: ConversionRequest; try { body = await request.json(); } catch { return json({ error: 'Invalid JSON body' }, { status: 400 }); } const { text, styleId, intensity } = body; // Validate text if (!text || typeof text !== 'string' || text.trim().length === 0) { return json({ error: 'Text is required and must be non-empty' }, { status: 400 }); } // Validate styleId if (!styleId || typeof styleId !== 'string') { return json({ error: 'styleId is required' }, { status: 400 }); } const style = getStyleById(styleId); if (!style) { return json({ error: `Unknown style: ${styleId}` }, { status: 400 }); } // Validate intensity if (typeof intensity !== 'number' || !Number.isInteger(intensity) || intensity < 1 || intensity > 5) { return json({ error: 'Intensity must be an integer between 1 and 5' }, { status: 400 }); } const intensityConfig = getIntensityConfig(intensity); if (!intensityConfig) { return json({ error: 'Invalid intensity level' }, { status: 400 }); } try { const result = convertText(text, style.promptModifier, intensityConfig.instruction); // Await the promise const { converted, systemPrompt, userMessage } = await result; const response: ConversionResponse = { original: text, converted, styleId, intensity, systemPrompt, userMessage }; return json(response); } catch (err) { const message = err instanceof Error ? err.message : 'LLM call failed'; return json({ error: `Failed to convert text: ${message}` }, { status: 502 }); } };