/** * Worker Pool * * Manages multiple worker sessions with shared AI Provider. */ import { EventEmitter } from 'events'; import type { AIProvider } from '../../ai-provider/index.js'; import type { AutopilotConfig, WorkerSession as WorkerSessionState, TicketContext, ImplementationResult } from '../types.js'; import { WorkerSession } from './worker-session.js'; import { AgentSelector } from '../agents/agent-selector.js'; import type { WorktreeManager } from '../git/worktree-manager.js'; /** * Worker Pool Options */ export interface WorkerPoolOptions { config: AutopilotConfig; workingDirectory: string; worktreeManager?: WorktreeManager; } /** * Worker Pool Events */ export interface WorkerPoolEvents { 'pool:ready': { workerCount: number; }; 'pool:shutdown': void; 'worker:created': { workerId: number; }; 'worker:destroyed': { workerId: number; }; 'worker:started': { workerId: number; ticketId: string; }; 'worker:completed': { workerId: number; ticketId: string; result: ImplementationResult; }; 'worker:failed': { workerId: number; ticketId: string; error: string; }; 'worker:idle': { workerId: number; }; } /** * Worker Pool * * Manages worker sessions with a shared AI Provider instance. */ export declare class WorkerPool extends EventEmitter { private config; private workingDirectory; private worktreeManager?; private aiProvider?; private agentSelector; private workers; private initialized; private shuttingDown; constructor(options: WorkerPoolOptions); /** * Initialize the worker pool */ initialize(): Promise; /** * Create a single worker */ private createWorker; /** * Get an idle worker */ getIdleWorker(): WorkerSession | undefined; /** * Get all idle workers */ getIdleWorkers(): WorkerSession[]; /** * Get all busy workers */ getBusyWorkers(): WorkerSession[]; /** * Get worker by ID */ getWorker(workerId: number): WorkerSession | undefined; /** * Get all workers */ getAllWorkers(): WorkerSession[]; /** * Get worker count */ getWorkerCount(): number; /** * Get idle worker count */ getIdleCount(): number; /** * Get busy worker count */ getBusyCount(): number; /** * Assign ticket to idle worker */ assignTicket(context: TicketContext): Promise<{ workerId: number; promise: Promise; } | null>; /** * Process ticket with specific worker */ processWithWorker(workerId: number, context: TicketContext): Promise; /** * Pause all workers */ pauseAll(): void; /** * Resume all workers */ resumeAll(): void; /** * Cancel all active work */ cancelAll(): void; /** * Get worker states */ getWorkerStates(): WorkerSessionState[]; /** * Get pool statistics */ getStats(): { total: number; idle: number; busy: number; paused: number; completed: number; failed: number; totalCost: number; }; /** * Wait for all workers to complete */ waitForAll(): Promise; /** * Wait for any worker to become idle */ waitForIdle(): Promise; /** * Shutdown the worker pool */ shutdown(): Promise; /** * Get AI Provider */ getAIProvider(): AIProvider | undefined; /** * Get agent selector */ getAgentSelector(): AgentSelector; /** * Check if initialized */ isInitialized(): boolean; /** * Check if shutting down */ isShuttingDown(): boolean; } /** * Create a worker pool */ export declare function createWorkerPool(options: WorkerPoolOptions): WorkerPool; //# sourceMappingURL=worker-pool.d.ts.map