archivist-core 0.2.0

Platform-neutral core for the FicHub companion bot: FicHub REST API client, search/recommendation/download command logic, intent classification, pagination cache, and the PlatformMessage IR. Shared by every platform adapter (Discord, Telegram, Matrix, Slack, IRC, fediverse, CLI, web).
Documentation
[package]
name = "archivist-core"
version = "0.2.0"
edition = "2024"
description = "Platform-neutral core for the FicHub companion bot: FicHub REST API client, search/recommendation/download command logic, intent classification, pagination cache, and the PlatformMessage IR. Shared by every platform adapter (Discord, Telegram, Matrix, Slack, IRC, fediverse, CLI, web)."
license = "AGPL-3.0-or-later"
repository = "https://opencommit.eu/MagicZhang/fanfic-archivist"
keywords = ["fanfiction", "recommendations", "archive", "bot", "platform-neutral"]
categories = ["command-line-utilities", "web-programming::http-client", "network-programming"]

[dependencies]
# Async runtime
tokio = { version = "1", features = ["full"] }

# HTTP client
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "cookies"] }

# Redis (shared with FicHub for pagination cache)
redis = { version = "0.27", features = ["aio", "tokio-comp", "connection-manager"] }

# URL encoding for query strings
urlencoding = "2"

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

# Config
dotenvy = "0.15"

# Logging
tracing = "0.1"

# Error handling
thiserror = "2"

# Date/time
chrono = { version = "0.4", default-features = false, features = ["serde", "std", "clock"] }

# URL parsing (for auto-URL detection)
url = "2"

# Async traits
async-trait = "0.1"

# UUIDs (Redis session keys)
uuid = { version = "1", features = ["v4"] }

# Hashing for response-cache keys (sha256 of normalized query)
sha2 = "0.10"

[dev-dependencies]
tokio = { version = "1", features = ["full"] }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }