UNPKG

@sethdouglasford/claude-flow

Version:

Claude Code Flow - Advanced AI-powered development workflows with SPARC methodology

104 lines 3.28 kB
/** * Advanced task executor with timeout handling, retry logic, and resource management */ import { EventEmitter } from "node:events"; import { ChildProcess } from "node:child_process"; import { TaskDefinition, TaskResult, AgentState, TaskError } from "../swarm/types.js"; import { ILogger } from "../core/logger.js"; import { IEventBus } from "../core/event-bus.js"; import { CircuitBreaker, CircuitBreakerMetrics } from "./circuit-breaker.js"; export interface TaskExecutorConfig { maxConcurrentTasks: number; defaultTimeout: number; retryAttempts: number; retryBackoffBase: number; retryBackoffMax: number; resourceLimits: { memory: number; cpu: number; disk: number; }; enableCircuitBreaker: boolean; enableResourceMonitoring: boolean; killTimeout: number; } export interface ExecutionContext { taskId: string; agentId: string; process?: ChildProcess; startTime: Date; timeout?: NodeJS.Timeout; resources: ResourceUsage; circuitBreaker?: CircuitBreaker; } export interface ResourceUsage { memory: number; cpu: number; disk: number; network: number; lastUpdated: Date; } export interface TaskExecutionResult { success: boolean; result?: TaskResult; error?: TaskError; executionTime: number; resourcesUsed: ResourceUsage; retryCount: number; } /** * Advanced task executor with comprehensive timeout and resource management */ export declare class AdvancedTaskExecutor extends EventEmitter { private logger; private eventBus; private config; private runningTasks; private circuitBreakerManager; private resourceMonitor?; private queuedTasks; private isShuttingDown; constructor(config: Partial<TaskExecutorConfig>, logger: ILogger, eventBus: IEventBus); private setupEventHandlers; initialize(): Promise<void>; shutdown(): Promise<void>; /** * Execute a task with comprehensive error handling and resource management */ executeTask(task: TaskDefinition, agent: AgentState, options?: { timeout?: number; retryAttempts?: number; priority?: number; }): Promise<TaskExecutionResult>; private executeSingleAttempt; private performTaskExecution; private buildExecutionCommand; private cancelTask; private startResourceMonitoring; private updateResourceUsage; private getProcessResourceUsage; private checkResourceLimits; private getDefaultResourceUsage; private waitForCapacity; private processQueuedTasks; private delay; private gracefulShutdown; getRunningTasks(): string[]; getTaskContext(taskId: string): ExecutionContext | undefined; getQueuedTasks(): TaskDefinition[]; getExecutorStats(): { runningTasks: number; queuedTasks: number; maxConcurrentTasks: number; totalCapacity: number; resourceLimits: { memory: number; cpu: number; disk: number; }; circuitBreakers: Record<string, CircuitBreakerMetrics>; }; forceKillTask(taskId: string): Promise<void>; updateConfig(newConfig: Partial<TaskExecutorConfig>): void; } //# sourceMappingURL=advanced-task-executor.d.ts.map