codex_sync/history/
model.rs1use serde::Serialize;
2use serde_json::Value;
3use std::{collections::BTreeMap, path::PathBuf};
4
5#[derive(Debug)]
6pub struct Paths {
7 pub(super) codex_home: PathBuf,
8 pub(super) config: PathBuf,
9 pub(super) database: PathBuf,
10 pub(super) session_index: PathBuf,
11 pub(super) backup_root: PathBuf,
12}
13
14#[derive(Debug, Serialize)]
15pub struct Report {
16 pub current_provider: String,
17 pub current_model: Option<String>,
18 pub total_threads: usize,
19 pub database_counts: BTreeMap<String, usize>,
20 pub model_counts: BTreeMap<String, usize>,
21 pub database_rows_to_change: usize,
22 pub rollout_counts: BTreeMap<String, usize>,
23 pub rollout_model_counts: BTreeMap<String, usize>,
24 pub rollout_files: usize,
25 pub rollout_files_to_change: usize,
26 pub duplicate_session_meta_lines: usize,
27 pub missing_session_index_entries: usize,
28 pub stale_session_index_entries: usize,
29 pub missing_rollout_files: usize,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub backup: Option<PathBuf>,
32}
33
34#[derive(Debug, Serialize)]
35pub struct DoctorReport {
36 pub database_integrity_ok: bool,
37 pub database_integrity_messages: Vec<String>,
38 pub total_threads: usize,
39 pub sidebar_threads: usize,
40 pub rollout_files: usize,
41 pub invalid_rollout_files: usize,
42 pub missing_session_meta_files: usize,
43 pub duplicate_session_meta_lines: usize,
44 pub orphan_rollout_files: usize,
45 pub missing_rollout_files: usize,
46 pub invalid_session_index_lines: usize,
47 pub duplicate_session_index_ids: usize,
48 pub missing_session_index_entries: usize,
49 pub stale_session_index_entries: usize,
50 pub clean: bool,
51 pub repaired: bool,
52 pub repaired_session_index: bool,
53 pub restored_rollout_files: usize,
54 pub deduplicated_session_meta_files: usize,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub backup: Option<PathBuf>,
57}
58
59#[derive(Debug)]
60pub(super) struct Assignment {
61 pub(super) provider: String,
62 pub(super) model: Option<String>,
63}
64
65#[derive(Debug)]
66pub(super) struct SessionRecord {
67 pub(super) path: PathBuf,
68 pub(super) provider: String,
69 pub(super) model: Option<String>,
70 pub(super) session_meta_lines: usize,
71}
72
73#[derive(Debug)]
74pub(super) struct SidebarThread {
75 pub(super) id: String,
76 pub(super) title: String,
77 pub(super) updated_at: String,
78 pub(super) rollout_path: Option<PathBuf>,
79}
80
81#[derive(Debug, Default)]
82pub(super) struct IndexDiagnostics {
83 pub(super) entries: BTreeMap<String, Value>,
84 pub(super) invalid_lines: usize,
85 pub(super) duplicate_ids: usize,
86}
87
88#[derive(Debug, Default)]
89pub(super) struct RolloutDiagnostics {
90 pub(super) files: usize,
91 pub(super) invalid_files: usize,
92 pub(super) missing_session_meta_files: usize,
93 pub(super) duplicate_session_meta_lines: usize,
94 pub(super) thread_ids: Vec<String>,
95}
96
97#[derive(Debug)]
98pub(super) struct RolloutRecovery {
99 pub(super) target: PathBuf,
100 pub(super) content: Vec<u8>,
101}
102
103#[derive(Debug)]
104pub(super) struct SessionMetaRepair {
105 pub(super) target: PathBuf,
106 pub(super) original: Vec<u8>,
107 pub(super) repaired: Vec<u8>,
108}