UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio

143 lines (142 loc) 3.83 kB
/** * RAG Circuit Breaker * * Implements circuit breaker pattern for RAG operations including * vector store queries, embeddings, and reranking calls. * Provides fault tolerance and prevents cascading failures. */ import { TypedEventEmitter } from "../../core/infrastructure/index.js"; import type { CircuitState, RAGCircuitBreakerConfig, RAGCircuitBreakerEvents, RAGCircuitBreakerStats } from "../../types/index.js"; /** * RAG Circuit Breaker * * Provides circuit breaker pattern implementation for RAG operations * with comprehensive statistics and event handling. */ export declare class RAGCircuitBreaker extends TypedEventEmitter<RAGCircuitBreakerEvents> { private name; private state; private config; private callHistory; private lastFailureTime; private halfOpenCalls; private lastStateChange; private cleanupTimer?; constructor(name: string, config?: Partial<RAGCircuitBreakerConfig>); /** * Execute an operation with circuit breaker protection */ execute<T>(operation: () => Promise<T>, operationType?: string): Promise<T>; /** * Record a call in the history */ private recordCall; /** * Check if failure threshold is exceeded */ private checkFailureThreshold; /** * Change circuit breaker state */ private changeState; /** * Create a timeout promise */ private timeoutPromise; /** * Clean up old call records */ private cleanupCallHistory; /** * Calculate percentile latency */ private calculatePercentileLatency; /** * Get current statistics */ getStats(): RAGCircuitBreakerStats; /** * Manually reset the circuit breaker */ reset(): void; /** * Force open the circuit breaker */ forceOpen(reason?: string): void; /** * Get circuit breaker name */ getName(): string; /** * Check if circuit is open */ isOpen(): boolean; /** * Check if circuit is closed */ isClosed(): boolean; /** * Check if circuit is half-open */ isHalfOpen(): boolean; /** * Get current state */ getState(): CircuitState; /** * Destroy the circuit breaker and clean up resources */ destroy(): void; } /** * Circuit breaker manager for RAG operations */ export declare class RAGCircuitBreakerManager { private breakers; /** * Get or create a circuit breaker */ getBreaker(name: string, config?: Partial<RAGCircuitBreakerConfig>): RAGCircuitBreaker; /** * Remove a circuit breaker */ removeBreaker(name: string): boolean; /** * Get all circuit breaker names */ getBreakerNames(): string[]; /** * Get statistics for all circuit breakers */ getAllStats(): Record<string, RAGCircuitBreakerStats>; /** * Reset all circuit breakers */ resetAll(): void; /** * Get health summary */ getHealthSummary(): { totalBreakers: number; closedBreakers: number; openBreakers: number; halfOpenBreakers: number; unhealthyBreakers: string[]; }; /** * Destroy all circuit breakers */ destroyAll(): void; } /** * Global circuit breaker manager for RAG operations */ export declare const ragCircuitBreakerManager: RAGCircuitBreakerManager; /** * Convenience function to get a circuit breaker */ export declare function getCircuitBreaker(name: string, config?: Partial<RAGCircuitBreakerConfig>): RAGCircuitBreaker; /** * Convenience function to execute with circuit breaker */ export declare function executeWithCircuitBreaker<T>(breakerName: string, operation: () => Promise<T>, operationType?: string, config?: Partial<RAGCircuitBreakerConfig>): Promise<T>;