Skip to main content

tiny_loop/tool/
fs.rs

1use tiny_loop_macros::tool_internal;
2
3use super::utils::truncate_text;
4
5/// Read file contents with optional character range.
6#[tool_internal]
7pub async fn read(
8    /// File path
9    path: String,
10    /// Optional start character index (default: 0)
11    start: Option<usize>,
12    /// Optional end character index (default: 5000)
13    end: Option<usize>,
14) -> Result<String, String> {
15    match tokio::fs::read_to_string(&path).await {
16        Ok(content) => Ok(truncate_text(
17            content,
18            start.unwrap_or(0),
19            end.unwrap_or(5000),
20        )),
21        Err(e) => Err(format!("Error reading file: {}", e)),
22    }
23}