a2a-protocol-client 0.3.1

A2A protocol v1.0 — HTTP client (hyper-backed)
Documentation
# SPDX-License-Identifier: Apache-2.0
# Copyright 2026 Tom F. <tomf@tomtomtech.net> (https://github.com/tomtom215)

[package]
name        = "a2a-protocol-client"
version     = "0.3.1"
description = "A2A protocol v1.0 — HTTP client (hyper-backed)"
readme      = "README.md"

edition.workspace      = true
rust-version.workspace = true
license.workspace      = true
authors.workspace      = true
repository.workspace   = true
homepage.workspace     = true
documentation          = "https://docs.rs/a2a-protocol-client"
keywords               = ["a2a", "agent", "client", "http"]
categories             = ["network-programming", "web-programming"]

[features]
## Enable HTTPS support via rustls (no OpenSSL system dependency).
tls-rustls = ["dep:hyper-rustls", "dep:rustls", "dep:rustls-pki-types", "dep:webpki-roots"]
## Enable agent card signing verification.
signing = ["a2a-protocol-types/signing"]
## Enable structured logging via the `tracing` crate (zero cost when disabled).
tracing = ["dep:tracing"]
## Enable WebSocket transport via `tokio-tungstenite`.
websocket = ["dep:tokio-tungstenite", "dep:futures-util"]
## Enable gRPC transport via `tonic`.
grpc = ["dep:tonic", "dep:prost", "dep:tokio-stream", "dep:tonic-build"]

[dependencies]
a2a-protocol-types = { version = "0.3.1", path = "../a2a-types" }
serde_json     = { workspace = true }
hyper          = { workspace = true }
http-body-util = { workspace = true }
hyper-util     = { workspace = true }
tokio          = { workspace = true }
uuid           = { workspace = true }
tracing        = { workspace = true, optional = true }
tokio-tungstenite = { version = ">=0.24, <0.25", optional = true }
futures-util      = { version = ">=0.3.30, <0.4", optional = true, default-features = false, features = ["sink"] }
hyper-rustls   = { version = ">=0.27, <0.28", optional = true, default-features = false, features = ["ring", "http1", "http2", "webpki-tokio"] }
rustls         = { version = ">=0.23, <0.24", optional = true, default-features = false, features = ["std", "tls12", "ring"] }
rustls-pki-types = { version = ">=1.7, <2", optional = true }
webpki-roots   = { version = ">=1.0, <2", optional = true }
tonic          = { workspace = true, optional = true }
prost          = { workspace = true, optional = true }
tokio-stream   = { workspace = true, optional = true }

[build-dependencies]
tonic-build = { workspace = true, optional = true }

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "test-util"] }
criterion = { workspace = true }
bytes = "1"
rcgen = "0.13"
tokio-rustls = { version = ">=0.26, <0.27", default-features = false, features = ["ring"] }
rustls = { version = ">=0.23, <0.24", default-features = false, features = ["std", "tls12", "ring"] }
rustls-pki-types = { version = ">=1.7, <2" }
hyper = { workspace = true }
http-body-util = { workspace = true }
hyper-util = { workspace = true, features = ["server", "server-auto"] }
a2a-protocol-types = { version = "0.3.1", path = "../a2a-types" }
a2a-protocol-server = { version = "0.3.1", path = "../a2a-server", features = ["websocket"] }
futures-util = { version = ">=0.3.30, <0.4", default-features = false, features = ["sink"] }

[[bench]]
name = "sse_parse"
harness = false