claude-flow
Version:
Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration
101 lines • 2.59 kB
TypeScript
/**
* Production Circuit Breaker
*
* Implements the circuit breaker pattern to prevent cascading failures:
* - Closed: Normal operation
* - Open: Failing fast, not calling service
* - Half-Open: Testing if service recovered
*
* @module @claude-flow/cli/production/circuit-breaker
*/
export type CircuitState = 'closed' | 'open' | 'half-open';
export interface CircuitBreakerConfig {
failureThreshold: number;
resetTimeoutMs: number;
successThreshold: number;
failureWindowMs: number;
halfOpenRequestPercentage: number;
onStateChange?: (from: CircuitState, to: CircuitState) => void;
onOpen?: (failures: number) => void;
onClose?: () => void;
}
export interface CircuitStats {
state: CircuitState;
failures: number;
successes: number;
lastFailure: Date | null;
lastSuccess: Date | null;
stateChangedAt: Date;
totalRequests: number;
totalFailures: number;
totalSuccesses: number;
}
export declare class CircuitBreaker {
private config;
private state;
private failures;
private successCount;
private stateChangedAt;
private totalRequests;
private totalFailures;
private totalSuccesses;
private lastFailure;
private lastSuccess;
constructor(config?: Partial<CircuitBreakerConfig>);
/**
* Get current circuit state
*/
getState(): CircuitState;
/**
* Check if request is allowed
*/
isAllowed(): boolean;
/**
* Execute a function through the circuit breaker
*/
execute<T>(fn: () => Promise<T>): Promise<T>;
/**
* Record a successful operation
*/
recordSuccess(): void;
/**
* Record a failed operation
*/
recordFailure(): void;
/**
* Manually open the circuit
*/
open(): void;
/**
* Manually close the circuit
*/
close(): void;
/**
* Reset the circuit breaker
*/
reset(): void;
/**
* Get circuit statistics
*/
getStats(): CircuitStats;
/**
* Get failure rate
*/
getFailureRate(): number;
private checkStateTransition;
private transitionTo;
}
/**
* Get or create a circuit breaker by name
*/
export declare function getCircuitBreaker(name: string, config?: Partial<CircuitBreakerConfig>): CircuitBreaker;
/**
* Get all circuit breaker stats
*/
export declare function getAllCircuitStats(): Record<string, CircuitStats>;
/**
* Reset all circuit breakers
*/
export declare function resetAllCircuits(): void;
export default CircuitBreaker;
//# sourceMappingURL=circuit-breaker.d.ts.map