@justmpm/comunicate 0.1.4 → 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/README.md CHANGED
@@ -124,36 +124,134 @@ comunicate-cli generate-token
124
124
 
125
125
  ## 🛠️ Tools Disponíveis
126
126
 
127
- ### Comunicação
128
-
129
- | Tool | Descrição |
130
- |------|-----------|
131
- | `send_agent_message` | Envia mensagem para outro agente |
132
- | `get_agent_messages` | Lê mensagens da inbox |
133
- | `get_unread_count` | Conta mensagens não lidas |
134
- | `delete_message` | Deleta mensagem específica |
135
- | `clear_read_messages` | Limpa mensagens lidas |
136
-
137
- ### Claims (Reserva de Arquivos)
138
-
139
- | Tool | Descrição |
140
- |------|-----------|
141
- | `claim_file` | Reserva arquivo para edição |
142
- | `renew_claim` | Renova claim prestes a expirar |
143
- | `release_file` | Libera arquivo reservado |
144
- | `can_edit_file` | Verifica permissão de edição |
145
- | `get_agent_claims` | Lista seus claims ativos |
146
- | `get_all_claims` | Lista todos claims (admin) |
127
+ ### Comunicação entre Agentes
128
+
129
+ | Tool | Descrição | Quando Usar |
130
+ |------|-----------|-------------|
131
+ | `send_agent_message` | Envia mensagem para outro agente | Notificar progresso, solicitar ajuda, enviar updates |
132
+ | `get_agent_messages` | Lê mensagens da inbox | Verificar novas mensagens, processar pendências |
133
+ | `get_unread_count` | Conta mensagens não lidas | Verificação rápida sem carregar conteúdo |
134
+ | `delete_message` | Deleta mensagem específica | Limpar mensagens irrelevantes |
135
+ | `clear_read_messages` | Limpa mensagens lidas | Manutenção periódica da inbox |
136
+
137
+ ### Sistema de Claims (Reserva de Arquivos)
138
+
139
+ | Tool | Descrição | Quando Usar |
140
+ |------|-----------|-------------|
141
+ | `can_edit_file` | Verifica permissão de edição | **SEMPRE** chame antes de editar qualquer arquivo |
142
+ | `claim_file` | Reserva arquivo para edição | Quando arquivo está fora do seu domínio |
143
+ | `renew_claim` | Renova reserva prestes a expirar | Quando faltarem < 5 min e edição não terminou |
144
+ | `release_file` | Libera arquivo reservado | Quando terminar edição antes da expiração |
145
+ | `get_agent_claims` | Lista suas reservas ativas | Verificar claims existentes e tempos |
146
+ | `get_all_claims` | Lista todas as reservas (admin) | Monitorar uso do sistema |
147
147
 
148
148
  ### Administração
149
149
 
150
- | Tool | Descrição |
151
- |------|-----------|
152
- | `create_agent` | Cria novo agente |
153
- | `list_agents` | Lista agentes registrados |
154
- | `get_inactive_agents` | Lista agentes inativos |
150
+ | Tool | Descrição | Quando Usar |
151
+ |------|-----------|-------------|
152
+ | `create_agent` | Cria novo agente | Novo projeto, nova área de responsabilidade |
153
+ | `list_agents` | Lista agentes registrados | Ver configurações, descobrir agentIds |
154
+ | `get_inactive_agents` | Lista agentes inativos | Monitoramento de saúde do sistema |
155
155
 
156
- ## 📖 Exemplos de Uso
156
+ ## 📖 Fluxos de Trabalho Comuns
157
+
158
+ ### 1. Criar e Configurar Agentes
159
+
160
+ ```
161
+ Admin executa: create_agent
162
+
163
+ Recebe token único (GUARDAR!)
164
+
165
+ Entrega token ao respectivo agente
166
+
167
+ Agente usa token em todas as operações
168
+ ```
169
+
170
+ ### 2. Enviar e Receber Mensagens
171
+
172
+ ```
173
+ Agente A: send_agent_message(tokenA, "agente-b", "API pronta!")
174
+
175
+ Mensagem vai para inbox-agente-b.json
176
+
177
+ Agente B: get_agent_messages(tokenB)
178
+
179
+ Recebe e processa mensagem
180
+ ```
181
+
182
+ ### 3. Editar Arquivos (Verificação de Domínios)
183
+
184
+ ```
185
+ Antes de editar QUALQUER arquivo:
186
+
187
+ Agente: can_edit_file(token, "src/types/api.ts")
188
+
189
+ Se PERMITIDO → edite diretamente
190
+
191
+ Se NEGADO (fora do domínio):
192
+ claim_file(token, "src/types/api.ts", 30, "Adicionando tipos")
193
+
194
+ Edita o arquivo
195
+
196
+ release_file(token, "src/types/api.ts") [opcional mas recomendado]
197
+ ```
198
+
199
+ ## 🔑 Conceitos Importantes
200
+
201
+ ### Tokens
202
+
203
+ #### Admin Token
204
+
205
+ - Configurado na variável de ambiente `COMUNICATE_ADMIN_TOKEN` no arquivo de configuração do MCP
206
+ - Usado para validar operações administrativas (`create_agent`, `list_agents`, `get_inactive_agents`, `get_all_claims`)
207
+ - **Apenas o administrador do sistema** deve ter acesso a este token
208
+ - Serve como camada de segurança para garantir que apenas administradores possam gerenciar agentes
209
+
210
+ #### Agent Token
211
+
212
+ - Gerado pelo `create_agent` quando um admin cria um novo agente
213
+ - **CADA AGENTE TEM SEU PRÓPRIO TOKEN ÚNICO**
214
+ - Usado em TODAS as operações do agente (mensagens, claims, etc.)
215
+ - **GUARDE O TOKEN!** Não será mostrado novamente
216
+
217
+ ### Segurança entre Agentes
218
+
219
+ O sistema garante que:
220
+ - ✅ Agentes normais não podem criar outros agentes (sem adminToken)
221
+ - ✅ Agentes normais não podem ver todos os claims do sistema (sem adminToken)
222
+ - ✅ Cada agente só acessa sua própria inbox
223
+ - ✅ Claims previnem conflitos de edição
224
+
225
+ ### Domínios
226
+
227
+ Domínios são pastas onde um agente pode editar arquivos **sem precisar reservar**.
228
+
229
+ ```
230
+ Exemplo:
231
+ Agente Frontend: domains = ["src/components", "src/pages"]
232
+ ✅ Pode editar: src/components/Button.tsx
233
+ ✅ Pode editar: src/pages/Home.tsx
234
+ ❌ Não pode editar: src/api/users.ts (precisa de claim)
235
+ ```
236
+
237
+ ### Claims (Reservas)
238
+
239
+ Um **claim** é uma reserva temporária de um arquivo fora do domínio do agente.
240
+
241
+ ```
242
+ 1. Agente verifica: can_edit_file → "File not in agent domains"
243
+ 2. Agente reserva: claim_file → "Arquivo reservado por 30 min"
244
+ 3. Agente edita o arquivo
245
+ 4. Agente libera: release_file [ou espera expirar]
246
+ ```
247
+
248
+ **Regras:**
249
+ - Apenas um agente pode ter claim de um arquivo por vez
250
+ - Claims expiram automaticamente
251
+ - Renove quando faltarem < 5 minutos
252
+ - Libere assim que terminar para boa convivência
253
+
254
+ ## 📋 Exemplos de Uso
157
255
 
158
256
  ### Criar um agente (admin)
159
257
 
@@ -166,27 +264,44 @@ comunicate-cli generate-token
166
264
  }
167
265
  ```
168
266
 
267
+ **Retorno:**
268
+ ```
269
+ ✅ Agente backend criado
270
+ Token: a1b2c3d4e5f6789012345678abcdef00
271
+
272
+ ⚠️ Guarde este token! Ele não será mostrado novamente.
273
+ ```
274
+
169
275
  ### Enviar mensagem
170
276
 
171
277
  ```json
172
278
  {
173
- "token": "token-do-agente",
279
+ "token": "a1b2c3d4e5f6789012345678abcdef00",
174
280
  "recipientId": "frontend",
175
- "message": "API pronta!",
281
+ "message": "API /users pronta! Contrato: { id, name, email }",
176
282
  "type": "task_update",
177
283
  "priority": "high"
178
284
  }
179
285
  ```
180
286
 
181
- ### Reservar arquivo
287
+ ### Verificar e reservar arquivo
182
288
 
183
289
  ```json
290
+ // 1. Verificar permissão
291
+ {
292
+ "token": "a1b2c3d4e5f6789012345678abcdef00",
293
+ "filePath": "src/types/api.ts"
294
+ }
295
+ // Retorno: ❌ Não pode editar (fora do domínio)
296
+
297
+ // 2. Reservar
184
298
  {
185
- "token": "token-do-agente",
299
+ "token": "a1b2c3d4e5f6789012345678abcdef00",
186
300
  "filePath": "src/types/api.ts",
187
301
  "durationMinutes": 30,
188
- "reason": "Adicionando tipos"
302
+ "reason": "Definindo contratos da API"
189
303
  }
304
+ // Retorno: ✅ Arquivo reservado até 2026-02-08T23:30:00Z
190
305
  ```
191
306
 
192
307
  ## 🔒 Segurança
@@ -195,6 +310,7 @@ comunicate-cli generate-token
195
310
  - **Retry com Backoff**: Escrita atômica com retry automático
196
311
  - **Claims Auto-Limpo**: Expirados são removidos automaticamente
197
312
  - **Sequence em Claims**: Prevenção de race conditions
313
+ - **Separação de Domínios**: Agentes só acessam arquivos autorizados
198
314
 
199
315
  ## 🖥️ Otimizado para Windows
200
316