1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[]
= "trait-kit"
= "0.3.0"
= "2024"
= "1.85"
= ["Kirky.X"]
= "https://github.com/Kirky-X/trait-kit.git"
= "Module Standard Interface and Capability Management Center — A lightweight Rust library that provides a standard interface for module definition and Kit capability management."
= ["module", "trait", "capability", "kit", "interface"]
= "MIT"
= ["rust-patterns", "development-tools"]
= "README.md"
[]
= { = "0.4", = false, = true }
= { = "1", = ["derive"], = true }
= { = "1", = true }
= { = "2", = false }
= { = "2.2", = true }
= { = "0.6", = true }
[]
= "3"
= "1"
= "1"
# E2E integration test deps for AsyncKit — Phase 7 (T046). These are
# dev-only (circular dev-dependencies are allowed by Cargo).
# Version-only: cargo fetches from crates.io. [patch.crates-io] below
# redirects trait-kit to local so the e2e tests see a single, unified
# trait-kit (avoids duplicate trait_kit in the dependency graph).
= { = "0.3", = false, = ["kit", "memory", "serialization", "tracing"] }
= { = "0.2", = false, = ["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.
= { = "0.3", = false, = ["default", "kit"] }
= { = "0.3", = false, = ["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`.
= { = "0.1", = false, = ["kit", "sqlite"] }
= { = "~1.52", = false, = ["rt", "rt-multi-thread", "macros"] }
[]
= []
# AsyncKit: Send + Sync async capability management (no extra deps, Rust native async).
= []
# Level 1: basic confers integration (Store + Config trait).
= ["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"]
# Level 3: hot-reload subscription (maps to confers `watch` feature).
= ["confers-macros", "confers/watch"]
# Level 4: encrypted config storage (maps to confers `encryption` feature).
= ["hot-reload", "confers/encryption", "dep:serde", "dep:serde_json"]
# ICU4X-backed internationalization: locale-aware number/date/plural/collation.
= ["dep:icu", "dep:writeable"]
# Interface/implementation separation: register_as / resolve behind a feature gate.
= []
[]
= "2"
# integration-app is excluded from workspace members — it has path deps on
# sibling repos (../../oxcache etc.) that only exist in local dev, not CI.
# Build it standalone: cd examples/integration-app && cargo build
= [".", "examples/trait-kit-example"]
= ["."]
# Dev-deps use version-only (crates.io). This patch redirects trait-kit to
# the local source so e2e tests see a single, unified trait-kit (avoids
# duplicate trait_kit in the dependency graph). Safe for CI: `.` is the
# repo root, which always exists after checkout.
# For local dev with sibling crate changes, uncomment the relevant lines:
[]
= { = "." }
# oxcache = { path = "../oxcache" }
# limiteron = { path = "../limiteron" }
# dbnexus = { path = "../dbnexus" }
# sdforge = { path = "../sdforge" }
# inklog = { path = "../inklog" }