Observability

One event bus. Optional OpenTelemetry. Pass createOtelListener as onEvent, or tap a stream with tapEvents.

OTel listener

otel.ts
import { agent, createOtelListener } from "@monorch/ai";

const otel = createOtelListener({
  serviceName: "monorch-support",
  onEvent: (ev) => console.debug(ev.type),
});

const bot = agent({
  model,
  tools,
  onEvent: otel,
});

Tap a stream

tap.ts
import { tapEvents, createOtelListener } from "@monorch/ai";

for await (const ev of tapEvents(bot.stream(msg), createOtelListener())) {
  sendSse(ev);
}

Peer dependency

Install @opentelemetry/api when you want spans. Without it, the listener still forwards to your onEvent hook safely.

FAQ