[package]
name = "dirigent_archivist"
version = "0.1.0"
edition = "2021"

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

[features]
# All built-in importers are on by default. Turn the corresponding
# `importer-*` flag off (and opt out of `default`) to ship a slimmer build.
default = ["importer-claude", "importer-chatgpt", "importer-codex"]

# Exposes the sub-trait contract test harness (`backend::contract`) to
# downstream crates so new backends can reuse the same behavioral checks.
test-utils = []

# Per-source importer feature gates. Each flag guards the corresponding
# `ImporterRegistry::with_defaults` registration and (where relevant) the
# source module itself.
importer-claude  = []
importer-chatgpt = ["dep:dirigent_chatgpt"]
importer-codex   = ["dep:dirigent_codex"]

[dependencies]
# Core dependencies
dirigent_protocol = { path = "../dirigent_protocol" }
dirigent_anth = { path = "../dirigent_anth" }
dirigent_chatgpt = { path = "../dirigent_chatgpt", optional = true }
dirigent_codex = { path = "../dirigent_codex", optional = true }
camino = "1.1"

# UUID support with v7 and serde
uuid = { version = "1.11", features = ["v5", "v7", "serde"] }

# Date/time handling
chrono = { version = "0.4", features = ["serde"] }

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"

# Async runtime and file operations
tokio = { version = "1.42", features = ["fs", "sync", "time", "io-util", "macros", "rt-multi-thread"] }

# Logging
tracing = "0.1"

# Error handling
thiserror = "2.0"
anyhow = "1"

# Hashing for content-addressable storage
sha2 = "0.10"
hex = "0.4"

# LRU read cache for registry backends
lru = "0.12"

# Async traits
async-trait = "0.1"

# Async futures
futures = "0.3"

[dev-dependencies]
tempfile = "3.0"
walkdir = "2"
