n8n-nodes-tembory 1.1.31 → 1.1.32

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,14 @@
2
2
 
3
3
  Node de memoria operacional da Tembory para agentes de IA no n8n.
4
4
 
5
- Versao atual: `1.1.31`.
5
+ Versao atual: `1.1.32`.
6
+
7
+ ## 1.1.32
8
+
9
+ - Adiciona `Modo de Configuracao` com `Simples Recomendado` e `Avancado`.
10
+ - O modo simples usa os defaults validados nos testes reais: contexto estruturado, resumo por contexto ativo, tool history/results/action ledger, backend persistente e diagnostico pesado desligado.
11
+ - O modo avancado continua exibindo todas as opcoes existentes, sem remover nenhum controle.
12
+ - Atualiza a expressao padrao de `Consulta` para ler tambem `$json.body.chatInput`.
6
13
 
7
14
  ## 1.1.31
8
15
 
@@ -75,10 +82,22 @@ O campo `Preset Operacional` preenche defaults de producao:
75
82
 
76
83
  Recomendacao pratica:
77
84
 
78
- - Use `Producao Rapida` em producao normal.
85
+ - Use `Modo Simples Recomendado` em producao normal.
79
86
  - Use `Producao Balanceada` quando o agente precisar comparar mais historico.
80
87
  - Use `Auditoria` ou `Diagnostico Completo` apenas enquanto estiver depurando.
81
88
 
89
+ No modo simples, o node aplica automaticamente:
90
+
91
+ - `Modo de Recuperacao`: operacional estruturado.
92
+ - `Formato do Contexto`: producao estruturado.
93
+ - `Preset Operacional`: producao rapida.
94
+ - `Fonte do Resumo do SLM`: contexto ativo.
95
+ - Tool history, resultados de tools, action ledger, working memory, decision state, operational state e memory compression ligados.
96
+ - Persistencia no backend e active summary ligados.
97
+ - Diagnostico pesado, scores, semantic fallback e tool facts desligados.
98
+ - TTL de tool history em 36000 segundos.
99
+ - Ultimas tools mantidas no contexto compacto: 50.
100
+
82
101
  ## Uso com `$fromAI()`
83
102
 
84
103
  Em tools conectadas ao AI Agent, o n8n permite que o modelo preencha parametros dinamicamente com `$fromAI()`. Isso e responsabilidade do Agent e da tool do n8n. O Tembory apenas fornece contexto operacional para o Agent, incluindo conversa, tools anteriores, inputs, outputs e timestamps.
@@ -1276,8 +1276,44 @@ const mergeRemoteThreadState = (store, key, state) => {
1276
1276
  if (typeof state.activeSummary === 'string' && state.activeSummary)
1277
1277
  store.activeSummary[key] = state.activeSummary;
1278
1278
  };
1279
+ const SIMPLE_MODE_OVERRIDES = {
1280
+ operationPreset: 'productionFast',
1281
+ summarySource: 'activeContext',
1282
+ includeContextHeader: true,
1283
+ compactStateSections: true,
1284
+ includeSummary: true,
1285
+ includeToolHistory: true,
1286
+ includeToolResults: true,
1287
+ includeProfileFacts: true,
1288
+ includeOperationalState: true,
1289
+ includeActionLedger: true,
1290
+ includeWorkingMemory: true,
1291
+ includeDecisionState: true,
1292
+ includeMemoryCompression: true,
1293
+ includeRecentMessages: true,
1294
+ includeRecentHighlights: false,
1295
+ includeEntityTimeline: false,
1296
+ persistBackendMemories: true,
1297
+ persistActiveSummary: true,
1298
+ includeActiveSummary: true,
1299
+ enableTransientSummaryCache: true,
1300
+ includeScores: false,
1301
+ includeDiagnostics: false,
1302
+ persistToolFactsToTembory: false,
1303
+ includeToolHistorySemanticFallback: false,
1304
+ contextMaxChars: 10000,
1305
+ toolHistoryLastN: 50,
1306
+ toolHistoryTTLSeconds: 36000,
1307
+ recentMessagesLastN: 50,
1308
+ connectedModelSummaryInputMaxChars: 4200,
1309
+ connectedModelSummaryMaxChars: 1200,
1310
+ activeSummaryMaxChars: 1800,
1311
+ activeSummaryRetentionDays: 30,
1312
+ };
1279
1313
  const applyOperationalPreset = (advanced = {}) => {
1280
- const preset = String(advanced.operationPreset || 'productionFast');
1314
+ const configurationMode = String(advanced.configurationMode || 'advanced');
1315
+ const simpleOverrides = configurationMode === 'simple' ? SIMPLE_MODE_OVERRIDES : {};
1316
+ const preset = String(simpleOverrides.operationPreset || advanced.operationPreset || 'productionFast');
1281
1317
  const presets = {
1282
1318
  productionFast: {
1283
1319
  summarySource: 'activeContext',
@@ -1491,7 +1527,7 @@ const applyOperationalPreset = (advanced = {}) => {
1491
1527
  },
1492
1528
  };
1493
1529
  const presetKey = preset === 'lab' ? 'diagnostic' : preset;
1494
- const resolved = { ...(presets[presetKey] || {}), ...advanced };
1530
+ const resolved = { ...(presets[presetKey] || {}), ...advanced, ...simpleOverrides, configurationMode };
1495
1531
  if (/^production/i.test(presetKey)) {
1496
1532
  resolved.compactForAgent = true;
1497
1533
  resolved.compactStateSections = true;
@@ -1534,7 +1570,12 @@ const readAdvancedOptions = (ctx, itemIndex) => {
1534
1570
  grouped = flattenAdvancedGroups(ctx.getNodeParameter('advancedGroups', itemIndex, {}) || {});
1535
1571
  }
1536
1572
  catch { }
1537
- return { ...legacy, ...grouped };
1573
+ let configurationMode = 'simple';
1574
+ try {
1575
+ configurationMode = String(ctx.getNodeParameter('configurationMode', itemIndex, 'simple') || 'simple');
1576
+ }
1577
+ catch { }
1578
+ return { ...legacy, ...grouped, configurationMode };
1538
1579
  };
1539
1580
  const pruneByLimit = (items, limit) => items.slice(Math.max(0, items.length - Math.max(1, Number(limit) || 1)));
1540
1581
  const dedupeRecentMessages = (items) => {
@@ -3515,10 +3556,34 @@ class TemboryMemory {
3515
3556
  default: '={{ $json.project || $json.projectId || $json.accountId || $json.body?.account?.id || "" }}',
3516
3557
  description: 'Namespace operacional do workflow para separar clientes/workspaces. Nao e o Project ID da credencial; a API key do Tembory ja identifica o projeto comercial.',
3517
3558
  },
3559
+ {
3560
+ displayName: 'Modo de Configuração',
3561
+ name: 'configurationMode',
3562
+ type: 'options',
3563
+ options: [
3564
+ {
3565
+ name: 'Simples Recomendado',
3566
+ value: 'simple',
3567
+ description: 'Usa os defaults validados em producao: contexto estruturado, SLM por contexto ativo, tool history/results/action ledger, backend persistente e diagnostico pesado desligado.',
3568
+ },
3569
+ {
3570
+ name: 'Avançado',
3571
+ value: 'advanced',
3572
+ description: 'Exibe todas as opcoes para ajuste fino de memoria, resumo, auditoria, TTL e payload.',
3573
+ },
3574
+ ],
3575
+ default: 'simple',
3576
+ description: 'No modo simples o Tembory escolhe a configuracao recomendada. No modo avancado todos os campos continuam disponiveis.',
3577
+ },
3518
3578
  {
3519
3579
  displayName: 'Modo de Recuperação de Contexto',
3520
3580
  name: 'retrievalMode',
3521
3581
  type: 'options',
3582
+ displayOptions: {
3583
+ show: {
3584
+ configurationMode: ['advanced'],
3585
+ },
3586
+ },
3522
3587
  options: [
3523
3588
  { name: 'Operacional Estruturado', value: 'basic', description: 'Usa estado da thread, histórico de tools, mensagens recentes e resumo ativo, sem busca vetorial' },
3524
3589
  { name: 'Resumo', value: 'summary', description: 'Retorna um resumo simples em texto' },
@@ -3530,13 +3595,18 @@ class TemboryMemory {
3530
3595
  displayName: 'Consulta',
3531
3596
  name: 'query',
3532
3597
  type: 'string',
3533
- default: '={{ $json.query || $json.lastUserMessage || $json.chatInput || $json.body?.consolidated_text || $json.body?.message || $json.body?.text || "" }}',
3598
+ default: '={{ $json.query || $json.lastUserMessage || $json.chatInput || $json.body?.chatInput || $json.body?.consolidated_text || $json.body?.message || $json.body?.text || "" }}',
3534
3599
  description: 'Mensagem atual usada para montar o contexto operacional, inferir intenção e recuperar memórias relevantes. Em AI Agent, mantenha a expressão padrão para ler o chatInput do item.',
3535
3600
  },
3536
3601
  {
3537
3602
  displayName: 'Chave de Memória',
3538
3603
  name: 'memoryKey',
3539
3604
  type: 'string',
3605
+ displayOptions: {
3606
+ show: {
3607
+ configurationMode: ['advanced'],
3608
+ },
3609
+ },
3540
3610
  default: 'chat_history',
3541
3611
  description: 'Chave sob a qual a memória será retornada',
3542
3612
  },
@@ -3544,6 +3614,11 @@ class TemboryMemory {
3544
3614
  displayName: 'Formato do Contexto',
3545
3615
  name: 'payloadFormat',
3546
3616
  type: 'options',
3617
+ displayOptions: {
3618
+ show: {
3619
+ configurationMode: ['advanced'],
3620
+ },
3621
+ },
3547
3622
  options: [
3548
3623
  { name: 'Produção Estruturado', value: 'structured' },
3549
3624
  { name: 'Auditoria Texto', value: 'auditText' },
@@ -3558,6 +3633,11 @@ class TemboryMemory {
3558
3633
  displayName: 'Configuração Tembory',
3559
3634
  name: 'advancedGroups',
3560
3635
  type: 'fixedCollection',
3636
+ displayOptions: {
3637
+ show: {
3638
+ configurationMode: ['advanced'],
3639
+ },
3640
+ },
3561
3641
  placeholder: 'Adicionar Grupo',
3562
3642
  default: '',
3563
3643
  typeOptions: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-tembory",
3
- "version": "1.1.31",
3
+ "version": "1.1.32",
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",