import Anthropic from "@anthropic-ai/sdk"
import { getSetting } from "@/lib/settings"

export const ANTHROPIC_KEY_SETTING = "anthropic_api_key"

function isValidKey(key: string | null | undefined): key is string {
  return !!key && key.startsWith("sk-ant-")
}

/**
 * Résout la clé Anthropic à utiliser : celle enregistrée depuis
 * /admin/settings (base de données) prime sur la variable d'environnement
 * ANTHROPIC_API_KEY. Retourne null si aucune des deux n'est valide — PROTO
 * utilise alors son générateur par règles (voir lib/proto-concept.ts).
 */
export async function getAnthropicApiKey(): Promise<string | null> {
  let stored: string | null = null
  try {
    stored = await getSetting(ANTHROPIC_KEY_SETTING)
  } catch (err) {
    // Base injoignable : on retombe sur la variable d'environnement plutôt
    // que de faire échouer tout appelant (ex. création d'un drop).
    console.error("Lecture de la clé Anthropic en base impossible :", err)
  }
  if (isValidKey(stored)) return stored
  const envKey = process.env.ANTHROPIC_API_KEY
  return isValidKey(envKey) ? envKey : null
}

export async function getAnthropicClient(): Promise<Anthropic | null> {
  const key = await getAnthropicApiKey()
  return key ? new Anthropic({ apiKey: key }) : null
}
