import { StepExecutionResult } from '../../engine/analysis/step-context'; import { ActionStep } from '../../engine/types'; /** * Execution log entry for JSON format */ export interface ExecutionLogEntry { timestamp: string; sessionId: string; stepIndex: number; step: { type: string; description: string; target?: { selector?: string; description?: string; }; value?: string; }; result: { success: boolean; error?: string; elementFound?: boolean; selectorUsed?: string; valueEntered?: string; executionTimeMs: number; }; page: { url: string; title: string; viewport?: { width: number; height: number; }; }; screenshot?: { filename: string; path: string; }; context?: { previousStepsCount: number; sessionDuration: number; }; refinement?: { wasRefined: boolean; originalStep?: { description: string; selector?: string; value?: string; }; refinedStep?: { description: string; selector?: string; value?: string; }; refinementReason?: string; contextUsed?: { previousStepPatterns?: string[]; pageContentAnalysis?: string; }; }; iteration?: { stepIteration: number; totalIterations: number; planAdapted: boolean; adaptationReason?: string; }; } /** * Complete execution session log */ export interface ExecutionSessionLog { sessionId: string; startTime: string; endTime?: string; instruction: string; totalSteps: number; successfulSteps: number; failedSteps: number; totalDuration: number; success: boolean; entries: ExecutionLogEntry[]; summary: { stepTypes: Record; errorTypes: Record; averageStepTime: number; successRate: number; }; } /** * Execution logger for tracking automation sessions */ export declare class ExecutionLogger { private sessionLog; private logDir; private screenshotDir; private startTime; constructor(instruction: string, sessionId?: string); /** * Log a step execution result */ logStepExecution(stepIndex: number, step: ActionStep, result: StepExecutionResult, pageUrl: string, pageTitle: string, screenshotBuffer?: Buffer, viewport?: { width: number; height: number; }, refinementInfo?: { wasRefined: boolean; originalStep?: ActionStep; refinementReason?: string; contextUsed?: { previousStepPatterns?: string[]; pageContentAnalysis?: string; }; }, iterationInfo?: { stepIteration: number; totalIterations: number; planAdapted: boolean; adaptationReason?: string; }): Promise; /** * Finalize the session log */ finishSession(success: boolean): string; /** * Generate visualization and export formats */ private generateVisualizationFormats; /** * Get the current session ID */ getSessionId(): string; /** * Get the screenshot directory for this session */ getScreenshotDir(): string; private generateSessionId; private ensureDirectories; private updateSummaryStats; private categorizeError; }