microclaw_engine/
runtime.rs1use std::collections::HashMap;
2use std::sync::Arc;
3
4use tokio::sync::RwLock;
5
6use crate::config::Config;
7use crate::embedding::EmbeddingProvider;
8use crate::hooks::HookManager;
9use crate::internal::channels::channel_adapter::ChannelRegistry;
10use crate::internal::observability::logs::OtlpLogExporter;
11use crate::internal::observability::metrics::OtlpMetricExporter;
12use crate::internal::observability::traces::OtlpTraceExporter;
13use crate::internal::storage::db::Database;
14use crate::llm::LlmProvider;
15use crate::memory::MemoryManager;
16use crate::memory_backend::MemoryBackend;
17use crate::skills::SkillManager;
18use crate::tools::ToolRegistry;
19
20#[derive(Clone)]
21pub struct AppState {
22 pub config: Config,
23 pub channel_registry: Arc<ChannelRegistry>,
24 pub db: Arc<Database>,
25 pub memory: Arc<MemoryManager>,
26 pub skills: Arc<SkillManager>,
27 pub hooks: Arc<HookManager>,
28 pub llm: Arc<dyn LlmProvider>,
29 pub llm_provider_overrides: Arc<RwLock<HashMap<String, String>>>,
30 pub llm_model_overrides: Arc<RwLock<HashMap<String, String>>>,
31 pub embedding: Option<Arc<dyn EmbeddingProvider>>,
32 pub memory_backend: Arc<MemoryBackend>,
33 pub tools: Arc<ToolRegistry>,
34 pub chat_turn_queue: Arc<crate::chat_turn_queue::ChatTurnQueue>,
35 pub skill_review_queue: crate::skill_review::SkillReviewQueue,
36 pub metric_exporter: Option<Arc<OtlpMetricExporter>>,
37 pub trace_exporter: Option<Arc<OtlpTraceExporter>>,
38 pub log_exporter: Option<Arc<OtlpLogExporter>>,
39}
40pub use crate::internal::runtime::*;