Files
taskbuffer/ts/taskbuffer.interfaces.ts

52 lines
1.2 KiB
TypeScript
Raw Normal View History

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<string, string>;
}
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'
}