microclaw-engine 0.10.1

Channel-independent Agent Engine and default services for MicroClaw
Documentation
use std::collections::HashMap;
use std::sync::Arc;

use tokio::sync::RwLock;

use crate::config::Config;
use crate::embedding::EmbeddingProvider;
use crate::hooks::HookManager;
use crate::internal::channels::channel_adapter::ChannelRegistry;
use crate::internal::observability::logs::OtlpLogExporter;
use crate::internal::observability::metrics::OtlpMetricExporter;
use crate::internal::observability::traces::OtlpTraceExporter;
use crate::internal::storage::db::Database;
use crate::llm::LlmProvider;
use crate::memory::MemoryManager;
use crate::memory_backend::MemoryBackend;
use crate::skills::SkillManager;
use crate::tools::ToolRegistry;

#[derive(Clone)]
pub struct AppState {
    pub config: Config,
    pub channel_registry: Arc<ChannelRegistry>,
    pub db: Arc<Database>,
    pub memory: Arc<MemoryManager>,
    pub skills: Arc<SkillManager>,
    pub hooks: Arc<HookManager>,
    pub llm: Arc<dyn LlmProvider>,
    pub llm_provider_overrides: Arc<RwLock<HashMap<String, String>>>,
    pub llm_model_overrides: Arc<RwLock<HashMap<String, String>>>,
    pub embedding: Option<Arc<dyn EmbeddingProvider>>,
    pub memory_backend: Arc<MemoryBackend>,
    pub tools: Arc<ToolRegistry>,
    pub chat_turn_queue: Arc<crate::chat_turn_queue::ChatTurnQueue>,
    pub skill_review_queue: crate::skill_review::SkillReviewQueue,
    pub metric_exporter: Option<Arc<OtlpMetricExporter>>,
    pub trace_exporter: Option<Arc<OtlpTraceExporter>>,
    pub log_exporter: Option<Arc<OtlpLogExporter>>,
}
pub use crate::internal::runtime::*;