resonate-human-in-the-loop-pattern-rust

Pause Rust workflows until external decisions resolve or reject promises.

6|Updated Jan 8, 2026
One-click install
npx skills add https://github.com/resonatehq/resonate-skills --skill resonate-human-in-the-loop-pattern-rust
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: resonate-human-in-the-loop-pattern-rust
Source: https://github.com/resonatehq/resonate-skills/tree/main/resonate-human-in-the-loop-pattern-rust
Command: npx skills add https://github.com/resonatehq/resonate-skills --skill resonate-human-in-the-loop-pattern-rust

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Blocks a Rust-based Resonate workflow until an external decision lands, enabling durable, wait-for-input patterns.

Core Features & Use Cases

  • Typed promises with ctx.promise::<Decision>() providing compile-time type safety.
  • Create, resolve, and reject external decisions via .id(), .resolve(), .reject(), and .create() workflows.
  • Webhook/UI/operator integrations for asynchronous human decisions in long-running workflows.

Quick Start

Define a durable Rust function that creates a typed promise with ctx.promise::<Decision>() and awaits its result, then resolve or reject the promise from an external webhook or UI.

Frequently Asked Questions about resonate-human-in-the-loop-pattern-rust

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I pause a Rust workflow until an external decision or webhook callback arrives?

Durable execution in Rust ensures long-running workflows automatically persist their state, allowing functions to safely pause for human input or webhook callbacks and resume seamlessly without losing progress.

How do I implement human-in-the-loop approvals in a Rust durable execution environment?

You implement human-in-the-loop approvals by defining a durable Rust function that creates a typed promise with ctx.promise::<Decision>(), awaits it, and relies on external systems to call resolve or reject workflows.

Can I enforce compile-time type safety for external decisions in Rust workflows?

Yes, you can enforce compile-time type safety for external decisions by using typed promises with ctx.promise::<Decision>(), ensuring that the data payloads exchanged during human-in-the-loop workflows are strictly typed.

Does the Resonate runtime support timeout and data payloads for promises?

Yes, the Resonate runtime supports promises with .timeout and .data payloads, allowing you to manage how long a workflow waits for an external decision and what structured data is passed.

What are the limitations of using promises for asynchronous human decisions in Rust?

Promises require explicit resolution or rejection via resonate.promises APIs, meaning if an external webhook or operator UI fails to respond before the .timeout expires, the workflow will not proceed as intended.