import type { FastifyInstance } from "fastify";
import type { ProofreadRequest, ProofreadResponse } from "@skola/shared";
import { getConfig } from "../config.js";
import { proofreadWithAI } from "../services/ai-service.js";
import { requireAuthToken } from "../services/auth-store.js";

export async function registerProofreadRoutes(app: FastifyInstance): Promise<void> {
  const config = getConfig();

  app.post<{
    Body: ProofreadRequest;
    Headers: { authorization?: string };
    Reply: ProofreadResponse;
  }>("/v1/proofread", async (request) => {
    await requireAuthToken(request.headers.authorization);

    const originalText = request.body.text.trim();

    if (!originalText) {
      throw new Error("Selected text is required before running proofing.");
    }

    return proofreadWithAI(
      originalText,
      request.body.mode,
      config.llm,
      request.body.personality
    );
  });
}
