agtrace-runtime 0.7.1

Internal runtime orchestration for the agtrace CLI. Not intended for direct use.
Documentation
use crate::{Error, Result};
use agtrace_index::Database;

#[derive(Debug, Clone)]
pub struct RawFileContent {
    pub path: String,
    pub content: String,
}

pub fn get_raw_files(db: &Database, session_id: &str) -> Result<Vec<RawFileContent>> {
    // Resolve short session ID to full ID if needed
    let resolved_id = if session_id.len() < 36 {
        db.find_session_by_prefix(session_id)?
            .ok_or_else(|| Error::InvalidOperation(format!("Session not found: {}", session_id)))?
    } else {
        session_id.to_string()
    };

    let log_files = db.get_session_files(&resolved_id)?;

    let mut contents = Vec::new();
    for log_file in &log_files {
        let content = std::fs::read_to_string(&log_file.path)?;
        contents.push(RawFileContent {
            path: log_file.path.clone(),
            content,
        });
    }

    Ok(contents)
}