import type { ITaskStep } from './taskbuffer.classes.taskstep.js'; export interface ITaskMetadata { name: string; version?: string; status: 'idle' | 'running' | 'completed' | 'failed'; steps: ITaskStep[]; currentStep?: string; currentProgress: number; // 0-100 lastRun?: Date; nextRun?: Date; // For scheduled tasks runCount: number; averageDuration?: number; cronSchedule?: string; buffered?: boolean; bufferMax?: number; timeout?: number; lastError?: string; errorCount?: number; labels?: Record; } export interface ITaskExecutionReport { taskName: string; startTime: number; endTime: number; duration: number; steps: ITaskStep[]; stepsCompleted: string[]; progress: number; result?: any; error?: Error; } export interface IScheduledTaskInfo { name: string; schedule: string; nextRun: Date; lastRun?: Date; steps?: ITaskStep[]; metadata?: ITaskMetadata; } export type TTaskEventType = 'started' | 'step' | 'completed' | 'failed'; export interface ITaskEvent { type: TTaskEventType; task: ITaskMetadata; timestamp: number; stepName?: string; // present when type === 'step' error?: string; // present when type === 'failed' }