import { NextResponse } from "next/server";
import { getSessionUser } from "@/lib/auth/get-session-user";
import { loadKnowledgeCatalog } from "@/lib/rag";
import { parseReindexPlatform, reindexKnowledge } from "@/lib/rag/reindex";

export async function POST(request: Request) {
  const user = await getSessionUser();
  if (!user) {
    return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  }

  let platform: ReturnType<typeof parseReindexPlatform>;
  try {
    const body = (await request.json()) as { platform?: string };
    platform = parseReindexPlatform(body.platform);
  } catch {
    platform = undefined;
  }

  try {
    const result = await reindexKnowledge(platform);
    const catalog = await loadKnowledgeCatalog();
    return NextResponse.json({
      ok: true,
      platform: result.platform ?? "all",
      stdout: result.stdout.slice(-2000),
      catalog,
    });
  } catch (err) {
    const message = err instanceof Error ? err.message : "Reindex failed";
    return NextResponse.json({ error: message }, { status: 500 });
  }
}
