1use std::sync::Arc;
4
5use alice_core::memory::service::MemoryService;
6use bob_adapters::skills_agent::SkillPromptComposer;
7use bob_runtime::{Agent, agent_loop::AgentLoop};
8
9use crate::agent_backend::AgentBackend;
10
11pub struct AliceRuntimeContext {
13 pub agent_loop: AgentLoop,
15 pub agent: Agent,
17 pub backend: Arc<dyn AgentBackend>,
19 pub memory_service: Arc<MemoryService>,
21 pub skill_composer: Option<SkillPromptComposer>,
23 pub skill_token_budget: usize,
25 pub default_model: String,
27}
28
29impl std::fmt::Debug for AliceRuntimeContext {
30 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
31 f.debug_struct("AliceRuntimeContext")
32 .field("default_model", &self.default_model)
33 .field("skills_active", &self.skill_composer.is_some())
34 .finish_non_exhaustive()
35 }
36}