Skip to main content

vv_agent/workspace/
base.rs

1use 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}