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