openai_agents_rust/agent/
traits.rs

1use crate::client::OpenAiClient;
2use crate::config::Config;
3use crate::error::AgentError;
4use crate::plugin::loader::PluginRegistry;
5use crate::tools::registry::ToolRegistry;
6use async_trait::async_trait;
7use std::sync::Arc;
8
9/// Core Agent trait – all agents must implement this.
10#[async_trait]
11pub trait Agent: Send + Sync {
12    /// Run the agent with the provided context.
13    async fn run(&self, ctx: &AgentContext) -> Result<(), AgentError>;
14}
15
16/// Context passed to each agent during execution.
17pub struct AgentContext {
18    pub config: Arc<Config>,
19    pub client: Arc<OpenAiClient>,
20    pub plugins: Arc<PluginRegistry>,
21    pub tools: Arc<ToolRegistry>,
22}