n8n-nodes-tembory 1.0.24 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,13 @@
2
2
 
3
3
  Node de memoria operacional da Tembory para agentes de IA no n8n.
4
4
 
5
- Versao atual: `1.0.24`.
5
+ Versao atual: `1.0.25`.
6
+
7
+ ## 1.0.25
8
+
9
+ - Carrega a janela recente tambem a partir de memorias vetoriais com `kind=recent_message`.
10
+ - Adiciona uma busca auxiliar de transcript recente no modo BYO-AI para perguntas como "qual foi minha ultima mensagem" e "o que eu ja disse".
11
+ - Evita depender do endpoint legado `/v1/memories/` para reconstruir conversa curta.
6
12
 
7
13
  ## 1.0.24
8
14
 
@@ -3132,6 +3132,41 @@ class Mem0Memory {
3132
3132
  connectedAi.errors.push(`graph.relations: ${error.message || String(error)}`);
3133
3133
  }
3134
3134
  }
3135
+ if (connectedEmbedding && adv.includeRecentMessages !== false) {
3136
+ try {
3137
+ const transcriptProbe = [
3138
+ 'recent conversation transcript',
3139
+ 'last user messages previous message',
3140
+ query,
3141
+ ].filter(Boolean).join('\n');
3142
+ const transcriptBody = {
3143
+ user_id: key,
3144
+ agent_id: adv.agentId ? String(adv.agentId) : undefined,
3145
+ run_id: adv.runId ? String(adv.runId) : undefined,
3146
+ top_k: Math.max(Number(adv.recentMessagesLastN || 8) * 3, 20),
3147
+ filters: { kind: 'recent_message' },
3148
+ };
3149
+ const transcriptRes = await searchClientVectorMemories(this, connectedEmbedding, transcriptProbe, transcriptBody);
3150
+ const transcriptMemories = normalizeResults(transcriptRes).map((memory) => withTemboryScore(memory, {
3151
+ semanticScore: scoreOf(memory),
3152
+ source: 'recent_message_probe',
3153
+ }));
3154
+ if (transcriptMemories.length) {
3155
+ const seen = new Set(vectorMemories.map((memory) => stableHash(memoryText(memory) || safeStringify(memory))));
3156
+ for (const memory of transcriptMemories) {
3157
+ const hash = stableHash(memoryText(memory) || safeStringify(memory));
3158
+ if (!seen.has(hash)) {
3159
+ seen.add(hash);
3160
+ vectorMemories.push(memory);
3161
+ }
3162
+ }
3163
+ connectedAi.recentMessageProbe = true;
3164
+ }
3165
+ }
3166
+ catch (error) {
3167
+ connectedAi.errors.push(`recentMessageProbe: ${error.message || String(error)}`);
3168
+ }
3169
+ }
3135
3170
  let persistedRecentMessages = [];
3136
3171
  let persistedToolHistory = [];
3137
3172
  let persistedMemoryItems = [];
@@ -3155,12 +3190,16 @@ class Mem0Memory {
3155
3190
  .filter(Boolean)
3156
3191
  .sort((a, b) => new Date(a.at || 0).getTime() - new Date(b.at || 0).getTime());
3157
3192
  }
3193
+ const vectorRecentMessages = adv.includeRecentMessages === false ? [] : vectorMemories
3194
+ .map(recentMessageFromMemory)
3195
+ .filter(Boolean)
3196
+ .sort((a, b) => new Date(a.at || 0).getTime() - new Date(b.at || 0).getTime());
3158
3197
  if (adv.includeToolHistory !== false) {
3159
3198
  persistedToolHistory = persistedMemoryItems
3160
3199
  .flatMap(toolHistoryItemsFromMemory)
3161
3200
  .sort((a, b) => new Date(a.at || 0).getTime() - new Date(b.at || 0).getTime());
3162
3201
  }
3163
- const storedRecentMessages = adv.includeRecentMessages === false ? [] : (store.recentMessages[key] || []).concat(persistedRecentMessages);
3202
+ const storedRecentMessages = adv.includeRecentMessages === false ? [] : (store.recentMessages[key] || []).concat(persistedRecentMessages, vectorRecentMessages);
3164
3203
  const allRecentMessages = dedupeRecentMessages(appendCurrentUserMessage(storedRecentMessages, query));
3165
3204
  const recentMessages = pruneByLimit(allRecentMessages, Math.max(Number(adv.recentMessagesLastN || 8), 8));
3166
3205
  const toolHistoryFromRecentMessages = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-tembory",
3
- "version": "1.0.24",
3
+ "version": "1.0.25",
4
4
  "description": "Tembory node for n8n AI Agents with profile, tools, timeline, graph and semantic memory",
5
5
  "license": "MIT",
6
6
  "homepage": "https://tembory.com",