@sethdouglasford/claude-flow
Version:
Claude Code Flow - Advanced AI-powered development workflows with SPARC methodology
196 lines • 5.48 kB
TypeScript
/**
* Task Engine Core - Comprehensive task management with orchestration features
* Integrates with TodoWrite/TodoRead for coordination and Memory for persistence
*/
import { EventEmitter } from "events";
import { Task, TaskStatus } from "../utils/types.js";
export interface TaskDependency {
taskId: string;
type: "finish-to-start" | "start-to-start" | "finish-to-finish" | "start-to-finish";
lag?: number;
}
export interface ResourceRequirement {
resourceId: string;
type: "cpu" | "memory" | "disk" | "network" | "custom";
amount: number;
unit: string;
exclusive?: boolean;
priority?: number;
}
export interface TaskSchedule {
startTime?: Date;
endTime?: Date;
deadline?: Date;
recurring?: {
interval: "daily" | "weekly" | "monthly";
count?: number;
until?: Date;
};
timezone?: string;
}
export interface WorkflowTask extends Omit<Task, "dependencies"> {
dependencies: TaskDependency[];
resourceRequirements: ResourceRequirement[];
schedule?: TaskSchedule;
retryPolicy?: {
maxAttempts: number;
backoffMs: number;
backoffMultiplier: number;
};
timeout?: number;
tags: string[];
estimatedDurationMs?: number;
actualDurationMs?: number;
progressPercentage: number;
checkpoints: TaskCheckpoint[];
rollbackStrategy?: "previous-checkpoint" | "initial-state" | "custom";
customRollbackHandler?: string;
}
export interface TaskCheckpoint {
id: string;
timestamp: Date;
description: string;
state: Record<string, unknown>;
artifacts: string[];
}
export interface TaskExecution {
id: string;
taskId: string;
agentId: string;
startedAt: Date;
completedAt?: Date;
status: TaskStatus;
progress: number;
metrics: TaskMetrics;
logs: TaskLog[];
}
export interface TaskMetrics {
cpuUsage: number;
memoryUsage: number;
diskIO: number;
networkIO: number;
customMetrics: Record<string, number>;
}
export interface TaskLog {
timestamp: Date;
level: "debug" | "info" | "warn" | "error";
message: string;
metadata?: Record<string, unknown>;
}
export interface Workflow {
id: string;
name: string;
description: string;
version: string;
tasks: WorkflowTask[];
variables: Record<string, unknown>;
parallelism: {
maxConcurrent: number;
strategy: "breadth-first" | "depth-first" | "priority-based";
};
errorHandling: {
strategy: "fail-fast" | "continue-on-error" | "retry-failed";
maxRetries: number;
};
createdAt: Date;
updatedAt: Date;
createdBy: string;
}
export interface TaskFilter {
status?: TaskStatus[];
assignedAgent?: string[];
priority?: {
min?: number;
max?: number;
};
tags?: string[];
createdAfter?: Date;
createdBefore?: Date;
dueBefore?: Date;
search?: string;
}
export interface TaskSort {
field: "createdAt" | "priority" | "deadline" | "status" | "estimatedDuration";
direction: "asc" | "desc";
}
export declare class TaskEngine extends EventEmitter {
private maxConcurrent;
private memoryManager?;
private tasks;
private executions;
private workflows;
private resources;
private dependencyGraph;
private readyQueue;
private runningTasks;
private cancelledTasks;
private taskState;
constructor(maxConcurrent?: number, memoryManager?: any | undefined);
private setupEventHandlers;
/**
* Create a new task with comprehensive options
*/
createTask(taskData: Partial<WorkflowTask>): Promise<WorkflowTask>;
/**
* List tasks with filtering and sorting
*/
listTasks(filter?: TaskFilter, sort?: TaskSort, limit?: number, offset?: number): Promise<{
tasks: WorkflowTask[];
total: number;
hasMore: boolean;
}>;
/**
* Get detailed task status with progress and metrics
*/
getTaskStatus(taskId: string): Promise<{
task: WorkflowTask;
execution?: TaskExecution;
dependencies: {
task: WorkflowTask;
satisfied: boolean;
}[];
dependents: WorkflowTask[];
resourceStatus: {
required: ResourceRequirement;
available: boolean;
allocated: boolean;
}[];
} | null>;
/**
* Cancel task with rollback and cleanup
*/
cancelTask(taskId: string, reason?: string, rollback?: boolean): Promise<void>;
/**
* Execute workflow with parallel processing
*/
executeWorkflow(workflow: Workflow): Promise<void>;
/**
* Create workflow from tasks
*/
createWorkflow(workflowData: Partial<Workflow>): Promise<Workflow>;
/**
* Get dependency visualization
*/
getDependencyGraph(): {
nodes: any[];
edges: any[];
};
private updateDependencyGraph;
private scheduleTask;
private areTaskDependenciesSatisfied;
private isDependencySatisfied;
private processReadyQueue;
private executeTask;
private simulateTaskExecution;
private createCheckpoint;
private rollbackTask;
private acquireTaskResources;
private releaseTaskResources;
private matchesSearch;
private processWorkflow;
private handleTaskCreated;
private handleTaskCompleted;
private handleTaskFailed;
private handleTaskCancelled;
}
//# sourceMappingURL=engine.d.ts.map