File size: 1,041 Bytes
4977db2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import Foundation

public struct ImportEngine: Sendable {
    public init() {}

    public func preview(
        format: ImportFormat,
        sourceURL: URL,
        dedupIndex: DedupIndex
    ) throws -> ImportPreview {
        let parser: any ImportParser = switch format {
        case .chatGPTAnalysisJSON:
            ChatGPTAnalysisParser()
        case .chatGPTRawConversationsJSON:
            ChatGPTRawConversationsParser()
        case .geminiMarkdown:
            GeminiMarkdownParser()
        case .geminiJSONL:
            GeminiJSONLParser()
        case .claudeJSONL:
            ClaudeJSONLParser()
        case .codexHistoryJSONL:
            CodexHistoryParser()
        case .hermesStateDatabase:
            HermesStateParser()
        }

        let result = try parser.parse(sourceURL: sourceURL, dedupIndex: dedupIndex)
        return ImportPreview(
            format: format,
            sourceURL: sourceURL,
            candidates: result.candidates,
            statistics: result.statistics
        )
    }
}