/**
 * Provider-agnostic AI adapter contract — system-ai.
 * All provider adapters implement AIAdapter; callers only depend on this shape.
 */

export interface AIMessage {
  role: 'system' | 'user' | 'assistant'
  content: string | AIContentBlock[]
}

export interface AIContentBlock {
  type: 'text' | 'image'
  text?: string
  image?: {
    mediaType: string
    data: string // base64-encoded
  }
}

export interface AIRequest {
  messages: AIMessage[]
  model: string
  maxTokens?: number
  temperature?: number
  stream?: boolean
}

export interface AIResponse {
  content: string
  inputTokens: number
  outputTokens: number
  model: string
  provider: string
  durationMs: number
}

export interface AIAdapter {
  provider: 'anthropic' | 'openai' | 'google'
  call(request: AIRequest): Promise<AIResponse>
  stream(request: AIRequest): ReadableStream<string>
}
