/** * Pure, pre-read session filtering. The predicate built here runs on metadata knowable * BEFORE a transcript is read (filename, project folder, file mtime) so excluded sessions * are never loaded from disk — the compliance guarantee behind --project/--exclude-project/--until. * Cowork sessions have no project-folder concept (project: null); both --project (include) and * --exclude-project fail closed for them — see the comments in buildSessionFilter below. */ /** What a scanner knows about a session file before reading its content. */ export interface SessionFileMeta { sessionId: string; /** Encoded project folder under ~/.claude/projects; null for Cowork sessions. */ project: string | null; mtimeMs: number; source: 'claude-code' | 'cowork'; } export interface FilterCriteria { sinceMs?: number; untilMs?: number; includeProjects?: string[]; excludeProjects?: string[]; } /** * Normalise a project name for matching: lowercase with every non-alphanumeric run * collapsed to a single dash, so user input ("Coolhand CLI") and the encoded folder * name ("C--Users-...-coolhand-cli") compare on the same footing. */ export declare function sanitizeProjectKey(value: string): string; /** Build a predicate deciding whether a session file may be read and considered for upload. */ export declare function buildSessionFilter(criteria: FilterCriteria): (meta: SessionFileMeta) => boolean; //# sourceMappingURL=session-filter.d.ts.map