[package]
edition = "2024"
rust-version = "1.96"
name = "a2a-rs"
version = "0.8.2"
authors = ["Emil Lindfors <emil@lindfors.no>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust implementation of the Agent-to-Agent (A2A) Protocol"
readme = "README.md"
keywords = [
"agent",
"protocol",
"jsonrpc",
"a2a",
]
categories = [
"api-bindings",
"network-programming",
]
license = "MIT"
repository = "https://github.com/emillindfors/a2a-rs"
resolver = "2"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
auth = [
"dep:jsonwebtoken",
"dep:oauth2",
"dep:openidconnect",
"dep:reqwest",
]
client = ["dep:tokio"]
default = [
"server",
"tracing",
]
full = [
"http-client",
"http-server",
"jsonrpc-server",
"jsonrpc-client",
"tracing",
"auth",
"sqlite",
"postgres",
]
http-client = [
"client",
"dep:reqwest",
]
http-server = [
"server",
"dep:axum",
]
jsonrpc-client = [
"client",
"dep:reqwest",
]
jsonrpc-server = [
"server",
"dep:axum",
]
postgres = [
"sqlx-storage",
"sqlx/postgres",
]
server = ["dep:tokio"]
sqlite = [
"sqlx-storage",
"sqlx/sqlite",
]
sqlx-storage = [
"server",
"dep:sqlx",
"sqlx/any",
]
tracing = [
"dep:tracing",
"dep:tracing-subscriber",
]
[lib]
name = "a2a_rs"
path = "src/lib.rs"
[[example]]
name = "builder_patterns"
path = "examples/builder_patterns.rs"
[[example]]
name = "http_client_server"
path = "examples/http_client_server.rs"
required-features = [
"http-server",
"http-client",
]
[[example]]
name = "jsonrpc_client"
path = "examples/jsonrpc_client.rs"
required-features = ["jsonrpc-client"]
[[example]]
name = "jsonrpc_server"
path = "examples/jsonrpc_server.rs"
required-features = ["jsonrpc-server"]
[[example]]
name = "sqlx_storage_demo"
path = "examples/sqlx_storage_demo.rs"
required-features = [
"sqlx-storage",
"tracing",
]
[[example]]
name = "storage_comparison"
path = "examples/storage_comparison.rs"
required-features = [
"server",
"tracing",
]
[[example]]
name = "v03_security_example"
path = "examples/v03_security_example.rs"
[[test]]
name = "agent_card_required_fields_test"
path = "tests/agent_card_required_fields_test.rs"
[[test]]
name = "agent_card_transport_test"
path = "tests/agent_card_transport_test.rs"
[[test]]
name = "auth_scheme_extraction_test"
path = "tests/auth_scheme_extraction_test.rs"
[[test]]
name = "authenticated_principal_test"
path = "tests/authenticated_principal_test.rs"
[[test]]
name = "connectrpc_resume_test"
path = "tests/connectrpc_resume_test.rs"
[[test]]
name = "context_state_test"
path = "tests/context_state_test.rs"
[[test]]
name = "durable_event_log_test"
path = "tests/durable_event_log_test.rs"
[[test]]
name = "in_memory_storage_v3_test"
path = "tests/in_memory_storage_v3_test.rs"
[[test]]
name = "jsonrpc_client_interop_test"
path = "tests/jsonrpc_client_interop_test.rs"
[[test]]
name = "jsonrpc_dispatch_test"
path = "tests/jsonrpc_dispatch_test.rs"
[[test]]
name = "jsonrpc_router_test"
path = "tests/jsonrpc_router_test.rs"
[[test]]
name = "jsonrpc_wire_test"
path = "tests/jsonrpc_wire_test.rs"
[[test]]
name = "oauth2_introspection_test"
path = "tests/oauth2_introspection_test.rs"
[[test]]
name = "oidc_id_token_test"
path = "tests/oidc_id_token_test.rs"
[[test]]
name = "postgres_storage_test"
path = "tests/postgres_storage_test.rs"
[[test]]
name = "property_based_test"
path = "tests/property_based_test.rs"
[[test]]
name = "proto_vendor_sync_test"
path = "tests/proto_vendor_sync_test.rs"
[[test]]
name = "retention_test"
path = "tests/retention_test.rs"
[[test]]
name = "retry_transport_test"
path = "tests/retry_transport_test.rs"
[[test]]
name = "send_message_blocking_test"
path = "tests/send_message_blocking_test.rs"
[[test]]
name = "sqlx_storage_test"
path = "tests/sqlx_storage_test.rs"
[[test]]
name = "storage_parity_test"
path = "tests/storage_parity_test.rs"
[[test]]
name = "transport_negotiation_test"
path = "tests/transport_negotiation_test.rs"
[[bench]]
name = "a2a_performance"
path = "benches/a2a_performance.rs"
harness = false
required-features = ["full"]
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.base64]
version = "0.21"
[dependencies.bon]
version = "2.3"
[dependencies.buffa]
version = "0.3.0"
features = ["json"]
[dependencies.buffa-types]
version = "0.3.0"
features = ["json"]
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.connectrpc]
version = "0.3.2"
features = [
"tls",
"axum",
]
[dependencies.futures]
version = "0.3"
[dependencies.http]
version = "1.0"
[dependencies.http-body]
version = "1.0.1"
[dependencies.jsonwebtoken]
version = "9.3"
optional = true
[dependencies.oauth2]
version = "5.0"
optional = true
[dependencies.openidconnect]
version = "4.0"
optional = true
[dependencies.prost]
version = "0.14.3"
[dependencies.prost-types]
version = "0.14.3"
[dependencies.reqwest]
version = "0.12"
features = [
"rustls-tls",
"rustls-tls-native-roots",
"json",
"stream",
]
optional = true
default-features = false
[dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
]
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio-rustls",
"chrono",
"uuid",
"json",
]
optional = true
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1.32"
features = [
"rt",
"rt-multi-thread",
"macros",
"net",
"io-util",
"sync",
"time",
]
optional = true
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
optional = true
[dependencies.url]
version = "2.4"
features = ["serde"]
[dependencies.uuid]
version = "1.4"
features = [
"v4",
"v4",
"serde",
]
[dependencies.webpki-roots]
version = "0.26"
[dev-dependencies.arbitrary]
version = "1.3"
features = ["derive"]
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.jsonschema]
version = "0.22"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.proptest-derive]
version = "0.5"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1.32"
features = ["test-util"]
[dev-dependencies.tower]
version = "0.5"
features = ["util"]
[build-dependencies.connectrpc-build]
version = "0.3.2"
[build-dependencies.prost-build]
version = "0.14.3"
[build-dependencies.protoc-bin-vendored]
version = "3.2.0"