use async_trait::async_trait;
#[async_trait]
pub trait ContextProvider: Send + Sync + 'static {
async fn get_context(
&self,
agent_name: &str,
tenant_id: &str,
) -> Option<String>;
}
pub struct NoOpContextProvider;
#[async_trait]
impl ContextProvider for NoOpContextProvider {
async fn get_context(&self, _agent_name: &str, _tenant_id: &str) -> Option<String> {
None
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_noop_returns_none() {
let provider = NoOpContextProvider;
let result = provider.get_context("any_agent", "any_tenant").await;
assert!(result.is_none(), "NoOp should always return None");
}
#[tokio::test]
async fn test_noop_is_send_sync() {
let provider: Box<dyn ContextProvider> = Box::new(NoOpContextProvider);
let arc = std::sync::Arc::new(provider);
let _clone = arc.clone();
}
}