pub enum ExecutionStep {
EvmDispatch {
to: String,
value: String,
calldata_template: String,
gas_limit: u64,
},
SvmDispatch {
program_id: String,
accounts: Vec<SvmAccountMeta>,
instruction_data_template: String,
},
NodeRpc {
method: String,
params: Value,
},
BridgeTransfer {
from_chain: String,
to_chain: String,
asset: String,
amount: String,
strategy: String,
},
MppPay {
amount: String,
asset: String,
recipient: String,
session_ttl_secs: Option<u64>,
},
X402Pay {
resource_url: Option<String>,
amount: String,
asset: String,
recipient: Option<String>,
facilitator: Option<String>,
},
DamlSubmit {
template_package: Option<String>,
module: Option<String>,
entity: Option<String>,
command_variant: Option<String>,
fields_json: Option<String>,
template_id: Option<String>,
choice: Option<String>,
party: Option<String>,
args_template: Option<String>,
},
ToolInvoke {
tool_tag: String,
method: Option<String>,
arguments_json: Option<String>,
params_template: Option<String>,
},
SkillInvoke {
skill_tag: String,
method: Option<String>,
input_json: Option<String>,
params_template: Option<String>,
},
ForEach {
source_tool_tag: String,
body: Vec<ExecutionStep>,
},
When {
jmespath_expr: String,
body: Vec<ExecutionStep>,
},
}Expand description
A single declarative step in an ExecutionSpec. Each variant maps
directly to an existing subsystem invocation.
Template variables: any String field that contains {{name}}
substrings is interpolated at run time against the agent’s context
(spawn args + accumulated step output).
Variants§
EvmDispatch
Hand-craft an EVM transaction and dispatch it through
MultiVmRuntime::execute_transaction(VmType::Evm, ...).
Fields
SvmDispatch
Hand-craft a Solana-style instruction and dispatch it through
MultiVmRuntime::execute_transaction(VmType::Svm, ...).
Mirrors the canonical solana_sdk::instruction::Instruction
shape — a program id, a list of account metas, and an opaque
instruction-data byte buffer. The executor renders the data
buffer via the same {{var}} substitution rule used by
EvmDispatch::calldata_template, then routes the assembled
transaction to tenzro_svmDispatch (DPoP-authenticated).
Fields
program_id: StringBase58 program id (Solana account address of the program
to invoke). Substituted against the agent context at run
time, so deployers may parameterize via {{program_id}}.
accounts: Vec<SvmAccountMeta>Ordered account metas — order matters; the program reads
them positionally. Each meta names the account, whether it
signs the transaction, and whether the program may mutate
it. Each pubkey string supports {{var}} substitution.
instruction_data_template: StringHex-encoded instruction-data template. 0x prefix
optional. Substituted with {{var}} before being decoded
to bytes and handed to the program. The agent’s wallet
public key is always implicitly the fee payer and is added
as the first signer account by the node’s
tenzro_svmDispatch handler — the template does not need
to encode it.
NodeRpc
Invoke an arbitrary node JSON-RPC method with the agent’s DPoP
credentials. Covers the saga tenzro_workflow* family, the task
lifecycle (tenzro_postTask / tenzro_completeTask / …),
tenzro_verifyDidEnvelope, and any other RPC the node exposes — the
runtime’s general escape hatch so agent templates can drive newly-added
surfaces without a bespoke step kind. params is a JSON template with
{{var}} substitution against the agent context.
Fields
BridgeTransfer
Move tokens across chains via BridgeRouter::compare_fees →
pick the chosen route → call the winning adapter.
Fields
MppPay
Create an MPP payment challenge, sign it with the agent wallet,
and submit the credential via MppClient.
Fields
X402Pay
Stateless x402 pay-resource call via X402Client.
Fields
DamlSubmit
Submit a DAML command to a Canton participant via DamlExecutor.
Fields
ToolInvoke
Look up a tool from CF_TOOLS (auto-discovered at spawn time
via required_tool_tags) and invoke it via tenzro_useTool.
Fields
SkillInvoke
Look up a skill from CF_SKILLS (auto-discovered at spawn time
via required_skill_tags) and invoke it via tenzro_useSkill.
Fields
ForEach
Loop over a discovered opportunity set returned by a registered
tool. The body steps execute once per item, with the item bound
to the runtime context as opportunity (or whatever the agent-kit
chooses for binding).
Fields
body: Vec<ExecutionStep>When
Conditional gate: only run the body if the JMESPath expression evaluated against the current context is truthy.
Trait Implementations§
Source§impl Clone for ExecutionStep
impl Clone for ExecutionStep
Source§fn clone(&self) -> ExecutionStep
fn clone(&self) -> ExecutionStep
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExecutionStep
impl Debug for ExecutionStep
Source§impl<'de> Deserialize<'de> for ExecutionStep
impl<'de> Deserialize<'de> for ExecutionStep
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ExecutionStep
Source§impl PartialEq for ExecutionStep
impl PartialEq for ExecutionStep
Source§fn eq(&self, other: &ExecutionStep) -> bool
fn eq(&self, other: &ExecutionStep) -> bool
self and other values to be equal, and is used by ==.