/** * Circuit Breaker Adapter for SolidWorks MCP Server * * Wraps any SolidWorks adapter with circuit breaker pattern to: * - Prevent cascading failures * - Provide automatic recovery * - Reduce load on failing systems */ import type { SolidWorksFeature, SolidWorksModel } from '../solidworks/types.js'; import type { AdapterHealth, AdapterResult, Command, ExtrusionParameters, ISolidWorksAdapter, LoftParameters, MassProperties, RevolveParameters, SweepParameters } from './types.js'; export declare enum CircuitState { CLOSED = "CLOSED", OPEN = "OPEN", HALF_OPEN = "HALF_OPEN" } export declare class CircuitBreakerAdapter implements ISolidWorksAdapter { private wrappedAdapter; private threshold; private timeout; private halfOpenLimit; private state; private failures; private successes; private lastFailureTime?; private nextAttemptTime?; private halfOpenRequests; constructor(wrappedAdapter: ISolidWorksAdapter, threshold?: number, timeout?: number, // 1 minute halfOpenLimit?: number); /** * Execute operation with circuit breaker protection */ private executeWithBreaker; /** * Handle successful operation */ private onSuccess; /** * Handle failed operation */ private onFailure; /** * Check if we should attempt to reset the circuit */ private shouldAttemptReset; /** * Get circuit breaker statistics */ getStatistics(): { state: CircuitState; failures: number; successes: number; lastFailureTime?: Date; nextAttemptTime?: Date; }; /** * Manually reset the circuit breaker */ reset(): void; connect(): Promise; disconnect(): Promise; isConnected(): boolean; healthCheck(): Promise; execute(command: Command): Promise>; executeRaw(method: string, args: any[]): Promise; openModel(filePath: string): Promise; closeModel(save?: boolean): Promise; createPart(): Promise; createAssembly(): Promise; createDrawing(): Promise; createExtrusion(params: ExtrusionParameters): Promise; createRevolve(params: RevolveParameters): Promise; createSweep(params: SweepParameters): Promise; createLoft(params: LoftParameters): Promise; createSketch(plane: string): Promise; addLine(x1: number, y1: number, x2: number, y2: number): Promise; addCircle(centerX: number, centerY: number, radius: number): Promise; addRectangle(x1: number, y1: number, x2: number, y2: number): Promise; exitSketch(): Promise; getMassProperties(): Promise; exportFile(filePath: string, format: string): Promise; getDimension(name: string): Promise; setDimension(name: string, value: number): Promise; } //# sourceMappingURL=circuit-breaker.d.ts.map