Examples
AI Replenishment (OpenAI)
What this example shows
This page uses the same replenishment loop semantics as the Claude variant, but switches to @loop-engine/adapter-openai. The loop definition and transition policy remain unchanged. Only the provider adapter wiring changes.
Loop diagram
1IDLE ----[signal_detected]----> ANALYZING2ANALYZING --[submit_recommendation]--> PENDING_APPROVAL3ANALYZING --[insufficient_confidence]--> IDLE4PENDING_APPROVAL --[approve]--> ORDERED (terminal)5PENDING_APPROVAL --[reject]--> IDLEActors
| Actor | Type | Transitions | Guards |
|---|---|---|---|
| signal detector | automation | signal_detected | none |
| gpt recommender | ai-agent | submit_recommendation | confidence-threshold |
| buyer approver | human | approve, reject | human-only |
Key annotated snippet
1import OpenAI from "openai";2import { createOpenAIActorAdapter } from "@loop-engine/adapter-openai";3 4const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });5const gpt = createOpenAIActorAdapter(openai, {6 modelId: "gpt-4o",7 confidenceThreshold: 0.758});9 10"cmt">// Same loop context and transition IDs as Claude variant.11const { actor, decision } = await gpt.createSubmission({12 loopId: "scm.replenishment",13 loopName: "SCM Replenishment",14 currentState: "ANALYZING",15 availableSignals: [{ signalId: "submit_recommendation", name: "Submit Recommendation" }],16 instruction: "Recommend reorder quantity based on stock and forecast.",17 evidence: { sku: "LMB-BRS-001", currentStock: 142, reorderPoint: 280, forecastedDemand: 527 }18});19 20await engine.transition({21 aggregateId: "repl-lmb-001" as never,22 transitionId: "submit_recommendation" as never,23 actor,24 evidence: decision25});What emitted events look like
1{2 type: "loop.transition.executed",3 loopId: "scm.replenishment",4 aggregateId: "repl-lmb-001",5 transitionId: "submit_recommendation",6 fromState: "ANALYZING",7 toState: "PENDING_APPROVAL",8 actor: { type: "ai-agent", id: "agent:openai-replenishment" },9 occurredAt: "2026-03-13T12:29:44.501Z"10}Try it yourself
1cd loop-examples/ai-actors/openai2pnpm install3pnpm devSee AI Replenishment (Claude) for the Anthropic version of this same loop.