Skip to main content

alice_runtime/
context.rs

1//! Alice runtime context.
2
3use 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
11/// Fully wired Alice runtime context.
12pub struct AliceRuntimeContext {
13    /// Agent loop with slash-command support and tape recording.
14    pub agent_loop: AgentLoop,
15    /// Bob Agent for high-level Session-based interaction.
16    pub agent: Agent,
17    /// Agent backend abstraction (bob-agent or acp-agent).
18    pub backend: Arc<dyn AgentBackend>,
19    /// Local memory service.
20    pub memory_service: Arc<MemoryService>,
21    /// Skill prompt composer (None when skills disabled).
22    pub skill_composer: Option<SkillPromptComposer>,
23    /// Token budget for skill prompt injection.
24    pub skill_token_budget: usize,
25    /// Default model id.
26    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}