trait-kit 0.2.3

Module Standard Interface and Capability Management Center — A lightweight Rust library that provides a standard interface for module definition and Kit capability management.
Documentation
[package]
name = "trait-kit"
version = "0.2.3"
edition = "2021"
rust-version = "1.91"
authors = ["Kirky.X"]
repository = "https://github.com/Kirky-X/trait-kit.git"
description = "Module Standard Interface and Capability Management Center — A lightweight Rust library that provides a standard interface for module definition and Kit capability management."
keywords = ["module", "trait", "capability", "kit", "interface"]
license = "MIT"
categories = ["rust-patterns", "development-tools"]
readme = "README.md"

[dependencies]
confers = { version = "0.4.0", default-features = false, optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
thiserror = { version = "2", default-features = false }

[dev-dependencies]
serial_test = "3"
static_assertions = "1"
trybuild = "1"
# E2E integration test deps for AsyncKit — Phase 7 (T046). These are
# dev-only (circular dev-dependencies are allowed by Cargo).
oxcache = { path = "../oxcache", default-features = false, features = ["kit", "memory"] }
limiteron = { path = "../limiteron", default-features = false, features = ["kit"] }
# dbnexus `kit` does not transitively enable a database driver; the e2e test
# uses `sqlite::memory:`, so we explicitly enable `default` (provides sqlite +
# runtime-tokio-rustls + permission + sql-parser + macros + config-env +
# with-time) alongside `kit`. Rule 6 still honored via default-features = false.
dbnexus = { path = "../dbnexus", default-features = false, features = ["default", "kit"] }
sdforge = { path = "../sdforge", default-features = false, features = ["kit"] }
# inklog gates `integrations::kit` behind `any(feature = "sqlite"/"postgres"/"mysql")`
# (inklog/src/integrations/mod.rs:16). The e2e test pulls `InklogModule` from
# there, so we enable `sqlite` (the lightest backend, mirrors the dbnexus
# `sqlite::memory:` test URL). `default-features = false` per Rule 6 — we
# explicitly opt into `kit` + `sqlite` only, not inklog's default `http`/`cli`.
inklog = { path = "../inklog", default-features = false, features = ["kit", "sqlite"] }
tokio = { version = "~1.52", default-features = false, features = ["rt", "rt-multi-thread", "macros"] }

[features]
default = []
# AsyncKit: Send + Sync async capability management (no extra deps, Rust native async).
async = []
# Level 1: basic confers integration (Store + Config trait).
confers = ["dep:confers", "dep:serde"]
# Level 2: module-level config inheritance (ModuleConfig trait + Config re-export).
# confers 0.4 ships macros as a non-optional workspace member, so this level
# is a semantic marker for trait-kit's ModuleConfig surface.
confers-macros = ["confers"]
# Level 3: hot-reload subscription (maps to confers `watch` feature).
hot-reload = ["confers-macros", "confers/watch"]
# Level 4: encrypted config storage (maps to confers `encryption` feature).
encryption = ["hot-reload", "confers/encryption", "dep:serde", "dep:serde_json"]

[workspace]
resolver = "2"
members = [".", "examples/trait-kit-example", "examples/integration-app"]
default-members = ["."]