/** * QA360 AI Module - LLM Providers * * Multi-provider AI integration for test generation and analysis. * Supports DeepSeek (best value), Ollama (local), OpenAI, Anthropic, and Mock providers. * * Default behavior: Automatically selects the first available provider * using the factory pattern. DeepSeek is preferred for best value/cost ratio. */ export { OllamaProvider, createOllamaProvider, checkOllamaSetup, type OllamaConfig } from './ollama-provider.js'; export { OpenAIProvider, createOpenAIProvider, checkOpenAISetup, type OpenAIConfig, OpenAIError } from './openai-provider.js'; export { AnthropicProvider, createAnthropicProvider, checkAnthropicSetup, type AnthropicConfig, AnthropicError } from './anthropic-provider.js'; export { DeepSeekProvider, createDeepSeekProvider, checkDeepSeekSetup, getDeepSeekSetupInstructions, type DeepSeekConfig, DeepSeekError } from './deepseek-provider.js'; export { MockProvider, createMockProvider, createStandardMockProvider, MOCK_RESPONSES, type MockProviderConfig } from './mock-provider.js'; export { FallbackProvider, createLLMProvider, createBest, createResilientLLMProvider, getProviderStatus, getProviderInfo, detectBestProvider, hasAnyProvider, type ProviderFactoryConfig, type ProviderType, type ProviderSelection, type ProviderInfo, PROVIDER_CHAIN, } from './provider-factory.js'; /** * Base interface for LLM providers */ export interface LLMProvider { name: string; models: string[]; generate(request: GenerationRequest): Promise; /** * Streamed generation (optional) */ stream?(request: GenerationRequest): AsyncIterable; /** * Count tokens in text (approximate) */ countTokens(text: string): number; /** * Check if provider is available */ isAvailable(): Promise; } /** * Request for LLM generation */ export interface GenerationRequest { prompt: string; systemPrompt?: string; maxTokens?: number; temperature?: number; jsonMode?: boolean; } /** * Response from LLM */ export interface GenerationResponse { content: string; usage: { promptTokens: number; completionTokens: number; totalTokens: number; }; model: string; finishReason: 'stop' | 'length' | 'content_filter'; } export type { ModelInfo, PullProgress } from './ollama-provider.js'; export { OllamaError } from './ollama-provider.js';