/** * @fileoverview Multi-LLM Provider Chain for Skill Compatibility Testing * @module @skillsmith/core/testing/MultiLLMProvider * @see SMI-1523: Configure multi-LLM provider chain * @see SMI-2741: Split to meet 500-line standard * * Provides a unified interface for testing skills across multiple LLM providers: * - Claude (Anthropic) - Primary * - GPT (OpenAI) - Fallback 1 * - Gemini (Google) - Fallback 2 * - Cohere (Command) - Fallback 3 * - Ollama (Local) - Fallback 4 * * Features: * - Automatic failover with configurable strategy * - Health monitoring and circuit breaker pattern * - Cost-aware provider selection * - Skill compatibility testing across providers */ import { EventEmitter } from 'events'; export type { LLMProviderType, ProviderPriority, LoadBalanceStrategy, FailoverCondition, ProviderConfig, FallbackRule, FallbackStrategy, CircuitBreakerConfig, MultiLLMProviderConfig, HealthCheckResult, ProviderStatus, LLMRequest, LLMResponse, ProviderMetrics, SkillCompatibilityResult, ResolvedMultiLLMConfig, } from './MultiLLMProvider.types.js'; export { DEFAULT_MULTI_LLM_CONFIG } from './MultiLLMProvider.types.js'; export { CircuitBreaker, getErrorCondition, estimateTokens, calculateCost, calculateCompatibilityScore, } from './MultiLLMProvider.helpers.js'; export type { CircuitState, CircuitBreakerMetrics } from './MultiLLMProvider.helpers.js'; export { selectProvider, selectRoundRobin, selectLeastLoaded, selectByLatency, selectByCost, getFallbackProvider, } from './MultiLLMProvider.selection.js'; export { aggregateMetrics, runCompatibilityTest } from './MultiLLMProvider.metrics.js'; import type { LLMProviderType, MultiLLMProviderConfig, HealthCheckResult, ProviderStatus, LLMRequest, LLMResponse, ProviderMetrics, SkillCompatibilityResult } from './MultiLLMProvider.types.js'; /** * Multi-LLM Provider for skill compatibility testing * * Provides unified access to multiple LLM providers with automatic failover, * load balancing, and cost optimization. * * @example * ```typescript * const provider = new MultiLLMProvider() * await provider.initialize() * * // Complete a request with automatic failover * const response = await provider.complete({ * messages: [{ role: 'user', content: 'Explain this skill' }] * }) * * // Test skill compatibility across providers * const compatibility = await provider.testSkillCompatibility('commit') * ``` */ export declare class MultiLLMProvider extends EventEmitter { private config; private initialized; private circuitBreakers; private providerMetrics; private activeRequests; private roundRobinIndex; private v3ProviderManager; constructor(config?: MultiLLMProviderConfig); /** Initialize the multi-LLM provider */ initialize(): Promise; /** Check if provider is initialized */ isInitialized(): boolean; /** Get enabled providers */ getEnabledProviders(): LLMProviderType[]; /** Get available providers (enabled + circuit closed) */ getAvailableProviders(): LLMProviderType[]; /** Check provider health */ healthCheck(provider: LLMProviderType): Promise; /** Get provider status */ getProviderStatus(provider: LLMProviderType): ProviderStatus; /** Complete a request with automatic failover */ complete(request: LLMRequest): Promise; /** Test skill compatibility across providers */ testSkillCompatibility(skillId: string): Promise; /** Get provider metrics */ getMetrics(): Map; /** Get aggregated metrics */ getAggregatedMetrics(): { totalRequests: number; totalCost: number; avgLatencyMs: number; avgSuccessRate: number; providerBreakdown: Record; }; /** Close and cleanup */ close(): void; private ensureInitialized; private initializeV3Integration; private doSelectProvider; private doGetFallbackProvider; private executeRequest; private initializeMetrics; private updateMetrics; } /** * Create and initialize a MultiLLMProvider instance */ export declare function createMultiLLMProvider(config?: MultiLLMProviderConfig): Promise; //# sourceMappingURL=MultiLLMProvider.d.ts.map