UNPKG

crewai-ts

Version:

TypeScript port of crewAI for agent-based workflows

142 lines 4.83 kB
/** * FlowExecutionTracker * * Provides optimized tracking and metrics for flow execution in the Flow Orchestration system. * Designed for high-performance in multi-flow environments with minimal memory footprint. */ import { EventEmitter } from 'events'; interface NodeExecutionData { nodeId: string; status: 'pending' | 'running' | 'completed' | 'failed'; startTime?: number; endTime?: number; duration?: number; attempts: number; result?: any; error?: Error; } export type FlowStatus = 'pending' | 'ready' | 'running' | 'completed' | 'failed' | 'canceled'; export interface FlowMetrics { startTime: number | undefined; endTime?: number | undefined; duration?: number | undefined; status: FlowStatus; attempts: number; error?: Error | undefined; result?: any; nodeExecutions?: Map<string, NodeExecutionData> | undefined; metadata?: Record<string, any> | undefined; dependencies?: Set<string> | undefined; dependents?: Set<string> | undefined; resourceUsage?: { cpu: number | undefined; memory: number | undefined; io: number | undefined; network: number | undefined; }; memory?: { bytesAllocated?: number | undefined; peakMemoryUsage?: number | undefined; }; priority?: number | undefined; } export interface TrackerOptions { /** Enable in-depth memory tracking (adds overhead) */ enableMemoryTracking?: boolean; /** Maximum number of flows to keep in history */ maxHistorySize?: number; /** Interval (ms) to collect time series data, 0 to disable */ timeSeriesInterval?: number; /** Maximum number of time series data points to keep */ maxTimeSeriesPoints?: number; /** Automatically calculate bottlenecks */ trackBottlenecks?: boolean; /** Track performance variance */ trackVariance?: boolean; /** Sample rate for detailed tracking (1 = track everything, 0.5 = track 50%) */ samplingRate?: number; /** Maximum errors to store per flow */ maxErrorsPerFlow?: number; } /** * Tracks flow execution with optimized data structures and algorithms * for minimal overhead and maximum performance insight. */ export declare class FlowExecutionTracker extends EventEmitter { private flowData; private durations; private totalDuration; private statusCounts; private bottlenecks; private timeSeriesData; private startTime; private endTime?; constructor(options?: TrackerOptions); registerFlow(flowId: string): void; addDependency(flowId: string, dependencyId: string): void; startFlow(flowId: string): void; completeFlow(flowId: string, result: any): void; failFlow(flowId: string, error: Error): void; cancelFlow(flowId: string): void; resetFlow(flowId: string): void; private getFlowMetrics; getFlowExecutionTime(flowId: string): number; getFlowStatus(flowId: string): FlowStatus; getFlowError(flowId: string): Error | undefined; getFlowResult(flowId: string): any; getFlowCount(): number; getCompletedFlows(): number; getFailedFlows(): number; getRunningFlows(): number; getPendingFlows(): number; getCanceledFlows(): number; getReadyFlows(): number; getBottlenecks(): string[]; getTimeSeriesData(): Array<{ timestamp: number; metrics: Record<string, number>; }>; saveExecutionCheckpoint(): Promise<void>; loadExecutionCheckpoint(): Promise<void>; waitForAnyFlowToComplete(): Promise<string | undefined>; reset(): void; private collectTimeSeriesDataPoint; startTracking(): void; stopTracking(): void; private updateBottlenecks; private calculateMedian; private calculateP95; getMetrics(): FlowExecutionMetrics; updateDependencies(flowId: string, dependencies: string[]): void; updateFlowMetrics(flowId: string): void; getFlowResourceUsage(flowId: string): FlowResourceUsage | undefined; } export interface FlowExecutionMetrics { flowExecutionTimes: Map<string, number | undefined>; startTime: number; endTime: number | undefined; duration: number; averageFlowExecutionTime: number | undefined; medianFlowExecutionTime: number | undefined; maxFlowExecutionTime: number | undefined; minFlowExecutionTime: number | undefined; completedFlows: number; failedFlows: number; pendingFlows: number; runningFlows: number; readyFlows: number; canceledFlows: number; bottlenecks: string[]; timeSeriesData: Array<{ timestamp: number; metrics: Record<string, number>; }>; } export interface FlowResourceUsage { cpu: number; memory: number; io: number; network: number; } export {}; //# sourceMappingURL=FlowExecutionTracker.d.ts.map