@justmpm/comunicate 0.1.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 +518 -0
- package/CLAUDE.md +518 -0
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +117 -0
- package/dist/cli.js.map +1 -0
- package/dist/comunicate/core/auth.d.ts +60 -0
- package/dist/comunicate/core/auth.d.ts.map +1 -0
- package/dist/comunicate/core/auth.js +150 -0
- package/dist/comunicate/core/auth.js.map +1 -0
- package/dist/comunicate/core/domains.d.ts +55 -0
- package/dist/comunicate/core/domains.d.ts.map +1 -0
- package/dist/comunicate/core/domains.js +157 -0
- package/dist/comunicate/core/domains.js.map +1 -0
- package/dist/comunicate/core/index.d.ts +9 -0
- package/dist/comunicate/core/index.d.ts.map +1 -0
- package/dist/comunicate/core/index.js +9 -0
- package/dist/comunicate/core/index.js.map +1 -0
- package/dist/comunicate/core/messaging.d.ts +50 -0
- package/dist/comunicate/core/messaging.d.ts.map +1 -0
- package/dist/comunicate/core/messaging.js +224 -0
- package/dist/comunicate/core/messaging.js.map +1 -0
- package/dist/comunicate/core/notifications.d.ts +26 -0
- package/dist/comunicate/core/notifications.d.ts.map +1 -0
- package/dist/comunicate/core/notifications.js +107 -0
- package/dist/comunicate/core/notifications.js.map +1 -0
- package/dist/comunicate/core/persistence.d.ts +28 -0
- package/dist/comunicate/core/persistence.d.ts.map +1 -0
- package/dist/comunicate/core/persistence.js +113 -0
- package/dist/comunicate/core/persistence.js.map +1 -0
- package/dist/comunicate/index.d.ts +11 -0
- package/dist/comunicate/index.d.ts.map +1 -0
- package/dist/comunicate/index.js +27 -0
- package/dist/comunicate/index.js.map +1 -0
- package/dist/comunicate/types/index.d.ts +5 -0
- package/dist/comunicate/types/index.d.ts.map +1 -0
- package/dist/comunicate/types/index.js +5 -0
- package/dist/comunicate/types/index.js.map +1 -0
- package/dist/comunicate/types/message.d.ts +21 -0
- package/dist/comunicate/types/message.d.ts.map +1 -0
- package/dist/comunicate/types/message.js +5 -0
- package/dist/comunicate/types/message.js.map +1 -0
- package/dist/mcp-server.d.ts +7 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +314 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-tools/agent-communication.d.ts +342 -0
- package/dist/mcp-tools/agent-communication.d.ts.map +1 -0
- package/dist/mcp-tools/agent-communication.js +378 -0
- package/dist/mcp-tools/agent-communication.js.map +1 -0
- package/mcp-config.json +15 -0
- package/package.json +44 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
# @justmpm/comunicate - Guia Completo
|
|
2
|
+
|
|
3
|
+
Sistema de Comunicação Entre Agentes usando arquivos JSON locais (File-Based Architecture) otimizado para Windows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📋 Índice
|
|
8
|
+
|
|
9
|
+
1. [Visão Geral](#visão-geral)
|
|
10
|
+
2. [Arquitetura](#arquitetura)
|
|
11
|
+
3. [Instalação](#instalação)
|
|
12
|
+
4. [Configuração](#configuração)
|
|
13
|
+
5. [Tools MCP](#tools-mcp)
|
|
14
|
+
6. [Fluxos de Trabalho](#fluxos-de-trabalho)
|
|
15
|
+
7. [CLI](#cli)
|
|
16
|
+
8. [Exemplos](#exemplos)
|
|
17
|
+
9. [Segurança](#segurança)
|
|
18
|
+
10. [Troubleshooting](#troubleshooting)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Visão Geral
|
|
23
|
+
|
|
24
|
+
O **@justmpm/comunicate** é um servidor MCP (Model Context Protocol) que permite comunicação entre múltiplos agentes através de arquivos JSON locais.
|
|
25
|
+
|
|
26
|
+
### Por que File-Based?
|
|
27
|
+
|
|
28
|
+
- ✅ **Zero dependências** - Sem banco de dados ou servidor externo
|
|
29
|
+
- ✅ **Portátil** - Viaja com o projeto (controle de versão)
|
|
30
|
+
- ✅ **Debug fácil** - Arquivos JSON human-readable
|
|
31
|
+
- ✅ **No-lock** - Cada agente escreve apenas no seu próprio arquivo
|
|
32
|
+
- ✅ **Otimizado Windows** - File system nativo
|
|
33
|
+
|
|
34
|
+
### Conceitos Fundamentais
|
|
35
|
+
|
|
36
|
+
| Conceito | Descrição |
|
|
37
|
+
|----------|-----------|
|
|
38
|
+
| **Agente** | Entidade que pode enviar/receber mensagens |
|
|
39
|
+
| **Inbox** | Caixa de entrada exclusiva de cada agente |
|
|
40
|
+
| **Domínio** | Diretórios que um agente pode editar naturalmente |
|
|
41
|
+
| **Claim** | Reserva temporária de arquivo fora do domínio |
|
|
42
|
+
| **Heartbeat** | Sinal de vida do agente |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Arquitetura
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
.comunicate/
|
|
50
|
+
├── registry/
|
|
51
|
+
│ ├── agents.json # Registro de agentes (com heartbeat)
|
|
52
|
+
│ ├── tasks.json # Tarefas
|
|
53
|
+
│ └── claims.json # Arquivos reservados (com sequence)
|
|
54
|
+
├── messages/
|
|
55
|
+
│ ├── inbox-*.json # Caixas de entrada
|
|
56
|
+
│ └── archive/ # Mensagens arquivadas (gzip)
|
|
57
|
+
└── context/
|
|
58
|
+
├── api-contracts.json
|
|
59
|
+
├── decisions.json
|
|
60
|
+
└── progress.json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Metáfora
|
|
64
|
+
|
|
65
|
+
> É como uma sala de equipe onde cada pessoa tem seu próprio quadro de avisos. Você só escreve no seu quadro, mas pode ler os dos outros. Se precisar escrever no quadro de outra pessoa, você precisa pedir permissão (claim).
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Instalação
|
|
70
|
+
|
|
71
|
+
### Pré-requisitos
|
|
72
|
+
|
|
73
|
+
- Node.js 18+
|
|
74
|
+
- Windows (otimizado para este SO)
|
|
75
|
+
|
|
76
|
+
### Passo a Passo
|
|
77
|
+
|
|
78
|
+
```powershell
|
|
79
|
+
# 1. Clone ou copie o projeto
|
|
80
|
+
cd comunicate-ai
|
|
81
|
+
|
|
82
|
+
# 2. Instale dependências
|
|
83
|
+
npm install
|
|
84
|
+
|
|
85
|
+
# 3. Compile TypeScript
|
|
86
|
+
npm run build
|
|
87
|
+
|
|
88
|
+
# 4. Execute setup automatizado
|
|
89
|
+
powershell -ExecutionPolicy Bypass -File setup.ps1
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
O script `setup.ps1` irá:
|
|
93
|
+
- Criar estrutura de pastas
|
|
94
|
+
- Gerar arquivos JSON iniciais
|
|
95
|
+
- Criar token de admin
|
|
96
|
+
- Mostrar configuração para Claude
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Configuração
|
|
101
|
+
|
|
102
|
+
### 1. Configurar Token de Admin
|
|
103
|
+
|
|
104
|
+
```powershell
|
|
105
|
+
# Temporário (sessão atual)
|
|
106
|
+
$env:COMUNICATE_ADMIN_TOKEN="seu-token-aqui"
|
|
107
|
+
|
|
108
|
+
# Permanente (Windows)
|
|
109
|
+
[Environment]::SetEnvironmentVariable("COMUNICATE_ADMIN_TOKEN", "seu-token-aqui", "User")
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 2. Configurar Claude Desktop
|
|
113
|
+
|
|
114
|
+
Edite `%APPDATA%\Claude\settings.json`:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"mcpServers": {
|
|
119
|
+
"@justmpm/comunicate": {
|
|
120
|
+
"command": "node",
|
|
121
|
+
"args": [
|
|
122
|
+
"C:/caminho/completo/para/dist/mcp-server.js"
|
|
123
|
+
],
|
|
124
|
+
"env": {
|
|
125
|
+
"COMUNICATE_ADMIN_TOKEN": "seu-token-aqui"
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
> ⚠️ **IMPORTANTE**: Use barras normais (`/`) ou duplas barras invertidas (`\\`) nos caminhos Windows.
|
|
133
|
+
|
|
134
|
+
### 3. Reinicie o Claude Desktop
|
|
135
|
+
|
|
136
|
+
Após configurar, feche e reabra o Claude Desktop.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Tools MCP
|
|
141
|
+
|
|
142
|
+
### Comunicação
|
|
143
|
+
|
|
144
|
+
#### `send_agent_message`
|
|
145
|
+
Envia mensagem para outro agente.
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"token": "token-do-agente",
|
|
150
|
+
"recipientId": "frontend",
|
|
151
|
+
"message": "API pronta!",
|
|
152
|
+
"type": "task_update",
|
|
153
|
+
"priority": "high"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Tipos:** `text`, `assistance_request`, `task_update`, `notification`
|
|
158
|
+
**Prioridades:** `low`, `normal`, `high`, `urgent`
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
#### `get_agent_messages`
|
|
163
|
+
Lê mensagens da inbox.
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"token": "token-do-agente",
|
|
168
|
+
"includeRead": false,
|
|
169
|
+
"markAsRead": true,
|
|
170
|
+
"limit": 10
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
#### `get_unread_count`
|
|
177
|
+
Retorna número de mensagens não lidas.
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"token": "token-do-agente"
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### Claims (Reserva de Arquivos)
|
|
188
|
+
|
|
189
|
+
#### `claim_file`
|
|
190
|
+
Reserva arquivo fora do domínio para edição.
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"token": "token-do-agente",
|
|
195
|
+
"filePath": "src/types/api.ts",
|
|
196
|
+
"durationMinutes": 30,
|
|
197
|
+
"reason": "Adicionando tipos da API"
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
> O claim expira automaticamente após o tempo definido.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
#### `renew_claim`
|
|
206
|
+
Renova um claim prestes a expirar (só funciona se faltarem < 5 min).
|
|
207
|
+
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"token": "token-do-agente",
|
|
211
|
+
"filePath": "src/types/api.ts",
|
|
212
|
+
"additionalMinutes": 15
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
#### `release_file`
|
|
219
|
+
Libera um arquivo reservado antes do tempo.
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"token": "token-do-agente",
|
|
224
|
+
"filePath": "src/types/api.ts"
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
#### `can_edit_file`
|
|
231
|
+
Verifica se pode editar um arquivo (domínio ou claim ativo).
|
|
232
|
+
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"token": "token-do-agente",
|
|
236
|
+
"filePath": "src/components/Button.tsx"
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
### Administração (requer token de admin)
|
|
243
|
+
|
|
244
|
+
#### `create_agent`
|
|
245
|
+
Cria novo agente.
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"adminToken": "token-admin",
|
|
250
|
+
"agentId": "backend",
|
|
251
|
+
"capabilities": ["api", "database", "auth"],
|
|
252
|
+
"domains": ["src/api", "src/models"]
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Regras para agentId:**
|
|
257
|
+
- Apenas letras minúsculas, números e hífens
|
|
258
|
+
- Exemplos válidos: `backend`, `frontend-v2`, `test-runner`
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
#### `list_agents`
|
|
263
|
+
Lista todos os agentes registrados.
|
|
264
|
+
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"adminToken": "token-admin"
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
#### `get_inactive_agents`
|
|
274
|
+
Lista agentes sem heartbeat (possivelmente "mortos").
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"adminToken": "token-admin",
|
|
279
|
+
"timeoutMinutes": 5
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Fluxos de Trabalho
|
|
286
|
+
|
|
287
|
+
### Fluxo 1: Criar Agente e Enviar Mensagem
|
|
288
|
+
|
|
289
|
+
```
|
|
290
|
+
1. Admin executa: create_agent
|
|
291
|
+
→ Recebe token único do agente
|
|
292
|
+
|
|
293
|
+
2. Agente salva seu token
|
|
294
|
+
|
|
295
|
+
3. Agente A executa: send_agent_message
|
|
296
|
+
→ Mensagem vai para inbox-B.json
|
|
297
|
+
|
|
298
|
+
4. Agente B executa: get_agent_messages
|
|
299
|
+
→ Lê e processa mensagens
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Fluxo 2: Coordenação com Claims
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
Backend (domínio: src/models):
|
|
306
|
+
✅ Pode editar: src/models/user.ts
|
|
307
|
+
❌ Não pode: src/components/Button.tsx
|
|
308
|
+
|
|
309
|
+
Frontend (domínio: src/components):
|
|
310
|
+
✅ Pode editar: src/components/Button.tsx
|
|
311
|
+
❌ Não pode: src/models/user.ts
|
|
312
|
+
|
|
313
|
+
Quando Frontend precisa editar src/types/api.ts:
|
|
314
|
+
1. Executa: can_edit_file → false
|
|
315
|
+
2. Executa: claim_file → success
|
|
316
|
+
3. Executa: can_edit_file → true
|
|
317
|
+
4. [edita o arquivo]
|
|
318
|
+
5. Executa: release_file (ou espera expirar)
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Fluxo 3: Monitoramento de Saúde
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Cada agente deve:
|
|
325
|
+
- Chamar qualquer tool periodicamente (atualiza lastSeen)
|
|
326
|
+
- Ou chamar updateAgentHeartbeat() via código
|
|
327
|
+
|
|
328
|
+
Admin pode executar:
|
|
329
|
+
get_inactive_agents → lista agentes "zumbis"
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## CLI
|
|
335
|
+
|
|
336
|
+
Além das tools MCP, existe uma CLI para administração:
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Listar agentes
|
|
340
|
+
npm run cli -- list-agents
|
|
341
|
+
|
|
342
|
+
# Criar agente
|
|
343
|
+
npm run cli -- create-agent backend
|
|
344
|
+
|
|
345
|
+
# Listar claims
|
|
346
|
+
npm run cli -- list-claims
|
|
347
|
+
|
|
348
|
+
# Verificar saúde
|
|
349
|
+
npm run cli -- check-health 5
|
|
350
|
+
|
|
351
|
+
# Gerar token aleatório
|
|
352
|
+
npm run cli -- generate-token
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Exemplos
|
|
358
|
+
|
|
359
|
+
### Exemplo 1: Backend notifica Frontend
|
|
360
|
+
|
|
361
|
+
```typescript
|
|
362
|
+
// Backend envia atualização
|
|
363
|
+
const result = sendMessage(
|
|
364
|
+
BACKEND_TOKEN,
|
|
365
|
+
'frontend',
|
|
366
|
+
'API /users pronta! Contrato: { id, name, email }',
|
|
367
|
+
{ type: 'task_update', priority: 'normal' }
|
|
368
|
+
);
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Exemplo 2: Frontend reserva arquivo
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
// Verifica se pode editar
|
|
375
|
+
const check = canEditFile('frontend', 'src/types/api.ts');
|
|
376
|
+
if (!check.allowed) {
|
|
377
|
+
// Reserva arquivo
|
|
378
|
+
const claim = claimFile(
|
|
379
|
+
'frontend',
|
|
380
|
+
'src/types/api.ts',
|
|
381
|
+
30,
|
|
382
|
+
'Adicionando tipos'
|
|
383
|
+
);
|
|
384
|
+
|
|
385
|
+
if (claim.success) {
|
|
386
|
+
// Agora pode editar
|
|
387
|
+
editFile('src/types/api.ts', ...);
|
|
388
|
+
|
|
389
|
+
// Libera quando terminar
|
|
390
|
+
releaseFile('frontend', 'src/types/api.ts');
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Exemplo 3: Notificações em tempo real
|
|
396
|
+
|
|
397
|
+
```typescript
|
|
398
|
+
import { startNotificationListener } from './comunicate/core/notifications';
|
|
399
|
+
|
|
400
|
+
const listener = startNotificationListener('frontend', {
|
|
401
|
+
onMessage: (msg) => {
|
|
402
|
+
console.log(`Nova mensagem de ${msg.senderId}: ${msg.content}`);
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
// ... quando quiser parar:
|
|
407
|
+
listener.stop();
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## Segurança
|
|
413
|
+
|
|
414
|
+
### Timing-Safe Comparison
|
|
415
|
+
|
|
416
|
+
Todos os tokens são comparados usando `crypto.timingSafeEqual()` para prevenir timing attacks.
|
|
417
|
+
|
|
418
|
+
### Token de Admin
|
|
419
|
+
|
|
420
|
+
- Armazene em variável de ambiente `COMUNICATE_ADMIN_TOKEN`
|
|
421
|
+
- Nunca commite tokens em repositório
|
|
422
|
+
- Use tokens longos e aleatórios (32+ caracteres hex)
|
|
423
|
+
|
|
424
|
+
### Claims
|
|
425
|
+
|
|
426
|
+
- Claims expiram automaticamente
|
|
427
|
+
- Só um agente pode ter claim de um arquivo por vez
|
|
428
|
+
- Sequence number previne race conditions
|
|
429
|
+
|
|
430
|
+
### Domínios
|
|
431
|
+
|
|
432
|
+
- Defina domínios restritos ao criar agente
|
|
433
|
+
- Agente só edita arquivos dentro de seus domínios sem claim
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
## Troubleshooting
|
|
438
|
+
|
|
439
|
+
### "Token inválido"
|
|
440
|
+
|
|
441
|
+
- Verifique se o token está completo (32 caracteres hex)
|
|
442
|
+
- Confirme que o agente está ativo (`list_agents`)
|
|
443
|
+
- Verifique se há espaços extras
|
|
444
|
+
|
|
445
|
+
### "File claimed by X"
|
|
446
|
+
|
|
447
|
+
- Outro agente já reservou o arquivo
|
|
448
|
+
- Espere expirar ou peça para liberar
|
|
449
|
+
- Use `get_all_claims` (admin) para verificar
|
|
450
|
+
|
|
451
|
+
### Mensagens não aparecem
|
|
452
|
+
|
|
453
|
+
- Verifique se está usando `includeRead: true`
|
|
454
|
+
- Confirme o `recipientId` no envio
|
|
455
|
+
- Verifique o arquivo inbox-*.json manualmente
|
|
456
|
+
|
|
457
|
+
### File watcher não funciona
|
|
458
|
+
|
|
459
|
+
- O sistema tem fallback automático para polling
|
|
460
|
+
- No Windows, polling é mais confiável que file watcher
|
|
461
|
+
- Considere usar `startPolling()` explicitamente
|
|
462
|
+
|
|
463
|
+
### Permissão negada ao escrever JSON
|
|
464
|
+
|
|
465
|
+
- Verifique permissões da pasta `.comunicate/`
|
|
466
|
+
- Execute como administrador se necessário
|
|
467
|
+
- Verifique se outro processo está usando os arquivos
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
## Dicas
|
|
472
|
+
|
|
473
|
+
1. **Organize domínios por responsabilidade**
|
|
474
|
+
- `backend`: `src/api`, `src/models`
|
|
475
|
+
- `frontend`: `src/components`, `src/hooks`
|
|
476
|
+
- `shared`: `src/types`, `src/utils` (use claims)
|
|
477
|
+
|
|
478
|
+
2. **Renove claims antes de expirar**
|
|
479
|
+
- Se uma tarefa demorar mais que o previsto
|
|
480
|
+
- Renove quando faltarem < 5 minutos
|
|
481
|
+
|
|
482
|
+
3. **Use prioridades adequadamente**
|
|
483
|
+
- `urgent`: Bugs críticos, system down
|
|
484
|
+
- `high`: Features importantes, deadlines
|
|
485
|
+
- `normal`: Comunicação rotineira
|
|
486
|
+
- `low`: Informações, updates
|
|
487
|
+
|
|
488
|
+
4. **Limpe mensagens lidas periodicamente**
|
|
489
|
+
- Use `clear_read_messages` para manter inbox limpa
|
|
490
|
+
- Mensagens antigas são arquivadas automaticamente
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## Referência Rápida
|
|
495
|
+
|
|
496
|
+
### Criar Agente
|
|
497
|
+
```json
|
|
498
|
+
{"adminToken": "...", "agentId": "backend", "capabilities": ["api"], "domains": ["src/api"]}
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
### Enviar Mensagem
|
|
502
|
+
```json
|
|
503
|
+
{"token": "...", "recipientId": "frontend", "message": "...", "type": "task_update", "priority": "normal"}
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
### Reservar Arquivo
|
|
507
|
+
```json
|
|
508
|
+
{"token": "...", "filePath": "src/types/api.ts", "durationMinutes": 30, "reason": "..."}
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
### Ler Mensagens
|
|
512
|
+
```json
|
|
513
|
+
{"token": "...", "includeRead": false, "markAsRead": true, "limit": 10}
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
**Versão 0.1.0** | Arquitetura File-Based | Otimizado para Windows
|