n8n-nodes-tembory 1.1.37 → 1.1.38

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.1.37`.
5
+ Versao atual: `1.1.38`.
6
+
7
+ ## 1.1.38
8
+
9
+ - Torna o resumo visual independente do tipo da mensagem LangChain, procurando o contexto Tembory em qualquer mensagem carregada.
10
+ - Enriquece eventos `chatHistory.addMessage(s)` com `savedMessages`, input/output resumidos e tool events quando esse for o caminho usado pelo Agent.
11
+ - Mantem a separacao entre contexto interno do Agent e output compacto para humano.
6
12
 
7
13
  ## 1.1.37
8
14
 
@@ -3027,10 +3027,11 @@ const summarizeMemoryMessagesForSideChannel = (messages = []) => {
3027
3027
  const type = messageTypeOf(message);
3028
3028
  return type === 'system' || /system/i.test(String(message?.role || ''));
3029
3029
  });
3030
- if (!firstSystem)
3030
+ const contextMessage = firstSystem || list.find((message) => messageContentOf(message).includes('tembory.agent_context.v1')) || list[0];
3031
+ if (!contextMessage)
3031
3032
  return summary;
3032
3033
  try {
3033
- const rawContent = messageContentOf(firstSystem);
3034
+ const rawContent = messageContentOf(contextMessage);
3034
3035
  let parsed;
3035
3036
  try {
3036
3037
  parsed = JSON.parse(rawContent);
@@ -3150,7 +3151,7 @@ const summarizeMemoryMessagesForSideChannel = (messages = []) => {
3150
3151
  return Object.fromEntries(Object.entries(summary).filter(([, value]) => value !== undefined));
3151
3152
  }
3152
3153
  catch {
3153
- const content = messageContentOf(firstSystem);
3154
+ const content = messageContentOf(contextMessage);
3154
3155
  return cleanContextValue({
3155
3156
  ...summary,
3156
3157
  contextChars: content.length || undefined,
@@ -3852,24 +3853,40 @@ class TemboryMemory {
3852
3853
  addMessage: async (message) => {
3853
3854
  currentMessages.push(message);
3854
3855
  const saved = await TemboryMemory.prototype.saveMessagesForItem.call(this, itemIndex, [message]);
3855
- recordMemoryEvent('chatHistory.addMessage', { saved: Boolean(saved && saved.saved), toolCalls: (saved && saved.toolCalls) || [], messages: 1 });
3856
+ recordMemoryEvent('chatHistory.addMessage', {
3857
+ saved: Boolean(saved && saved.saved),
3858
+ messages: 1,
3859
+ ...summarizeSaveContextForSideChannel((saved && saved.input) || {}, (saved && saved.output) || {}, currentMessages),
3860
+ });
3856
3861
  },
3857
3862
  addUserMessage: async (message) => {
3858
3863
  const baseMessage = toBaseMessage({ role: 'user', content: message });
3859
3864
  currentMessages.push(baseMessage);
3860
3865
  const saved = await TemboryMemory.prototype.saveMessagesForItem.call(this, itemIndex, [baseMessage]);
3861
- recordMemoryEvent('chatHistory.addUserMessage', { saved: Boolean(saved && saved.saved), toolCalls: (saved && saved.toolCalls) || [], messages: 1 });
3866
+ recordMemoryEvent('chatHistory.addUserMessage', {
3867
+ saved: Boolean(saved && saved.saved),
3868
+ messages: 1,
3869
+ ...summarizeSaveContextForSideChannel((saved && saved.input) || {}, (saved && saved.output) || {}, currentMessages),
3870
+ });
3862
3871
  },
3863
3872
  addAIChatMessage: async (message) => {
3864
3873
  const baseMessage = toBaseMessage({ role: 'assistant', content: message });
3865
3874
  currentMessages.push(baseMessage);
3866
3875
  const saved = await TemboryMemory.prototype.saveMessagesForItem.call(this, itemIndex, [baseMessage]);
3867
- recordMemoryEvent('chatHistory.addAIChatMessage', { saved: Boolean(saved && saved.saved), toolCalls: (saved && saved.toolCalls) || [], messages: 1 });
3876
+ recordMemoryEvent('chatHistory.addAIChatMessage', {
3877
+ saved: Boolean(saved && saved.saved),
3878
+ messages: 1,
3879
+ ...summarizeSaveContextForSideChannel((saved && saved.input) || {}, (saved && saved.output) || {}, currentMessages),
3880
+ });
3868
3881
  },
3869
3882
  addMessages: async (messages) => {
3870
3883
  currentMessages.push(...messages);
3871
3884
  const saved = await TemboryMemory.prototype.saveMessagesForItem.call(this, itemIndex, messages);
3872
- recordMemoryEvent('chatHistory.addMessages', { saved: Boolean(saved && saved.saved), toolCalls: (saved && saved.toolCalls) || [], messages: Array.isArray(messages) ? messages.length : 0 });
3885
+ recordMemoryEvent('chatHistory.addMessages', {
3886
+ saved: Boolean(saved && saved.saved),
3887
+ messages: Array.isArray(messages) ? messages.length : 0,
3888
+ ...summarizeSaveContextForSideChannel((saved && saved.input) || {}, (saved && saved.output) || {}, currentMessages),
3889
+ });
3873
3890
  },
3874
3891
  clear: async () => {
3875
3892
  currentMessages = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-tembory",
3
- "version": "1.1.37",
3
+ "version": "1.1.38",
4
4
  "description": "Tembory node for n8n AI Agents with operational memory, tool history and decision state",
5
5
  "license": "MIT",
6
6
  "homepage": "https://tembory.com",