openai_agents_rust/agent/
traits.rs1use 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#[async_trait]
11pub trait Agent: Send + Sync {
12 async fn run(&self, ctx: &AgentContext) -> Result<(), AgentError>;
14}
15
16pub struct AgentContext {
18 pub config: Arc<Config>,
19 pub client: Arc<OpenAiClient>,
20 pub plugins: Arc<PluginRegistry>,
21 pub tools: Arc<ToolRegistry>,
22}