export type StorageStats = { totalFiles: number; uncompressedFiles: number; compressedFiles: number; totalSizeBytes: number; uncompressedSizeBytes: number; compressedSizeBytes: number; savingsBytes: number; savingsPercent: number; oldestTimestamp: Date | null; newestTimestamp: Date | null; }; export type RetentionStats = { deletedFiles: number; deletedSizeBytes: number; compressedFiles: number; compressedSizeBytes: number; archivedFilesCompressed: number; archivedSizeBytes: number; totalFreedBytes: number; errors: string[]; }; export type LogFileInfo = { path: string; size: number; compressed: boolean; mtime: Date; archived: boolean; }; export declare class LogStorageManager { private agentId?; constructor(agentId?: string); private getSessionsDir; private getConfig; /** * Scan session log files in the agent's sessions directory. * Returns array of file info for .jsonl and .jsonl.gz files. * Archived files (.bak.*, .reset.*, .deleted.*) are included if they match the patterns. */ scanLogFiles(): Promise; /** * Scan archived session log files. * Returns array of file info for archived files (.bak.*, .reset.*, .deleted.*). */ scanArchivedFiles(): Promise; /** * Scan all session log files (regular + archived). */ scanAllFiles(): Promise; private scanFiles; private isSessionLogFile; private isArchivedFile; /** * Get storage statistics for the agent's session logs. */ getStorageStats(): Promise; /** * Apply retention policies to session logs. * @param options.dryRun If true, only calculate what would be done without making changes. * @param options.onlyCompress If true, only compress files older than compressAfterDays (no deletions). * @param options.onlyDelete If true, only delete files older than keepLastNDays or exceeding size limit (no compression). */ applyRetention(options?: { dryRun?: boolean; onlyCompress?: boolean; onlyDelete?: boolean; }): Promise; private getFileSize; }