aether_core/core/
agent_deps.rs1use crate::events::{AgentObserver, DynObserverFactory, TraceContext};
2use aether_auth::OAuthCredentialStorage;
3use std::sync::Arc;
4
5#[derive(Clone, Default)]
9pub struct AgentDeps {
10 pub oauth_credential_store: Option<Arc<dyn OAuthCredentialStorage>>,
11 pub observer_factory: Option<DynObserverFactory>,
12 pub parent_trace_context: Option<TraceContext>,
15}
16
17impl AgentDeps {
18 pub fn new(
19 oauth_credential_store: Arc<dyn OAuthCredentialStorage>,
20 observer_factory: Option<DynObserverFactory>,
21 ) -> Self {
22 Self { oauth_credential_store: Some(oauth_credential_store), observer_factory, parent_trace_context: None }
23 }
24
25 pub fn with_parent_trace_context(mut self, parent: Option<TraceContext>) -> Self {
27 self.parent_trace_context = parent;
28 self
29 }
30
31 pub fn observer(&self) -> Option<Box<dyn AgentObserver>> {
33 self.observer_factory.as_ref().map(|factory| factory.agent(self.parent_trace_context.as_ref()))
34 }
35}