lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

commit 487f7e3f389c4c7cd3ddbb715a610453b95f0e89
parent 89a9a563a7d1a6e7a2e72fcc64d2fff9fed2c1cc
Author: triesap <tyson@radroots.org>
Date:   Mon, 13 Apr 2026 07:49:54 +0000

sdk: add radrootsd signer session handles

Diffstat:
Mcrates/sdk/src/adapters/mod.rs | 4++--
Mcrates/sdk/src/adapters/relay.rs | 8+++++---
Mcrates/sdk/src/adapters/signer.rs | 10+++++-----
Mcrates/sdk/src/adapters/signing.rs | 4+---
Mcrates/sdk/src/listing.rs | 4+++-
Mcrates/sdk/src/trade.rs | 2+-
Mcrates/sdk/tests/facade.rs | 18++++++++++--------
Mcrates/sdk/tests/replica_ingest.rs | 9++++++++-
8 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/crates/sdk/src/adapters/mod.rs b/crates/sdk/src/adapters/mod.rs @@ -2,7 +2,7 @@ pub mod radrootsd; #[cfg(feature = "relay-client")] pub mod relay; -#[cfg(feature = "signing")] -pub mod signing; #[cfg(feature = "signer-adapters")] pub mod signer; +#[cfg(feature = "signing")] +pub mod signing; diff --git a/crates/sdk/src/adapters/relay.rs b/crates/sdk/src/adapters/relay.rs @@ -4,8 +4,8 @@ use crate::WireEventParts; use crate::adapters::signing::{SignedNostrEvent, event_builder_from_parts}; use crate::identity::RadrootsIdentity; use radroots_nostr::prelude::{ - RadrootsNostrClient, RadrootsNostrClientOptions, RadrootsNostrError, - RadrootsNostrEventId, RadrootsNostrOutput, + RadrootsNostrClient, RadrootsNostrClientOptions, RadrootsNostrError, RadrootsNostrEventId, + RadrootsNostrOutput, }; pub type RelayClient = RadrootsNostrClient; @@ -55,7 +55,9 @@ pub async fn publish_parts( client: &RelayClient, parts: WireEventParts, ) -> Result<RelayOutput<RelayEventId>, RelayError> { - client.send_event_builder(event_builder_from_parts(parts)?).await + client + .send_event_builder(event_builder_from_parts(parts)?) + .await } pub async fn publish_signed_event( diff --git a/crates/sdk/src/adapters/signer.rs b/crates/sdk/src/adapters/signer.rs @@ -8,12 +8,12 @@ pub use radroots_nostr_connect::prelude::{ RadrootsNostrConnectResponseEnvelope, RadrootsNostrConnectUri, }; pub use radroots_nostr_signer::prelude::{ - RadrootsNostrEmbeddedSignerBackend, RadrootsNostrSignerBackend, - RadrootsNostrSignerBackendCapabilities, RadrootsNostrSignerCapability, - RadrootsNostrSignerConnectEvaluation, RadrootsNostrSignerConnectProposal, - RadrootsNostrSignerError, RadrootsNostrSignerHandledRequest, - RadrootsNostrSignerHandledRequestOutcome, RadrootsNostrLocalSignerAvailability, + RadrootsNostrEmbeddedSignerBackend, RadrootsNostrLocalSignerAvailability, RadrootsNostrLocalSignerCapability, RadrootsNostrRemoteSessionSignerCapability, + RadrootsNostrSignerBackend, RadrootsNostrSignerBackendCapabilities, + RadrootsNostrSignerCapability, RadrootsNostrSignerConnectEvaluation, + RadrootsNostrSignerConnectProposal, RadrootsNostrSignerError, + RadrootsNostrSignerHandledRequest, RadrootsNostrSignerHandledRequestOutcome, RadrootsNostrSignerManager, RadrootsNostrSignerNip46Codec, RadrootsNostrSignerNip46ConnectDecision, RadrootsNostrSignerNip46Handler, RadrootsNostrSignerNip46Policy, RadrootsNostrSignerNip46Signer, diff --git a/crates/sdk/src/adapters/signing.rs b/crates/sdk/src/adapters/signing.rs @@ -1,8 +1,6 @@ use crate::WireEventParts; use crate::identity::RadrootsIdentity; -use radroots_nostr::prelude::{ - RadrootsNostrError, radroots_nostr_build_event, -}; +use radroots_nostr::prelude::{RadrootsNostrError, radroots_nostr_build_event}; pub type SignedNostrEvent = radroots_nostr::prelude::RadrootsNostrEvent; pub type NostrEventBuilder = radroots_nostr::prelude::RadrootsNostrEventBuilder; diff --git a/crates/sdk/src/listing.rs b/crates/sdk/src/listing.rs @@ -34,6 +34,8 @@ pub fn build_draft(listing: &RadrootsListing) -> Result<RadrootsListingDraft, Ev } #[cfg(feature = "serde_json")] -pub fn parse_event(event: &RadrootsNostrEvent) -> Result<RadrootsListing, RadrootsTradeListingParseError> { +pub fn parse_event( + event: &RadrootsNostrEvent, +) -> Result<RadrootsListing, RadrootsTradeListingParseError> { radroots_trade::listing::parse_listing_event(event) } diff --git a/crates/sdk/src/trade.rs b/crates/sdk/src/trade.rs @@ -7,8 +7,8 @@ pub use radroots_events_codec::trade::{ }; pub use radroots_trade::listing::validation::RadrootsTradeListing as TradeListingValidateResult; -use crate::{RadrootsNostrEvent, RadrootsNostrEventPtr, WireEventParts}; use crate::RadrootsTradeEnvelope as SdkTradeEnvelope; +use crate::{RadrootsNostrEvent, RadrootsNostrEventPtr, WireEventParts}; #[cfg(feature = "serde_json")] pub fn build_envelope_draft( diff --git a/crates/sdk/tests/facade.rs b/crates/sdk/tests/facade.rs @@ -13,9 +13,7 @@ use radroots_events::listing::{ }; use radroots_events::profile::{RadrootsProfile, RadrootsProfileType}; use radroots_events::trade::{RadrootsTradeListingValidateRequest, RadrootsTradeMessagePayload}; -use radroots_sdk::{ - RadrootsNostrEvent, farm, listing, profile, trade, -}; +use radroots_sdk::{RadrootsNostrEvent, farm, listing, profile, trade}; fn sample_profile() -> RadrootsProfile { RadrootsProfile { @@ -137,10 +135,12 @@ fn farm_build_draft_wraps_farm_encoder() { let parts = farm::build_draft(&sample_farm()).expect("farm"); assert_eq!(parts.kind, KIND_FARM); - assert!(parts - .tags - .iter() - .any(|tag| tag.first().map(|value| value.as_str()) == Some("d"))); + assert!( + parts + .tags + .iter() + .any(|tag| tag.first().map(|value| value.as_str()) == Some("d")) + ); } #[test] @@ -166,7 +166,9 @@ fn listing_parse_rejects_non_listing_kind() { assert!(matches!( listing::parse_event(&event), - Err(listing::RadrootsTradeListingParseError::InvalidKind(KIND_PROFILE)) + Err(listing::RadrootsTradeListingParseError::InvalidKind( + KIND_PROFILE + )) )); } diff --git a/crates/sdk/tests/replica_ingest.rs b/crates/sdk/tests/replica_ingest.rs @@ -57,7 +57,14 @@ fn ingest_farm(replica: &ReplicaSql<SqliteExecutor>) -> RadrootsNostrEvent { let farm_value = sample_farm(); let author = seller_pubkey(); let parts = farm::build_draft(&farm_value).expect("farm draft"); - let event = sdk_event(1, &author, 1_720_000_000, parts.kind, parts.content, parts.tags); + let event = sdk_event( + 1, + &author, + 1_720_000_000, + parts.kind, + parts.content, + parts.tags, + ); let outcome = radroots_replica_ingest_event(replica.executor(), &event).expect("ingest farm"); assert_eq!(outcome, RadrootsReplicaIngestOutcome::Applied); event