/**
* Adapter Manager
*
* Central management for all model adapters with advanced error handling,
* fallback strategies, and performance optimization
*/
///
import { EventEmitter } from "events";
import { UnifiedAPIConfig, RoutingDecision, UnifiedMetrics } from "./unified-api.js";
import { ModelRequest, ModelResponse, StreamChunk, HealthCheck } from "./base-model-adapter.js";
export interface AdapterManagerConfig {
unifiedAPI: UnifiedAPIConfig;
errorHandling: {
maxRetries: number;
retryBackoff: "linear" | "exponential" | "fixed";
retryDelay: number;
fallbackChain: string[];
emergencyFallback: string;
errorThreshold: number;
};
performanceOptimization: {
routingOptimization: boolean;
adaptiveTimeouts: boolean;
predictiveScaling: boolean;
costOptimization: boolean;
qualityMonitoring: boolean;
};
monitoring: {
detailedLogging: boolean;
performanceTracking: boolean;
errorAnalytics: boolean;
usageAnalytics: boolean;
alerting: {
enabled: boolean;
thresholds: {
errorRate: number;
latency: number;
availability: number;
};
webhooks: string[];
};
};
}
export interface AdapterStatus {
name: string;
status: "healthy" | "degraded" | "unhealthy" | "offline";
health: HealthCheck;
metrics: {
requests: number;
errors: number;
avgLatency: number;
successRate: number;
};
capabilities: string[];
lastUsed: Date;
}
export interface SystemHealth {
overall: "healthy" | "degraded" | "critical";
adapters: AdapterStatus[];
metrics: UnifiedMetrics;
alerts: Array<{
level: "info" | "warning" | "error" | "critical";
message: string;
timestamp: Date;
adapter?: string;
}>;
}
export declare class AdapterManager extends EventEmitter {
private logger;
private config;
private unifiedAPI;
private systemHealth;
private alerts;
private performancePredictor;
private errorPatterns;
private adaptiveThresholds;
private fallbackHistory;
private adapters;
constructor(config: AdapterManagerConfig);
/**
* Enhanced generation with comprehensive error handling
*/
generate(request: ModelRequest): Promise;
/**
* Enhanced streaming with error recovery
*/
generateStream(request: ModelRequest): AsyncIterableIterator;
/**
* Execute request with comprehensive fallback chain
*/
private executeWithFallbackChain;
/**
* Stream with error recovery and reconnection
*/
private streamWithRecovery;
/**
* Optimize request based on patterns and predictions
*/
private optimizeRequest;
/**
* Process successful response
*/
private processSuccessfulResponse;
/**
* Process failed request
*/
private processFailedRequest;
/**
* Update error patterns for intelligent error handling
*/
private updateErrorPatterns;
/**
* Update fallback history for intelligent routing
*/
private updateFallbackHistory;
/**
* Calculate backoff delay with different strategies
*/
private calculateBackoffDelay;
/**
* Classify error patterns for intelligent handling
*/
private classifyErrorPattern;
/**
* Analyze quality requirements from prompt
*/
private analyzeQualityRequirements;
/**
* Assess response quality
*/
private assessResponseQuality;
/**
* Record usage analytics
*/
private recordUsageAnalytics;
/**
* Analyze error for patterns and insights
*/
private analyzeError;
/**
* Check if error triggers alert thresholds
*/
private checkAlertThresholds;
/**
* Trigger alert to configured webhooks
*/
private triggerAlert;
/**
* Setup event handlers for unified API
*/
private setupEventHandlers;
/**
* Start monitoring processes
*/
private startMonitoring;
/**
* Update system health based on events
*/
private updateSystemHealth;
/**
* Update adapter health from health checks
*/
private updateAdapterHealth;
/**
* Update overall system health
*/
private updateSystemHealthOverall;
/**
* Initialize system health structure
*/
private initializeSystemHealth;
getSystemHealth(): Promise;
getRoutingDecision(request: ModelRequest): Promise;
healthCheck(): Promise>;
getErrorPatterns(): Map;
getFallbackHistory(): Map;
registerAdapter(name: string, adapter: any): void;
hasAdapter(name: string): boolean;
getAdapter(name: string): any;
removeAdapter(name: string): void;
listAdapters(): string[];
getAdapters(names: string[]): any[];
healthCheckAll(): Promise>;
getAdaptersByCapability(capability: string): string[];
getMetrics(): any;
initializeAll(): Promise>;
selectAdapter(request: any): string;
}
//# sourceMappingURL=adapter-manager.d.ts.map