/**
 * Adapter factory — system-ai.
 * Returns the correct adapter instance given a provider string and env bindings.
 */
import type { AIAdapter } from '../adapter'
import { AnthropicAdapter } from './anthropic'
import { OpenAIAdapter } from './openai'
import { GoogleAdapter } from './google'

export interface AIEnv {
  ANTHROPIC_API_KEY: string
  OPENAI_API_KEY: string
  GOOGLE_AI_API_KEY: string
}

/**
 * Returns the adapter instance for the given provider.
 * Each adapter reads its API key from the env bindings.
 */
export function getAdapter(
  provider: 'anthropic' | 'openai' | 'google',
  env: AIEnv,
): AIAdapter {
  switch (provider) {
    case 'anthropic':
      return new AnthropicAdapter(env)
    case 'openai':
      return new OpenAIAdapter(env)
    case 'google':
      return new GoogleAdapter(env)
    default: {
      const exhaustive: never = provider
      throw new Error(`Unknown AI provider: ${String(exhaustive)}`)
    }
  }
}
