use super::compact::{CompactConfig, InvokedSkillsMap};
use super::hook::HookManager;
use super::storage::{ChatMessage, ModelProvider};
use super::tools::background::BackgroundManager;
use super::tools::todo::TodoManager;
use std::sync::{Arc, Mutex};
use tokio_util::sync::CancellationToken;
pub struct AgentLoopConfig {
pub provider: ModelProvider,
pub max_tool_rounds: usize,
pub compact_config: CompactConfig,
pub hook_manager: HookManager,
pub cancel_token: CancellationToken,
}
pub struct AgentSharedState {
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 shared_messages: Arc<Mutex<Vec<ChatMessage>>>,
pub context_tokens: Arc<Mutex<usize>>,
pub invoked_skills: InvokedSkillsMap,
}