/** * Log retention and cleanup manager * Handles automated cleanup of log files based on configurable policies */ import { type BaseCleanupResult, type BaseFileInfo, BaseRetentionManager, type BaseRetentionPolicy, type RetentionLogger } from '../utils/base-retention-manager.js'; export interface CleanupResult extends BaseCleanupResult { compressedFiles: string[]; deletedFiles: string[]; } export interface FileInfo extends BaseFileInfo { path: string; } export interface RetentionPolicy extends BaseRetentionPolicy { maxFiles?: number; } /** * Log retention manager extending the base retention manager */ export declare class RetentionManager extends BaseRetentionManager { protected readonly logger: RetentionLogger; /** * Analyse log directory and return file information */ analyzeDirectory(logDir: string): Promise; /** * Group files by date for daily file management * Handles rotated files like ai-YYYY-MM-DD.log, ai-YYYY-MM-DD.1.log, ai-YYYY-MM-DD.2.log, etc. */ private groupFilesByDate; /** * Clean up empty or corrupted log files */ private cleanupEmptyFiles; /** * Execute cleanup based on retention policies */ cleanup(logDir: string): Promise; /** * Apply age-based cleanup: delete files older than maxAgeDays * Enhanced for daily files - delete entire daily sets that are too old */ private applyAgeBasedCleanup; /** * Apply size-based cleanup: keep total size under maxSizeMB */ private applySizeBasedCleanup; /** * Apply count-based cleanup: keep maximum maxFiles files */ private applyCountBasedCleanup; /** * Apply compression policy: compress files older than compressAfterDays * Enhanced for daily log files - compress entire daily files */ private applyLogCompressionPolicy; protected deleteItem(item: FileInfo): Promise; protected getItemAgeDays(item: FileInfo): number; protected getItemDisplayId(item: FileInfo): string; protected recordCompression(item: FileInfo, result: CleanupResult): void; protected recordDeletion(item: FileInfo, result: CleanupResult): void; } //# sourceMappingURL=retention-manager.d.ts.map