Docs

Packages

@anvia/memory-drizzle: Examples

Small examples for Drizzle-backed Anvia memory.

Schema export

import { drizzleMemorySchema } from "@anvia/memory-drizzle";

export const schema = {
  ...drizzleMemorySchema,
  users,
  conversations,
};

Basic memory store

import { createDrizzleMemoryStore } from "@anvia/memory-drizzle";

export const memory = createDrizzleMemoryStore(db);

Scoped agent

const agent = new AgentBuilder("support", model)
  .memory(
    createDrizzleMemoryStore(db, {
      scope: { metadataKeys: ["tenantId"] },
    }),
    { savePolicy: "turn" },
  )
  .build();

Load initial messages

export async function loadThread(input: LoadThreadInput) {
  const agent = createSupportAgent({
    db: input.db,
    model: input.model,
    tools: input.tools,
  });

  const messages = await agent
    .session(input.conversationId, {
      userId: input.user.id,
      metadata: { tenantId: input.user.tenantId },
    })
    .messages();

  return { messages };
}
import type { Message } from "@anvia/core";
import { initialMessagesFromMemory, useChat } from "@anvia/react";

export function ThreadPage({
  conversationId,
  messages,
}: {
  conversationId: string;
  messages: Message[];
}) {
  const chat = useChat({
    endpoint: `/api/conversations/${conversationId}/chat`,
    initialMessages: initialMessagesFromMemory(messages),
  });

  return <ChatProvider controller={chat}>{/* thread */}</ChatProvider>;
}