pub struct GeminiProvider;Trait Implementations§
Source§impl AgentProvider for GeminiProvider
impl AgentProvider for GeminiProvider
Source§fn parse_output(&self, sandbox_id: &Uuid, raw: &str) -> Vec<StreamEvent>
fn parse_output(&self, sandbox_id: &Uuid, raw: &str) -> Vec<StreamEvent>
Parse Gemini CLI --output-format stream-json NDJSON output.
Gemini emits NDJSON with these event types:
init— session initialization with model, cwdmessage— assistant text content (streamed)tool_use— tool invocation startedtool_result— tool invocation completed with resulterror— error eventresult— final result with response text, stats, session_id
Also handles the alternate format where events use type: "system" etc.
(Gemini CLI format has evolved across versions).
Source§fn base_image(&self) -> &str
fn base_image(&self) -> &str
The base container image for sandboxes using this provider.
Source§fn install_commands(&self) -> Vec<String>
fn install_commands(&self) -> Vec<String>
Commands to install the agent CLI inside the sandbox.
Source§fn 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.
Source§fn 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).
Source§fn required_env_vars(&self) -> Vec<String>
fn required_env_vars(&self) -> Vec<String>
Environment variables required by this provider.
Source§fn validate_config(&self, config: &AgentConfig) -> CiabResult<()>
fn validate_config(&self, config: &AgentConfig) -> CiabResult<()>
Validate that the given config is appropriate for this provider.
Source§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 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.
Source§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 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.
Source§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,
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.
Source§fn slash_commands(&self) -> Vec<SlashCommand>
fn slash_commands(&self) -> Vec<SlashCommand>
Returns slash commands available for this provider.
Source§fn supported_llm_providers(&self) -> Vec<AgentLlmCompatibility>
fn supported_llm_providers(&self) -> Vec<AgentLlmCompatibility>
Returns the LLM providers this agent is compatible with.
Source§fn 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.
Auto Trait Implementations§
impl Freeze for GeminiProvider
impl RefUnwindSafe for GeminiProvider
impl Send for GeminiProvider
impl Sync for GeminiProvider
impl Unpin for GeminiProvider
impl UnsafeUnpin for GeminiProvider
impl UnwindSafe for GeminiProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more