sdk

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

commit 7b21fd126a677eeabe3dc7b2d5901d9946465101
parent 2338e109ef2ffa527f3ac4219817071acbdfbf14
Author: triesap <tyson@radroots.org>
Date:   Thu, 16 Jul 2026 13:52:31 +0000

sdk: align runtime contract trade operations

Replace retired trade request/decision operation descriptors with the release-product proposal, revision, candidate, cancellation, query, evidence, and private-artifact operation catalog.

Update CLI host metadata so generated runtime contract bindings expose file-backed trade mutation commands.

Diffstat:
Mcrates/runtime_contract_v1/src/lib.rs | 111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
Mtools/xtask/src/cli_host.rs | 90++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
2 files changed, 155 insertions(+), 46 deletions(-)

diff --git a/crates/runtime_contract_v1/src/lib.rs b/crates/runtime_contract_v1/src/lib.rs @@ -110,12 +110,18 @@ runtime_operation_ids! { BasketItemUpdate => "basket.item.update", BasketItemRemove => "basket.item.remove", BasketQuote => "basket.quote", - TradeRequest => "trade.request", + TradeProposalSubmit => "trade.proposal.submit", + TradeRevisionPropose => "trade.revision.propose", + TradeCandidateDecide => "trade.candidate.decide", + TradeCancellationSubmit => "trade.cancellation.submit", + TradeOperationResume => "trade.operation.resume", TradeGet => "trade.get", TradeList => "trade.list", - TradeAccept => "trade.accept", - TradeDecline => "trade.decline", - TradeCancel => "trade.cancel", + TradeEvidenceRefresh => "trade.evidence.refresh", + TradeEvidenceInspect => "trade.evidence.inspect", + TradePrivateArtifactSeal => "trade.private_artifact.seal", + TradePrivateArtifactOpen => "trade.private_artifact.open", + TradePrivateArtifactDelete => "trade.private_artifact.delete", ValidationStatus => "validation.status", ValidationReceiptGet => "validation.receipt.get", ValidationReceiptVerify => "validation.receipt.verify", @@ -681,7 +687,7 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[ ProjectionEffectV1::WritesProjection, ), mutation( - RuntimeOperationIdV1::TradeRequest, + RuntimeOperationIdV1::TradeProposalSubmit, OperationRiskV1::High, ApprovalRequirementV1::ConditionalOrRequiredByMode, SignerRequirementV1::Required, @@ -689,22 +695,17 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[ PrivacyEffectV1::PrivateCoordination, ProjectionEffectV1::MayUpdateProjection, ), - read( - RuntimeOperationIdV1::TradeGet, - OperationRiskV1::Low, - TransportCapabilityRouteV1::local(), - PrivacyEffectV1::PrivateCoordination, - ProjectionEffectV1::ReadsProjection, - ), - read( - RuntimeOperationIdV1::TradeList, - OperationRiskV1::Low, - TransportCapabilityRouteV1::local(), + mutation( + RuntimeOperationIdV1::TradeRevisionPropose, + OperationRiskV1::High, + ApprovalRequirementV1::ConditionalOrRequiredByMode, + SignerRequirementV1::Required, + TransportCapabilityRouteV1::delivery(), PrivacyEffectV1::PrivateCoordination, - ProjectionEffectV1::ReadsProjection, + ProjectionEffectV1::MayUpdateProjection, ), mutation( - RuntimeOperationIdV1::TradeAccept, + RuntimeOperationIdV1::TradeCandidateDecide, OperationRiskV1::High, ApprovalRequirementV1::ConditionalOrRequiredByMode, SignerRequirementV1::Required, @@ -713,7 +714,7 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[ ProjectionEffectV1::MayUpdateProjection, ), mutation( - RuntimeOperationIdV1::TradeDecline, + RuntimeOperationIdV1::TradeCancellationSubmit, OperationRiskV1::High, ApprovalRequirementV1::ConditionalOrRequiredByMode, SignerRequirementV1::Required, @@ -722,7 +723,7 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[ ProjectionEffectV1::MayUpdateProjection, ), mutation( - RuntimeOperationIdV1::TradeCancel, + RuntimeOperationIdV1::TradeOperationResume, OperationRiskV1::High, ApprovalRequirementV1::ConditionalOrRequiredByMode, SignerRequirementV1::Required, @@ -731,6 +732,61 @@ pub const RUNTIME_OPERATION_DESCRIPTORS_V1: &[RuntimeOperationDescriptorV1] = &[ ProjectionEffectV1::MayUpdateProjection, ), read( + RuntimeOperationIdV1::TradeGet, + OperationRiskV1::Low, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::ReadsProjection, + ), + read( + RuntimeOperationIdV1::TradeList, + OperationRiskV1::Low, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::ReadsProjection, + ), + mutation( + RuntimeOperationIdV1::TradeEvidenceRefresh, + OperationRiskV1::Medium, + ApprovalRequirementV1::None, + SignerRequirementV1::None, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::WritesProjection, + ), + read( + RuntimeOperationIdV1::TradeEvidenceInspect, + OperationRiskV1::Low, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::ReadsProjection, + ), + mutation( + RuntimeOperationIdV1::TradePrivateArtifactSeal, + OperationRiskV1::High, + ApprovalRequirementV1::ConditionalOrRequiredByMode, + SignerRequirementV1::None, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::WritesProjection, + ), + read( + RuntimeOperationIdV1::TradePrivateArtifactOpen, + OperationRiskV1::High, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::ReadsProjection, + ), + mutation( + RuntimeOperationIdV1::TradePrivateArtifactDelete, + OperationRiskV1::Critical, + ApprovalRequirementV1::Required, + SignerRequirementV1::None, + TransportCapabilityRouteV1::local(), + PrivacyEffectV1::PrivateCoordination, + ProjectionEffectV1::WritesProjection, + ), + read( RuntimeOperationIdV1::ValidationStatus, OperationRiskV1::Low, TransportCapabilityRouteV1::local(), @@ -1625,10 +1681,11 @@ fn validate_operation_descriptors() -> Result<(), RuntimeContractErrorV1> { RuntimeOperationIdV1::ListingPublish, RuntimeOperationIdV1::ListingPause, RuntimeOperationIdV1::ListingWithdraw, - RuntimeOperationIdV1::TradeRequest, - RuntimeOperationIdV1::TradeAccept, - RuntimeOperationIdV1::TradeDecline, - RuntimeOperationIdV1::TradeCancel, + RuntimeOperationIdV1::TradeProposalSubmit, + RuntimeOperationIdV1::TradeRevisionPropose, + RuntimeOperationIdV1::TradeCandidateDecide, + RuntimeOperationIdV1::TradeCancellationSubmit, + RuntimeOperationIdV1::TradeOperationResume, RuntimeOperationIdV1::SyncPush, RuntimeOperationIdV1::TransportDeliveryRetry, ] { @@ -1780,7 +1837,11 @@ mod tests { for operation_id in [ RuntimeOperationIdV1::FarmPublish, RuntimeOperationIdV1::ListingPublish, - RuntimeOperationIdV1::TradeRequest, + RuntimeOperationIdV1::TradeProposalSubmit, + RuntimeOperationIdV1::TradeRevisionPropose, + RuntimeOperationIdV1::TradeCandidateDecide, + RuntimeOperationIdV1::TradeCancellationSubmit, + RuntimeOperationIdV1::TradeOperationResume, RuntimeOperationIdV1::SyncPush, ] { let descriptor = operation_descriptor(operation_id).expect("descriptor"); diff --git a/tools/xtask/src/cli_host.rs b/tools/xtask/src/cli_host.rs @@ -279,18 +279,50 @@ const CLI_OPERATION_METADATA: &[CliOperationMetadata] = &[ false, ), meta( - "trade.request", - "TradeRequest", - "radroots trade request", - "Request a trade from a quoted basket.", + "trade.proposal.submit", + "TradeProposalSubmit", + "radroots trade proposal submit <file>", + "Submit a trade proposal from a complete candidate draft.", "Buyer", false, ), meta( + "trade.revision.propose", + "TradeRevisionPropose", + "radroots trade revision propose <file>", + "Propose a complete replacement candidate for a trade.", + "Any", + false, + ), + meta( + "trade.candidate.decide", + "TradeCandidateDecide", + "radroots trade candidate decide <file>", + "Decide a candidate proposal.", + "Any", + false, + ), + meta( + "trade.cancellation.submit", + "TradeCancellationSubmit", + "radroots trade cancellation submit <file>", + "Submit a trade cancellation mutation.", + "Any", + false, + ), + meta( + "trade.operation.resume", + "TradeOperationResume", + "radroots trade operation resume <file>", + "Resume a prepared trade operation envelope.", + "Any", + false, + ), + meta( "trade.get", "TradeGet", "radroots trade get <key>", - "Get trade details.", + "Get SDK trade projection details.", "Any", false, ), @@ -298,32 +330,48 @@ const CLI_OPERATION_METADATA: &[CliOperationMetadata] = &[ "trade.list", "TradeList", "radroots trade list", - "List trades.", + "List SDK trade projections.", "Any", true, ), meta( - "trade.accept", - "TradeAccept", - "radroots trade accept <key>", - "Accept a trade request.", - "Seller", + "trade.evidence.refresh", + "TradeEvidenceRefresh", + "radroots trade evidence refresh <trade-id>", + "Refresh SDK trade evidence projections.", + "Any", false, ), meta( - "trade.decline", - "TradeDecline", - "radroots trade decline <key>", - "Decline a trade request.", - "Seller", + "trade.evidence.inspect", + "TradeEvidenceInspect", + "radroots trade evidence inspect <trade-id>", + "Inspect protected trade evidence metadata.", + "Any", + true, + ), + meta( + "trade.private_artifact.seal", + "TradePrivateArtifactSeal", + "radroots trade private-artifact seal <trade-id>", + "Seal a protected private trade artifact.", + "Any", false, ), meta( - "trade.cancel", - "TradeCancel", - "radroots trade cancel <key>", - "Cancel a trade request.", - "Buyer", + "trade.private_artifact.open", + "TradePrivateArtifactOpen", + "radroots trade private-artifact open <artifact-id>", + "Open a protected private trade artifact.", + "Any", + false, + ), + meta( + "trade.private_artifact.delete", + "TradePrivateArtifactDelete", + "radroots trade private-artifact delete <artifact-id>", + "Delete a protected private trade artifact.", + "Any", false, ), meta(