use std::sync::Arc; use nazarick_core::agent::base::BaseAgent; use nazarick_core::agent::skill_registry::SkillRegistry; use nazarick_core::memory::Memory; use nazarick_core::summarizer::Summarizer; use nazarick_core::traits::Agent; use nazarick_core::types::AgentId; use nazarick_core::llm::LlmProvider; pub struct Sebas { base: BaseAgent, } impl Sebas { pub fn new( agent_id: impl Into, shared_core_path: impl Into, soul_core_path: impl Into, llm: Box, registry: Arc, memory: Arc, summarizer: Arc, max_tokens: u32, max_loops: u32, history_window: usize, summary_every: usize, conversation_timeout_mins: u64, ) -> Self { Self { base: BaseAgent::new( agent_id, shared_core_path, soul_core_path, llm, registry, memory, summarizer, max_tokens, max_loops, history_window, summary_every, conversation_timeout_mins, ), } } pub async fn init(&mut self) -> nazarick_core::types::Result<()> { self.base.init().await } pub async fn chat(&mut self, user_message: &str) -> nazarick_core::types::Result { self.base.chat(user_message).await } } impl Agent for Sebas { fn id(&self) -> AgentId { self.base.id } fn name(&self) -> &str { "Sebas Tian" } }