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}