UNPKG

@iflow-mcp/ejmockler-brutalist

Version:

Deploy Claude, Codex & Gemini CLI agents to demolish your work before users do. Real file analysis. Brutal honesty. Now with conversation continuation & intelligent pagination.

153 lines 4.61 kB
import { EventEmitter } from 'events'; import { CLIAgentOptions } from '../cli-agents.js'; import { CLIAgentResponse } from '../types/brutalist.js'; import { CircuitBreakerConfig } from './circuit-breaker.js'; /** * Enhanced streaming CLI execution options */ export interface StreamingExecutionOptions extends CLIAgentOptions { enableProgress?: boolean; enableCircuitBreaker?: boolean; fallbackResponse?: any; cacheResponses?: boolean; streamingTimeout?: number; bufferConfig?: { maxBatchSize?: number; throttleDelay?: number; priorityRules?: Record<string, any>; }; } /** * Streaming execution result with enhanced metadata */ export interface StreamingExecutionResult { success: boolean; responses: CLIAgentResponse[]; sessionId: string; analysis: { startTime: number; endTime: number; duration: number; eventsEmitted: number; progressMilestones: number; circuitBreakerTrips: number; fallbacksUsed: number; }; streaming: { connectedClients: number; eventsSent: number; averageLatency: number; bufferHits: number; }; errors?: string[]; } /** * Streaming orchestrator configuration */ export interface StreamingOrchestratorConfig { maxConcurrentAnalyses: number; defaultTimeout: number; circuitBreakerConfig: CircuitBreakerConfig; enableMetrics: boolean; cleanupInterval: number; } /** * Advanced streaming CLI orchestrator with comprehensive real-time capabilities * * Integrates all streaming components: * - Real-time output parsing with semantic boundaries * - Intelligent buffering with adaptive throttling * - Session management with lifecycle tracking * - SSE transport with session isolation * - Progress tracking with milestone detection * - Circuit breaker with fallback strategies * - Comprehensive monitoring and analytics */ export declare class StreamingCLIOrchestrator extends EventEmitter { private cliOrchestrator; private sessionManager; private sseTransport; private circuitBreakers; private responseCache; private activeAnalyses; private config; private metrics; private cleanupTimer?; constructor(config?: Partial<StreamingOrchestratorConfig>); /** * Execute CLI analysis with full streaming capabilities */ executeWithStreaming(analysisType: string, cliAgents: string[], systemPrompt: string, userPrompt: string, options?: StreamingExecutionOptions): Promise<StreamingExecutionResult>; /** * Create streaming event handler for session */ private createStreamingEventHandler; /** * Execute CLI agents with circuit breaker protection */ private executeWithCircuitBreaker; /** * Setup event handlers for internal components */ private setupEventHandlers; /** * Setup circuit breakers for each CLI agent */ private setupCircuitBreakers; /** * Update average analysis duration metric */ private updateAverageAnalysisDuration; /** * Start cleanup timer for stale sessions and cache */ private startCleanupTimer; /** * Perform periodic cleanup */ private performCleanup; /** * Get orchestrator statistics */ getStats(): { metrics: { totalAnalyses: number; successfulAnalyses: number; failedAnalyses: number; totalEventsSent: number; totalCircuitBreakerTrips: number; totalFallbacksUsed: number; averageAnalysisDuration: number; }; activeAnalyses: number; sessionManager: import("./session-manager.js").SessionManagerStats; sseTransport: { totalConnections: number; activeConnections: number; sessionDistribution: Record<string, number>; averageEventsPerConnection: number; }; circuitBreakers: Record<string, any>; }; /** * Get active session IDs */ getActiveSessions(): string[]; /** * Force disconnect session */ disconnectSession(sessionId: string, reason?: string): void; /** * Reset circuit breaker for specific agent */ resetCircuitBreaker(agent: string): void; /** * Add response to cache for fallback strategies */ cacheResponse(key: string, response: any): void; /** * Shutdown orchestrator and cleanup resources */ shutdown(): void; } //# sourceMappingURL=streaming-orchestrator.d.ts.map