vectorizer-sdk 3.6.0

Rust SDK for Vectorizer — RPC-first (vectorizer://) with HTTP fallback
Documentation
[package]
name = "vectorizer-sdk"
version = "3.6.0"
edition = "2024"
authors = ["HiveLLM Contributors"]
description = "Rust SDK for Vectorizer — RPC-first (vectorizer://) with HTTP fallback"
license = "Apache-2.0"
repository = "https://github.com/hivellm/vectorizer.git"
keywords = ["vector-database", "semantic-search", "embeddings", "rust"]
categories = ["database", "science"]
# Disable Cargo's example auto-discovery so the workspace clippy gate
# only runs the two examples that actually compile against the
# current SDK API. The remaining demos (basic_example,
# comprehensive_test, encryption_example, test_working, umicp_usage)
# carry pre-existing rot — wrong crate name (vectorizer_rust_sdk),
# missing deps (p256, rand_core), removed fields (BatchResponse.inserted)
# — that's out of scope for the workspace-membership move under
# phase4_split-vectorizer-workspace sub-phase 6 and tracked separately.
autoexamples = false

[[example]]
name = "rpc_quickstart"
path = "examples/rpc_quickstart.rs"

[[example]]
name = "test_master_replica"
path = "examples/test_master_replica.rs"

[[example]]
name = "drift_smoke"
path = "examples/drift_smoke.rs"

[[example]]
name = "apikey_smoke"
path = "examples/apikey_smoke.rs"

[dependencies]
# Dependencies matching vectorizer versions
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1.52", features = ["full"] }
uuid = { version = "1.23", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
anyhow = { version = "1.0", features = ["backtrace"] }
tracing = "0.1"

# RPC transport: length-prefixed MessagePack over raw TCP. The wire
# spec is `docs/specs/VECTORIZER_RPC.md` in the parent crate; framing,
# multiplexing and the value model all come from `thunder-rpc` below.
parking_lot = "0.12"
thiserror = "2"

# HTTP client (legacy fallback transport — bundled because the SDK's
# error type carries a `reqwest::Error` variant; gating it off would
# break every downstream consumer that matches on `VectorizerError`).
# Use the `http` feature flag (on by default) to control whether the
# `HttpTransport` and `VectorizerClient` types are exposed.
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json", "multipart"] }

# Async trait for transport abstraction
async-trait = "0.1"

# UMICP protocol support
umicp-core = { version = "0.2", optional = true }

# Wire-protocol seam: `thunder-rpc` (lib `thunder`) is the HiveLLM family's
# shared binary RPC stack and the source of the SDK's `Request` /
# `Response` / value model, the frame codec, and the multiplexed client.
# The server (`vectorizer-server`) runs the same crate's `server` half, so
# the two ends cannot drift. A registry dependency, not a path one: the SDK
# publishes to crates.io, and dragging the server crate along is exactly
# what Thunder dissolved.
thunder-rpc = { version = "0.2.2", default-features = false, features = ["client"] }

[dev-dependencies]
tokio-test = "0.4"
# The integration suite stands up a Thunder listener as the fake server, so
# the tests drive a real client/server pair rather than a synthetic peer.
thunder-rpc = { version = "0.2.2", default-features = false, features = ["client", "server"] }

[features]
# RPC is the recommended primary transport per
# phase6_make-rpc-default-transport. HTTP stays in the default feature
# set so existing downstream consumers keep building unchanged; opt
# out via `default-features = false, features = ["rpc"]` to ship a
# slim build with the RPC client only.
default = ["rpc", "http"]
rpc = []
http = []
umicp = ["umicp-core"]

[lints]
workspace = true