vectorizer-sdk 3.0.0

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

name = "vectorizer-sdk"

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



[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.0" }



[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