toto-agent
Version:
Chatbot agent and reusable components for Toto platform
80 lines (79 loc) • 2.29 kB
TypeScript
/**
* Monitoring and Observability Service for toto-agent
* Handles error tracking, performance monitoring, and structured logging
*/
import { UserAction, AgentType } from '../../shared/AgentTypes';
export interface MonitoringConfig {
sentryDsn?: string;
environment: string;
release: string;
enablePerformanceMonitoring: boolean;
enableErrorTracking: boolean;
logLevel: 'debug' | 'info' | 'warn' | 'error';
}
export interface PerformanceMetrics {
requestId: string;
startTime: number;
endTime: number;
duration: number;
operation: string;
success: boolean;
error?: string;
metadata?: Record<string, any>;
}
export interface BusinessMetrics {
sessionId: string;
userId?: string;
caseId?: string;
intent: UserAction;
agentType: AgentType;
responseTime: number;
userSatisfaction?: number;
conversion?: boolean;
dropoff?: boolean;
}
export declare class MonitoringService {
private config;
private isInitialized;
constructor(config: MonitoringConfig);
private initialize;
/**
* Track performance metrics
*/
trackPerformance(metrics: PerformanceMetrics): void;
/**
* Track business metrics
*/
trackBusinessMetrics(metrics: BusinessMetrics): void;
/**
* Capture and report errors
*/
captureError(error: Error, context?: Record<string, any>): void;
/**
* Set user context for error tracking
*/
setUserContext(userId: string, userData?: Record<string, any>): void;
/**
* Add breadcrumb for debugging
*/
addBreadcrumb(message: string, category: string, data?: Record<string, any>): void;
/**
* Start performance transaction
*/
startTransaction(operation: string, requestId: string): PerformanceMetrics;
/**
* End performance transaction
*/
endTransaction(metrics: PerformanceMetrics, success: boolean, error?: string): void;
/**
* Structured logging with different levels
*/
log(level: 'debug' | 'info' | 'warn' | 'error', message: string, data?: Record<string, any>): void;
/**
* Health check for monitoring service
*/
getHealthStatus(): {
status: 'healthy' | 'unhealthy';
details: Record<string, any>;
};
}