UNPKG

@ai-capabilities-suite/mcp-debugger-core

Version:

Core debugging engine for Node.js and TypeScript applications. Provides Inspector Protocol integration, breakpoint management, variable inspection, execution control, profiling, hang detection, and source map support.

138 lines (137 loc) 3.56 kB
/** * Circuit Breaker Pattern Implementation * Prevents cascading failures by failing fast when a service is unhealthy */ export declare enum CircuitState { CLOSED = "CLOSED",// Normal operation OPEN = "OPEN",// Failing fast HALF_OPEN = "HALF_OPEN" } export interface CircuitBreakerConfig { /** * Number of failures before opening the circuit */ failureThreshold: number; /** * Time in milliseconds to wait before attempting recovery */ resetTimeout: number; /** * Number of successful calls needed to close circuit from half-open */ successThreshold: number; /** * Timeout for individual operations in milliseconds */ timeout?: number; } export interface CircuitBreakerStats { state: CircuitState; failures: number; successes: number; consecutiveFailures: number; consecutiveSuccesses: number; lastFailureTime?: number; lastSuccessTime?: number; } export declare class CircuitBreaker { private name; private config; private state; private failures; private successes; private consecutiveFailures; private consecutiveSuccesses; private lastFailureTime?; private lastSuccessTime?; private resetTimer?; constructor(name: string, config: CircuitBreakerConfig); /** * Execute an operation through the circuit breaker * @param operation The async operation to execute * @returns The result of the operation * @throws Error if circuit is open or operation fails */ execute<T>(operation: () => Promise<T>): Promise<T>; /** * Execute operation with timeout */ private executeWithTimeout; /** * Handle successful operation */ private onSuccess; /** * Handle failed operation */ private onFailure; /** * Open the circuit (start failing fast) */ private openCircuit; /** * Transition to half-open state (test if service recovered) */ private halfOpenCircuit; /** * Close the circuit (resume normal operation) */ private closeCircuit; /** * Manually reset the circuit breaker */ reset(): void; /** * Get current circuit breaker statistics */ getStats(): CircuitBreakerStats; /** * Get current circuit state */ getState(): CircuitState; /** * Check if circuit is open */ isOpen(): boolean; /** * Check if circuit is closed */ isClosed(): boolean; /** * Check if circuit is half-open */ isHalfOpen(): boolean; } /** * Circuit Breaker Manager * Manages multiple circuit breakers for different operations */ export declare class CircuitBreakerManager { private breakers; /** * Create or get a circuit breaker * @param name Circuit breaker name * @param config Circuit breaker configuration * @returns The circuit breaker instance */ getOrCreate(name: string, config: CircuitBreakerConfig): CircuitBreaker; /** * Get a circuit breaker by name * @param name Circuit breaker name * @returns The circuit breaker or undefined */ get(name: string): CircuitBreaker | undefined; /** * Get all circuit breakers * @returns Map of all circuit breakers */ getAll(): Map<string, CircuitBreaker>; /** * Reset all circuit breakers */ resetAll(): void; /** * Get statistics for all circuit breakers */ getAllStats(): Map<string, CircuitBreakerStats>; }