vv_agent/workspace/
base.rs1use std::any::Any;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct FileInfo {
7 pub path: String,
8 pub is_file: bool,
9 pub is_dir: bool,
10 pub size: u64,
11 pub modified_at: String,
12 pub suffix: String,
13}
14
15pub trait WorkspaceBackend: Any + Send + Sync {
16 fn as_any(&self) -> &dyn Any;
17 fn list_files(&self, base: &str, glob: &str) -> std::io::Result<Vec<String>>;
18 fn read_text(&self, path: &str) -> std::io::Result<String>;
19 fn read_bytes(&self, path: &str) -> std::io::Result<Vec<u8>>;
20 fn write_text(&self, path: &str, content: &str, append: bool) -> std::io::Result<usize>;
21 fn file_info(&self, path: &str) -> std::io::Result<Option<FileInfo>>;
22 fn exists(&self, path: &str) -> bool;
23 fn is_file(&self, path: &str) -> bool;
24 fn mkdir(&self, path: &str) -> std::io::Result<()>;
25}