pub trait Agent {
Show 25 methods
// Required methods
fn name(&self) -> &str;
fn default_model() -> &'static str
where Self: Sized;
fn model_for_size(size: ModelSize) -> &'static str
where Self: Sized;
fn available_models() -> &'static [&'static str]
where Self: Sized;
fn system_prompt(&self) -> &str;
fn set_system_prompt(&mut self, prompt: String);
fn get_model(&self) -> &str;
fn set_model(&mut self, model: String);
fn set_root(&mut self, root: String);
fn set_skip_permissions(&mut self, skip: bool);
fn set_output_format(&mut self, format: Option<String>);
fn set_add_dirs(&mut self, dirs: Vec<String>);
fn as_any_ref(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
fn run<'life0, 'life1, 'async_trait>(
&'life0 self,
prompt: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentOutput>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn run_interactive<'life0, 'life1, 'async_trait>(
&'life0 self,
prompt: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn run_resume<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
last: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn cleanup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
// Provided methods
fn resolve_model(model_input: &str) -> String
where Self: Sized { ... }
fn validate_model(model: &str, agent_name: &str) -> Result<()>
where Self: Sized { ... }
fn set_capture_output(&mut self, _capture: bool) { ... }
fn set_max_turns(&mut self, _turns: u32) { ... }
fn set_sandbox(&mut self, _config: SandboxConfig) { ... }
fn set_env_vars(&mut self, _vars: Vec<(String, String)>) { ... }
fn run_resume_with_prompt<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_session_id: &'life1 str,
_prompt: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentOutput>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
}Required Methods§
fn name(&self) -> &str
fn default_model() -> &'static strwhere
Self: Sized,
Sourcefn model_for_size(size: ModelSize) -> &'static strwhere
Self: Sized,
fn model_for_size(size: ModelSize) -> &'static strwhere
Self: Sized,
Get the model name for a given size category.
Sourcefn available_models() -> &'static [&'static str]where
Self: Sized,
fn available_models() -> &'static [&'static str]where
Self: Sized,
Get the list of available models for this agent.
fn system_prompt(&self) -> &str
fn set_system_prompt(&mut self, prompt: String)
fn get_model(&self) -> &str
fn set_model(&mut self, model: String)
fn set_root(&mut self, root: String)
fn set_skip_permissions(&mut self, skip: bool)
fn set_output_format(&mut self, format: Option<String>)
Sourcefn set_add_dirs(&mut self, dirs: Vec<String>)
fn set_add_dirs(&mut self, dirs: Vec<String>)
Set additional directories for the agent to include.
Sourcefn as_any_ref(&self) -> &dyn Any
fn as_any_ref(&self) -> &dyn Any
Get a reference to the concrete agent type (for downcasting).
Sourcefn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Get a mutable reference to the concrete agent type (for downcasting).
Sourcefn run<'life0, 'life1, 'async_trait>(
&'life0 self,
prompt: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentOutput>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn run<'life0, 'life1, 'async_trait>(
&'life0 self,
prompt: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentOutput>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Run the agent in non-interactive mode.
Returns Some(AgentOutput) if the agent supports structured output
(e.g., JSON mode), otherwise returns None.
fn run_interactive<'life0, 'life1, 'async_trait>(
&'life0 self,
prompt: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sourcefn run_resume<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
last: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn run_resume<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: Option<&'life1 str>,
last: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Resume a previous session.
If session_id is provided, resumes that specific session.
If last is true, resumes the most recent session.
If neither, shows a session picker or resumes the most recent.
fn cleanup<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Provided Methods§
Sourcefn resolve_model(model_input: &str) -> Stringwhere
Self: Sized,
fn resolve_model(model_input: &str) -> Stringwhere
Self: Sized,
Resolve a model input (either a size alias or specific model name).
If the input is a size alias (small/medium/large), returns the corresponding model for this agent. Otherwise returns the input as-is.
Sourcefn validate_model(model: &str, agent_name: &str) -> Result<()>where
Self: Sized,
fn validate_model(model: &str, agent_name: &str) -> Result<()>where
Self: Sized,
Validate that a model name is supported by this agent.
Returns Ok(()) if valid, or an error with available models if invalid.
Sourcefn set_capture_output(&mut self, _capture: bool)
fn set_capture_output(&mut self, _capture: bool)
Enable output capture mode.
When set, non-interactive run() pipes stdout, captures the text,
and returns Some(AgentOutput). Default is false (streams to terminal).
Claude handles capture via output_format, so the default is a no-op.
Sourcefn set_max_turns(&mut self, _turns: u32)
fn set_max_turns(&mut self, _turns: u32)
Set the maximum number of agentic turns.
Sourcefn set_sandbox(&mut self, _config: SandboxConfig)
fn set_sandbox(&mut self, _config: SandboxConfig)
Set sandbox configuration for running inside a Docker sandbox.
Sourcefn set_env_vars(&mut self, _vars: Vec<(String, String)>)
fn set_env_vars(&mut self, _vars: Vec<(String, String)>)
Set environment variables to pass to the agent subprocess.
Sourcefn run_resume_with_prompt<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_session_id: &'life1 str,
_prompt: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentOutput>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn run_resume_with_prompt<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_session_id: &'life1 str,
_prompt: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AgentOutput>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Resume a previous session with a new prompt (for retry/correction).
Returns Some(AgentOutput) if the agent supports structured output.
Default implementation returns an error indicating unsupported operation.