use super::super::hook::HookManager;
use super::super::storage::{ChatMessage, ModelProvider};
use super::super::tools::background::BackgroundManager;
use super::super::tools::todo::TodoManager;
use super::compact::{CompactConfig, InvokedSkillsMap};
use std::sync::{Arc, Mutex};
use tokio_util::sync::CancellationToken;
#[derive(Debug)]
pub struct AgentLoopConfig {
pub provider: ModelProvider,
pub max_llm_rounds: usize,
pub compact_config: CompactConfig,
pub hook_manager: HookManager,
pub cancel_token: CancellationToken,
}
#[derive(Debug)]
pub struct AgentLoopSharedState {
pub streaming_content: Arc<Mutex<String>>,
pub pending_user_messages: Arc<Mutex<Vec<ChatMessage>>>,
#[allow(dead_code)]
pub background_manager: Arc<BackgroundManager>,
pub todo_manager: Arc<TodoManager>,
pub ui_messages: Arc<Mutex<Vec<ChatMessage>>>,
pub estimated_context_tokens: Arc<Mutex<usize>>,
pub invoked_skills: InvokedSkillsMap,
pub session_id: String,
}