Next.js

06 Persistence

Store Next.js conversation history with Anvia memory or app-owned transcripts.

Anvia gives you two practical persistence paths.

1. Store Explicit History

Use this when your app already owns chat transcripts.

import { Message } from "@anvia/core";
import { supportAgent } from "@/app/ai/support-agent";
import { conversations } from "@/app/db/conversations";

export async function POST(request: Request): Promise<Response> {
  const { conversationId, message } = (await request.json()) as {
    conversationId: string;
    message: string;
  };

  const history = await conversations.loadMessages(conversationId);
  const response = await supportAgent
    .prompt([...history, Message.user(message)])
    .send();

  await conversations.saveMessages(conversationId, [
    ...history,
    ...response.messages,
  ]);

  return Response.json({ output: response.output });
}

2. Use Agent Memory

Use this when Anvia should load and append messages through your memory store.

const agent = new AgentBuilder("support", model)
  .memory(memoryStore, { savePolicy: "message" })
  .build();

const response = await agent
  .session(conversationId, { userId })
  .prompt(message)
  .send();

3. Keep Runtime Events Separate

Memory stores model transcript messages for future prompts. If your UI needs replayable stream events, also use an Event Store.

Next

Review production constraints in Deploy. For memory adapters, read Memory, Prisma, and Drizzle.