Skip to main content

a2a_protocol_core/
lib.rs

1//! # A2A Protocol Core — v1.0.0
2//!
3//! Pure A2A (Agent-to-Agent) protocol domain logic, completely transport agnostic.
4
5pub mod agent;
6pub mod error;
7pub mod protocol;
8pub mod registry;
9pub mod security;
10pub mod transport;
11
12#[cfg(feature = "protocol-core")]
13pub mod data;
14
15#[cfg(feature = "protocol-core")]
16pub mod methods;
17
18#[cfg(feature = "event-stream")]
19pub mod streaming;
20
21#[cfg(feature = "protocol-core")]
22pub mod services;
23
24// Agent metadata types
25pub use agent::{
26    AgentCapabilities, AgentCard, AgentCardSignature, AgentExtension, AgentInterface,
27    AgentProvider, AgentSkill,
28};
29
30// Error types and A2A error codes
31pub use error::{A2AError, A2AResult, a2a_error_codes};
32
33// Protocol handler
34pub use protocol::A2AProtocol;
35
36// Method registry
37pub use registry::{
38    A2AMethodHandler, A2AMethodRegistry, A2ANotificationHandler, MethodMetadata, RegistryStats,
39};
40
41// Security scheme types
42pub use security::{
43    ApiKeySecurityScheme, AuthorizationCodeOAuthFlow, ClientCredentialsOAuthFlow,
44    DeviceCodeOAuthFlow, HttpAuthSecurityScheme, MutualTlsSecurityScheme, OAuth2SecurityScheme,
45    OAuthFlows, OpenIdConnectSecurityScheme, SecurityRequirement, SecurityScheme,
46};
47
48// Transport traits (no MockTransport — test-only helper)
49pub use transport::{A2ATransport, A2ATransportFactory};
50
51// Data types (feature = "protocol-core")
52#[cfg(feature = "protocol-core")]
53pub use data::{
54    Artifact, AuthenticationInfo, Message, MessageRole, Part, Task, TaskPushNotificationConfig,
55    TaskState, TaskStatus,
56};
57
58// Method params and discovery types (feature = "protocol-core")
59// Handler functions (handle_message_send, handle_tasks_*) are not re-exported — use via methods module.
60#[cfg(feature = "protocol-core")]
61pub use methods::{
62    discovery::{
63        AgentDiscovery, AuthenticatedExtendedCardParams, AuthenticatedExtendedCardResult,
64        DefaultAgentDiscovery,
65    },
66    params::{
67        CancelTaskRequest, CreateTaskPushNotificationConfigRequest,
68        DeleteTaskPushNotificationConfigRequest, GetTaskPushNotificationConfigRequest,
69        GetTaskRequest, ListTaskPushNotificationConfigsRequest, ListTasksRequest,
70        ListTasksResponse, MessageSendParams, MessageSendResponse, SendMessageConfiguration,
71        SendMessageRequest, SendMessageResponse, SubscribeToTaskRequest, TaskCancelParams,
72        TaskGetParams, TaskListParams, TaskListResult,
73    },
74};
75
76// Task storage service (feature = "protocol-core")
77#[cfg(feature = "protocol-core")]
78pub use services::{ConversationContext, InMemoryTaskStorage, TaskStorage};
79
80/// A2A Protocol Version
81pub const A2A_PROTOCOL_VERSION: &str = "1.0";
82
83pub use protocol_transport_core::{
84    JSONRPC_VERSION, JsonRpcError, JsonRpcId, JsonRpcIncoming, JsonRpcNotification, JsonRpcRequest,
85    JsonRpcResponse, error_codes as jsonrpc_error_codes,
86};