UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

147 lines 4.01 kB
export type AlertLevel = 'info' | 'warning' | 'error' | 'critical'; export type AlertType = 'system' | 'stream' | 'channel' | 'network'; export type AlertStatus = 'active' | 'acknowledged' | 'resolved' | 'ignored'; export interface Alert { id: string; level: AlertLevel; type: AlertType; title: string; message: string; source: string; channelId?: string; timestamp: number; acknowledged: boolean; status: AlertStatus; metadata?: Record<string, any>; acknowledgedAt?: number; acknowledgedBy?: string; resolvedAt?: number; notes?: string; } export type AlertOperator = '>' | '<' | '=' | '>=' | '<=' | '!=' | 'contains' | 'regex'; export type AlertConditionType = 'threshold' | 'state_change' | 'time_window' | 'pattern'; export interface AlertCondition { type: AlertConditionType; field: string; operator: AlertOperator; value: any; timeWindow?: number; logicalOperator?: 'AND' | 'OR'; } export type AlertActionType = 'log' | 'notification' | 'email' | 'webhook' | 'sound'; export interface AlertAction { type: AlertActionType; config: Record<string, any>; enabled: boolean; } export interface AlertRule { id: string; name: string; description?: string; enabled: boolean; level: AlertLevel; type: AlertType; conditions: AlertCondition[]; actions: AlertAction[]; cooldown: number; priority: number; tags?: string[]; createdAt: number; updatedAt: number; lastTriggered?: number; triggerCount: number; } export interface AlertHistoryEntry { alert: Alert; timestamp: number; action: string; user?: string; context?: Record<string, any>; } export interface AlertFilter { levels?: AlertLevel[]; types?: AlertType[]; statuses?: AlertStatus[]; sources?: string[]; channelIds?: string[]; timeRange?: { start: number; end: number; }; searchText?: string; acknowledgedOnly?: boolean; unacknowledgedOnly?: boolean; } export interface AlertGrouping { field: keyof Alert; sortOrder: 'asc' | 'desc'; maxPerGroup?: number; } export interface AlertStatistics { total: number; byLevel: Record<AlertLevel, number>; byType: Record<AlertType, number>; byStatus: Record<AlertStatus, number>; bySource: Record<string, number>; last24Hours: number; mostFrequentType: AlertType; avgTimeToAck?: number; avgTimeToResolve?: number; } export interface AlertTrendPoint { timestamp: number; count: number; byLevel: Record<AlertLevel, number>; } export interface AlertNotificationConfig { soundEnabled: boolean; visualEnabled: boolean; desktopEnabled: boolean; emailEnabled: boolean; soundFile?: string; volume: number; minLevel: AlertLevel; } export interface AlertSystemConfig { maxAlertsInMemory: number; maxHistoryEntries: number; autoAckTimeout?: number; autoResolveTimeout?: number; persistenceEnabled: boolean; persistenceFile: string; notifications: AlertNotificationConfig; defaultCooldown: number; performance: { maxProcessingRate: number; batchSize: number; processingInterval: number; }; } export interface AlertPanelConfig { maxDisplayItems: number; autoScroll: boolean; showTimestamps: boolean; showSources: boolean; showIds: boolean; timeFormat: 'relative' | 'absolute'; colorCoding: boolean; compactMode: boolean; } export interface AlertEvaluationContext { timestamp: number; systemMetrics?: any; streamMetrics?: any; channelStatus?: any; networkMetrics?: any; alertHistory?: Alert[]; custom?: Record<string, any>; } export interface AlertRuleEvaluationResult { ruleId: string; triggered: boolean; alert?: Omit<Alert, 'id' | 'timestamp'>; context: AlertEvaluationContext; evaluatedAt: number; details?: Record<string, any>; } //# sourceMappingURL=alert.d.ts.map