@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
124 lines • 3.27 kB
TypeScript
/**
* Execution Monitor
* @description Monitors and tracks orchestration template execution with performance metrics
* @author Optimizely MCP Server
* @version 1.0.0
*/
import { OrchestrationConfig } from '../types/index.js';
import { EventEmitter } from 'events';
export interface ExecutionMetrics {
executionId: string;
startTime: number;
endTime?: number;
duration?: number;
stepMetrics: Map<string, StepMetrics>;
memoryUsage: MemoryUsage[];
errors: ErrorMetric[];
status: 'running' | 'completed' | 'failed' | 'timeout' | 'cancelled';
}
export interface StepMetrics {
stepId: string;
stepName: string;
startTime: number;
endTime?: number;
duration?: number;
status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
retryCount: number;
errorMessage?: string;
}
export interface MemoryUsage {
timestamp: number;
heapUsed: number;
heapTotal: number;
external: number;
rss: number;
}
export interface ErrorMetric {
timestamp: number;
stepId?: string;
message: string;
stack?: string;
recoverable: boolean;
}
export interface ExecutionEvent {
type: 'start' | 'step_start' | 'step_complete' | 'step_error' | 'complete' | 'error' | 'timeout';
executionId: string;
timestamp: number;
data?: any;
}
export declare class ExecutionMonitor extends EventEmitter {
private logger;
private executions;
private timeouts;
private memoryIntervals;
constructor();
/**
* Start monitoring an execution
*/
startMonitoring(executionId: string, config?: OrchestrationConfig): void;
/**
* Stop monitoring an execution
*/
stopMonitoring(executionId: string): ExecutionMetrics | undefined;
/**
* Record step start
*/
recordStepStart(executionId: string, stepId: string, stepName: string): void;
/**
* Record step completion
*/
recordStepComplete(executionId: string, stepId: string): void;
/**
* Record step error
*/
recordStepError(executionId: string, stepId: string, error: Error): void;
/**
* Record step retry
*/
recordStepRetry(executionId: string, stepId: string): void;
/**
* Record step skipped
*/
recordStepSkipped(executionId: string, stepId: string): void;
/**
* Mark execution as completed
*/
markCompleted(executionId: string): void;
/**
* Mark execution as failed
*/
markFailed(executionId: string, error: Error): void;
/**
* Get execution metrics
*/
getMetrics(executionId: string): ExecutionMetrics | undefined;
/**
* Get all active executions
*/
getActiveExecutions(): string[];
/**
* Get execution summary
*/
getExecutionSummary(executionId: string): any;
/**
* Start memory monitoring
*/
private startMemoryMonitoring;
/**
* Stop memory monitoring
*/
private stopMemoryMonitoring;
/**
* Handle execution timeout
*/
private handleTimeout;
/**
* Emit execution event
*/
private emitEvent;
/**
* Clean up old metrics
*/
cleanupOldMetrics(olderThanMs?: number): void;
}
//# sourceMappingURL=ExecutionMonitor.d.ts.map