@justmpm/memory 0.1.0 → 0.1.2

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/CLAUDE.md ADDED
@@ -0,0 +1,575 @@
1
+ # @justmpm/memory - Documentação para IA (CLAUDE.md)
2
+
3
+ ## O que é o @justmpm/memory?
4
+
5
+ **@justmpm/memory** é um servidor MCP (Model Context Protocol) que permite que você, como agent, salve e recupere aprendizados entre diferentes sessões de trabalho.
6
+
7
+ **Propósito principal:** Manter persistência de conhecimento específico do projeto entre sessões, para que você não precise reaprender as mesmas coisas sempre que iniciar uma nova conversa.
8
+
9
+ ---
10
+
11
+ ## Como Funciona
12
+
13
+ ### Estrutura de Arquivos
14
+
15
+ ```
16
+ .claude/
17
+ └── agent-memory/
18
+ ├── nexus/
19
+ │ └── MEMORY.md ← Seu arquivo de memória
20
+ ├── sentinel/
21
+ │ └── MEMORY.md ← Memória do Sentinel
22
+ ├── qa-tester/
23
+ │ └── MEMORY.md ← Memória do QA-Tester
24
+ └── ...
25
+ ```
26
+
27
+ **Importante:**
28
+ - Cada agent tem sua própria memória isolada
29
+ - O nome do arquivo é sempre `MEMORY.md`
30
+ - O nome da pasta é o nome do agent normalizado (lowercase, hífens)
31
+
32
+ ### Limite de Tamanho
33
+
34
+ - **Máximo:** 200 linhas
35
+ - **Quando excedido:** Mantém as últimas 160 linhas + cabeçalho de alerta
36
+ - **Auto-limpeza:** Removerá as entradas mais antigas automaticamente
37
+
38
+ ---
39
+
40
+ ## Tool Memory: Comandos Disponíveis
41
+
42
+ ### 1. READ - Carregar memória anterior
43
+
44
+ **Quando usar:**
45
+ - Ao INICIAR uma nova sessão
46
+ - Antes de tomar decisões baseadas em aprendizados anteriores
47
+ - Quando precisar entender o contexto do projeto
48
+
49
+ **Sintaxe:**
50
+ ```json
51
+ {
52
+ "command": "read",
53
+ "agent": "nexus" // ← Seu nome de agent
54
+ }
55
+ ```
56
+
57
+ **O que retorna:**
58
+ - Conteúdo completo do MEMORY.md
59
+ - Contagem de linhas
60
+ - Se não existir: mensagem de memória vazia com sugestão
61
+
62
+ **Workflow recomendado:**
63
+ ```
64
+ 1. Primeira coisa ao iniciar sessão: READ
65
+ 2. Analise o conteúdo retornado
66
+ 3. Use as informações salvas para informar suas decisões
67
+ ```
68
+
69
+ ---
70
+
71
+ ### 2. APPEND - Salvar aprendizado novo
72
+
73
+ **Quando usar:**
74
+ - Ao APRENDER algo importante sobre o projeto
75
+ - Ao descobrir PADRÕES de código
76
+ - Ao encontrar BUGS recorrentes
77
+ - Ao tomar DECISÕES arquiteturais
78
+ - Ao aprender PREFERÊNCIAS do usuário
79
+
80
+ **Sintaxe:**
81
+ ```json
82
+ {
83
+ "command": "append",
84
+ "agent": "nexus",
85
+ "entry": "Padrão descoberto: Sempre use Zod para validar inputs do usuário em todos os componentes de formulário"
86
+ }
87
+ ```
88
+
89
+ **O que acontece:**
90
+ - Adiciona automaticamente um timestamp: `## [2026-02-09 12:34:56]`
91
+ - Insere sua entrada abaixo do timestamp
92
+ - Mantém todas as entradas anteriores
93
+ - Aplica limite de 200 linhas automaticamente
94
+
95
+ **Dicas para bons entries:**
96
+ - Seja ESPECÍFICO: "Use 2 espaços" > "Formate bem"
97
+ - Adicione CONTEXTO: "No projeto X, use Y..."
98
+ - Use markdown estruturado quando apropriado
99
+ - Explique O PORQUÊ, não só o que
100
+
101
+ **Exemplos de bons entries:**
102
+
103
+ ```json
104
+ // Padrão de código
105
+ {
106
+ "command": "append",
107
+ "agent": "nexus",
108
+ "entry": "Padrão: Este projeto usa App Router com estrutura /features/[domain]/. Sempre que criar um novo domínio, coloque em /features/[domain]/components, /features/[domain]/hooks, etc."
109
+ }
110
+
111
+ // Decisão arquitetural
112
+ {
113
+ "command": "append",
114
+ "agent": "nexus",
115
+ "entry": "Decisão: Escolhemos Zustand em vez de Redux para estado global. Motivo: mais leve, TypeScript-friendly, e este projeto tem até 5 stores independentes"
116
+ }
117
+
118
+ // Bug recorrente
119
+ {
120
+ "command": "append",
121
+ "agent": "nexus",
122
+ "entry": "Bug: Firestore update com array de strings falha silenciosamente quando array está vazio. Workaround: sempre verificar if (array.length > 0) antes de update"
123
+ }
124
+
125
+ // Preferência do usuário
126
+ {
127
+ "command": "append",
128
+ "agent": "nexus",
129
+ "entry": "Preferência: Matheus prefere componentes funcionais simples com styled-components em vez de criar arquivos separados CSS"
130
+ }
131
+ ```
132
+
133
+ ---
134
+
135
+ ### 3. WRITE - Reorganizar memória
136
+
137
+ **Quando usar:**
138
+ - Quando memória estiver MUITO GRANDE (perto de 200 linhas)
139
+ - Para REORGANIZAR estruturas e seções
140
+ - Para REMOVER entradas obsoletas
141
+ - Para RECONSTRUIR memória do zero
142
+
143
+ **Sintaxe:**
144
+ ```json
145
+ {
146
+ "command": "write",
147
+ "agent": "nexus",
148
+ "content": "# Memória do Nexus\n\n## Padrões\n- Sempre use TypeScript estrito\n\n## Decisões\n- Zustand em vez de Redux\n\n## Bugs\n- Bug XYZ ocorre quando..."
149
+ }
150
+ ```
151
+
152
+ **O que acontece:**
153
+ - SUBSTITUI TODO o conteúdo existente
154
+ - Aplica limite de 200 linhas
155
+ - Cria estrutura nova do zero
156
+
157
+ **CUIDADO:** `write` APAGA tudo o que estava antes! Use com cautela.
158
+
159
+ **Quando usar write vs append:**
160
+
161
+ | Situação | Use |
162
+ |----------|-----|
163
+ | Aprender algo novo | `append` |
164
+ | Salvar decisão incremental | `append` |
165
+ | Memória grande demais | `write` |
166
+ | Remover entradas obsoletas | `write` |
167
+ | Reorganizar seções | `write` |
168
+
169
+ **Exemplo de reorganização:**
170
+
171
+ ```json
172
+ {
173
+ "command": "write",
174
+ "agent": "nexus",
175
+ "content": "# Memória do Nexus\n\n## Padrões de Código\n- Sempre use TypeScript estrito (noImplicitAny: true)\n- Use 2 espaços de indentação em TSX\n- Nomeie componentes com PascalCase\n\n## Arquitetura\n- App Router com estrutura /features/[domain]/\n- Cada domínio tem components/, hooks/, services/\n\n## Decisões\n- Zustand para estado global (mais leve que Redux)\n- Firestore para banco de dados (escalabilidade)\n- MUI v7 para componentes UI\n\n## Bugs Conhecidos\n- Bug XYZ: ocorre quando... (workaround: ...)\n- Bug ABC: acontece se... (solução: ...)\n\n## Preferências do Matheus\n- Prefere componentes funcionais\n- Gosta de código conciso (1-3 linhas quando possível)\n- Valoriza explicações simples"
176
+ }
177
+ ```
178
+
179
+ ---
180
+
181
+ ### 4. SEARCH - Buscar informação específica
182
+
183
+ **Quando usar:**
184
+ - Para encontrar informações rápidas sem ler tudo
185
+ - Para verificar se algo já foi documentado
186
+ - Para buscar padrões específicos
187
+
188
+ **Sintaxe:**
189
+ ```json
190
+ {
191
+ "command": "search",
192
+ "agent": "nexus",
193
+ "query": "Zod"
194
+ }
195
+ ```
196
+
197
+ **O que retorna:**
198
+ - Até 20 ocorrências com número da linha
199
+ - Case-insensitive (busca "zod" e "Zod" da mesma forma)
200
+ - Se não encontrado: mensagem clara
201
+
202
+ **Exemplos de buscas úteis:**
203
+
204
+ ```json
205
+ // Buscar padrão específico
206
+ { "command": "search", "agent": "nexus", "query": "padrão" }
207
+
208
+ // Buscar bug específico
209
+ { "command": "search", "agent": "nexus", "query": "bug" }
210
+
211
+ // Buscar tecnologia
212
+ { "command": "search", "agent": "nexus", "query": "TypeScript" }
213
+
214
+ // Buscar preferência
215
+ { "command": "search", "agent": "nexus", "query": "Matheus" }
216
+
217
+ // Buscar erro específico
218
+ { "command": "search", "agent": "nexus", "query": "Firebase" }
219
+ ```
220
+
221
+ ---
222
+
223
+ ### 5. LIST - Descobrir agents existentes
224
+
225
+ **Quando usar:**
226
+ - Para descobrir quais agents já usaram memória no projeto
227
+ - Ao iniciar trabalho em projeto desconhecido
228
+
229
+ **Sintaxe:**
230
+ ```json
231
+ {
232
+ "command": "list"
233
+ }
234
+ ```
235
+
236
+ **O que retorna:**
237
+ - Lista de todos os agents com memória
238
+ - Contagem de linhas de cada um
239
+ - Se nenhum: mensagem de "nenhum agent com memória"
240
+
241
+ ---
242
+
243
+ ## Workflow Recomendado para Você (IA)
244
+
245
+ ### Ao Iniciar uma Sessão
246
+
247
+ ```
248
+ 1. { "command": "read", "agent": "nexus" }
249
+
250
+ 2. Analise as entradas retornadas
251
+
252
+ 3. Use o conhecimento salvo para informar suas respostas
253
+
254
+ 4. Se a memória estiver muito grande, considere reorganizar com WRITE
255
+ ```
256
+
257
+ ### Durante a Sessão
258
+
259
+ ```
260
+ Ao aprender algo importante → APPEND
261
+ Ao tomar uma decisão → APPEND
262
+ Ao descobrir um bug → APPEND
263
+ Ao identificar um padrão → APPEND
264
+ ```
265
+
266
+ ### Ao Final da Sessão
267
+
268
+ ```
269
+ 1. Revise as entradas adicionadas
270
+
271
+ 2. Se memória estiver grande (~150+ linhas), considere WRITE para limpar
272
+
273
+ 3. Organize as entradas em seções (Padrões, Decisões, Bugs, etc.)
274
+ ```
275
+
276
+ ---
277
+
278
+ ## O Que Salvar vs Não Salvar
279
+
280
+ ### ✅ SEMPRE salve
281
+
282
+ **Padrões de código:**
283
+ - Convenções de nomenclatura
284
+ - Estrutura de arquivos do projeto
285
+ - Padrões de importação
286
+ - Formatação específica
287
+
288
+ **Decisões arquiteturais:**
289
+ - Escolha de tecnologias e PORQUÊ
290
+ - Trade-offs considerados
291
+ - Razões para não usar X
292
+
293
+ **Bugs recorrentes:**
294
+ - Bugs que aparecem com frequência
295
+ - Workarounds conhecidos
296
+ - Soluções temporárias
297
+
298
+ **Soluções específicas:**
299
+ - Como resolver problemas específicos do projeto
300
+ - Configurações que funcionaram
301
+ - Comandos úteis
302
+
303
+ **Configurações importantes:**
304
+ - Setup de Firebase, Stripe, etc.
305
+ - Variáveis de ambiente importantes
306
+ - Chaves de configuração
307
+
308
+ **Preferências do usuário:**
309
+ - Estilo de código preferido
310
+ - Nível de detalhe esperado em explicações
311
+ - Comunicação preferida
312
+
313
+ ### ❌ NÃO salve
314
+
315
+ **Coisas triviais:**
316
+ - "Hoje está chovendo"
317
+ - "Tudo funcionou bem"
318
+
319
+ **Informações que mudam frequentemente:**
320
+ - "Tem 3 arquivos na pasta"
321
+ - "O build levou 5 segundos"
322
+
323
+ **Coisas óbvias:**
324
+ - "O código precisa compilar"
325
+ - "Use TypeScript para tipagem"
326
+
327
+ **Informações duplicadas:**
328
+ - Se um padrão já está salvo, não salve novamente
329
+ - Use SEARCH antes de salvar para verificar
330
+
331
+ **Logs de conversação:**
332
+ - Não salve cada mensagem da conversa
333
+ - Salve apenas o APRENDIZADO, não a conversa inteira
334
+
335
+ ---
336
+
337
+ ## Formato Recomendado
338
+
339
+ Use seções markdown bem organizadas:
340
+
341
+ ```markdown
342
+ # Memória do Nexus
343
+
344
+ ## Padrões de Código
345
+ - Sempre use TypeScript estrito
346
+ - Use 2 espaços de indentação em TSX
347
+ - Nomeie componentes com PascalCase
348
+ - Coloque componentes em /components/, hooks em /hooks/
349
+
350
+ ## Arquitetura
351
+ - App Router com estrutura /features/[domain]/
352
+ - Cada domínio tem components/, hooks/, services/
353
+ - Firebase para backend (Firestore, Auth, Functions)
354
+ - Zustand para estado global
355
+
356
+ ## Decisões
357
+ - Zustand em vez de Redux: mais leve, TypeScript-friendly
358
+ - Firestore em vez de PostgreSQL: melhor escalabilidade e real-time
359
+ - MUI v7: componentes prontos e consistência visual
360
+
361
+ ## Bugs Conhecidos
362
+ - Bug XYZ: ocorre quando array vazio é passado para Firestore update
363
+ Workaround: verificar if (array.length > 0) antes
364
+ - Bug ABC: acontece se não usar loader ao navegar
365
+ Solução: adicionar Suspense ou loading state
366
+
367
+ ## Configurações
368
+ - Firebase Auth: Google Sign-In habilitado
369
+ - Stripe: Webhook endpoint configurado em /api/stripe/webhook
370
+ - App Router: usa i18n com next-intl
371
+
372
+ ## Preferências do Matheus
373
+ - Prefere componentes funcionais simples
374
+ - Gosta de código conciso (1-3 linhas quando possível)
375
+ - Valoriza explicações simples sem jargões
376
+ - Prefere resposta direta sem enrolação
377
+ ```
378
+
379
+ ---
380
+
381
+ ## Dicas Importantes
382
+
383
+ ### 1. Verifique antes de salvar
384
+
385
+ ```
386
+ 1. { "command": "search", "agent": "nexus", "query": "termo" }
387
+
388
+ 2. Se já existe, não salve duplicata
389
+
390
+ 3. Se não existe, faça APPEND
391
+ ```
392
+
393
+ ### 2. Seja específico e contextual
394
+
395
+ **Ruim:**
396
+ ```json
397
+ { "entry": "Use TypeScript" }
398
+ ```
399
+
400
+ **Bom:**
401
+ ```json
402
+ { "entry": "Neste projeto, sempre use TypeScript strict mode (noImplicitAny: true) em todos os arquivos .ts e .tsx" }
403
+ ```
404
+
405
+ ### 3. Explique o PORQUÊ
406
+
407
+ **Ruim:**
408
+ ```json
409
+ { "entry": "Use Zustand" }
410
+ ```
411
+
412
+ **Bom:**
413
+ ```json
414
+ { "entry": "Decisão: Usamos Zustand em vez de Redux porque é mais leve (1KB vs 10KB), tem melhor suporte TypeScript, e o projeto tem apenas 5 stores independentes" }
415
+ ```
416
+
417
+ ### 4. Use APPEND para cronologia
418
+
419
+ `APPEND` mantém o histórico cronológico, o que ajuda a entender:
420
+ - Quando aprendizados foram feitos
421
+ - A evolução das decisões
422
+ - Progresso do projeto
423
+
424
+ ### 5. Use WRITE para limpeza
425
+
426
+ Quando a memória estiver grande (~150+ linhas):
427
+ 1. Leia tudo com `READ`
428
+ 2. Reorganize em seções bem definidas
429
+ 3. Remova entradas obsoletas
430
+ 4. Use `WRITE` com o conteúdo reorganizado
431
+
432
+ ---
433
+
434
+ ## Exemplos Práticos de Uso
435
+
436
+ ### Exemplo 1: Iniciar sessão e carregar memória
437
+
438
+ ```
439
+ IA: { "command": "read", "agent": "nexus" }
440
+
441
+ Resultado: 📝 Memória de "nexus" (45 linhas):
442
+ ─────────────────────────────────────────────────────────────────
443
+
444
+ # Memória do Nexus
445
+
446
+ ## Padrões
447
+ - Sempre use TypeScript estrito
448
+ - Nomeie componentes com PascalCase
449
+
450
+ ## Decisões
451
+ - Usamos Zustand para estado global
452
+ ...
453
+ ```
454
+
455
+ ### Exemplo 2: Aprender novo padrão
456
+
457
+ ```
458
+ Usuário: "Adicione um novo componente de botão"
459
+ IA: [Implementa o botão]
460
+
461
+ IA: { "command": "append", "agent": "nexus",
462
+ "entry": "Padrão descoberto: Este projeto usa MUI Button com variantes customizadas. Para consistência, use: <Button variant='contained' color='primary' size='small'> para botões de ação" }
463
+ ```
464
+
465
+ ### Exemplo 3: Salvar decisão arquitetural
466
+
467
+ ```
468
+ Usuário: "Vamos usar PostgreSQL ou Firestore?"
469
+ IA: [Analisa e recomenda Firestore]
470
+
471
+ IA: { "command": "append", "agent": "nexus",
472
+ "entry": "Decisão: Escolhemos Firestore em vez de PostgreSQL. Motivos: (1) Real-time nativo, (2) Escalabilidade automática, (3) Integração com Firebase Auth, (4) Menor overhead de ops" }
473
+ ```
474
+
475
+ ### Exemplo 4: Documentar bug
476
+
477
+ ```
478
+ Usuário: "O formulário não está salvando"
479
+ IA: [Investiga e descobre o bug]
480
+
481
+ IA: { "command": "append", "agent": "nexus",
482
+ "entry": "Bug: Formulário não salva quando usuário não seleciona foto. Causa: validação em FormData falha quando file input está vazio. Workaround: sempre inicializar FormData com file mesmo que vazio" }
483
+ ```
484
+
485
+ ### Exemplo 5: Reorganizar memória grande
486
+
487
+ ```
488
+ IA: { "command": "read", "agent": "nexus" }
489
+ Resultado: Memória com 195 linhas
490
+
491
+ IA: { "command": "write", "agent": "nexus",
492
+ "content": "# Memória do Nexus\n\n## Padrões (reorganizado e limpo)\n\n..." }
493
+ ```
494
+
495
+ ---
496
+
497
+ ## Verificação Final
498
+
499
+ Antes de fazer `WRITE`, SEMPRE:
500
+ 1. ✅ Leia tudo com `READ` primeiro
501
+ 2. ✅ Entenda o que está lá
502
+ 3. ✅ Reorganize em seções lógicas
503
+ 4. ✅ Remova duplicatas e obsoleto
504
+ 5. ✅ Preserve o conhecimento importante
505
+
506
+ Antes de fazer `APPEND`, SEMPRE:
507
+ 1. ✅ Use `SEARCH` para verificar se já existe
508
+ 2. ✅ Seja específico e contextual
509
+ 3. ✅ Explique o PORQUÊ quando relevante
510
+ 4. ✅ Use formato markdown apropriado
511
+
512
+ ---
513
+
514
+ ## Erros Comuns e Como Evitar
515
+
516
+ ### Erro 1: Salvar coisas óbvias
517
+
518
+ **Ruim:**
519
+ ```json
520
+ { "entry": "Use TypeScript para tipos" }
521
+ ```
522
+
523
+ **Bom:**
524
+ ```json
525
+ { "entry": "Neste projeto, use TypeScript strict mode e defina tipos explicitamente. Evite any: sempre use interfaces ou tipos específicos" }
526
+ ```
527
+
528
+ ### Erro 2: Duplicar informações
529
+
530
+ **Antes de salvar:**
531
+ ```json
532
+ { "command": "search", "agent": "nexus", "query": "Zustand" }
533
+ ```
534
+
535
+ ### Erro 3: Não explicar contexto
536
+
537
+ **Ruim:**
538
+ ```json
539
+ { "entry": "Use 2 espaços" }
540
+ ```
541
+
542
+ **Bom:**
543
+ ```json
544
+ { "entry": "Neste projeto, use 2 espaços de indentação em arquivos TSX (não 4, não tabs). Isso é consistente com o linter configurado" }
545
+ ```
546
+
547
+ ### Erro 4: WRITE sem ler antes
548
+
549
+ **Errado:**
550
+ ```
551
+ IA: { "command": "write", "agent": "nexus", "content": "..." }
552
+ ```
553
+
554
+ **Certo:**
555
+ ```
556
+ IA: { "command": "read", "agent": "nexus" }
557
+ [Analisa o conteúdo]
558
+ IA: { "command": "write", "agent": "nexus", "content": "..." }
559
+ ```
560
+
561
+ ---
562
+
563
+ ## Resumo
564
+
565
+ | Comando | Quando usar | Cuidado |
566
+ |---------|------------|---------|
567
+ | `read` | Iniciar sessão | Nenhum |
568
+ | `append` | Aprender algo novo | Use SEARCH antes |
569
+ | `write` | Reorganizar memória | Leia ANTES |
570
+ | `search` | Encontrar info rápida | Nenhum |
571
+ | `list` | Descobrir agents | Nenhum |
572
+
573
+ ---
574
+
575
+ **Lembre-se:** O objetivo da memória é preservar conhecimento importante entre sessões, não registrar toda a conversa. Seja seletivo, específico e organizado!
package/README.md CHANGED
@@ -249,6 +249,33 @@ npm start
249
249
 
250
250
  Para alterar a versão do servidor MCP, basta modificar o campo `version` no arquivo `package.json`. O `index.ts` lê automaticamente a versão do package.json em tempo de execução.
251
251
 
252
+ ## Documentação Adicional
253
+
254
+ ### CLAUDE.md
255
+
256
+ Documentação completa para IAs sobre como usar corretamente o sistema de memória. Inclui:
257
+
258
+ - Workflow recomendado por sessão
259
+ - Guia de quando usar cada comando
260
+ - O que salvar vs não salvar
261
+ - Formato recomendado
262
+ - Dicas práticas e exemplos
263
+ - Erros comuns e como evitar
264
+
265
+ **Para IAs:** Leia CLAUDE.md para entender como usar este sistema eficientemente.
266
+
267
+ ### AGENTS.md
268
+
269
+ Guia específico para cada tipo de subagent sobre como usar a memória de forma alinhada com sua especialização. Inclui:
270
+
271
+ - O que cada tipo de agent deve salvar
272
+ - Formato de memória recomendado por agent
273
+ - Exemplos práticos por tipo
274
+ - Compartilhamento de informações entre agents
275
+ - Boas práticas específicas
276
+
277
+ **Para Subagents:** Consulte a seção relevante em AGENTS.md para orientações específicas do seu tipo.
278
+
252
279
  ## Licença
253
280
 
254
281
  MIT © Koda AI Studio
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  /**
2
3
  * Memory MCP Server - Sistema de memória persistente para subagents
3
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  /**
2
3
  * Memory MCP Server - Sistema de memória persistente para subagents
3
4
  *
@@ -571,6 +572,46 @@ Exemplos de busca úteis: "padrão", "bug", "TypeScript", "Firebase", "erro"
571
572
  // INICIALIZAÇÃO
572
573
  // ═══════════════════════════════════════════════════════════════════════════
573
574
  async function main() {
575
+ // Verifica argumentos de linha de comando
576
+ const args = process.argv.slice(2);
577
+ // --version
578
+ if (args.includes("--version") || args.includes("-v")) {
579
+ console.log(`@justmpm/memory v${PACKAGE_VERSION}`);
580
+ process.exit(0);
581
+ }
582
+ // --help
583
+ if (args.includes("--help") || args.includes("-h")) {
584
+ console.log(`
585
+ @justmpm/memory - MCP Server para gerenciar memória persistente de subagents
586
+
587
+ Versão: ${PACKAGE_VERSION}
588
+
589
+ USO:
590
+ memory Inicia o servidor MCP (comunicação via stdio)
591
+ memory --version Mostra a versão do pacote
592
+ memory --help Mostra esta mensagem de ajuda
593
+
594
+ COMANDOS MCP:
595
+ - read Lê a memória de um agent
596
+ - write Substitui toda a memória
597
+ - append Adiciona uma entrada ao final
598
+ - search Busca texto na memória
599
+ - list Lista todos os agents com memória
600
+
601
+ DOCUMENTAÇÃO:
602
+ Para mais detalhes, consulte:
603
+ - CLAUDE.md (Documentação para IAs)
604
+ - AGENTS.md (Guia para subagents)
605
+ - README.md (Documentação principal)
606
+
607
+ REPOSITÓRIO:
608
+ https://github.com/justmpm/memory-mcp
609
+
610
+ LICENÇA:
611
+ MIT © Koda AI Studio
612
+ `);
613
+ process.exit(0);
614
+ }
574
615
  const transport = new StdioServerTransport();
575
616
  await server.connect(transport);
576
617
  // Não faz log aqui pois o servidor se comunica via stdio