Node.js Examples

Complete runnable Node.js examples for Blazen

Node.js Examples

Five complete, runnable examples that demonstrate core Blazen workflow patterns.


Basic Workflow

A 3-step sequential pipeline: StartEventGreetEventFormattedEventStopEvent.

wf.addStep("greet", ["GreetEvent"], async (event, ctx) => {
  return { type: "blazen::StopEvent", result: { greeting: `Hello, ${event.name}!` } };
});
npx tsx examples/basic_workflow.ts

Streaming Workflow

Publishes progress events while processing via ctx.writeEventToStream().

await ctx.writeEventToStream({ type: "Progress", step: i });
const result = await wf.runStreaming({}, (event) => console.log(event));
npx tsx examples/streaming_workflow.ts

Branching Workflow

Conditional fan-out by returning an array of events.

return [
  { type: "PositiveEvent", text },
  { type: "NegativeEvent", text },
];
npx tsx examples/branching_workflow.ts

LLM RAG Workflow

Multi-step RAG pipeline using context for shared state between steps. Uses typed ChatMessage and CompletionResponse:

import { CompletionModel, ChatMessage } from "blazen";

const model = CompletionModel.openai(process.env.OPENAI_API_KEY);
const response = await model.complete([
  ChatMessage.system("Answer based on the provided documents."),
  ChatMessage.user(query),
]);
console.log(response.content);     // typed string
console.log(response.usage);       // { promptTokens, completionTokens, totalTokens }
await ctx.set("documents", docs);
npx tsx examples/llm_rag_workflow.ts

Human-in-the-Loop

Side-effect steps that pause for external input via ctx.sendEvent().

await ctx.sendEvent({ type: "ReviewComplete" });
return null;
npx tsx examples/human_in_the_loop.ts