UNPKG

@spaik/mcp-server-roi

Version:

MCP server for AI ROI prediction and tracking with Monte Carlo simulations

147 lines 3.7 kB
import { EventEmitter } from 'events'; export declare enum CircuitState { CLOSED = "CLOSED",// Normal operation OPEN = "OPEN",// Failing, rejecting requests HALF_OPEN = "HALF_OPEN" } export interface CircuitBreakerOptions { /** * Number of failures before opening the circuit */ failureThreshold?: number; /** * Time window in ms to count failures */ failureWindow?: number; /** * Time in ms before attempting to close the circuit */ resetTimeout?: number; /** * Number of successful calls needed to close from half-open */ successThreshold?: number; /** * Timeout for individual calls in ms */ timeout?: number; /** * Name for logging */ name?: string; /** * Custom error filter to determine if an error should trip the breaker */ errorFilter?: (error: Error) => boolean; /** * Fallback function when circuit is open */ fallback?: () => Promise<any>; } export interface CircuitBreakerStats { state: CircuitState; failures: number; successes: number; consecutiveSuccesses: number; consecutiveFailures: number; lastFailureTime?: Date; lastSuccessTime?: Date; totalRequests: number; rejectedRequests: number; timeoutRequests: number; fallbackRequests: number; } /** * Circuit Breaker implementation for fault tolerance */ export declare class CircuitBreaker extends EventEmitter { private state; private failures; private successes; private consecutiveSuccesses; private consecutiveFailures; private lastFailureTime?; private lastSuccessTime?; private totalRequests; private rejectedRequests; private timeoutRequests; private fallbackRequests; private resetTimer?; private failureTimestamps; private readonly options; private readonly logger; constructor(options?: CircuitBreakerOptions); /** * Execute a function with circuit breaker protection */ execute<T>(fn: () => Promise<T>, correlationId?: string): Promise<T>; /** * Handle successful execution */ private onSuccess; /** * Handle failed execution */ private onFailure; /** * Open the circuit */ private open; /** * Move to half-open state */ private halfOpen; /** * Close the circuit */ private close; /** * Get current statistics */ getStats(): CircuitBreakerStats; /** * Reset the circuit breaker */ reset(): void; /** * Force the circuit to open */ forceOpen(): void; /** * Force the circuit to close */ forceClose(): void; /** * Check if circuit is available */ isAvailable(): boolean; } /** * Factory function to create circuit breakers for different services */ export declare function createCircuitBreaker(serviceName: string, options?: Partial<CircuitBreakerOptions>): CircuitBreaker; /** * Circuit breaker manager for managing multiple breakers */ export declare class CircuitBreakerManager { private breakers; private logger; /** * Get or create a circuit breaker for a service */ getBreaker(serviceName: string, options?: Partial<CircuitBreakerOptions>): CircuitBreaker; /** * Get statistics for all breakers */ getAllStats(): Record<string, CircuitBreakerStats>; /** * Reset all circuit breakers */ resetAll(): void; /** * Check overall health */ isHealthy(): boolean; } export declare const circuitBreakerManager: CircuitBreakerManager; //# sourceMappingURL=circuit-breaker.d.ts.map