1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! # ra2a-ext
//!
//! Extension utilities for the [A2A Rust SDK](https://crates.io/crates/ra2a).
//!
//! This crate provides [`CallInterceptor`](ra2a::client::CallInterceptor) and
//! server-side [`CallInterceptor`](ra2a::server::CallInterceptor) implementations
//! for activating and propagating A2A protocol extensions across agent chains.
//!
//! Aligned with Go's `a2aext` package.
//!
//! ## Components
//!
//! - **[`ExtensionActivator`]** — Client interceptor that requests extension
//! activation on outgoing calls, filtering by server-supported extensions.
//! - **[`ServerPropagator`]** — Server interceptor that extracts extension-related
//! metadata and headers from incoming requests for downstream propagation.
//! - **[`ClientPropagator`]** — Client interceptor that injects propagated extension
//! data into outgoing requests (for agent-to-agent chaining: A → B → C).
//!
//! ## Usage
//!
//! ```rust,no_run
//! use ra2a_ext::ExtensionActivator;
//! // Attach to a client to auto-request extensions on every call:
//! let activator = ExtensionActivator::new(vec![
//! "urn:a2a:ext:duration".into(),
//! ]);
//! ```
pub use ExtensionActivator;
pub use ;