pub trait AgentDriver {
Show 13 methods
// Required methods
fn name(&self) -> &'static str;
fn render_prompt(&self, intent: &StageIntent) -> String;
fn build_command(
&self,
phase: PhaseId,
prompt: &str,
extra_writable_roots: &[PathBuf],
) -> (&'static str, Vec<String>);
// Provided methods
fn capabilities(&self) -> DriverCapabilities { ... }
fn parse_completion(&self, _output: &str) -> Option<AgentResult> { ... }
fn health(&self, _state: &State) -> Result<(), String> { ... }
fn environment(&self) -> Vec<(String, String)> { ... }
fn sandbox_requirements(&self) -> SandboxRequirements { ... }
fn discover(&self) -> Result<(), String> { ... }
fn test_contract(&self) -> Vec<ContractResult> { ... }
fn interactivity_mode(&self, _stage: Stage) -> InteractivityMode { ... }
fn workflow_root(&self) -> String { ... }
fn health_classification(&self, state: &State) -> DriverHealth { ... }
}Expand description
The modular driver contract (999.31): each agent owns its prompt rendering,
command building, completion parsing, and health/capability discovery —
instead of that logic being scattered across prompt.rs, agents/*.rs,
agent_result.rs, and preflight.rs.
Required Methods§
Sourcefn render_prompt(&self, intent: &StageIntent) -> String
fn render_prompt(&self, intent: &StageIntent) -> String
Render the stage prompt for this agent from a crate::prompt::StageIntent.
Provided Methods§
Sourcefn capabilities(&self) -> DriverCapabilities
fn capabilities(&self) -> DriverCapabilities
Capabilities this driver declares (as-needed; default empty).
Sourcefn parse_completion(&self, _output: &str) -> Option<AgentResult>
fn parse_completion(&self, _output: &str) -> Option<AgentResult>
Parse this agent’s completion signal out of captured output; None when
the transport is process-exit (no event stream to scan).
Sourcefn health(&self, _state: &State) -> Result<(), String>
fn health(&self, _state: &State) -> Result<(), String>
Driver-specific pre-launch health check.
Sourcefn environment(&self) -> Vec<(String, String)>
fn environment(&self) -> Vec<(String, String)>
Extra environment variables for the agent process tree.
Sourcefn sandbox_requirements(&self) -> SandboxRequirements
fn sandbox_requirements(&self) -> SandboxRequirements
Sandbox requirements for this agent’s launch.
Sourcefn discover(&self) -> Result<(), String>
fn discover(&self) -> Result<(), String>
Discover capabilities from the installed CLI (e.g. codex features list).
Sourcefn test_contract(&self) -> Vec<ContractResult>
fn test_contract(&self) -> Vec<ContractResult>
The conformance suite every driver must pass (37-04).
Sourcefn interactivity_mode(&self, _stage: Stage) -> InteractivityMode
fn interactivity_mode(&self, _stage: Stage) -> InteractivityMode
The interactivity requirement for running stage headless.
Sourcefn workflow_root(&self) -> String
fn workflow_root(&self) -> String
The directory holding this agent’s GSD workflow files, used by the workflow-reference renderer. Defaults to the Codex install; a driver with a different install (e.g. Pi) overrides it.
Sourcefn health_classification(&self, state: &State) -> DriverHealth
fn health_classification(&self, state: &State) -> DriverHealth
Classify this driver’s health (the pass/fail AgentDriver::health
mapped onto the richer DriverHealth).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".