32 lines
1.2 KiB
Rust
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),
|
|
}
|