Skip to main content

a2a_rs_server/
lib.rs

1//! A2A Server Library
2//!
3//! This library provides a generic, pluggable A2A RC 1.0 compliant JSON-RPC server
4//! framework. Implement the `MessageHandler` trait to create your own agent backend.
5//!
6//! # Generic Server Example
7//!
8//! ```rust,ignore
9//! use a2a_rs_server::{A2aServer, MessageHandler, HandlerResult, AuthContext, EchoHandler};
10//! use a2a_rs_core::{AgentCard, Message, Task};
11//! use async_trait::async_trait;
12//!
13//! // Use the built-in echo handler for demos
14//! A2aServer::echo()
15//!     .bind("0.0.0.0:8080")
16//!     .run()
17//!     .await?;
18//!
19//! // Or implement your own handler
20//! struct MyAgent { /* ... */ }
21//!
22//! #[async_trait]
23//! impl MessageHandler for MyAgent {
24//!     async fn handle_message(
25//!         &self,
26//!         message: Message,
27//!         auth: Option<AuthContext>,
28//!     ) -> HandlerResult<SendMessageResponse> {
29//!         // Process message with your backend
30//!         todo!()
31//!     }
32//!
33//!     fn agent_card(&self, base_url: &str) -> AgentCard {
34//!         // Return your agent's card
35//!         todo!()
36//!     }
37//! }
38//!
39//! A2aServer::new(MyAgent { /* ... */ })
40//!     .bind("0.0.0.0:8080")
41//!     .auth_extractor(|headers| {
42//!         // Extract auth from headers
43//!         None
44//!     })
45//!     .run()
46//!     .await?;
47//! ```
48
49mod handler;
50mod server;
51mod task_store;
52mod webhook_delivery;
53mod webhook_store;
54
55// Re-export handler types
56pub use handler::{AuthContext, BoxedHandler, EchoHandler, HandlerError, HandlerResult, MessageHandler};
57
58// Re-export server types
59pub use server::{A2aServer, AppState, AuthExtractor, ServerConfig, run_echo_server, run_server};
60
61// Re-export task store
62pub use task_store::TaskStore;
63
64// Re-export webhook types
65pub use webhook_delivery::{RetryConfig, WebhookDelivery, WebhookError};
66pub use webhook_store::{StoredWebhookConfig, WebhookStore};