Route webhooks through the same event runtimeYou route authenticated webhooks, timers, queues, and application events through AxEventRuntime. UCP commerce events use the same explicit wake and resume policy.rustacademyacademy/topics/ucp-and-eventswebsite/content-src/academy/course.mjsacademyRoute webhooks through the same event runtime
You route authenticated webhooks, timers, queues, and application events through AxEventRuntime. UCP commerce events use the same explicit wake and resume policy.
9 focused minutesNot started
Worked example
See the idea in context
fn handle_ucp_webhook(request: Request) -> AxResult<()> {
// Verify signer profile, RFC 9421 signature, digest, freshness,
// key rotation, and replay state before publishing.
let order = verify_ucp_request(request)?;
let identity = lookup_buyer_identity(&order.checkout_id)?;
runtime.lock().unwrap().publish(
AxEventEnvelope {
specversion: "1.0".into(),
id: order.id, source: "ucp://orders".into(),
r#type: "ucp.order.fulfilled".into(),
subject: Some(order.checkout_id),
data: order.data,
extensions: serde_json::Map::new(), correlation: vec![],
},
&identity, "authenticated",
)?;
Ok(())
}
Run itIn your own project
cargo add axllm
use axllm::{ai, ax};
use serde_json::json;
let llm = ai("openai", json!({"apiKey": std::env::var("OPENAI_API_KEY")?}))?;
let classify = ax("review:string -> sentiment:class \"positive, negative, neutral\"")?;
Set OPENAI_APIKEY in your environment before running provider-backed code.
In the ax repo
From a clone of the ax repo:
npm run example -- rust src/examples/rust/long-agents/smart_defaults_agent.rs