rememberFromMessages()
Experimental conversation → memory bridge — store chat turns as memories (raw or LLM extract).
Signature
/** @experimental until 1.0 */
rememberFromMessages(
messages: ConversationMessage[],
options: RememberFromMessagesOptions,
): Promise<RememberResult[]>
interface ConversationMessage {
role: string;
content: string;
}
interface RememberFromMessagesOptions {
agent: string;
/** Default: "raw" */
mode?: "raw" | "extract";
/** Default: "last_user" — only for mode "raw" */
rawStrategy?: "last_user" | "all_user";
metadata?: Record<string, unknown>;
dedupe?: boolean | MemoryDedupeConfig;
}Stability: experimental until 1.0. Prefer pinning your wolbarg version if you depend on this shape.
Modes
| Mode | LLM required? | Behavior |
|---|---|---|
raw (default) | No | Store user message text (last_user or all_user) |
extract | Yes (llm in constructor) | Short prompt → one fact per line → remember() each |
Example — raw (no LLM)
const saved = await ctx.rememberFromMessages(
[
{ role: "user", content: "I prefer dark mode" },
{ role: "assistant", content: "Noted." },
{ role: "user", content: "Deploy only on Fridays" },
],
{ agent: "assistant" },
);
// Default rawStrategy is last_user → one memory:
console.log(saved[0]?.content.text); // "Deploy only on Fridays"Example — extract (optional LLM)
import { wolbarg, sqlite, openaiEmbedding, openaiLlm } from "wolbarg";
const ctx = wolbarg({
organization: "demo",
storage: sqlite("./memory.db"),
embedding: openaiEmbedding({
apiKey: process.env.OPENAI_API_KEY!,
model: "text-embedding-3-small",
}),
llm: openaiLlm({
apiKey: process.env.OPENAI_API_KEY!,
model: "gpt-4.1-mini",
}),
});
const facts = await ctx.rememberFromMessages(
[
{ role: "user", content: "I live in Berlin and prefer tea over coffee." },
{ role: "assistant", content: "Got it." },
],
{ agent: "assistant", mode: "extract" },
);Without llm, mode: "extract" throws ProviderNotConfiguredError.
Chat → memory → recall
await ctx.rememberFromMessages(messages, { agent: "assistant", mode: "raw" });
const hits = await ctx.recall({
query: "What UI theme does the user like?",
topK: 3,
filter: { agent: "assistant" },
});