[package]
edition = "2024"
name = "ra2a"
version = "0.5.0"
authors = ["QNTX"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A Rust implementation of the Agent2Agent (A2A) Protocol SDK"
readme = "README.md"
keywords = [
"a2a",
"agent",
"protocol",
"ai",
"rpc",
]
categories = [
"network-programming",
"web-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/qntx/ra2a"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
client = []
default = [
"client",
"server",
]
full = [
"server",
"grpc",
"telemetry",
"sql",
]
grpc = [
"tonic",
"prost",
"prost-types",
"tonic-prost",
"tonic-prost-build",
"google-api-proto",
]
mysql = [
"sqlx",
"sqlx/mysql",
]
postgresql = [
"sqlx",
"sqlx/postgres",
]
server = [
"axum",
"tower",
"tower-http",
"http-body",
"http-body-util",
]
sql = [
"postgresql",
"mysql",
"sqlite",
]
sqlite = [
"sqlx",
"sqlx/sqlite",
]
telemetry = [
"opentelemetry",
"tracing-opentelemetry",
]
[lib]
name = "ra2a"
path = "src/lib.rs"
[[example]]
name = "client"
path = "examples/client.rs"
required-features = ["client"]
[[example]]
name = "server"
path = "examples/server.rs"
required-features = ["server"]
[dependencies.async-stream]
version = "0.3"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1.11"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.futures]
version = "0.3"
[dependencies.google-api-proto]
version = "1"
features = ["google-api"]
optional = true
default-features = false
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.http-body]
version = "1.0"
optional = true
[dependencies.http-body-util]
version = "0.1"
optional = true
[dependencies.opentelemetry]
version = "0.31"
optional = true
[dependencies.pin-project-lite]
version = "0.2"
[dependencies.prost]
version = "0.14"
optional = true
[dependencies.prost-types]
version = "0.14"
optional = true
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"stream",
"multipart",
]
[dependencies.reqwest-eventsource]
version = "0.6.0"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio",
"json",
]
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.49"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
[dependencies.tonic]
version = "0.14"
optional = true
[dependencies.tonic-prost]
version = "0.14"
optional = true
[dependencies.tower]
version = "0.5"
optional = true
[dependencies.tower-http]
version = "0.6"
features = [
"cors",
"trace",
]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.32"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dependencies.url]
version = "2.5"
features = ["serde"]
[dependencies.uuid]
version = "1.11"
features = [
"v4",
"serde",
]
[dev-dependencies.mockito]
version = "1.7"
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.tokio-test]
version = "0.4"
[build-dependencies.tonic-prost-build]
version = "0.14"
optional = true