Skip to main content

oxios_kernel/kernel_handle/
a2a_api.rs

1//! A2A API — agent-to-agent communication facade.
2
3use crate::a2a::A2AProtocol;
4use std::sync::Arc;
5
6/// Agent-to-agent communication system calls.
7///
8/// Wraps [`A2AProtocol`] for inter-agent task delegation and messaging.
9/// Also exposes `oxi_sdk::MessageBus` for broadcast-based inter-agent communication.
10pub struct A2aApi {
11    protocol: Arc<A2AProtocol>,
12    /// Broadcast-based message bus for inter-agent communication.
13    message_bus: oxi_sdk::MessageBus,
14}
15
16impl A2aApi {
17    /// Create a new A2aApi with a MessageBus (capacity 256).
18    pub fn new(protocol: Arc<A2AProtocol>) -> Self {
19        Self {
20            protocol,
21            message_bus: oxi_sdk::MessageBus::new(256),
22        }
23    }
24
25    /// A2A protocol reference.
26    pub fn protocol(&self) -> &Arc<A2AProtocol> {
27        &self.protocol
28    }
29
30    /// Message bus reference for inter-agent broadcast messaging.
31    pub fn message_bus(&self) -> &oxi_sdk::MessageBus {
32        &self.message_bus
33    }
34
35    /// Subscribe to messages on the bus.
36    pub fn subscribe(&self) -> tokio::sync::broadcast::Receiver<oxi_sdk::InterAgentMessage> {
37        self.message_bus.subscribe()
38    }
39}