# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 [package] name = "dynamo-discovery" version.workspace = true edition.workspace = true authors.workspace = true license.workspace = true repository.workspace = true [dependencies] # Core dependencies (always present) anyhow = "1.0" async-trait = "0.1" bytes = { version = "1.8", features = ["serde"] } dashmap = "6.1" derive_builder = { workspace = true } figment = { version = "0.10", features = ["toml", "yaml", "env"] } futures = { version = "0.3" } parking_lot = { version = "0.12" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tokio = { version = "1.43", features = ["full"] } tokio-util = "0.7" thiserror = "2.0" tracing = "0.1" uuid = { version = "1.11", features = ["v4", "serde"] } xxhash-rust = { version = "0.8", features = ["xxh3"] } validator = { workspace = true } # HTTP service dependencies (optional) axum = { version = "0.8", optional = true } tower = { version = "0.5", optional = true } tower-http = { version = "0.6", features = ["trace"], optional = true } hyper = { version = "1.5", optional = true } reqwest = { version = "0.12", features = ["json"], optional = true } tokio-stream = { version = "0.1", optional = true } futures-util = { version = "0.3", optional = true } # Etcd dependencies (optional) etcd-client = { version = "0.17", optional = true } tonic = { version = "0.14", optional = true } # Libp2p dependencies (optional) - Match am-core versions libp2p = { version = "0.56", default-features = false, features = [ "tcp", "noise", "yamux", "macros", "tokio", "pnet", ], optional = true } libp2p-kad = { version = "0.48", optional = true } libp2p-mdns = { version = "0.48", features = ["tokio"], optional = true } libp2p-swarm = { version = "0.47", optional = true } libp2p-identity = { version = "0.2", optional = true } blake2 = { version = "0.10", optional = true } [dev-dependencies] tokio = { version = "1.43", features = ["full", "test-util"] } clap = { version = "4", features = ["derive"] } tempfile = "3" testcontainers = "0.25" tracing-subscriber = { version = "0.3", features = ["env-filter"] } [features] default = ["p2p", "etcd"] etcd = ["dep:etcd-client", "dep:tonic"] p2p = ["dep:libp2p", "dep:libp2p-kad", "dep:libp2p-mdns", "dep:libp2p-swarm", "dep:libp2p-identity", "dep:blake2"] full = ["etcd", "p2p"] testing-etcd = [] # Enable etcd tests (default on, disable with --no-default-features) integration-etcd = [] # Feature flag for integration tests with real etcd (requires Docker) # http-service = ["dep:axum", "dep:tower", "dep:tower-http", "dep:hyper", "dep:reqwest", "dep:tracing-subscriber", "dep:tokio-stream", "dep:futures-util"]