gitdataai/lib/ai/agent/persistence/realtime.rs
2026-05-30 01:38:40 +08:00

39 lines
909 B
Rust

use crate::agent::persistence::types::{
AgentRealtime, AgentRuntime, AgentStreamEvent,
};
use crate::error::AiResult;
pub async fn publish_event(
runtime: &AgentRuntime,
_realtime: Option<&AgentRealtime>,
event: &AgentStreamEvent,
) -> AiResult<()> {
let Some(tx) = &runtime.tx else {
return Ok(());
};
let payload = match serde_json::to_string(event) {
Ok(p) => p,
Err(error) => {
tracing::warn!(error = %error, "agent sse: serialize failed");
return Ok(());
}
};
if tx.send(payload).is_err() {
tracing::debug!("agent sse: mpsc send failed, client disconnected");
}
Ok(())
}
impl AgentRuntime {
pub async fn publish(
&self,
realtime: Option<&AgentRealtime>,
event: &AgentStreamEvent,
) -> AiResult<()> {
publish_event(self, realtime, event).await
}
}