vex-api 0.1.8

Industry-grade HTTP API gateway for VEX Protocol
[package]
name = "vex-api"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Industry-grade HTTP API gateway for VEX Protocol"
readme = "README.md"
keywords = ["ai", "agents", "api", "http", "gateway"]
categories = ["web-programming::http-server", "asynchronous"]

[dependencies]
# Core VEX crates
vex-core = { workspace = true }
vex-adversarial = { workspace = true }
vex-llm = { workspace = true }
vex-persist = { workspace = true }
vex-queue = { workspace = true }
vex-runtime = { workspace = true }
vex-router = { workspace = true }

# Async runtime & web framework
tokio = { workspace = true }
async-trait = { workspace = true }
axum = { version = "0.8", features = ["macros"] }
tower = { version = "0.5", features = ["full"] }
tower-http = { version = "0.6", features = ["cors", "trace", "timeout", "limit", "compression-gzip"] }

# TLS for HTTPS
tokio-rustls = "0.26"
rustls-pki-types = { version = "1", features = ["std"] }  # Replaces unmaintained rustls-pemfile (fixes RUSTSEC-2025-0134)
hyper = { version = "1", features = ["server", "http1", "http2"] }
hyper-util = { version = "0.1", features = ["tokio"] }

# Serialization
serde = { workspace = true }
serde_json = { workspace = true }

# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }

# Observability (OpenTelemetry-ready)
tracing = { workspace = true }
tracing-subscriber = { workspace = true }

# Security
jsonwebtoken = "9"
argon2 = "0.5"
base64 = "0.22"
zeroize = { workspace = true }

# Utilities
uuid = { workspace = true }
chrono = { workspace = true }
rand = { workspace = true }
http-body-util = "0.1"

# Rate limiting (GCRA via governor)
governor = "0.8"
tower_governor = "0.5"

# Security utilities
regex = "1.10"

# OpenAPI documentation
utoipa = { version = "5", features = ["axum_extras", "chrono", "uuid"] }
utoipa-axum = "0.2"
utoipa-swagger-ui = { version = "9", features = ["axum"] }
moka = { version = "0.12.13", features = ["future"] }