tirea_agentos_server/
nats.rs

1use crate::transport::nats::{NatsTransport, NatsTransportConfig};
2use crate::transport::NatsProtocolError;
3
4#[derive(Clone, Debug)]
5pub struct NatsConfig {
6    pub url: String,
7    pub ag_ui_subject: String,
8    pub ai_sdk_subject: String,
9    pub outbound_buffer: usize,
10}
11
12impl NatsConfig {
13    pub fn new(url: String) -> Self {
14        Self {
15            url,
16            ag_ui_subject: "agentos.ag-ui.runs".to_string(),
17            ai_sdk_subject: "agentos.ai-sdk.runs".to_string(),
18            outbound_buffer: 64,
19        }
20    }
21
22    pub async fn connect(&self) -> Result<NatsTransport, NatsProtocolError> {
23        let client = async_nats::connect(&self.url).await?;
24        Ok(NatsTransport::new(client, self.transport_config()))
25    }
26
27    fn transport_config(&self) -> NatsTransportConfig {
28        NatsTransportConfig {
29            outbound_buffer: self.outbound_buffer,
30        }
31    }
32}