sammy-sdk-storage-prisma
v0.1.0
Published
Prisma-backed ConversationStorage adapter for the Sammy AI agent runtime (durable, multi-instance, serverless-safe).
Maintainers
Readme
sammy-sdk-storage-prisma
Durable ConversationStorage adapter for
the Sammy AI agent runtime, backed by your own Prisma database. Replaces the default
in-memory store (which loses history on restart and is incorrect across
serverless/multi-instance deployments).
Install
npm install sammy-sdk-storage-prisma@prisma/client and sammy-sdk are peer dependencies (you already have them).
1. Add the models
// prisma/schema.prisma
model SammyConversation {
id String @id @default(cuid())
userId String
title String @default("New chat")
metadata Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
messages SammyMessage[]
@@index([userId, updatedAt(sort: Desc)])
@@index([userId, deletedAt])
}
model SammyMessage {
id String @id @default(cuid())
conversationId String
role String // "user" | "assistant" | "system"
content String @db.Text
position Int @default(autoincrement())
createdAt DateTime @default(now())
conversation SammyConversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
@@index([conversationId, position])
}npx prisma migrate dev --name sammy_conversations2. Wire it up
import { Sammy } from "sammy-sdk";
import { PrismaConversationStorage } from "sammy-sdk-storage-prisma";
import { prisma } from "@/lib/prisma";
export const sammy = new Sammy({
conversationStorage: new PrismaConversationStorage(prisma),
});That's it — conversations now persist durably and are shared across instances.
Notes
- Soft deletes:
delete()setsdeletedAt;get/listfilter it out (keeps history for audit). Hard-delete on your own schedule if you have a retention policy. - Ownership: every read is scoped by
userId; a conversation id belonging to another user is treated as not found. - Other databases / ORMs: see
SAMMY_CUSTOM_STORAGE.mdfor Drizzle and Redis reference adapters, or implementConversationStoragedirectly.
