/** * Workflow Hooks - Lifecycle hooks for workflow execution * * Provides workflow-level hooks matching Python's HooksConfig. * * @example * ```typescript * import { Workflow, WorkflowHooksConfig } from 'praisonai'; * * const hooks: WorkflowHooksConfig = { * onWorkflowStart: (workflow, input) => { * console.log('Workflow started:', workflow.name); * }, * onStepComplete: (stepName, result) => { * console.log(`Step ${stepName} completed:`, result); * } * }; * * const workflow = new Workflow({ hooks }); * ``` */ /** * Workflow reference for hooks */ export interface WorkflowRef { id: string; name?: string; steps: string[]; } /** * Step context for hooks */ export interface StepContext { stepName: string; stepIndex: number; totalSteps: number; input: any; previousResults: Record; } /** * Workflow hooks configuration - matches Python HooksConfig */ export interface WorkflowHooksConfig { /** Called before workflow execution starts */ onWorkflowStart?: (workflow: WorkflowRef, input: any) => void | Promise; /** Called after workflow completes successfully */ onWorkflowComplete?: (workflow: WorkflowRef, result: any) => void | Promise; /** Called before each step starts */ onStepStart?: (stepName: string, context: StepContext) => void | Promise; /** Called after each step completes */ onStepComplete?: (stepName: string, result: any, context: StepContext) => void | Promise; /** Called when a step encounters an error */ onStepError?: (stepName: string, error: Error, context: StepContext) => void | Promise; /** Called when workflow fails */ onWorkflowError?: (workflow: WorkflowRef, error: Error) => void | Promise; } /** * Execute workflow hooks safely */ export declare class WorkflowHooksExecutor { private hooks; private logging; constructor(hooks?: WorkflowHooksConfig, logging?: boolean); private log; private safeExecute; onWorkflowStart(workflow: WorkflowRef, input: any): Promise; onWorkflowComplete(workflow: WorkflowRef, result: any): Promise; onStepStart(stepName: string, context: StepContext): Promise; onStepComplete(stepName: string, result: any, context: StepContext): Promise; onStepError(stepName: string, error: Error, context: StepContext): Promise; onWorkflowError(workflow: WorkflowRef, error: Error): Promise; /** * Check if any hooks are configured */ hasHooks(): boolean; /** * Get configured hook names */ getConfiguredHooks(): string[]; } /** * Create workflow hooks executor */ export declare function createWorkflowHooks(config: WorkflowHooksConfig, logging?: boolean): WorkflowHooksExecutor; /** * Pre-built logging hooks */ export declare function createLoggingWorkflowHooks(logger?: (msg: string, data?: any) => void): WorkflowHooksConfig; /** * Timing hooks for performance monitoring */ export declare function createTimingWorkflowHooks(): { hooks: WorkflowHooksConfig; getTimings: () => Record; }; export default WorkflowHooksExecutor;