stasis-rs 0.6.1

Durable AI orchestration framework with runtime jobs, lineage, and memory integration
Documentation
use chrono::Utc;
use stasis::sdk_prelude::{BackoffPolicy, NewJob, RuntimeBackend, RuntimeFactory, RuntimeSdk};

#[tokio::main]
async fn main() -> stasis::sdk_prelude::Result<()> {
    let runtime = RuntimeFactory::build(RuntimeBackend::InMemory).await?;
    let sdk = RuntimeSdk::new(runtime);

    sdk.enqueue(NewJob {
        id: "job-1".into(),
        queue: "default".into(),
        job_type: "demo.job".into(),
        payload_ref: "demo.payload".into(),
        priority: 0,
        max_attempts: 3,
        idempotency_key: "idem-1".into(),
        correlation_id: "corr-1".into(),
        causation_id: "cause-1".into(),
        trace_id: "trace-1".into(),
        sttp_input_node_id: "sttp:demo:1".into(),
        scheduled_at: Utc::now(),
        backoff_policy: BackoffPolicy::default(),
    })
    .await?;

    let stats = sdk.stats_snapshot(100).await?;
    println!("enqueued_jobs={}", stats.enqueued_jobs);
    Ok(())
}