use async_trait::async_trait;
use bamboo_agent_core::Session;
use crate::runtime::config::AgentLoopConfig;
#[derive(Debug, Clone)]
pub struct PromptAssemblyOutput {
pub effective_system_prompt: String,
pub skill_context: String,
pub tool_guide_context: String,
}
#[async_trait]
pub trait PromptManager: Send + Sync {
async fn assemble_prompt(
&self,
session: &mut Session,
config: &AgentLoopConfig,
) -> PromptAssemblyOutput;
async fn refresh_external_memory(&self, session: &mut Session, config: &AgentLoopConfig);
fn refresh_task_list(&self, session: &mut Session);
}