n8n-nodes-tembory 1.0.20 → 1.0.21
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 +7 -1
- package/dist/nodes/Mem0/Mem0Memory.node.js +19 -2
- package/package.json +1 -1
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.
|
|
5
|
+
Versao atual: `1.0.21`.
|
|
6
|
+
|
|
7
|
+
## 1.0.21
|
|
8
|
+
|
|
9
|
+
- O contexto principal passa a anexar o input atual do agente ao transcript antes de renderizar memoria.
|
|
10
|
+
- `Conversation frame` agora inclui `recent_messages_chronological`, com janela curta usuario/assistente em ordem.
|
|
11
|
+
- Mesmo antes do `saveContext`, o agente recebe a mensagem atual e a mensagem anterior do cliente no contexto estrutural.
|
|
6
12
|
|
|
7
13
|
## 1.0.20
|
|
8
14
|
|
|
@@ -1090,6 +1090,16 @@ const dedupeRecentMessages = (items) => {
|
|
|
1090
1090
|
}
|
|
1091
1091
|
return out;
|
|
1092
1092
|
};
|
|
1093
|
+
const appendCurrentUserMessage = (items = [], query = '') => {
|
|
1094
|
+
const content = String(query || '').trim();
|
|
1095
|
+
if (!content)
|
|
1096
|
+
return items || [];
|
|
1097
|
+
const normalized = normalizeIntentText(content).trim();
|
|
1098
|
+
const lastUser = [...(items || [])].reverse().find((msg) => /^(user|human)$/i.test(String(msg.role || '')));
|
|
1099
|
+
if (lastUser && normalizeIntentText(lastUser.content).trim() === normalized)
|
|
1100
|
+
return items || [];
|
|
1101
|
+
return (items || []).concat([{ role: 'user', content: truncate(content, 2000), at: nowIso(), source: 'current_input' }]);
|
|
1102
|
+
};
|
|
1093
1103
|
const dedupeToolHistory = (items) => {
|
|
1094
1104
|
const seen = new Set();
|
|
1095
1105
|
const out = [];
|
|
@@ -1172,9 +1182,15 @@ const buildConversationFrame = ({ query = '', recentMessages = [], workingMemory
|
|
|
1172
1182
|
const users = recentUserMessages(recentMessages);
|
|
1173
1183
|
const currentUser = users.find((msg) => normalizeIntentText(msg.content).trim() === normalizedQuery) || (query ? { role: 'user', content: query, at: nowIso() } : null);
|
|
1174
1184
|
const previousUser = previousUserMessageForQuery(query, recentMessages);
|
|
1185
|
+
const chronological = pruneByLimit(recentMessages || [], 10).map((msg) => ({
|
|
1186
|
+
role: msg.role,
|
|
1187
|
+
content: truncate(msg.content, 500),
|
|
1188
|
+
at: msg.at,
|
|
1189
|
+
}));
|
|
1175
1190
|
return cleanContextValue({
|
|
1176
1191
|
current_user_message: currentUser ? truncate(currentUser.content, 500) : truncate(query, 500),
|
|
1177
1192
|
previous_user_message: previousUser ? truncate(previousUser.content, 500) : (workingMemory === null || workingMemory === void 0 ? void 0 : workingMemory.last_user_message) || null,
|
|
1193
|
+
recent_messages_chronological: chronological,
|
|
1178
1194
|
recent_user_messages: users
|
|
1179
1195
|
.filter((msg) => normalizeIntentText(msg.content).trim() !== normalizedQuery)
|
|
1180
1196
|
.slice(0, 5)
|
|
@@ -3033,8 +3049,9 @@ class Mem0Memory {
|
|
|
3033
3049
|
.flatMap(toolHistoryItemsFromMemory)
|
|
3034
3050
|
.sort((a, b) => new Date(a.at || 0).getTime() - new Date(b.at || 0).getTime());
|
|
3035
3051
|
}
|
|
3036
|
-
const
|
|
3037
|
-
const
|
|
3052
|
+
const storedRecentMessages = adv.includeRecentMessages === false ? [] : (store.recentMessages[key] || []).concat(persistedRecentMessages);
|
|
3053
|
+
const allRecentMessages = dedupeRecentMessages(appendCurrentUserMessage(storedRecentMessages, query));
|
|
3054
|
+
const recentMessages = pruneByLimit(allRecentMessages, Math.max(Number(adv.recentMessagesLastN || 8), 8));
|
|
3038
3055
|
const toolHistoryFromRecentMessages = [];
|
|
3039
3056
|
if (adv.includeToolHistory !== false) {
|
|
3040
3057
|
for (const msg of recentMessages)
|
package/package.json
CHANGED