vectorizer-sdk 3.7.0

Rust SDK for Vectorizer — RPC-first (vectorizer://) with HTTP fallback
Documentation
[package]

name = "vectorizer-sdk"

version = "3.7.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