aether-mcp-servers 0.8.9

Built-in MCP tool servers for the Aether AI agent framework
Documentation
use aether_core::events::SubAgentProgressPayload;
use rmcp::model::{ProgressNotificationParam, ProgressToken};
use rmcp::{Peer, RoleServer};
use std::sync::Arc;
use std::sync::atomic::{AtomicU64, Ordering};

#[derive(Clone)]
pub struct SubAgentProgressSink {
    peer: Peer<RoleServer>,
    token: ProgressToken,
    counter: Arc<AtomicU64>,
}

impl SubAgentProgressSink {
    pub fn new(peer: Peer<RoleServer>, token: ProgressToken) -> Self {
        Self { peer, token, counter: Arc::new(AtomicU64::new(0)) }
    }

    pub async fn send(&self, payload: SubAgentProgressPayload) {
        let message = serde_json::to_string(&payload).unwrap_or_default();
        #[allow(clippy::cast_precision_loss)]
        let progress = self.counter.fetch_add(1, Ordering::Relaxed) as f64;
        let notification = ProgressNotificationParam::new(self.token.clone(), progress).with_message(message);
        let _ = self.peer.notify_progress(notification).await;
    }
}