vectorizer-sdk 3.0.3

Rust SDK for Vectorizer — RPC-first (vectorizer://) with HTTP fallback
Documentation
[package]
name = "vectorizer-sdk"
version = "3.0.3"
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.35", features = ["full"] }
uuid = { version = "1.6", 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; the
# codec is byte-for-byte the same as `vectorizer::protocol::rpc::codec`.
rmp-serde = "1"
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 (phase4_split-vectorizer-workspace, sub-phase 6).
# The SDK's RPC `Request` / `Response` / `VectorizerValue` and the
# length-prefixed MessagePack codec used to be hand-ported byte-for-
# byte from the server. Now they re-export from the standalone
# vectorizer-protocol crate so the wire format cannot drift between
# server and client — they're literally the same types.
vectorizer-protocol = { path = "../../crates/vectorizer-protocol", version = "3.0.3" }

[dev-dependencies]
tokio-test = "0.4"

[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