/** * Load Balancer Types */ import { TerminalSession } from '../terminal/types'; import { QueuedTask } from '../queue/types'; /** * Load balancing strategy */ export declare enum LoadBalancingStrategy { ROUND_ROBIN = "round_robin",// Distribute evenly in rotation LEAST_LOADED = "least_loaded",// Assign to terminal with least work CAPABILITY_BASED = "capability_based",// Match based on capabilities WEIGHTED = "weighted",// Weight by terminal performance STICKY = "sticky",// Keep related tasks on same terminal RANDOM = "random",// Random assignment PERFORMANCE = "performance",// Based on terminal performance metrics HYBRID = "hybrid" } /** * Terminal load metrics */ export interface TerminalLoad { terminalId: string; sessionId: string; currentTasks: number; queuedTasks: number; completedTasks: number; failedTasks: number; averageTaskTime: number; totalTokensUsed: number; remainingTokens: number; cpuUsage?: number; memoryUsage?: number; lastTaskCompletedAt?: Date; performanceScore: number; capabilities: string[]; isAvailable: boolean; lastHeartbeat: Date; } /** * Task assignment */ export interface TaskAssignment { taskId: string; terminalId: string; assignedAt: Date; strategy: LoadBalancingStrategy; score: number; reason: string; estimatedCompletionTime?: Date; retryCount: number; previousAssignments: string[]; } /** * Load balancer configuration */ export interface LoadBalancerConfig { strategy: LoadBalancingStrategy; maxTasksPerTerminal: number; tokenBudgetPerTerminal: number; rebalanceInterval: number; performanceWindowSize: number; capabilityMatchThreshold: number; stickySessionTimeout: number; enableAutoScaling: boolean; enableRebalancing: boolean; weights?: LoadBalancingWeights; } /** * Load balancing weights */ export interface LoadBalancingWeights { currentLoad: number; performance: number; capability: number; tokenUsage: number; recentFailures: number; } /** * Balancer statistics */ export interface BalancerStatistics { totalAssignments: number; successfulAssignments: number; failedAssignments: number; reassignments: number; averageAssignmentTime: number; loadDistribution: Map; strategyEffectiveness: Map; terminalUtilization: Map; peakLoad: number; averageLoad: number; } /** * Terminal performance metrics */ export interface TerminalPerformance { terminalId: string; tasksCompleted: number; tasksFailed: number; averageCompletionTime: number; successRate: number; tokenEfficiency: number; reliabilityScore: number; speedScore: number; qualityScore: number; overallScore: number; lastUpdated: Date; history: PerformanceHistory[]; } /** * Performance history entry */ export interface PerformanceHistory { timestamp: Date; taskId: string; taskType: string; duration: number; tokensUsed: number; success: boolean; errorRate: number; } /** * Load distribution */ export interface LoadDistribution { timestamp: Date; terminals: Map; totalTasks: number; activeTasks: number; queuedTasks: number; balanceScore: number; recommendations: LoadRecommendation[]; } /** * Terminal load snapshot */ export interface TerminalLoadSnapshot { terminalId: string; load: number; taskCount: number; tokenUsage: number; performance: number; status: 'idle' | 'normal' | 'busy' | 'overloaded'; } /** * Load recommendation */ export interface LoadRecommendation { type: RecommendationType; terminalId?: string; taskId?: string; reason: string; priority: 'low' | 'medium' | 'high' | 'critical'; estimatedImpact: number; } /** * Recommendation types */ export declare enum RecommendationType { SCALE_UP = "scale_up", SCALE_DOWN = "scale_down", REBALANCE = "rebalance", REASSIGN = "reassign", PAUSE = "pause", RESUME = "resume", OPTIMIZE = "optimize" } /** * Assignment scorer */ export interface AssignmentScorer { score(task: QueuedTask, terminal: TerminalSession, load: TerminalLoad, performance: TerminalPerformance): AssignmentScore; } /** * Assignment score */ export interface AssignmentScore { terminalId: string; totalScore: number; capabilityScore: number; loadScore: number; performanceScore: number; affinityScore: number; details: string[]; } /** * Task affinity */ export interface TaskAffinity { taskId: string; relatedTasks: string[]; preferredTerminal?: string; affinityStrength: number; reason: string; } /** * Rebalancing plan */ export interface RebalancingPlan { timestamp: Date; moves: TaskMove[]; estimatedImpact: number; reason: string; approved: boolean; } /** * Task move */ export interface TaskMove { taskId: string; fromTerminal: string; toTerminal: string; priority: number; reason: string; } //# sourceMappingURL=types.d.ts.map