Skip to main content

bamboo_engine/runtime/managers/adapters/
memory.rs

1use async_trait::async_trait;
2use bamboo_agent_core::tools::ToolSchema;
3use bamboo_agent_core::Session;
4
5use crate::runtime::config::AgentLoopConfig;
6use crate::runtime::managers::memory::MemoryManager;
7
8/// Default memory manager that delegates to existing runner functions.
9pub struct DefaultMemoryManager;
10
11#[async_trait]
12impl MemoryManager for DefaultMemoryManager {
13    async fn recall_memories(&self, session: &mut Session, config: &AgentLoopConfig) -> bool {
14        let msg_count_before = session.messages.len();
15        crate::runtime::runner::prompt_context::refresh_external_memory_context(
16            session,
17            &config.memory_store,
18            config.prompt_memory_flags,
19            None,
20            config.project_context_resolver.as_deref(),
21            config.app_data_dir.as_deref(),
22        )
23        .await;
24        session.messages.len() > msg_count_before
25    }
26
27    async fn maybe_compress(
28        &self,
29        _session: &mut Session,
30        _config: &AgentLoopConfig,
31        _phase: &str,
32        _session_id: &str,
33        _model_name: &str,
34        _tool_schemas: &[ToolSchema],
35    ) -> bool {
36        // Actual compression happens via the LLM manager's mid-turn path.
37        false
38    }
39}