use crate::monitoring::{AgentMetrics, MonitoringSummary};
use crate::retrieval::CacheMetrics;
use std::sync::Arc;
use std::time::Duration;
use tokio::sync::RwLock;
use uuid::Uuid;
pub async fn get_stats(
episodes_fallback: &Arc<RwLock<std::collections::HashMap<Uuid, Arc<crate::Episode>>>>,
patterns_fallback: &tokio::sync::RwLock<
std::collections::HashMap<crate::episode::PatternId, crate::Pattern>,
>,
) -> (usize, usize, usize) {
let episodes = episodes_fallback.read().await;
let patterns = patterns_fallback.read().await;
let total_episodes = episodes.len();
let completed_episodes = episodes.values().filter(|e| e.is_complete()).count();
let total_patterns = patterns.len();
(total_episodes, completed_episodes, total_patterns)
}
pub async fn record_agent_execution(
agent_monitor: &crate::monitoring::AgentMonitor,
agent_name: &str,
success: bool,
duration: Duration,
) -> crate::Result<()> {
agent_monitor
.record_execution(agent_name, success, duration)
.await
}
pub async fn record_agent_execution_detailed(
agent_monitor: &crate::monitoring::AgentMonitor,
agent_name: &str,
success: bool,
duration: Duration,
task_description: Option<String>,
error_message: Option<String>,
) -> crate::Result<()> {
agent_monitor
.record_execution_detailed(
agent_name,
success,
duration,
task_description,
error_message,
)
.await
}
pub async fn get_agent_metrics(
agent_monitor: &crate::monitoring::AgentMonitor,
agent_name: &str,
) -> Option<AgentMetrics> {
agent_monitor.get_agent_metrics(agent_name).await
}
pub async fn get_all_agent_metrics(
agent_monitor: &crate::monitoring::AgentMonitor,
) -> std::collections::HashMap<String, AgentMetrics> {
agent_monitor.get_all_agent_metrics().await
}
pub async fn get_monitoring_summary(
agent_monitor: &crate::monitoring::AgentMonitor,
) -> MonitoringSummary {
agent_monitor.get_summary_stats().await
}
pub fn get_cache_metrics(query_cache: &crate::retrieval::QueryCache) -> CacheMetrics {
query_cache.metrics()
}
pub fn clear_cache_metrics(query_cache: &crate::retrieval::QueryCache) {
query_cache.clear_metrics();
}
pub fn clear_cache(query_cache: &crate::retrieval::QueryCache) {
query_cache.invalidate_all();
}