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
//! A generic, TAO-inspired resource store.
//!
//! This crate provides the core abstractions for a graph-based resource store:
//!
//! - **`Object<L>`** — A generic resource node identified by UUID, label, and hierarchical name,
//! with properties stored as JSON.
//! - **`Association<L>`** — A directed edge between two objects with a label and optional properties.
//! - **`ObjectStore<L>`** / **`AssociationStore<L>`** — Async traits for CRUD + graph operations.
//! - **`SecretManager`** — Trait for encrypted storage of sensitive field values.
//! - **`ResourceRegistry`** — Runtime metadata registry describing field roles (data, identifier,
//! sensitive, managed) per resource type, derived from proto annotations.
//!
//! The store is generic over `L: Label`, a type-safe discriminant for resource types
//! (typically generated from protobuf `google.api.resource` annotations).
//!
//! ## Architecture
//!
//! ```text
//! Proto definitions
//! │ google.api.resource, field_behavior, debug_redact
//! ▼
//! proto-gen → ObjectLabel (impl Label), RESOURCE_DESCRIPTORS
//! │
//! ▼
//! ObjectStore<L> + AssociationStore<L>
//! │
//! ├── ManagedObjectStore<L, S, M> ← field role enforcement (Phase 3)
//! ├── AssociationManager<L, S, A> ← auto parent-child (Phase 4)
//! └── RoutingStore<L> ← per-label backend dispatch (Phase 4)
//! ```
// Re-exports for convenience.
pub use ;
pub use Label;
pub use ;
pub use ;
pub use ;
pub use ResourceRef;
pub use ;
pub use ;
pub use ;