/** * Claude Code Worker Manager * Spawns and manages Claude Code CLI instances for parallel task execution */ import { WorkerJob, SpawnOptions, WorkerConfig, WorkerAsset } from './types.js'; export interface GalleryWorker { id: string; task: string; status: 'running' | 'completed' | 'failed'; assets: WorkerAsset[]; } export type WorkerLogCallback = (workerId: string, line: string, stream: 'stdout' | 'stderr') => void; export type GalleryCallback = (workers: GalleryWorker[]) => void; export declare class WorkerManager { private config; private activeWorkers; private galleryCallback; private workerLogCallback; constructor(workspaceDir: string, configOverrides?: Partial); /** * Set callback for gallery updates (worker assets for UI) */ setGalleryCallback(callback: GalleryCallback | null): void; /** * Set callback for worker log streaming (stdout/stderr) */ setLogCallback(callback: WorkerLogCallback | null): void; private emitWorkerLog; /** * Get gallery workers with assets for UI */ getGalleryWorkers(): GalleryWorker[]; /** * Broadcast gallery update */ private broadcastGalleryUpdate; /** * Generate a unique job ID */ private generateJobId; /** * Get job file path */ private getJobPath; /** * Save job state */ private saveJob; /** * Count currently running workers */ private countRunning; /** * Spawn a new Claude Code worker */ spawn(task: string, options?: SpawnOptions): Promise; /** * Get job status */ get(jobId: string): WorkerJob | null; /** * Wait for a job to complete */ wait(jobId: string, maxWait?: number): Promise; /** * List jobs with optional filter */ list(filter?: { status?: string; }): WorkerJob[]; /** * Cancel a running job */ cancel(jobId: string): boolean; /** * Clean up old completed/failed jobs */ cleanup(olderThanMs?: number): number; /** * Get summary of all jobs */ summary(): { total: number; running: number; completed: number; failed: number; pending: number; }; }