Route 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.
Worked example
See the idea in context
func handleUCPWebhook(request *http.Request) error {
// Verify signer profile, RFC 9421 signature, digest, freshness,
// key rotation, and replay state before publishing.
order, err := verifyUCPRequest(request)
if err != nil { return err }
identityScope := lookupBuyerIdentity(order.CheckoutID)
_, err = runtime.Publish(ax.AxEventEnvelope{
SpecVersion: "1.0", ID: order.ID, Source: "ucp://orders",
Type: "ucp.order.fulfilled", Data: order.Data,
}, identityScope, "authenticated")
return err
}Run itIn your own project
go get github.com/ax-llm/ax/packages/go
package main
import (
"context"
"fmt"
"os"
axllm "github.com/ax-llm/ax/packages/go"
)
func main() {
client := axllm.NewAI("openai", map[string]axllm.Value{"apiKey": os.Getenv("OPENAI_API_KEY")})
classify := axllm.NewAx("review:string -> sentiment:class \"positive, negative, neutral\"", nil)
result, err := classify.Forward(context.Background(), client, map[string]axllm.Value{
"review": "Useful and boring in the best way."
}, nil)
if err != nil {
panic(err)
}
fmt.Println("sentiment:", result.(map[string]axllm.Value)["sentiment"])
}Set OPENAI_APIKEY in your environment before running provider-backed code.
From a clone of the ax repo:
npm run example -- go src/examples/go/long-agents/smart_defaults_agent.goActive practice
Answer 2 in a row to learn this · attempt 1