1use std::sync::LazyLock;
4
5use codex_protocol::protocol::SessionSource;
6
7pub(crate) mod compression;
8pub(crate) mod config;
9pub(crate) mod list;
10pub(crate) mod metadata;
11mod model_context;
12mod ordinal;
13mod persistence_metrics;
14pub(crate) mod policy;
15pub(crate) mod recorder;
16mod reverse_jsonl_scanner;
17mod rollout_reference_index;
18pub(crate) mod search;
19pub(crate) mod session_index;
20mod sqlite_metrics;
21pub mod state_db;
22
23pub(crate) use codex_protocol::protocol;
24
25pub const SESSIONS_SUBDIR: &str = "sessions";
26pub const ARCHIVED_SESSIONS_SUBDIR: &str = "archived_sessions";
27pub static INTERACTIVE_SESSION_SOURCES: LazyLock<Vec<SessionSource>> = LazyLock::new(|| {
28 vec![
29 SessionSource::Cli,
30 SessionSource::VSCode,
31 SessionSource::Custom("atlas".to_string()),
32 SessionSource::Custom("chatgpt".to_string()),
33 ]
34});
35
36pub use codex_protocol::protocol::SessionMeta;
37pub use compression::RolloutLineReader;
38pub use compression::existing_rollout_path;
39pub use compression::open_rollout_line_reader;
40pub use compression::plain_rollout_path;
41pub use compression::spawn_rollout_compression_worker;
42pub use config::Config;
43pub use config::RolloutConfig;
44pub use config::RolloutConfigView;
45pub use list::Cursor;
46pub use list::SortDirection;
47pub use list::ThreadItem;
48pub use list::ThreadListConfig;
49pub use list::ThreadListLayout;
50pub use list::ThreadSortKey;
51pub use list::ThreadsPage;
52pub use list::find_archived_thread_path_by_id_str;
53pub use list::find_thread_path_by_id_str;
54#[deprecated(note = "use find_thread_path_by_id_str")]
55pub use list::find_thread_path_by_id_str as find_conversation_path_by_id_str;
56pub use list::get_threads;
57pub use list::get_threads_in_root;
58pub use list::parse_cursor;
59pub use list::read_head_for_summary;
60pub use list::read_session_meta_line;
61pub use list::read_thread_item_from_rollout;
62pub use list::rollout_date_parts;
63pub use metadata::builder_from_items;
64pub use model_context::ModelContextScan;
65pub use model_context::ModelContextScanProgress;
66pub use persistence_metrics::RolloutPersistenceBatchMeasurement;
67pub use persistence_metrics::RolloutPersistenceTelemetry;
68pub use persistence_metrics::measure_and_filter_rollout_items;
69pub use policy::is_persisted_rollout_item;
70pub use policy::persisted_rollout_items;
71pub use policy::should_persist_response_item_for_memories;
72pub use recorder::RolloutRecorder;
73pub use recorder::RolloutRecorderParams;
74pub use recorder::append_rollout_item_to_path;
75pub use reverse_jsonl_scanner::ReverseJsonlScanner;
76pub use reverse_jsonl_scanner::ScanOutcome;
77pub use rollout_reference_index::RolloutReferenceIndex;
78pub use search::first_rollout_content_match_snippet;
79pub use search::search_rollout_matches;
80pub use search::search_rollout_paths;
81pub use session_index::append_thread_name;
82pub use session_index::find_thread_meta_by_name_str;
83pub use session_index::find_thread_name_by_id;
84pub use session_index::find_thread_names_by_ids;
85pub use session_index::remove_thread_name_entries;
86pub use state_db::StateDbHandle;
87pub use state_db::sqlite_telemetry_recorder;
88
89#[cfg(test)]
90mod tests;