@wolbarg/vercel-ai
v1.0.1
Published
Official Vercel AI SDK middleware for Wolbarg shared memory — recall before generate, remember after.
Maintainers
Readme
@wolbarg/vercel-ai
Official Vercel AI SDK middleware for Wolbarg shared memory.
Automatically:
- Recalls relevant memories before generation
- Injects them as a tagged system message (preserves your existing system prompt)
- Remembers the conversation after the step completes
Works with generateText, streamText, tool loops, and any AI SDK provider model (OpenAI, Anthropic, Gemini, …).
Requires AI SDK v7+ (LanguageModelV4 middleware).
Install
npm install wolbarg @wolbarg/vercel-ai aiPeers: wolbarg >= 0.5.4, ai ^7.0.0. Node ≥ 22.
Quick start
import { generateText, wrapLanguageModel } from "ai";
import { openai } from "@ai-sdk/openai";
import { wolbarg, sqlite, openaiEmbedding } from "wolbarg";
import { wolbargMiddleware } from "@wolbarg/vercel-ai";
const memory = wolbarg({
organization: "my-app",
storage: sqlite("./memory.db"),
embedding: openaiEmbedding({
apiKey: process.env.OPENAI_API_KEY!,
model: "text-embedding-3-small",
}),
});
await memory.ready();
const model = wrapLanguageModel({
model: openai("gpt-4.1-mini"),
middleware: wolbargMiddleware({
memory,
agent: "assistant",
}),
});
const { text } = await generateText({
model,
messages: [{ role: "user", content: "What do I prefer?" }],
});Or use the convenience helper:
import { createWolbargModel } from "@wolbarg/vercel-ai";
const model = createWolbargModel({
model: openai("gpt-4.1-mini"),
memory,
agent: "assistant",
});Streaming
import { streamText } from "ai";
const result = streamText({ model, messages });
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}Remember starts when the model emits finish (not only on stream flush), so cancel-after-finish still persists memory. Mid-generation cancel before finish does not remember incomplete turns.
Tools / multi-step
Default remember: "final-step" skips intermediate finishReason.unified === "tool-calls" steps. Recall still runs every step.
Per-request metadata
await generateText({
model,
messages,
providerOptions: {
wolbarg: {
sessionId: "s1",
userId: "u1",
tags: ["support"],
},
},
});Behavior notes
| Topic | Behavior |
| --- | --- |
| Recall / remember failures | Soft-fail — never crash model generation (onError / onTelemetry) |
| Tools / multi-step | Default remember: "final-step" skips tool-call steps |
| Streaming | Remember on finish (+ flush backup); cancel-after-finish is safe |
| Multimodal user messages | Text + [attachment:mediaType:filename] placeholders in recall query |
| Injected memory | Tagged via providerOptions.wolbarg.injectedMemory + content marker — never re-stored |
| Prompt mutation | Caller arrays are never mutated — prompts are cloned |
Docs
https://wolbarg.com/docs/integrations/vercel-ai
License
MIT
