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

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

  app.post<{
    Body: AiActionRequest;
    Headers: { authorization?: string };
    Reply: AiActionResponse;
  }>("/v1/ai/actions", async (request) => {
    await requireAuthToken(request.headers.authorization);

    const selectionText = request.body.selectionText?.trim() ?? "";
    if (!selectionText) {
      throw new Error("Selected text is required before running an AI action.");
    }

    return runAiActionWithAI(
      {
        ...request.body,
        selectionText
      },
      config.llm
    );
  });
}
