/** * Error Handler - Advanced error handling and recovery system * * This module provides comprehensive error classification, handling, and recovery mechanisms */ import { Logger, MCPError, ErrorContext, ErrorResult } from "./types.js"; export interface ErrorRecoveryStrategy { canRecover: boolean; maxRetries: number; backoffMultiplier: number; maxBackoffTime: number; recoveryActions: RecoveryAction[]; } export interface RecoveryAction { type: "retry" | "fallback" | "circuit-breaker" | "graceful-degradation"; condition: (error: MCPError, context: ErrorContext) => boolean; action: (error: MCPError, context: ErrorContext) => Promise; priority: number; } export interface ErrorHandlerConfig { enableRecovery: boolean; maxRetries: number; enableCircuitBreaker: boolean; circuitBreakerThreshold: number; enableGracefulDegradation: boolean; logAllErrors: boolean; } export declare class ErrorHandler { private logger; private config; private errorCounts; private circuitBreakerStates; private recoveryStrategies; constructor(logger: Logger, config?: Partial); /** * Handle an error with classification and recovery */ handleError(error: Error, context: ErrorContext): Promise; /** * Classify error into MCP error types */ private classifyError; /** * Determine if an error type is recoverable */ private isRecoverable; /** * Log error with appropriate level */ private logError; /** * Update error counts for circuit breaker */ private updateErrorCounts; /** * Check if circuit breaker is open for error type */ private isCircuitBreakerOpen; /** * Create circuit breaker response */ private createCircuitBreakerResponse; /** * Attempt error recovery */ private attemptRecovery; /** * Create error response */ private createErrorResponse; /** * Get user-friendly error message */ private getUserFriendlyMessage; /** * Initialize recovery strategies for different error types */ private initializeRecoveryStrategies; /** * Calculate backoff delay */ private calculateBackoffDelay; /** * Delay execution */ private delay; /** * Get error statistics */ getErrorStats(): { totalErrors: number; errorsByType: Record; circuitBreakerStates: Record; }; /** * Reset error counts (useful for testing) */ resetErrorCounts(): void; } //# sourceMappingURL=error-handler.d.ts.map