UNPKG

summarizely-cli

Version:

YouTube summarizer that respects your existing subscriptions. No API keys required.

57 lines 1.91 kB
import { Provider } from './types'; export interface MetricEvent { type: 'caption_fetch' | 'summary_generated' | 'cache_hit' | 'cache_miss' | 'error' | 'batch_complete'; timestamp: number; duration?: number; provider?: Provider; model?: string; url?: string; videoId?: string; success?: boolean; error?: string; metadata?: Record<string, any>; } export interface AggregatedMetrics { totalEvents: number; captionsFetched: number; summariesGenerated: number; cacheHits: number; cacheMisses: number; errors: number; batchesCompleted: number; averageDuration: number; providerUsage: Record<Provider, number>; modelUsage: Record<string, number>; successRate: number; errorTypes: Record<string, number>; dailyStats: Record<string, DailyStats>; } export interface DailyStats { date: string; events: number; summaries: number; errors: number; averageDuration: number; } export declare class LocalMetrics { private metricsFile; private aggregatedFile; private maxFileSize; private rotateCount; constructor(); record(event: Omit<MetricEvent, 'timestamp'>): void; recordCaptionFetch(url: string, duration: number, success: boolean): void; recordSummaryGenerated(url: string, provider: Provider, model: string | undefined, duration: number, success: boolean): void; recordCacheHit(url: string): void; recordCacheMiss(url: string): void; recordError(error: string, url?: string): void; recordBatchComplete(totalVideos: number, successful: number, duration: number): void; aggregate(): Promise<AggregatedMetrics>; report(): Promise<string>; private readEvents; private checkRotation; private rotateFiles; cleanup(daysToKeep?: number): Promise<void>; } export declare function getMetrics(): LocalMetrics; //# sourceMappingURL=metrics.d.ts.map