use super::*;
pub(crate) const EXCERPT_MAX: usize = 200;
#[derive(Debug, Clone)]
pub struct SessionSummary {
pub session_id: String,
pub is_subagent: bool,
pub parent_session_id: String,
pub path: PathBuf,
pub cwd: Option<String>,
pub version: Option<String>,
pub version_first: Option<String>,
pub git_branch: Option<String>,
pub git_branch_first: Option<String>,
pub first_user: Option<MessagePreview>,
pub last_user: Option<MessagePreview>,
pub last_agent: Option<MessagePreview>,
pub skipped_lines: usize,
pub pending_elicitations: Vec<String>,
pub clone_boundary_uuid: Option<String>,
pub clone_of: Option<String>,
pub sidecar_present: bool,
}
#[derive(Debug, Clone)]
pub struct MessagePreview {
pub timestamp_utc: Option<String>,
pub excerpt: String,
}
impl MessagePreview {
pub(crate) fn from(timestamp_utc: Option<String>, text: &str) -> Self {
MessagePreview {
timestamp_utc,
excerpt: truncate_excerpt(text),
}
}
}
pub(crate) fn truncate_excerpt(s: &str) -> String {
crate::text::truncate_excerpt(s, EXCERPT_MAX)
}