pub trait AgentProvider: Send + Sync {
Show 14 methods
// Required methods
fn name(&self) -> &str;
fn base_image(&self) -> &str;
fn install_commands(&self) -> Vec<String>;
fn build_start_command(&self, config: &AgentConfig) -> AgentCommand;
fn required_env_vars(&self) -> Vec<String>;
fn parse_output(&self, sandbox_id: &Uuid, raw: &str) -> Vec<StreamEvent>;
fn validate_config(&self, config: &AgentConfig) -> CiabResult<()>;
fn send_message<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
session_id: &'life2 Uuid,
message: &'life3 Message,
tx: &'life4 Sender<StreamEvent>,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait;
fn interrupt<'life0, 'life1, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn health_check<'life0, 'life1, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<AgentHealth>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided methods
fn prompt_mode(&self) -> PromptMode { ... }
fn interactive_protocol(&self) -> InteractiveProtocol { ... }
fn slash_commands(&self) -> Vec<SlashCommand> { ... }
fn supported_llm_providers(&self) -> Vec<AgentLlmCompatibility> { ... }
}Required Methods§
Sourcefn base_image(&self) -> &str
fn base_image(&self) -> &str
The base container image for sandboxes using this provider.
Sourcefn install_commands(&self) -> Vec<String>
fn install_commands(&self) -> Vec<String>
Commands to install the agent CLI inside the sandbox.
Sourcefn build_start_command(&self, config: &AgentConfig) -> AgentCommand
fn build_start_command(&self, config: &AgentConfig) -> AgentCommand
Build the command used to start the agent process in a sandbox.
Sourcefn required_env_vars(&self) -> Vec<String>
fn required_env_vars(&self) -> Vec<String>
Environment variables required by this provider.
Sourcefn parse_output(&self, sandbox_id: &Uuid, raw: &str) -> Vec<StreamEvent>
fn parse_output(&self, sandbox_id: &Uuid, raw: &str) -> Vec<StreamEvent>
Parse raw output from the agent process into stream events.
Sourcefn validate_config(&self, config: &AgentConfig) -> CiabResult<()>
fn validate_config(&self, config: &AgentConfig) -> CiabResult<()>
Validate that the given config is appropriate for this provider.
Sourcefn send_message<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
session_id: &'life2 Uuid,
message: &'life3 Message,
tx: &'life4 Sender<StreamEvent>,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn send_message<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
session_id: &'life2 Uuid,
message: &'life3 Message,
tx: &'life4 Sender<StreamEvent>,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Send a message to the agent and receive a stream of events.
Sourcefn interrupt<'life0, 'life1, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn interrupt<'life0, 'life1, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Interrupt the agent in the given sandbox.
Sourcefn health_check<'life0, 'life1, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<AgentHealth>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn health_check<'life0, 'life1, 'async_trait>(
&'life0 self,
sandbox_id: &'life1 Uuid,
) -> Pin<Box<dyn Future<Output = CiabResult<AgentHealth>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check the health of the agent in a sandbox.
Provided Methods§
Sourcefn prompt_mode(&self) -> PromptMode
fn prompt_mode(&self) -> PromptMode
How prompts should be delivered to the agent process. Defaults to StdinJson (Claude Code’s protocol).
Sourcefn interactive_protocol(&self) -> InteractiveProtocol
fn interactive_protocol(&self) -> InteractiveProtocol
Whether the provider supports interactive stdin control protocol. Claude Code supports control_request/control_response; others don’t.
Sourcefn slash_commands(&self) -> Vec<SlashCommand>
fn slash_commands(&self) -> Vec<SlashCommand>
Returns slash commands available for this provider.
Sourcefn supported_llm_providers(&self) -> Vec<AgentLlmCompatibility>
fn supported_llm_providers(&self) -> Vec<AgentLlmCompatibility>
Returns the LLM providers this agent is compatible with.