Files
Skald-Circle/crates/skald-relay-client/src/config.rs
T
2026-07-10 15:02:09 +01:00

32 lines
1.2 KiB
Rust

//! Configuration for [`crate::RelayClient`].
use std::path::PathBuf;
/// Configuration snapshot passed to `RelayClient::new`.
///
/// `relay_url` may be empty: the client then stays idle (no WS loop is
/// spawned), which keeps the plugin toggleable without a relay configured.
pub struct RelayClientConfig {
/// `wss://` URL of the relay (e.g. `wss://relay.skaldagent.net/v1/ws`).
/// Empty => the client is idle.
pub relay_url: String,
/// Default pairing TTL in seconds (used when `start_pairing(0)` is called).
pub pairing_ttl: u32,
/// Where the agent's 32-byte identity seed comes from (crypto.md §9).
pub seed: SeedSource,
}
/// Source of the persistent identity seed (crypto.md §9).
///
/// `Path` preserves an existing on-disk identity: the plugin passes
/// `Path("data/relay/seed")` — the same relative path as today — so no device
/// is orphaned on upgrade and the namespace id is unchanged. `Bytes` is for
/// tests / in-memory identities.
pub enum SeedSource {
/// A raw 32-byte seed (tests, in-memory).
Bytes([u8; 32]),
/// Load (or generate + persist `0600`) the seed at the given path. The
/// parent directory is created on first use.
Path(PathBuf),
}