use super::*;
pub(crate) const EXCERPT_MAX: usize = 400;
pub(crate) const REDACTED_THINKING_PLACEHOLDER: &str = "[redacted thinking]";
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Pairing {
Paired,
PendingNoResult,
OrphanResult,
}
#[derive(Debug, Clone)]
pub struct Hit {
pub class: Class,
pub labels: Vec<&'static str>,
pub excerpt: String,
pub timestamp_utc: Option<String>,
pub tool_name: Option<String>,
pub model: Option<String>,
pub direction: Option<(String, String)>,
pub tool_use_id: Option<String>,
pub pair: Option<Pairing>,
pub line: usize,
pub uuid: Option<String>,
pub raw: Option<String>,
pub image_ids: Vec<String>,
pub from_sidecar: bool,
pub truncated: bool,
}
#[derive(Debug, Clone)]
pub struct Exchange {
pub session_id: String,
pub is_subagent: bool,
pub parent_session_id: String,
pub turn_index: usize,
pub started_utc: Option<String>,
pub hits: Vec<Hit>,
pub siblings: Vec<Hit>,
pub siblings_hidden: usize,
pub turn_lines: (usize, usize),
pub record_uuids: Vec<String>,
}
#[derive(Debug, Clone, Default)]
pub struct SearchOutcome {
pub exchanges: Vec<Exchange>,
pub total_matched: usize,
pub total_sessions: usize,
pub dropped_by_cap: usize,
pub skipped_lines: usize,
pub scope_top: usize,
pub scope_sub: usize,
}