pub trait Backend: Send + Sync {
// Required methods
fn ls<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<DirEntry>, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
offset: usize,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn write_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 str,
content: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn edit_file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
path: &'life1 str,
old_text: &'life2 str,
new_text: &'life3 str,
replace_all: bool,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait;
fn glob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
base: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn grep<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
path: Option<&'life2 str>,
file_glob: Option<&'life3 str>,
output_mode: GrepOutputMode,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait;
// Provided methods
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
_command: &'life1 str,
_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, SynapticError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn supports_execution(&self) -> bool { ... }
}Expand description
Pluggable filesystem backend for deep agents.
Implementations provide file I/O, glob, and grep operations.
The default execute method returns an error; override it to support shell commands.
Required Methods§
Sourcefn ls<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<DirEntry>, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn ls<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<DirEntry>, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List entries in a directory.
Sourcefn read_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
offset: usize,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
offset: usize,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Read file contents with line-based pagination.
Sourcefn write_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 str,
content: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
path: &'life1 str,
content: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Create or overwrite a file.
Sourcefn edit_file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
path: &'life1 str,
old_text: &'life2 str,
new_text: &'life3 str,
replace_all: bool,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn edit_file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
path: &'life1 str,
old_text: &'life2 str,
new_text: &'life3 str,
replace_all: bool,
) -> Pin<Box<dyn Future<Output = Result<(), SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Find-and-replace text in a file.
Sourcefn glob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
base: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn glob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
base: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Match file paths against a glob pattern within a base directory.
Sourcefn grep<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
path: Option<&'life2 str>,
file_glob: Option<&'life3 str>,
output_mode: GrepOutputMode,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn grep<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
path: Option<&'life2 str>,
file_glob: Option<&'life3 str>,
output_mode: GrepOutputMode,
) -> Pin<Box<dyn Future<Output = Result<String, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Search file contents by regex pattern.
Provided Methods§
Sourcefn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
_command: &'life1 str,
_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
_command: &'life1 str,
_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<ExecResult, SynapticError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute a shell command. Returns error by default.
Sourcefn supports_execution(&self) -> bool
fn supports_execution(&self) -> bool
Whether this backend supports shell command execution.