# homecore-recorder — SQLite state history + semantic search (ADR-132)
#
# P1 ships: SQLite structural persistence with HA-compat schema.
# P2 ships: ruvector-backed SemanticIndex — hash embeddings, HNSW search (ADR-132 P2, Iter-6 track C).
# P3 plan:  replace hash embeddings with ruvector-attention sentence embeddings (dim → 384).
#
# Build:     cargo build -p homecore-recorder --features ruvector
# Test (P2): cargo test  -p homecore-recorder --features ruvector   (20 tests)
# Test (P1): cargo test  -p homecore-recorder --no-default-features (14 tests)

[package]
name = "homecore-recorder"
version = "0.1.0-alpha.0"
edition = "2021"
license = "MIT"
authors = ["rUv <ruv@ruv.net>", "HOMECORE Contributors"]
description = "SQLite state-history recorder for HOMECORE — HA-compat schema + ruvector semantic search (ADR-132)"
repository = "https://github.com/ruvnet/RuView"

[lib]
name = "homecore_recorder"
path = "src/lib.rs"

[features]
default = []
ruvector = ["dep:ruvector-core", "dep:sha2"]

[dependencies]
homecore = { path = "../homecore", version = "0.1.0-alpha.0" }

# Async runtime
tokio = { version = "1", features = ["sync", "rt", "rt-multi-thread", "time", "macros"] }

# SQLite via sqlx — only the lite feature set; no postgres, no tls
sqlx = { version = "0.8.1", default-features = false, features = [
    "runtime-tokio-native-tls",
    "sqlite",
    "chrono",
    "uuid",
] }

# Serialisation
serde       = { version = "1", features = ["derive"] }
serde_json  = "1"

# Time
chrono = { version = "0.4", features = ["serde"] }

# Error handling
thiserror = "1"

# Structured logging
tracing = "0.1"

# Trait objects for SemanticIndex
async-trait = "0.1"

# P2: ruvector-core HNSW index + sha2 for hash-based embeddings (ruvector feature)
ruvector-core = { version = "2.2.0", optional = true, default-features = false }
sha2 = { version = "0.10", optional = true }

[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
