@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
TypeScript
/**
* 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>;
}