@lionchat/mcp-server 0.5.18 → 0.5.19

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.
@@ -261,6 +261,8 @@ Antes de QUALQUER ação que escreve, modifica, apaga ou envia, pare e avalie se
261
261
 
262
262
  **Aja sem perguntar apenas em operações idempotentes:** leitura, busca, resumo, classificação.
263
263
 
264
+ **Excluir agente/usuário (`lionchat_agents_destroy`) — SEMPRE pergunte o destino primeiro.** Se o agente tem recursos vinculados (conversas, tarefas — inclusive as que ele **criou** —, cards do Kanban, campanhas, agendamentos), o sistema EXIGE um destino de reatribuição. Antes de excluir: consulte `lionchat_agents_assigned_resources` (o retorno inclui `tasks_created`, tarefas criadas por ele); se houver QUALQUER recurso, **pergunte pra qual agente transferir tudo** e passe `reassign_to_agent_id` no destroy. Nunca tente excluir sem o destino — o sistema recusa e o trabalho do agente ficaria órfão. Ao excluir, tudo passa pro agente escolhido; o excluído fica só no histórico.
265
+
264
266
  **NUNCA sobrescreva por inferência dados já preenchidos.** Em especial, **NUNCA sobrescreva telefone ou e-mail existente de um contato** — se já há valor preenchido, pergunte antes de alterar.
265
267
 
266
268
  ## 8. Índice de roteamento (intenção → tool certa)
@@ -117,6 +117,10 @@ Pra reativar: `paused=false`. Toggle é auditado (`audited only: [:paused]`).
117
117
 
118
118
  **Janela de inconsistência:** ~5-8s. Jobs que já estão dentro do LLM no momento da pausa enviam a resposta mesmo. Use o botão pra parar **novas** respostas, não pra cancelar uma que já saiu.
119
119
 
120
+ ## Formato do `config` no `captain_assistants_update` (2026-07-11)
121
+
122
+ O `config` DEVE ser enviado como **objeto** (ex.: `config: { disabled_tools: [...] }`), NUNCA como string/texto. Se vier em formato errado, o backend retorna **422** (não salva ignorando em silêncio). O update do `config` é **merge parcial** — mandar só o subset que muda (ex.: só `disabled_tools`) preserva os demais campos.
123
+
120
124
  ## Limite do prompt e cache OpenAI (2026-05-22)
121
125
 
122
126
  - `config.instructions` (system prompt do agente) aceita até **20.000 caracteres** (antes 10k). Acima de 15k, o frontend mostra aviso "lost in the middle" — prefira colocar instruções críticas no início ou final.
@@ -140,6 +144,37 @@ Dispara quando o CLIENTE fica inativo após resposta da IA. O motor de follow-up
140
144
  **só-leitura** (não executa ferramentas, não coleta dado — só redige a mensagem de retomada,
141
145
  com saída estruturada garantida). `paused=true` no assistente corta os follow-ups também.
142
146
 
147
+ ## Condições para NÃO fazer follow-up + horário de silêncio (2026-07)
148
+
149
+ `config.follow_up_skip_conditions` — array de até 3 condições (lógica OU: qualquer uma verdadeira
150
+ pula o follow-up). Tipos:
151
+
152
+ ```json
153
+ { "config": { "follow_up_skip_conditions": [
154
+ { "type": "label", "operator": "present", "labels": ["follow-pausar"] },
155
+ { "type": "conversation_attr", "attribute": "status_negociacao", "operator": "equal", "value": "fechado" },
156
+ { "type": "time_window", "start": 22, "end": 7 }
157
+ ] } }
158
+ ```
159
+
160
+ - `label`: pula se a conversa TEM (`present`) / NÃO tem (`absent`) alguma das etiquetas.
161
+ - `contact_attr` / `conversation_attr`: pula quando o atributo do contato/conversa bate o operador
162
+ (`equal`, `not_equal`, `contains`, `present`, `blank`, `gt`, `lt`) com `value`.
163
+ - **`time_window` (horário de silêncio)**: `start` e `end` são horas inteiras 0-23 (fuso America/Sao_Paulo).
164
+ No período a IA **NÃO envia follow-up**, mas **continua respondendo o cliente normalmente**. Janela
165
+ **circular**: `22→7` = silêncio das 22h até as 7h (22,23,0…6). O passo que cai no silêncio é PULADO
166
+ (não empurra pra frente — evita disparo em massa na abertura); a cadência segue nos passos seguintes.
167
+ `start == end` = janela inválida (ignorada). Ideal pra não incomodar cliente de madrugada.
168
+
169
+ ## Desligar a IA quando um humano assume (2026-07)
170
+
171
+ `config.feature_pause_on_human_reply` (bool, padrão false). Ligado, a IA **se desliga sozinha** na
172
+ conversa (fica `captain_assistant_id=null` + `custom_attributes.captain_manually_disabled=true`)
173
+ assim que um HUMANO DE VERDADE assume — atendente responde o cliente pelo painel (ao vivo) OU a
174
+ mensagem sai do celular (coexistência WhatsApp). NÃO desliga: nota privada, mensagem da própria IA,
175
+ follow-up, automação, campanha, confirmação de agendamento, mensagem agendada. Gera uma pílula
176
+ "atendimento assumido pela equipe" na conversa. Pra religar: reatribuir o agente na conversa.
177
+
143
178
  ## Guardrails e diretrizes de resposta (2026-06)
144
179
 
145
180
  Dois arrays no assistente (top-level, fora do config):
@@ -246,6 +246,14 @@ Captain::Assistant
246
246
  │ model, temperature, instructions (max 20.000 chars), feature_memory, feature_faq,
247
247
  │ feature_follow_up (bool), follow_up_steps (array de {after_minutes, prompt} — ATE 3 etapas,
248
248
  │ cada uma >= 5 min, soma <= 1440 min/24h; legado follow_up_time+follow_up_prompt = 1 etapa),
249
+ │ follow_up_skip_conditions (array — condicoes pra NAO fazer follow-up, logica OU, ate 3; tipos:
250
+ │ label {operator present|absent, labels[]}; contact_attr/conversation_attr {attribute, operator
251
+ │ equal|not_equal|contains|present|blank|gt|lt, value}; time_window {start, end — horas inteiras
252
+ │ 0-23; NAO envia follow-up nesse periodo, janela circular ex 22->7; a IA SEGUE respondendo o
253
+ │ cliente normal — o silencio e so do follow-up}),
254
+ │ feature_pause_on_human_reply (bool — a IA se DESLIGA sozinha na conversa quando um HUMANO
255
+ │ assume: atendente responde pelo painel (ao vivo) OU mensagem enviada do celular. NAO conta:
256
+ │ nota privada, msg da propria IA, automacao, campanha, confirmacao de agendamento, msg agendada),
249
257
  │ activation_label (etiqueta que ativa o agente — unica por conta),
250
258
  │ min_response_time / max_response_time (delay humanizado, 1-60s),
251
259
  │ disabled_tools (array de IDs de tools desativadas pro assistente),
@@ -213,6 +213,11 @@ os de `user_ids` viram membros comuns. A resposta traz `is_supervisor` (boolean)
213
213
  - `config.feature_faq`: gera FAQs sugeridas ao resolver conversas
214
214
  - `config.feature_follow_up` + `config.follow_up_steps`: follow-up automático em cadência de até
215
215
  3 etapas (cada ≥5 min, soma ≤24h) quando o cliente some — motor dedicado só-leitura
216
+ - `config.follow_up_skip_conditions`: array (até 3, lógica OU) de condições pra NÃO fazer follow-up.
217
+ Tipos: `label`, `contact_attr`/`conversation_attr`, e `time_window` (horário de silêncio: `start`/`end`
218
+ horas 0-23, janela circular — no período não envia follow-up, mas a IA segue respondendo o cliente)
219
+ - `config.feature_pause_on_human_reply`: bool — a IA se desliga sozinha na conversa quando um humano
220
+ assume (atendente responde pelo painel OU mensagem do celular); nota privada/automação/campanha não contam
216
221
  - `config.model`: modelo OpenAI usado (gpt-4o, gpt-4o-mini)
217
222
  - `config.temperature`: 0.0-1.0
218
223
  - `config.instructions`: prompt sistema (Liquid template, até 20.000 chars)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionchat/mcp-server",
3
- "version": "0.5.18",
3
+ "version": "0.5.19",
4
4
  "description": "MCP server for LionChat API — 547 tools + 10 resources + 9 prompts. Audit-log aware, completion API, progress notifications.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",