@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.
- package/AGENTS.md +361 -353
- package/CLAUDE.md +336 -356
- package/README.md +147 -31
- package/dist/comunicate/core/auth.d.ts.map +1 -1
- package/dist/comunicate/core/auth.js +9 -4
- package/dist/comunicate/core/auth.js.map +1 -1
- package/dist/mcp-server.js +381 -47
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/agent-communication.js +4 -4
- package/dist/mcp-tools/agent-communication.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp-server.js
CHANGED
|
@@ -14,23 +14,57 @@ import { VERSION } from './comunicate/index.js';
|
|
|
14
14
|
const TOOLS = [
|
|
15
15
|
{
|
|
16
16
|
name: 'send_agent_message',
|
|
17
|
-
description:
|
|
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: {
|
|
22
|
-
|
|
23
|
-
|
|
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:
|
|
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: {
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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:
|
|
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: {
|
|
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:
|
|
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: {
|
|
86
|
-
|
|
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:
|
|
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: {
|
|
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:
|
|
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: {
|
|
109
|
-
|
|
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: '
|
|
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 (
|
|
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:
|
|
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: {
|
|
132
|
-
|
|
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:
|
|
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: {
|
|
151
|
-
|
|
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:
|
|
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: {
|
|
163
|
-
|
|
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:
|
|
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: {
|
|
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:
|
|
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: {
|
|
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:
|
|
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: {
|
|
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
|
|
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: '
|
|
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: '
|
|
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:
|
|
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: {
|
|
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:
|
|
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: {
|
|
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
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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
|
// ============================================================================
|