sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

commit b0b478041758ff997c99b45f682ffa7e9681adc3
parent 9385ccaf0aee19357a45dc666886e49d029b83c7
Author: triesap <tyson@radroots.org>
Date:   Thu, 30 Jul 2026 04:21:14 +0000

event-codec: migrate workspace consumers

- migrate SDK event construction and verification imports
- route WASM bindings through final codec namespaces
- preserve registry-only manifests and local development overrides
- pass SDK workspace, architecture, test, and strict lint gates

Diffstat:
Mcrates/event_codec_wasm/src/lib.rs | 74++++++++++++++++++++++++++++++++++++++------------------------------------
Mcrates/sdk/src/farm.rs | 4++--
Mcrates/sdk/src/knowledge.rs | 21+++++++++++----------
Mcrates/sdk/src/signer_provider.rs | 2+-
Mcrates/sdk/src/trade_runtime.rs | 2+-
Mcrates/sdk/tests/replica_ingest.rs | 2+-
6 files changed, 54 insertions(+), 51 deletions(-)

diff --git a/crates/event_codec_wasm/src/lib.rs b/crates/event_codec_wasm/src/lib.rs @@ -46,51 +46,51 @@ use radroots_event::social::message_file::MessageFile; use radroots_event::social::relay_auth::RelayAuth; use radroots_event::social::seal::Seal; use radroots_event::wire::Nip01EventWireParts; -use radroots_event_codec::article::encode::article_build_tags; -use radroots_event_codec::comment::authored::authored_nip22_comment_to_wire_parts; -use radroots_event_codec::coop::encode::coop_build_tags; -use radroots_event_codec::document::encode::document_build_tags; -use radroots_event_codec::farm::encode::farm_build_tags; -use radroots_event_codec::farm_crdt::encode::farm_crdt_change_build_tags_with_author; -use radroots_event_codec::farm_file::encode::farm_file_metadata_build_tags; -use radroots_event_codec::farm_workspace::encode::farm_workspace_build_tags; -use radroots_event_codec::file_metadata::encode::file_metadata_build_tags; -use radroots_event_codec::follow::encode::follow_build_tags; -use radroots_event_codec::gift_wrap::encode::gift_wrap_build_tags; -use radroots_event_codec::group::encode::{ +use radroots_event_codec::encode::article::article_build_tags; +use radroots_event_codec::encode::comment::authored_nip22_comment_to_wire_parts; +use radroots_event_codec::encode::coop::coop_build_tags; +use radroots_event_codec::encode::document::document_build_tags; +use radroots_event_codec::encode::farm::farm_build_tags; +use radroots_event_codec::encode::farm_crdt::farm_crdt_change_build_tags_with_author; +use radroots_event_codec::encode::farm_file::farm_file_metadata_build_tags; +use radroots_event_codec::encode::farm_workspace::farm_workspace_build_tags; +use radroots_event_codec::encode::file_metadata::file_metadata_build_tags; +use radroots_event_codec::encode::follow::follow_build_tags; +use radroots_event_codec::encode::gift_wrap::gift_wrap_build_tags; +use radroots_event_codec::encode::group::{ group_admins_build_tags, group_create_group_build_tags, group_create_invite_build_tags, group_delete_event_build_tags, group_delete_group_build_tags, group_edit_metadata_build_tags, group_join_request_build_tags, group_leave_request_build_tags, group_members_build_tags, group_metadata_build_tags, group_put_user_build_tags, group_remove_user_build_tags, group_roles_build_tags, }; -use radroots_event_codec::http_auth::encode::http_auth_build_tags; -use radroots_event_codec::job::feedback::encode::job_feedback_build_tags; -use radroots_event_codec::job::request::encode::job_request_build_tags; -use radroots_event_codec::job::result::encode::job_result_build_tags; -use radroots_event_codec::knowledge::{ +use radroots_event_codec::encode::http_auth::http_auth_build_tags; +use radroots_event_codec::encode::job::feedback::job_feedback_build_tags; +use radroots_event_codec::encode::job::request::job_request_build_tags; +use radroots_event_codec::encode::job::result::job_result_build_tags; +use radroots_event_codec::encode::knowledge::{ knowledge_claim_build_tags, knowledge_field_report_build_tags, knowledge_relation_build_tags, knowledge_review_build_tags, knowledge_source_build_tags, wiki_article_build_tags, wiki_merge_request_build_tags, wiki_redirect_build_tags, }; -use radroots_event_codec::list::encode::list_build_tags; -use radroots_event_codec::list_set::encode::list_set_build_tags; -use radroots_event_codec::message::encode::message_build_tags; -use radroots_event_codec::message_file::encode::message_file_build_tags; -use radroots_event_codec::operational_listing::tags::{ +use radroots_event_codec::encode::list::list_build_tags; +use radroots_event_codec::encode::list_set::list_set_build_tags; +use radroots_event_codec::encode::message::message_build_tags; +use radroots_event_codec::encode::message_file::message_file_build_tags; +use radroots_event_codec::encode::operational_listing::{ operational_listing_tags as operational_listing_tags_impl, operational_listing_tags_full as operational_listing_tags_full_impl, }; -use radroots_event_codec::plot::encode::plot_build_tags; -use radroots_event_codec::post::authored::{ +use radroots_event_codec::encode::plot::plot_build_tags; +use radroots_event_codec::encode::post::{ authored_ask_to_wire_parts, authored_photo_update_to_wire_parts, authored_update_to_wire_parts, }; -use radroots_event_codec::reaction::encode::reaction_build_tags; -use radroots_event_codec::relay_auth::encode::relay_auth_build_tags; -use radroots_event_codec::report::encode::report_build_tags; -use radroots_event_codec::repost::encode::{generic_repost_build_tags, repost_build_tags}; -use radroots_event_codec::seal::encode::seal_build_tags; -use radroots_event_codec::verification::{RadrootsDecodeError, RadrootsDecodedEvent}; +use radroots_event_codec::encode::reaction::reaction_build_tags; +use radroots_event_codec::encode::relay_auth::relay_auth_build_tags; +use radroots_event_codec::encode::report::report_build_tags; +use radroots_event_codec::encode::repost::{generic_repost_build_tags, repost_build_tags}; +use radroots_event_codec::encode::seal::seal_build_tags; +use radroots_event_codec::verify::{RadrootsDecodeError, RadrootsDecodedEvent}; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; #[cfg(target_arch = "wasm32")] @@ -295,7 +295,7 @@ fn decoded_event_to_json(decoded: RadrootsDecodedEvent) -> Result<String, Radroo fn decoded_payload_to_json<T>( event_type: &'static str, contract_id: &'static str, - parsed: &radroots_event_codec::parsed::RadrootsParsedEvent<T>, + parsed: &radroots_event_codec::decode::RadrootsParsedEvent<T>, ) -> Result<String, RadrootsJsValue> where T: Serialize, @@ -605,14 +605,14 @@ pub fn knowledge_field_report_tags(report_json: &str) -> Result<String, Radroots #[cfg_attr(target_arch = "wasm32", wasm_bindgen(js_name = verify_and_decode_event_json))] pub fn verify_and_decode_event_json(event_json: &str) -> Result<String, RadrootsJsValue> { let event = parse_event_json(event_json)?; - let decoded = - radroots_event_codec::verify_and_decode_radroots_event(event).map_err(decode_error_json)?; + let decoded = radroots_event_codec::verify::verify_and_decode_radroots_event(event) + .map_err(decode_error_json)?; decoded_event_to_json(decoded) } #[cfg_attr(target_arch = "wasm32", wasm_bindgen(js_name = contract_manifest_json))] pub fn contract_manifest_json() -> Result<String, RadrootsJsValue> { - radroots_event_codec::contract_manifest_json().map_err(err_js) + radroots_event_codec::manifest::contract_manifest_json().map_err(err_js) } #[cfg_attr(target_arch = "wasm32", wasm_bindgen(js_name = file_metadata_tags))] @@ -1759,8 +1759,10 @@ mod tests { let merge_request = sample_wiki_merge_request(); let merge_parts = - radroots_event_codec::knowledge::wiki_merge_request_to_wire_parts(&merge_request) - .expect("merge request parts"); + radroots_event_codec::encode::knowledge::wiki_merge_request_to_wire_parts( + &merge_request, + ) + .expect("merge request parts"); assert_eq!(merge_parts.content, "Merge synthetic soil article updates"); let merge_tags = tags_json(wiki_merge_request_tags( &serde_json::to_string(&sample_wiki_merge_request()).expect("merge request json"), diff --git a/crates/sdk/src/farm.rs b/crates/sdk/src/farm.rs @@ -1,9 +1,9 @@ pub use radroots_event::farm::*; -pub use radroots_event_codec::error::EventEncodeError; +pub use radroots_event_codec::encode::EventEncodeError; use radroots_event::wire::Nip01EventWireParts; pub fn build_draft(farm: &Farm) -> Result<Nip01EventWireParts, EventEncodeError> { - radroots_event_codec::farm::encode::to_wire_parts(farm) + radroots_event_codec::encode::farm::to_wire_parts(farm) } diff --git a/crates/sdk/src/knowledge.rs b/crates/sdk/src/knowledge.rs @@ -37,14 +37,13 @@ pub use radroots_event::{ tag::EventRef, }; pub use radroots_event_codec::{ - RADROOTS_KNOWLEDGE_CONTRACT_MANIFEST_SCHEMA_VERSION, - error::RadrootsEncodeError, + encode::RadrootsEncodeError, manifest::{ - RadrootsKnowledgeContractManifest, RadrootsKnowledgeContractManifestEntry, - RadrootsKnowledgeManifestCodecSupport, RadrootsKnowledgeManifestDiscriminator, - RadrootsKnowledgeManifestTagContract, + RADROOTS_KNOWLEDGE_CONTRACT_MANIFEST_SCHEMA_VERSION, RadrootsKnowledgeContractManifest, + RadrootsKnowledgeContractManifestEntry, RadrootsKnowledgeManifestCodecSupport, + RadrootsKnowledgeManifestDiscriminator, RadrootsKnowledgeManifestTagContract, }, - verification::{ + verify::{ RadrootsContractValidatedEvent, RadrootsDecodeError, RadrootsDecodedEvent, RadrootsIdVerifiedEvent, RadrootsNip01VerificationError, RadrootsSignatureVerifiedEvent, }, @@ -55,15 +54,17 @@ use radroots_event::knowledge::{ validate_knowledge_source, validate_wiki_merge_request, validate_wiki_redirect, }; use radroots_event_codec::{ - contract_manifest_json as codec_contract_manifest_json, - contract_manifest_sha256 as codec_contract_manifest_sha256, - knowledge::{ + encode::knowledge::{ knowledge_claim_to_wire_parts, knowledge_field_report_to_wire_parts, knowledge_relation_to_wire_parts, knowledge_review_to_wire_parts, knowledge_source_to_wire_parts, wiki_article_to_wire_parts, wiki_merge_request_to_wire_parts, wiki_redirect_to_wire_parts, }, - knowledge_contract_manifest, verify_and_decode_radroots_event as codec_verify_and_decode, + manifest::{ + contract_manifest_json as codec_contract_manifest_json, + contract_manifest_sha256 as codec_contract_manifest_sha256, knowledge_contract_manifest, + }, + verify::verify_and_decode_radroots_event as codec_verify_and_decode, }; pub const WIKI_ARTICLE_CONTRACT_ID: &str = "radroots.wiki.article.v1"; diff --git a/crates/sdk/src/signer_provider.rs b/crates/sdk/src/signer_provider.rs @@ -623,7 +623,7 @@ fn signed_event_from_nip46_response( reason: format!("remote signed event is invalid: {error}"), } })?; - radroots_event_codec::verification::verify_nip01_event(signed_event.envelope().clone()) + radroots_event_codec::verify::verify_nip01_event(signed_event.envelope().clone()) .map(|_| signed_event) .map_err(|error| RadrootsSdkError::SignerProtocol { mode: RadrootsSdkSignerMode::MycNip46.as_str().to_owned(), diff --git a/crates/sdk/src/trade_runtime.rs b/crates/sdk/src/trade_runtime.rs @@ -29,7 +29,7 @@ use radroots_event::{ }, }; #[cfg(feature = "runtime")] -use radroots_event_codec::trade::trade_mutation_event_build; +use radroots_event_codec::encode::trade::trade_mutation_event_build; #[cfg(feature = "runtime")] use radroots_event_store::{RadrootsStoredTradeMutation, RadrootsTradeProjectionCheckpoint}; #[cfg(feature = "runtime")] diff --git a/crates/sdk/tests/replica_ingest.rs b/crates/sdk/tests/replica_ingest.rs @@ -60,7 +60,7 @@ fn open_replica() -> (TempDir, ReplicaSql<SqlxSqliteExecutor>) { fn ingest_farm(replica: &ReplicaSql<SqlxSqliteExecutor>) -> EventEnvelope { let farm_value = sample_farm(); let author = seller_pubkey(); - let parts = radroots_event_codec::farm::encode::to_wire_parts(&farm_value).expect("farm draft"); + let parts = radroots_event_codec::encode::farm::to_wire_parts(&farm_value).expect("farm draft"); let event = sdk_event( 1, &author,