1pub mod edit_stats;
2pub mod error;
3pub mod history;
4pub mod import;
5pub mod pairing;
6pub mod search;
7pub mod session;
8pub mod stream_rules;
9pub mod title;
10pub mod tree;
11
12pub use edit_stats::EditStats;
13pub use error::{Result, SessionError};
14pub use history::{SessionHistory, StashSlot};
15pub use import::{ImportKind, import_messages};
16pub use search::{SessionSearchHit, query_terms, search_sessions};
17pub use session::{
18 COMPACT_CONTINUATION_PREAMBLE, CheckpointState, CompactOutcome, Session, SessionCost,
19 compact_summary_display_text, format_compact_summary, format_compact_summary_content,
20 is_compact_summary_text,
21};
22pub use stream_rules::StreamRuleLedger;
23pub use title::{TitleSource, default_title, heuristic_title, sanitize_title};
24pub use tree::{Branch, BranchError, TreeRow, TreeTarget};
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29 use std::path::Path;
30
31 #[test]
32 fn public_reexports_are_callable() {
33 assert_eq!(sanitize_title(" Title. "), "Title");
34 assert_eq!(heuristic_title("please fix login"), "fix login");
35 assert!(default_title(Path::new("/tmp/app"), "ab").contains("app"));
36 assert!(is_compact_summary_text("[Compacted earlier]"));
37 assert_eq!(format_compact_summary("ok"), "ok");
38 assert!(!COMPACT_CONTINUATION_PREAMBLE.is_empty());
39 assert!(TitleSource::Default.allows_heuristic());
40 assert_eq!(ImportKind::parse("auto"), ImportKind::Auto);
41 assert!(!SessionHistory::new().can_undo());
42 }
43}