export interface ClaudeHistorySession { claudeSessionId: string; projectDir: string; cwd: string; firstUserMessage: string; timestamp: string; mtimeMs: number; hasConversation: boolean; managedByWand: boolean; } export interface CodexHistorySession { claudeSessionId: string; cwd: string; firstUserMessage: string; firstUserAt: string; timestamp: string; mtimeMs: number; hasUser: boolean; hasConversation: boolean; managedByWand: boolean; provider: "codex"; } /** OpenCode persists session metadata and messages in its local SQLite database. */ export interface OpenCodeHistorySession { claudeSessionId: string; cwd: string; firstUserMessage: string; timestamp: string; mtimeMs: number; hasConversation: boolean; managedByWand: boolean; provider: "opencode"; } /** Qoder CLI keeps one JSONL transcript per project-local native session. */ export interface QoderHistorySession { claudeSessionId: string; cwd: string; firstUserMessage: string; timestamp: string; mtimeMs: number; hasConversation: boolean; managedByWand: boolean; provider: "qoder"; } export interface ProviderHistoryScannerOptions { claudeHome?: string; codexSessionsDir?: string; openCodeDatabasePath?: string; /** Qoder and Qoder CN use separate config roots; callers may override both for tests. */ qoderProjectsDirs?: string[]; } /** * Incremental provider-history index. Directory entries are refreshed on each * scan, while unchanged JSONL heads are reused by (path, mtime, size). */ export declare class ProviderHistoryScanner { private readonly claudeHome; private readonly claudeProjectsDir; private readonly codexSessionsDir; private readonly openCodeDatabasePath; private readonly qoderProjectsDirs; private readonly claudeIndex; private readonly codexIndex; private readonly qoderIndex; private openCodeFingerprint; private openCodeSessions; private parsedFiles; constructor(options?: ProviderHistoryScannerOptions); getDiagnostics(): { parsedFiles: number; claudeEntries: number; codexEntries: number; openCodeEntries: number; qoderEntries: number; }; invalidate(provider?: "claude" | "codex" | "opencode" | "qoder"): void; listClaudeHistorySessions(): ClaudeHistorySession[]; private listCodexRolloutFiles; listCodexHistorySessions(): CodexHistorySession[]; hasCodexSessionFile(threadId: string): boolean; listOpenCodeHistorySessions(): OpenCodeHistorySession[]; private listQoderTranscriptFiles; listQoderHistorySessions(): QoderHistorySession[]; deleteClaudeHistoryFiles(sessions: Array<{ claudeSessionId: string; cwd: string; }>): number; deleteCodexHistoryFiles(threadIds: string[]): number; deleteOpenCodeHistorySessions(sessionIds: string[]): number; deleteQoderHistoryFiles(sessionIds: string[]): number; }