import { execFile } from "child_process";
import path from "path";
import { promisify } from "util";
import {
  clearKnowledgeStoreCache,
  isKnowledgePlatform,
  type KnowledgePlatform,
} from "@/lib/rag";

const execFileAsync = promisify(execFile);

export async function reindexKnowledge(platform?: KnowledgePlatform): Promise<{
  ok: boolean;
  stdout: string;
  platform?: KnowledgePlatform;
}> {
  const script = path.join(process.cwd(), "learning", "scripts", "build-knowledge-vectors.mjs");
  const args = platform ? [script, platform] : [script];
  const { stdout } = await execFileAsync("node", args, {
    cwd: process.cwd(),
    maxBuffer: 4 * 1024 * 1024,
  });

  if (platform) {
    clearKnowledgeStoreCache(platform);
  } else {
    clearKnowledgeStoreCache();
  }

  return { ok: true, stdout: stdout.trim(), platform };
}

export function parseReindexPlatform(value: unknown): KnowledgePlatform | undefined {
  if (typeof value !== "string" || !value.trim()) return undefined;
  const p = value.trim().toLowerCase();
  return isKnowledgePlatform(p) ? p : undefined;
}
