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.