polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
147 lines • 4.01 kB
TypeScript
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