n8n-nodes-tembory 1.0.5 → 1.0.6
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.
|
@@ -630,17 +630,21 @@ const toolHistoryFromMemory = (item) => {
|
|
|
630
630
|
source: meta.source || 'metadata',
|
|
631
631
|
};
|
|
632
632
|
};
|
|
633
|
-
const
|
|
633
|
+
const explicitToolHistoryItemsFromMemory = (item) => {
|
|
634
634
|
const meta = metadataOf(item);
|
|
635
635
|
const content = meta.content || item.memory || item.text || item.value || item.content || item.data;
|
|
636
636
|
const marked = parseToolHistoryMarker(content);
|
|
637
637
|
if (marked)
|
|
638
638
|
return [marked];
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
639
|
+
const textCalls = extractToolCallsFromText(content, meta.at || item.created_at || item.createdAt || nowIso());
|
|
640
|
+
return textCalls.length ? textCalls : [];
|
|
641
|
+
};
|
|
642
|
+
const toolHistoryItemsFromMemory = (item) => {
|
|
643
|
+
const meta = metadataOf(item);
|
|
644
|
+
const content = meta.content || item.memory || item.text || item.value || item.content || item.data;
|
|
645
|
+
const explicit = explicitToolHistoryItemsFromMemory(item);
|
|
646
|
+
if (explicit.length)
|
|
647
|
+
return explicit;
|
|
644
648
|
const single = toolHistoryFromMemory(item);
|
|
645
649
|
return single ? [single] : [];
|
|
646
650
|
};
|
|
@@ -1283,6 +1287,17 @@ const deriveContextHealth = ({ userId = '', project = '', vectorMemories = [], r
|
|
|
1283
1287
|
generated_at: nowIso(),
|
|
1284
1288
|
};
|
|
1285
1289
|
};
|
|
1290
|
+
const contextMemoryText = (memory, max = 700) => {
|
|
1291
|
+
const text = memoryText(memory);
|
|
1292
|
+
const tools = explicitToolHistoryItemsFromMemory(memory);
|
|
1293
|
+
if (tools.length) {
|
|
1294
|
+
const names = tools.map((tool) => `${tool.name || 'tool'}:${tool.ok === false ? 'failed' : 'ok'}`).join(', ');
|
|
1295
|
+
const ids = tools.map((tool) => tool.result || tool.input || '').join(' ');
|
|
1296
|
+
const idMatch = /(reservation_id|confirmation_id|id)["':\s]+([A-Za-z0-9_.:-]+)/i.exec(ids);
|
|
1297
|
+
return truncate(`[tool_events_extracted] ${names}${idMatch ? ` ${idMatch[1]}=${idMatch[2]}` : ''}. See Tool history for structured details.`, max);
|
|
1298
|
+
}
|
|
1299
|
+
return truncate(text, max);
|
|
1300
|
+
};
|
|
1286
1301
|
const wrapElefaiMemory = (memory, ctx, memoryKey) => new Proxy(memory, {
|
|
1287
1302
|
get(target, prop) {
|
|
1288
1303
|
if (prop === 'loadMemoryVariables') {
|
|
@@ -1361,7 +1376,7 @@ const buildContextMessages = ({ payloadFormat, query, userId, profileFacts, work
|
|
|
1361
1376
|
});
|
|
1362
1377
|
}
|
|
1363
1378
|
if (includeSummary) {
|
|
1364
|
-
const summary = vectorMemories.slice(0, Number(adv.summaryMaxFacts || 4)).map(
|
|
1379
|
+
const summary = vectorMemories.slice(0, Number(adv.summaryMaxFacts || 4)).map((memory) => contextMemoryText(memory, 360)).filter(Boolean);
|
|
1365
1380
|
sections.push({ section: 'summary', title: 'Summary', value: summary.length ? summary : null, why_null: summary.length ? undefined : 'no vector memories to summarize' });
|
|
1366
1381
|
}
|
|
1367
1382
|
sections.push({
|
|
@@ -1419,7 +1434,7 @@ const buildContextMessages = ({ payloadFormat, query, userId, profileFacts, work
|
|
|
1419
1434
|
const scoreMeta = scoreMetaOf(m);
|
|
1420
1435
|
const rawScore = scoreOf(m);
|
|
1421
1436
|
return {
|
|
1422
|
-
memory:
|
|
1437
|
+
memory: contextMemoryText(m, Number(adv.vectorMemoryMaxChars || 700)),
|
|
1423
1438
|
score: includeScores ? (rawScore !== undefined ? rawScore : scoreMeta.hybridScore ?? scoreMeta.recencyScore ?? 'unavailable') : undefined,
|
|
1424
1439
|
semantic_score: includeScores ? scoreMeta.semanticScore : undefined,
|
|
1425
1440
|
recency_score: includeScores ? scoreMeta.recencyScore : undefined,
|
|
@@ -2231,8 +2246,9 @@ class Mem0Memory {
|
|
|
2231
2246
|
for (const msg of recentMessages)
|
|
2232
2247
|
toolHistoryFromRecentMessages.push(...extractToolCallsFromText(msg.content, msg.at));
|
|
2233
2248
|
}
|
|
2249
|
+
const toolHistoryFromVectorMarkers = adv.includeToolHistory === false ? [] : vectorMemories.flatMap(explicitToolHistoryItemsFromMemory);
|
|
2234
2250
|
const toolHistoryFromVectorMemories = adv.includeToolHistory === false || adv.includeToolHistorySemanticFallback !== true ? [] : vectorMemories.flatMap(toolHistoryItemsFromMemory);
|
|
2235
|
-
const toolHistory = adv.includeToolHistory === false ? [] : applyToolHistoryWindow((store.toolHistory[key] || []).concat(persistedToolHistory, toolHistoryFromRecentMessages, toolHistoryFromVectorMemories), adv.toolHistoryTTLSeconds, adv.toolHistoryLastN || 15);
|
|
2251
|
+
const toolHistory = adv.includeToolHistory === false ? [] : applyToolHistoryWindow((store.toolHistory[key] || []).concat(persistedToolHistory, toolHistoryFromRecentMessages, toolHistoryFromVectorMarkers, toolHistoryFromVectorMemories), adv.toolHistoryTTLSeconds, adv.toolHistoryLastN || 15);
|
|
2236
2252
|
const highlights = adv.includeRecentHighlights === false ? [] : getRecentHighlights(recentMessages, toolHistory, adv.recentHighlightsMaxItems || 6);
|
|
2237
2253
|
const profileFacts = adv.includeProfileFacts === false ? {} : mergeProfileFacts(store.profileFacts[key], profileFactsFromMessages(allRecentMessages), profileFactsFromMemories(vectorMemories));
|
|
2238
2254
|
if (adv.includeProfileFacts !== false && Object.keys(profileFacts).length) {
|
|
@@ -2246,7 +2262,7 @@ class Mem0Memory {
|
|
|
2246
2262
|
let connectedModelSummary = '';
|
|
2247
2263
|
if (connectedLanguageModel && typeof connectedLanguageModel.invoke === 'function' && (vectorMemories.length || String(query || '').trim()) && adv.includeSummary !== false) {
|
|
2248
2264
|
try {
|
|
2249
|
-
const facts = vectorMemories.slice(0, Number(adv.summaryMaxFacts || 4)).map(
|
|
2265
|
+
const facts = vectorMemories.slice(0, Number(adv.summaryMaxFacts || 4)).map((memory) => contextMemoryText(memory, 500)).filter(Boolean).join('\n') || '(no vector memories found)';
|
|
2250
2266
|
if (facts || String(query || '').trim()) {
|
|
2251
2267
|
const response = await connectedLanguageModel.invoke([
|
|
2252
2268
|
toBaseMessage({
|
|
@@ -2530,6 +2546,7 @@ exports.__private = {
|
|
|
2530
2546
|
extractToolCallsFromText,
|
|
2531
2547
|
extractToolCalls,
|
|
2532
2548
|
toolHistoryItemsFromMemory,
|
|
2549
|
+
explicitToolHistoryItemsFromMemory,
|
|
2533
2550
|
toolHistoryFromMemory,
|
|
2534
2551
|
recentMessageFromMemory,
|
|
2535
2552
|
dedupeToolHistory,
|
package/package.json
CHANGED