import type { ArticleInput, OptimizationFactCard, OptimizedArticle, } from "../domain/types"; import { optimizedArticleSchema } from "../domain/validation"; import { generateValidatedJson, type GenerateInput } from "../llm/client"; import { ARTICLE_OPTIMIZER_SYSTEM_PROMPT, buildArticleOptimizerPrompt, } from "../llm/prompts"; export interface OptimizeArticleInput { input: ArticleInput; factCard: OptimizationFactCard; onAuditSummary?: GenerateInput["onAuditSummary"]; } export async function optimizeArticle({ input, factCard, onAuditSummary, }: OptimizeArticleInput): Promise { const llmArticle = await generateValidatedJson({ schema: optimizedArticleSchema, system: ARTICLE_OPTIMIZER_SYSTEM_PROMPT, prompt: buildArticleOptimizerPrompt(input, factCard), temperature: 0.2, task: "article_optimizer", onAuditSummary, }); return optimizedArticleSchema.parse({ ...llmArticle, image_suggestions: [], }); }