@justmpm/comunicate 0.1.3 → 0.2.0

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.
@@ -14,23 +14,57 @@ import { VERSION } from './comunicate/index.js';
14
14
  const TOOLS = [
15
15
  {
16
16
  name: 'send_agent_message',
17
- description: 'Envia uma mensagem para outro agente',
17
+ description: `Envia uma mensagem para outro agente registrado no sistema.
18
+
19
+ QUANDO USAR:
20
+ - Para notificar outro agente sobre progresso de tarefa
21
+ - Para solicitar ajuda/assistência de outro agente
22
+ - Para enviar atualizações sobre APIs, componentes ou integrações
23
+
24
+ COMO OBTENDER O TOKEN:
25
+ O token do remetente é obtido quando um admin cria o agente via 'create_agent'.
26
+ Cada agente deve guardar seu próprio token para usar nas comunicações.
27
+
28
+ EXEMPLO DE FLUXO:
29
+ 1. Admin cria agente 'backend' → recebe token: "abc123..."
30
+ 2. Backend usa este token para enviar mensagens para outros agentes
31
+
32
+ TIPOS DE MENSAGEM:
33
+ - text: Mensagem genérica
34
+ - task_update: Atualização sobre progresso de tarefa
35
+ - assistance_request: Pedido de ajuda (use priority: urgent se crítico)
36
+ - notification: Informação geral
37
+
38
+ PRIORIDADES:
39
+ - urgent: Bugs críticos, system down
40
+ - high: Features importantes, deadlines
41
+ - normal: Comunicação rotineira (padrão)
42
+ - low: Informações, updates`,
18
43
  inputSchema: {
19
44
  type: 'object',
20
45
  properties: {
21
- token: { type: 'string', description: 'Token de autenticação do remetente' },
22
- recipientId: { type: 'string', description: 'ID do agente destinatário' },
23
- message: { type: 'string', description: 'Conteúdo da mensagem (max 4000 chars)' },
46
+ token: {
47
+ type: 'string',
48
+ description: 'Token de autenticação do remetente (obtido no create_agent)'
49
+ },
50
+ recipientId: {
51
+ type: 'string',
52
+ description: 'ID do agente destinatário (ex: frontend, backend, tester)'
53
+ },
54
+ message: {
55
+ type: 'string',
56
+ description: 'Conteúdo da mensagem (max 4000 caracteres)'
57
+ },
24
58
  type: {
25
59
  type: 'string',
26
60
  enum: ['text', 'assistance_request', 'task_update', 'notification'],
27
- description: 'Tipo da mensagem',
61
+ description: 'Tipo da mensagem - use task_update para progresso, assistance_request quando precisar de ajuda',
28
62
  default: 'text'
29
63
  },
30
64
  priority: {
31
65
  type: 'string',
32
66
  enum: ['low', 'normal', 'high', 'urgent'],
33
- description: 'Prioridade da mensagem',
67
+ description: 'Prioridade da mensagem - urgent apenas para situações críticas',
34
68
  default: 'normal'
35
69
  }
36
70
  },
@@ -39,24 +73,42 @@ const TOOLS = [
39
73
  },
40
74
  {
41
75
  name: 'get_agent_messages',
42
- description: 'Lê mensagens da inbox do agente',
76
+ description: `Lê mensagens da inbox do agente.
77
+
78
+ QUANDO USAR:
79
+ - Periodicamente para verificar novas mensagens
80
+ - Ao iniciar trabalho para ver pendências
81
+ - Após receber notificação de nova mensagem
82
+
83
+ COMPORTAMENTO:
84
+ - Por padrão retorna apenas mensagens NÃO lidas
85
+ - Mensagens lidas são automaticamente marcadas (a menos que markAsRead: false)
86
+ - Use includeRead: true para ver histórico completo
87
+
88
+ FLUXO RECOMENDADO:
89
+ 1. Chame com markAsRead: true (padrão) para processar mensagens novas
90
+ 2. Se precisar manter como não lida, use markAsRead: false
91
+ 3. Use clear_read_messages periodicamente para limpar inbox`,
43
92
  inputSchema: {
44
93
  type: 'object',
45
94
  properties: {
46
- token: { type: 'string', description: 'Token de autenticação' },
95
+ token: {
96
+ type: 'string',
97
+ description: 'Token de autenticação do agente (obtido no create_agent)'
98
+ },
47
99
  includeRead: {
48
100
  type: 'boolean',
49
- description: 'Incluir mensagens já lidas',
101
+ description: 'Se true, inclui mensagens já lidas no resultado',
50
102
  default: false
51
103
  },
52
104
  markAsRead: {
53
105
  type: 'boolean',
54
- description: 'Marcar mensagens como lidas ao ler',
106
+ description: 'Se true (padrão), marca mensagens como lidas ao retorná-las',
55
107
  default: true
56
108
  },
57
109
  limit: {
58
110
  type: 'number',
59
- description: 'Limite de mensagens (1-50)',
111
+ description: 'Número máximo de mensagens a retornar (1-50)',
60
112
  default: 10,
61
113
  minimum: 1,
62
114
  maximum: 50
@@ -67,56 +119,130 @@ const TOOLS = [
67
119
  },
68
120
  {
69
121
  name: 'get_unread_count',
70
- description: 'Retorna o número de mensagens não lidas',
122
+ description: `Retorna apenas o número de mensagens não lidas na inbox.
123
+
124
+ QUANDO USAR:
125
+ - Para verificar rapidamente se há novas mensagens sem carregar o conteúdo
126
+ - Em notificações ou indicadores de status
127
+ - Antes de chamar get_agent_messages para decidir se precisa processar
128
+
129
+ DIFERENÇA DE get_agent_messages:
130
+ - Esta tool é mais rápida pois não retorna o conteúdo das mensagens
131
+ - Útil para polling ou verificações frequentes`,
71
132
  inputSchema: {
72
133
  type: 'object',
73
134
  properties: {
74
- token: { type: 'string', description: 'Token de autenticação' }
135
+ token: {
136
+ type: 'string',
137
+ description: 'Token de autenticação do agente (obtido no create_agent)'
138
+ }
75
139
  },
76
140
  required: ['token']
77
141
  }
78
142
  },
79
143
  {
80
144
  name: 'delete_message',
81
- description: 'Deleta uma mensagem específica',
145
+ description: `Deleta permanentemente uma mensagem específica da inbox.
146
+
147
+ QUANDO USAR:
148
+ - Para remover mensagens irrelevantes ou spam
149
+ - Para limpar mensagens antigas que não são mais necessárias
150
+ - Diferente de 'clear_read_messages', esta deleta uma mensagem específica
151
+
152
+ COMO OBTER O MESSAGEID:
153
+ O ID da mensagem é retornado quando você lê a mensagem via get_agent_messages.
154
+ Formato típico: "msg_xxxxxxxxxxxxxxxx"`,
82
155
  inputSchema: {
83
156
  type: 'object',
84
157
  properties: {
85
- token: { type: 'string', description: 'Token de autenticação' },
86
- messageId: { type: 'string', description: 'ID da mensagem a deletar' }
158
+ token: {
159
+ type: 'string',
160
+ description: 'Token de autenticação do agente'
161
+ },
162
+ messageId: {
163
+ type: 'string',
164
+ description: 'ID único da mensagem a ser deletada (formato: msg_xxxxxxxxxxxxxxxx)'
165
+ }
87
166
  },
88
167
  required: ['token', 'messageId']
89
168
  }
90
169
  },
91
170
  {
92
171
  name: 'clear_read_messages',
93
- description: 'Remove todas as mensagens lidas da inbox',
172
+ description: `Remove TODAS as mensagens lidas da inbox de uma vez.
173
+
174
+ QUANDO USAR:
175
+ - Para limpeza periódica da inbox (manutenção)
176
+ - Quando a inbox ficar muito cheia
177
+ - Recomendado fazer periodicamente para manter performance
178
+
179
+ ⚠️ ATENÇÃO:
180
+ Esta operação é irreversível! Mensagens lidas serão permanentemente removidas.
181
+ Mensagens não lidas NÃO são afetadas.
182
+
183
+ DIFERENÇA DE delete_message:
184
+ - delete_message: remove uma mensagem específica
185
+ - clear_read_messages: remove todas as mensagens já lidas de uma vez`,
94
186
  inputSchema: {
95
187
  type: 'object',
96
188
  properties: {
97
- token: { type: 'string', description: 'Token de autenticação' }
189
+ token: {
190
+ type: 'string',
191
+ description: 'Token de autenticação do agente'
192
+ }
98
193
  },
99
194
  required: ['token']
100
195
  }
101
196
  },
102
197
  {
103
198
  name: 'claim_file',
104
- description: 'Reserva um arquivo para edição (quando fora do domínio)',
199
+ description: `Reserva temporária de um arquivo para edição exclusiva.
200
+
201
+ O QUE É UM CLAIM:
202
+ Um "claim" é uma reserva que permite a um agente editar arquivos fora de seus domínios
203
+ definidos, prevenindo conflitos quando múltiplos agentes precisam acessar os mesmos arquivos.
204
+
205
+ CONCEITO DE DOMÍNIOS:
206
+ Cada agente tem domínios (pastas) onde pode editar naturalmente sem restrições.
207
+ Exemplo: Um agente frontend pode ter domínios ["src/components", "src/pages"]
208
+
209
+ QUANDO USAR ESTA TOOL:
210
+ - Quando precisar editar arquivo fora dos seus domínios (ex: src/types/api.ts)
211
+ - Para arquivos compartilhados entre diferentes áreas do projeto
212
+ - Antes de editar arquivos de configuração, tipos ou utilitários compartilhados
213
+
214
+ FLUXO COMPLETO RECOMENDADO:
215
+ 1. SEMPRE chame can_edit_file primeiro para verificar permissão
216
+ 2. Se retornar erro "File not in agent domains", então use claim_file
217
+ 3. Edite o arquivo
218
+ 4. Libere com release_file (opcional - claims expiram automaticamente)
219
+
220
+ REGRAS IMPORTANTES:
221
+ - Apenas um agente pode ter claim de um arquivo por vez
222
+ - Claims expiram automaticamente após durationMinutes
223
+ - Use renew_claim se precisar de mais tempo (quando faltarem < 5 min)
224
+ - Se outro agente tentar reservar, receberá erro "File claimed by X"`,
105
225
  inputSchema: {
106
226
  type: 'object',
107
227
  properties: {
108
- token: { type: 'string', description: 'Token de autenticação' },
109
- filePath: { type: 'string', description: 'Caminho do arquivo a reservar' },
228
+ token: {
229
+ type: 'string',
230
+ description: 'Token de autenticação do agente'
231
+ },
232
+ filePath: {
233
+ type: 'string',
234
+ description: 'Caminho relativo do arquivo a reservar (ex: src/types/api.ts, config/shared.json)'
235
+ },
110
236
  durationMinutes: {
111
237
  type: 'number',
112
- description: 'Duração da reserva em minutos (1-60)',
238
+ description: 'Tempo de reserva em minutos (1-60). Após este tempo, o claim expira automaticamente',
113
239
  default: 15,
114
240
  minimum: 1,
115
241
  maximum: 60
116
242
  },
117
243
  reason: {
118
244
  type: 'string',
119
- description: 'Motivo da reserva (opcional)'
245
+ description: 'Motivo da reserva (ex: "Adicionando tipos da API", "Refatorando utils"). Aparece para outros agentes.'
120
246
  }
121
247
  },
122
248
  required: ['token', 'filePath']
@@ -124,15 +250,35 @@ const TOOLS = [
124
250
  },
125
251
  {
126
252
  name: 'renew_claim',
127
- description: 'Renova um claim existente que está prestes a expirar',
253
+ description: `Renova um claim existente que está prestes a expirar.
254
+
255
+ QUANDO USAR:
256
+ - Quando uma edição está demorando mais que o previsto
257
+ - Quando faltarem menos de 5 minutos para expirar (só funciona neste caso)
258
+ - Para evitar que outro agente "roube" o arquivo no meio do seu trabalho
259
+
260
+ ⚠️ RESTRIÇÃO:
261
+ Só funciona se o claim atual estiver prestes a expirar (faltando < 5 minutos).
262
+ Se tentar renovar antes, receberá uma mensagem informando que ainda não é possível.
263
+
264
+ FLUXO:
265
+ 1. Verifique quando seu claim expira via get_agent_claims
266
+ 2. Se faltarem < 5 min e você ainda estiver editando, chame renew_claim
267
+ 3. O tempo é ADICIONADO ao tempo restante atual`,
128
268
  inputSchema: {
129
269
  type: 'object',
130
270
  properties: {
131
- token: { type: 'string', description: 'Token de autenticação' },
132
- filePath: { type: 'string', description: 'Caminho do arquivo' },
271
+ token: {
272
+ type: 'string',
273
+ description: 'Token de autenticação do agente'
274
+ },
275
+ filePath: {
276
+ type: 'string',
277
+ description: 'Caminho do arquivo que foi reservado anteriormente'
278
+ },
133
279
  additionalMinutes: {
134
280
  type: 'number',
135
- description: 'Tempo adicional em minutos (1-60)',
281
+ description: 'Tempo adicional em minutos (1-60) a ser adicionado ao tempo restante',
136
282
  default: 15,
137
283
  minimum: 1,
138
284
  maximum: 60
@@ -143,71 +289,204 @@ const TOOLS = [
143
289
  },
144
290
  {
145
291
  name: 'release_file',
146
- description: 'Libera um arquivo reservado',
292
+ description: `Libera um arquivo reservado antes do tempo de expiração.
293
+
294
+ QUANDO USAR:
295
+ - Quando terminar de editar um arquivo antes do claim expirar
296
+ - Para permitir que outros agentes acessem o arquivo mais cedo
297
+ - Boas práticas: libere assim que terminar a edição
298
+
299
+ NOTA:
300
+ Claims expiram automaticamente, então esta tool é opcional, mas recomendada
301
+ para boa convivência entre agentes.
302
+
303
+ EXEMPLO:
304
+ 1. Você reserva src/types/api.ts por 30 minutos
305
+ 2. Termina a edição em 10 minutos
306
+ 3. Chame release_file para liberar imediatamente
307
+ 4. Outros agentes podem agora reservar o arquivo`,
147
308
  inputSchema: {
148
309
  type: 'object',
149
310
  properties: {
150
- token: { type: 'string', description: 'Token de autenticação' },
151
- filePath: { type: 'string', description: 'Caminho do arquivo a liberar' }
311
+ token: {
312
+ type: 'string',
313
+ description: 'Token de autenticação do agente'
314
+ },
315
+ filePath: {
316
+ type: 'string',
317
+ description: 'Caminho do arquivo reservado a ser liberado'
318
+ }
152
319
  },
153
320
  required: ['token', 'filePath']
154
321
  }
155
322
  },
156
323
  {
157
324
  name: 'can_edit_file',
158
- description: 'Verifica se o agente pode editar um arquivo',
325
+ description: `Verifica se o agente tem permissão para editar um arquivo específico.
326
+
327
+ QUANDO USAR:
328
+ - SEMPRE chame esta tool antes de tentar editar qualquer arquivo
329
+ - Para verificar se precisa reservar o arquivo (claim) ou pode editar diretamente
330
+
331
+ PERMISSÕES VERIFICADAS:
332
+ 1. DOMÍNIO: O arquivo está dentro das pastas permitidas do agente?
333
+ Ex: Se domínios são ["src/components"], pode editar "src/components/Button.tsx"
334
+ 2. CLAIM ATIVO: O agente tem uma reserva ativa para este arquivo?
335
+ Ex: Mesmo fora do domínio, se tiver claim, pode editar
336
+
337
+ RESULTADOS POSSÍVEIS:
338
+ - ✅ "Você pode editar": Arquivo está no domínio ou tem claim ativo
339
+ - ❌ "File not in agent domains": Arquivo fora dos domínios, use claim_file
340
+ - ❌ "File claimed by X": Outro agente reservou, espere ou peça para liberar
341
+
342
+ FLUXO RECOMENDADO:
343
+ 1. Chame can_edit_file antes de qualquer edição
344
+ 2. Se permitido → edite normalmente
345
+ 3. Se negado por domínio → use claim_file, depois edite
346
+ 4. Se negado por claim de outro → aguarde ou comunique-se via mensagem`,
159
347
  inputSchema: {
160
348
  type: 'object',
161
349
  properties: {
162
- token: { type: 'string', description: 'Token de autenticação' },
163
- filePath: { type: 'string', description: 'Caminho do arquivo a verificar' }
350
+ token: {
351
+ type: 'string',
352
+ description: 'Token de autenticação do agente'
353
+ },
354
+ filePath: {
355
+ type: 'string',
356
+ description: 'Caminho do arquivo a verificar (ex: src/components/Button.tsx)'
357
+ }
164
358
  },
165
359
  required: ['token', 'filePath']
166
360
  }
167
361
  },
168
362
  {
169
363
  name: 'get_agent_claims',
170
- description: 'Lista todos os claims ativos do agente',
364
+ description: `Lista todos os claims (reservas) ativos do agente.
365
+
366
+ QUANDO USAR:
367
+ - Para verificar quais arquivos você reservou atualmente
368
+ - Para ver quando seus claims expiram
369
+ - Antes de começar novo trabalho para saber se já tem arquivos reservados
370
+
371
+ INFORMAÇÕES RETORNADAS:
372
+ - Caminho do arquivo reservado
373
+ - Data/hora de expiração
374
+ - Motivo da reserva (se informado)
375
+
376
+ Use esta informação para:
377
+ - Saber quando chamar renew_claim (se faltarem < 5 min)
378
+ - Lembrar quais arquivos precisam ser liberados com release_file`,
171
379
  inputSchema: {
172
380
  type: 'object',
173
381
  properties: {
174
- token: { type: 'string', description: 'Token de autenticação' }
382
+ token: {
383
+ type: 'string',
384
+ description: 'Token de autenticação do agente'
385
+ }
175
386
  },
176
387
  required: ['token']
177
388
  }
178
389
  },
179
390
  {
180
391
  name: 'get_all_claims',
181
- description: 'Lista todos os claims ativos no sistema (admin only)',
392
+ description: `Lista TODOS os claims ativos em todo o sistema (visão de administrador).
393
+
394
+ ⚠️ REQUER TOKEN DE ADMIN - Esta é uma operação administrativa restrita.
395
+
396
+ O QUE É O ADMIN TOKEN:
397
+ O token de administrador é configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN
398
+ no arquivo de configuração do MCP (mcp.json). Ele serve para garantir que apenas
399
+ o administrador do sistema possa executar operações sensíveis.
400
+
401
+ QUANDO USAR:
402
+ - Como administrador do sistema, para monitorar quais arquivos estão reservados
403
+ - Para identificar gargalos (arquivos disputados entre agentes)
404
+ - Para mediar conflitos entre agentes
405
+ - Para verificar saúde geral do sistema
406
+
407
+ DIFERENÇA DE get_agent_claims:
408
+ - get_agent_claims: mostra apenas SEUS claims (visão de agente individual)
409
+ - get_all_claims: mostra claims de TODOS os agentes (visão global de admin)
410
+
411
+ SEGURANÇA:
412
+ O adminToken valida que quem está chamando tem permissão de administrador.
413
+ O token passado deve ser igual ao configurado em COMUNICATE_ADMIN_TOKEN.`,
182
414
  inputSchema: {
183
415
  type: 'object',
184
416
  properties: {
185
- adminToken: { type: 'string', description: 'Token de administrador' }
417
+ adminToken: {
418
+ type: 'string',
419
+ description: 'Token de administrador (configurado em COMUNICATE_ADMIN_TOKEN no mcp.json)'
420
+ }
186
421
  },
187
422
  required: ['adminToken']
188
423
  }
189
424
  },
190
425
  {
191
426
  name: 'create_agent',
192
- description: 'Cria um novo agente (admin only)',
427
+ description: `Cria um novo agente no sistema e retorna seu token de acesso único.
428
+
429
+ ⚠️ IMPORTANTE - GUARDE O TOKEN!
430
+ O token retornado é ÚNICO e não será mostrado novamente.
431
+ Este token deve ser fornecido ao agente para todas as suas operações futuras.
432
+
433
+ QUANDO USAR (como admin):
434
+ - Ao iniciar um novo projeto que precisa de múltiplos agentes
435
+ - Ao adicionar nova área de responsabilidade ao time
436
+ - Quando um novo tipo de trabalho precisa ser distribuído
437
+
438
+ CONCEITOS:
439
+ - agentId: Identificador único do agente (apenas minúsculas, números e hífens)
440
+ - capabilities: Lista de habilidades do agente (ex: ["frontend", "react", "ui"])
441
+ - domains: Pastas que o agente pode editar SEM precisar reservar (claims)
442
+
443
+ EXEMPLOS DE CONFIGURAÇÃO:
444
+
445
+ 1. Agente Frontend:
446
+ agentId: "frontend"
447
+ capabilities: ["frontend", "react", "ui"]
448
+ domains: ["src/components", "src/pages", "src/hooks"]
449
+
450
+ 2. Agente Backend:
451
+ agentId: "backend"
452
+ capabilities: ["api", "database", "auth"]
453
+ domains: ["src/api", "src/models", "src/services"]
454
+
455
+ 3. Agente Tester:
456
+ agentId: "tester"
457
+ capabilities: ["qa", "testing", "e2e"]
458
+ domains: ["tests", "src/__tests__", "cypress"]
459
+
460
+ FLUXO APÓS CRIAÇÃO:
461
+ 1. Admin cria agente → recebe token
462
+ 2. Admin entrega token ao agente/processo responsável
463
+ 3. Agente usa token em todas as operações (mensagens, claims, etc.)
464
+
465
+ REGRAS PARA agentId:
466
+ - Apenas letras minúsculas, números e hífens
467
+ - Deve ser único no sistema
468
+ - Exemplos válidos: "backend", "frontend-v2", "qa-automation"`,
193
469
  inputSchema: {
194
470
  type: 'object',
195
471
  properties: {
196
- adminToken: { type: 'string', description: 'Token de admin' },
472
+ adminToken: {
473
+ type: 'string',
474
+ description: 'Token de administrador (configurado em COMUNICATE_ADMIN_TOKEN no mcp.json)'
475
+ },
197
476
  agentId: {
198
477
  type: 'string',
199
478
  pattern: '^[a-z0-9-]+$',
200
- description: 'ID do agente (ex: backend-worker)'
479
+ description: 'ID único do agente (ex: backend, frontend, tester). Apenas minúsculas, números e hífens.'
201
480
  },
202
481
  capabilities: {
203
482
  type: 'array',
204
483
  items: { type: 'string' },
205
- description: 'Capacidades (ex: ["api", "auth"])'
484
+ description: 'Lista de habilidades/capacidades do agente (ex: ["api", "auth", "database"])'
206
485
  },
207
486
  domains: {
208
487
  type: 'array',
209
488
  items: { type: 'string' },
210
- description: 'Domínios permitidos (ex: ["src/api"])'
489
+ description: 'Pastas que o agente pode editar sem reserva (ex: ["src/api", "src/models"]). Arquivos fora dessas pastas requerem claim.'
211
490
  }
212
491
  },
213
492
  required: ['adminToken', 'agentId', 'capabilities', 'domains']
@@ -215,25 +494,80 @@ const TOOLS = [
215
494
  },
216
495
  {
217
496
  name: 'list_agents',
218
- description: 'Lista todos os agentes registrados (admin only)',
497
+ description: `Lista todos os agentes registrados no sistema com informações detalhadas.
498
+
499
+ ⚠️ REQUER TOKEN DE ADMIN - Esta é uma operação administrativa restrita.
500
+
501
+ O QUE É O ADMIN TOKEN:
502
+ O token de administrador é configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN
503
+ no arquivo de configuração do MCP (mcp.json). Esta tool só pode ser usada pelo
504
+ administrador do sistema.
505
+
506
+ QUANDO USAR:
507
+ - Como administrador, para ver quais agentes existem no sistema
508
+ - Para verificar a configuração de domínios de cada agente
509
+ - Para monitorar status e última atividade (heartbeat) dos agentes
510
+ - Para descobrir o agentId de um agente quando precisar enviar mensagem
511
+
512
+ INFORMAÇÕES RETORNADAS:
513
+ - ID do agente (agentId)
514
+ - Status (active/inactive)
515
+ - Capacidades
516
+ - Domínios permitidos
517
+ - Último heartbeat (lastSeen)
518
+
519
+ USO TÍPICO:
520
+ 1. Admin lista agentes para ver quem está disponível
521
+ 2. Identifica agentId do destinatário desejado
522
+ 3. Usa esse agentId em send_agent_message`,
219
523
  inputSchema: {
220
524
  type: 'object',
221
525
  properties: {
222
- adminToken: { type: 'string', description: 'Token de administrador' }
526
+ adminToken: {
527
+ type: 'string',
528
+ description: 'Token de administrador (configurado em COMUNICATE_ADMIN_TOKEN no mcp.json)'
529
+ }
223
530
  },
224
531
  required: ['adminToken']
225
532
  }
226
533
  },
227
534
  {
228
535
  name: 'get_inactive_agents',
229
- description: 'Lista agentes inativos (sem heartbeat) (admin only)',
536
+ description: `Lista agentes que não enviaram sinal de vida (heartbeat) recentemente.
537
+
538
+ ⚠️ REQUER TOKEN DE ADMIN - Esta é uma operação administrativa restrita.
539
+
540
+ O QUE É O ADMIN TOKEN:
541
+ O token de administrador é configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN
542
+ no arquivo de configuração do MCP (mcp.json). Esta tool só pode ser usada pelo
543
+ administrador do sistema.
544
+
545
+ O QUE É HEARTBEAT:
546
+ Cada vez que um agente chama qualquer tool, seu "lastSeen" é atualizado.
547
+ Isso indica que o agente está ativo e funcionando.
548
+
549
+ QUANDO USAR:
550
+ - Como administrador, para monitorar saúde dos agentes
551
+ - Para detectar agentes "zumbis" ou que travaram
552
+ - Para identificar agentes que podem precisar ser reiniciados
553
+
554
+ PARÂMETRO timeoutMinutes:
555
+ Define o limite de inatividade. Padrão: 5 minutos.
556
+ Exemplo: Se timeoutMinutes=10, retorna agentes sem atividade nos últimos 10 min.
557
+
558
+ RESULTADO:
559
+ - Lista de agentes inativos com seus últimos timestamps
560
+ - Se vazio, todos os agentes estão saudáveis`,
230
561
  inputSchema: {
231
562
  type: 'object',
232
563
  properties: {
233
- adminToken: { type: 'string', description: 'Token de administrador' },
564
+ adminToken: {
565
+ type: 'string',
566
+ description: 'Token de administrador (configurado em COMUNICATE_ADMIN_TOKEN no mcp.json)'
567
+ },
234
568
  timeoutMinutes: {
235
569
  type: 'number',
236
- description: 'Tempo de inatividade em minutos',
570
+ description: 'Tempo limite de inatividade em minutos. Agentes sem heartbeat neste período são considerados inativos.',
237
571
  default: 5,
238
572
  minimum: 1,
239
573
  maximum: 60
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;4BAyBW;QACxB,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6DAA6D;iBAC3E;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2DAA2D;iBACzE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBAC1D;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,CAAC;oBACnE,WAAW,EAAE,gGAAgG;oBAC7G,OAAO,EAAE,MAAM;iBAChB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;oBACzC,WAAW,EAAE,gEAAgE;oBAC7E,OAAO,EAAE,QAAQ;iBAClB;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC;SAC9C;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE;;;;;;;;;;;;;;;4DAe2C;QACxD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;iBACxE;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,iDAAiD;oBAC9D,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6DAA6D;oBAC1E,OAAO,EAAE,IAAI;iBACd;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8CAA8C;oBAC3D,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,EAAE;iBACZ;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE;;;;;;;;;+CAS8B;QAC3C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;iBACxE;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE;;;;;;;;;uCASsB;QACnC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qEAAqE;iBACnF;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;SACjC;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE;;;;;;;;;;;;;qEAaoD;QACjE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;qEAyBoD;QACjE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mFAAmF;iBACjG;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qFAAqF;oBAClG,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,EAAE;iBACZ;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uGAAuG;iBACrH;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE;;;;;;;;;;;;;;gDAc+B;QAC5C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;gBACD,iBAAiB,EAAE;oBACjB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sEAAsE;oBACnF,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,EAAE;iBACZ;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;;;;;;;;;;;;;;;iDAegC;QAC7C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6CAA6C;iBAC3D;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;uEAqBsD;QACnE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gEAAgE;iBAC9E;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE;;;;;;;;;;;;;;iEAcgD;QAC7D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;yEAqBwD;QACrE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4EAA4E;iBAC1F;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAyC6C;QAC1D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4EAA4E;iBAC1F;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,cAAc;oBACvB,WAAW,EAAE,0FAA0F;iBACxG;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,8EAA8E;iBAC5F;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,0HAA0H;iBACxI;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC;SAC/D;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;0CAyByB;QACtC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4EAA4E;iBAC1F;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;6CAwB4B;QACzC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4EAA4E;iBAC1F;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wGAAwG;oBACrH,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,EAAE;iBACZ;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,QAAQ,GAAgD;IAC5D,kBAAkB,EAAE,uBAAuB;IAC3C,kBAAkB,EAAE,uBAAuB;IAC3C,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,oBAAoB;IACpC,mBAAmB,EAAE,wBAAwB;IAC7C,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,kBAAkB;IAChC,aAAa,EAAE,kBAAkB;IACjC,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,mBAAmB;IACnC,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,iBAAiB;IAC9B,mBAAmB,EAAE,wBAAwB;CAC9C,CAAC;AAEF,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAClF;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,oBAAoB,CAAC,CAAC;AACrE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -54,19 +54,19 @@ export const GetAgentClaimsSchema = z.object({
54
54
  token: z.string().describe('Token de autenticação')
55
55
  });
56
56
  export const GetAllClaimsSchema = z.object({
57
- adminToken: z.string().describe('Token de administrador')
57
+ adminToken: z.string().describe('Token de administrador configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN')
58
58
  });
59
59
  export const CreateAgentSchema = z.object({
60
- adminToken: z.string().describe('Token de admin'),
60
+ adminToken: z.string().describe('Token de administrador configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN'),
61
61
  agentId: z.string().regex(/^[a-z0-9-]+$/).describe('ID do agente (ex: backend-worker)'),
62
62
  capabilities: z.array(z.string()).describe('Capacidades (ex: ["api", "auth"])'),
63
63
  domains: z.array(z.string()).describe('Domínios permitidos (ex: ["src/api"])')
64
64
  });
65
65
  export const ListAgentsSchema = z.object({
66
- adminToken: z.string().describe('Token de administrador')
66
+ adminToken: z.string().describe('Token de administrador configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN')
67
67
  });
68
68
  export const GetInactiveAgentsSchema = z.object({
69
- adminToken: z.string().describe('Token de administrador'),
69
+ adminToken: z.string().describe('Token de administrador configurado na variável de ambiente COMUNICATE_ADMIN_TOKEN'),
70
70
  timeoutMinutes: z.number().min(1).max(60).default(5).describe('Tempo de inatividade em minutos')
71
71
  });
72
72
  // ============================================================================