agtrace_runtime/storage/
fs.rs

1use crate::{Error, Result};
2use agtrace_index::Database;
3
4#[derive(Debug, Clone)]
5pub struct RawFileContent {
6    pub path: String,
7    pub content: String,
8}
9
10pub fn get_raw_files(db: &Database, session_id: &str) -> Result<Vec<RawFileContent>> {
11    // Resolve short session ID to full ID if needed
12    let resolved_id = if session_id.len() < 36 {
13        db.find_session_by_prefix(session_id)?
14            .ok_or_else(|| Error::InvalidOperation(format!("Session not found: {}", session_id)))?
15    } else {
16        session_id.to_string()
17    };
18
19    let log_files = db.get_session_files(&resolved_id)?;
20
21    let mut contents = Vec::new();
22    for log_file in &log_files {
23        let content = std::fs::read_to_string(&log_file.path)?;
24        contents.push(RawFileContent {
25            path: log_file.path.clone(),
26            content,
27        });
28    }
29
30    Ok(contents)
31}