FluctlightDB

LangChain

FluctlightMemory, and a chat history that returns the session

The classes are FluctlightMemory and FluctlightChatMessageHistory, in fluctlightdb.integrations.langchain. On main the extra pins langchain-core to at least 0.2 and below 1.0. This run resolved langchain-core 0.3.86, and .messages returned both turns. That fix is not in the published package yet. It ships in the next release.

What ran

The module imports BaseMemory from langchain_core.memory, and falls back to langchain_classic.base_memory if that import fails. This run took the first path. The classic fallback was not exercised.

FluctlightChatMessageHistory.add_message stamps session: and the session id onto the stored text, so a later episodic recall of that cue can see the turn. Reading .messages printed both turns with the stamp removed. FluctlightMemory.load_memory_variables returns stored text as-is, so the first history string still contains the stamp. save_context then recalled the second pair, which was not stamped.

Run from main, against langchain-core 0.3.86

from fluctlightdb import connect_agent
from fluctlightdb.integrations.langchain import (
    FluctlightChatMessageHistory,
    FluctlightMemory,
)
from langchain_core.messages import AIMessage, HumanMessage

brain = connect_agent("./langchain-brain")
history = FluctlightChatMessageHistory(brain=brain, session_id="chat-1")
history.add_message(HumanMessage(content="Use pytest for this repository"))
history.add_message(AIMessage(content="Pytest is the test runner for this repository"))
for message in history.messages:
    print(type(message).__name__, message.content)

memory = FluctlightMemory(brain=brain)
print(memory.load_memory_variables({"input": "pytest"}))
memory.save_context(
    {"input": "Prefer ruff for lint"},
    {"output": "Ruff is the linter"},
)
print(memory.load_memory_variables({"input": "ruff lint"}))

Printed

HumanMessage Use pytest for this repository
AIMessage Pytest is the test runner for this repository
{'history': 'session:chat-1 Use pytest for this repository\nsession:chat-1 Pytest is the test runner for this repository'}
{'history': 'Prefer ruff for lint\nRuff is the linter'}

Where it lives

The adapter is fluctlightdb/integrations/langchain.py . The repository’s own short example is in docs/INTEGRATIONS.md . A cue has to share tokens with what was stored unless you pass a vector yourself, on the write and on the recall. The engine ships no embedder.