Fastify (TypeScript)

Add NjiraAI middleware to Fastify apps for automatic context and tracing.

Install

npm install @njiraai/sdk

Middleware

import Fastify from "fastify";
import { NjiraAI } from "@njiraai/sdk";

const fastify = Fastify();

const njira = new NjiraAI({
  apiKey: process.env.NJIRA_API_KEY!,
  projectId: process.env.NJIRA_PROJECT_ID!,
  mode: "active",
});

// Register middleware
fastify.addHook("onRequest", njira.middleware.fastify());

fastify.post("/chat", async (request, reply) => {
  const { message } = request.body as { message: string };

  const decision = await njira.enforcePre({
    input: message,
    metadata: { endpoint: "/chat" },
  });

  if (decision.verdict === "block") {
    return reply.status(403).send({
      error: "Blocked",
      reasons: decision.reasons,
    });
  }

  return { response: `Echo: ${message}`, traceId: decision.traceId };
});

fastify.listen({ port: 3000 });

What the middleware does

  • Creates/propagates requestId
  • Sets up per-request trace context
  • Adds correlation response headers
  • Flushes traces on response finish