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
//! Host-injectable ports (secrets, identity, endpoints).
//!
//! This crate defines each **trait** plus a minimal reference impl. Product integrations
//! ship as separate crates and are wired on [`crate::ValenceBuilder`] at boot.
//!
//! | Port | Trait | Reference impl | Builder |
//! |------|-------|----------------|---------|
//! | Storage | [`crate::DatabaseBackend`] | `valence-backend-mem` | [`.add_backend(...)`](crate::ValenceBuilder::add_backend) |
//! | Telemetry | [`TelemetrySink`](valence_telemetry::TelemetrySink) | [`NoOpSink`](valence_telemetry::NoOpSink), [`ConsoleSink`](valence_telemetry::ConsoleSink) | [`.telemetry_sink(...)`](crate::ValenceBuilder::telemetry_sink) |
//! | Secrets | [`SecretProvider`](secrets::SecretProvider) | [`NoOpSecretProvider`](secrets::NoOpSecretProvider), [`EnvSecretProvider`](secrets::EnvSecretProvider) | [`.secret_provider(...)`](crate::ValenceBuilder::secret_provider) |
//! | Identity | [`ActorFactory`](actor::ActorFactory) | [`JsonActorFactory`](actor::JsonActorFactory) | [`.actor_factory(...)`](crate::ValenceBuilder::actor_factory) |
//! | Endpoints | [`DatabaseEndpointResolver`](endpoints::DatabaseEndpointResolver) | [`NoopEndpointResolver`](endpoints::NoopEndpointResolver), [`EnvEndpointResolver`](endpoints::EnvEndpointResolver) | [`.endpoint_resolver(...)`](crate::ValenceBuilder::endpoint_resolver) |
//! | Deletion | host registration hook | no-op default | [`crate::deletion::register_deletion_dispatcher`] |
//!
//! Privacy rules are **not** builder ports — attach [`crate::PolicyEvaluator`] consts in
//! `valence_schema!` (see [`crate::privacy`]).
//!
//! # Examples
//!
//! ```
//! use std::sync::Arc;
//! use valence_backend_mem::InMemoryBackend;
//! use valence_core::{EnvSecretProvider, JsonActorFactory, NoopEndpointResolver, Valence};
//! use valence_telemetry::ConsoleSink;
//!
//! let valence = Valence::builder()
//! .add_backend("default", Arc::new(InMemoryBackend::new()))
//! .secret_provider(Arc::new(EnvSecretProvider))
//! .actor_factory(Arc::new(JsonActorFactory))
//! .endpoint_resolver(Arc::new(NoopEndpointResolver))
//! .telemetry_sink(Arc::new(ConsoleSink))
//! .build()
//! .expect("build");
//! assert!(valence.active_backend().is_ok());
//! ```