@gabrihhh/jarvis 2.0.0 → 2.0.1

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.
@@ -0,0 +1,163 @@
1
+ # Memory Index — Indexar Repositório no Grafo de Memória
2
+
3
+ Você vai analisar o repositório atual de forma exaustiva e indexar seu entendimento no Neo4j. **Não grave nada sem aprovação explícita do usuário.**
4
+
5
+ ## REGRA GLOBAL
6
+ - Se travar em qualquer ponto — dúvida técnica, conceitual, arquivo ilegível, ambiguidade de qualquer natureza — **pare e pergunte ao usuário** antes de continuar
7
+ - Não há limite de perguntas. Prefira perguntar a gravar algo errado
8
+ - Só chame a MCP tool `save-project` após o usuário dizer explicitamente "pode salvar" ou equivalente
9
+
10
+ ---
11
+
12
+ ## Passo 0 — Seleção de Branch
13
+
14
+ Pergunte ao usuário: **"Deseja indexar o branch `main` ou `qa`?"**
15
+
16
+ Após a resposta, execute:
17
+ ```bash
18
+ git checkout <branch-escolhido>
19
+ git pull origin <branch-escolhido>
20
+ ```
21
+
22
+ Se algum comando falhar (branch inexistente, conflitos, sem remote), pergunte ao usuário o que fazer antes de continuar.
23
+
24
+ Confirme com:
25
+ ```bash
26
+ git branch --show-current
27
+ ```
28
+
29
+ O output deve mostrar o branch escolhido. Se não, pergunte ao usuário.
30
+
31
+ ---
32
+
33
+ ## Passo 1 — Descoberta Inicial
34
+
35
+ Execute para entender a estrutura geral:
36
+
37
+ ```bash
38
+ # Manifesto principal do projeto
39
+ cat package.json 2>/dev/null || cat composer.json 2>/dev/null || cat pyproject.toml 2>/dev/null || cat go.mod 2>/dev/null || echo "Nenhum manifesto padrão encontrado"
40
+
41
+ # Estrutura de diretórios (sem node_modules, .git, dist, build)
42
+ find . -maxdepth 3 -type d \
43
+ ! -path "*/node_modules/*" ! -path "*/.git/*" \
44
+ ! -path "*/dist/*" ! -path "*/build/*" ! -path "*/.next/*"
45
+
46
+ # Arquivos de configuração relevantes
47
+ find . -maxdepth 2 -type f \( -name "*.json" -o -name "*.toml" -o -name "*.yaml" -o -name "*.yml" -o -name "*.env.example" \) \
48
+ ! -path "*/node_modules/*" ! -path "*/.git/*"
49
+ ```
50
+
51
+ Com base no output, identifique:
52
+ - Linguagem principal e framework
53
+ - Diretórios de primeiro e segundo nível como candidatos a módulos
54
+ - Dependências listadas no manifesto
55
+
56
+ Se qualquer coisa não for óbvia, pergunte ao usuário antes de prosseguir.
57
+
58
+ ---
59
+
60
+ ## Passo 2 — Análise Profunda
61
+
62
+ Para cada diretório candidato a módulo identificado:
63
+
64
+ **1. Liste os arquivos:**
65
+ ```bash
66
+ find <diretório> -type f \
67
+ ! -path "*/node_modules/*" ! -path "*/.git/*" \
68
+ ! -name "*.lock" ! -name "package-lock.json"
69
+ ```
70
+
71
+ **2. Leia os arquivos mais relevantes** (entry points, services, controllers, models, routers, handlers):
72
+ - Priorize: `.js`, `.ts`, `.py`, `.php`, `.go`, `.java`, `.rb`
73
+ - Ignore: binários, lock files, arquivos gerados, arquivos minificados
74
+
75
+ **3. Para cada arquivo lido, determine com certeza:**
76
+ - **Responsabilidade:** o que este arquivo faz?
77
+ - **Imports/Exports:** quais módulos ele usa ou expõe?
78
+ - **Padrões:** Repository, Service Layer, MVC, Factory, Middleware, etc.?
79
+ - **Domínio de negócio:** a qual área pertence (autenticação, pedidos, faturamento, etc.)?
80
+
81
+ **A qualquer momento que não tiver 100% de certeza → pergunte ao usuário.**
82
+
83
+ Exemplos de perguntas válidas:
84
+ - "A pasta `src/oms/` é o módulo de gestão de pedidos?"
85
+ - "O arquivo `auth.service.js` usa JWT ou sessões?"
86
+ - "Qual é o domínio de negócio de `src/billing/`?"
87
+ - "Este diretório `src/shared/` contém utilitários compartilhados?"
88
+ - "Esse padrão aqui é Repository ou Service Layer?"
89
+
90
+ ---
91
+
92
+ ## Passo 3 — Montagem do Mapa
93
+
94
+ Ao concluir a análise, consolide mentalmente (sem gravar ainda) o mapa completo:
95
+
96
+ ```
97
+ Projeto: <nome> [<branch>]
98
+ Linguagem: <linguagem>
99
+ Descrição: <descrição curta do que o projeto faz>
100
+
101
+ Módulos:
102
+ - <nome> | Domínio: <domínio> | Path: <path>
103
+ Arquivos: [lista com propósito de cada um]
104
+ Padrões: [padrões de código identificados]
105
+ Conceitos: [conceitos de negócio]
106
+ Depende de: [outros módulos do projeto]
107
+
108
+ Padrões globais do projeto: [lista]
109
+ Dependências externas relevantes: [nome, versão, tipo]
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Passo 4 — Apresentação para Aprovação
115
+
116
+ Apresente o mapa completo ao usuário de forma clara e legível.
117
+
118
+ Diga ao final: **"Este é meu entendimento completo do projeto. Revise, corrija o que estiver errado, e quando estiver tudo certo me diga 'pode salvar'."**
119
+
120
+ Aguarde a resposta. Se o usuário corrigir algo:
121
+ - Atualize o mapa
122
+ - Confirme as correções: "Entendido. Corrigi X para Y. Mais alguma correção?"
123
+ - Repita até aprovação explícita
124
+
125
+ ---
126
+
127
+ ## Passo 5 — Gravação
128
+
129
+ Após aprovação explícita do usuário, chame a MCP tool `save-project` com o objeto completo:
130
+
131
+ ```json
132
+ {
133
+ "project": {
134
+ "name": "<nome do projeto>",
135
+ "path": "<path absoluto do repositório>",
136
+ "description": "<descrição>",
137
+ "language": "<linguagem principal>",
138
+ "branch": "<branch escolhido>"
139
+ },
140
+ "modules": [
141
+ {
142
+ "name": "<nome do módulo>",
143
+ "path": "<path relativo>",
144
+ "domain": "<domínio de negócio>",
145
+ "files": [
146
+ { "path": "<path do arquivo>", "purpose": "<responsabilidade>" }
147
+ ],
148
+ "patterns": ["<padrão identificado>"],
149
+ "concepts": ["<conceito de negócio>"],
150
+ "dependsOn": ["<nome de outro módulo do projeto>"]
151
+ }
152
+ ],
153
+ "dependencies": [
154
+ { "name": "<nome>", "version": "<versão>", "type": "external" }
155
+ ],
156
+ "patterns": [
157
+ { "name": "<nome>", "description": "<descrição do padrão>" }
158
+ ]
159
+ }
160
+ ```
161
+
162
+ Após a tool retornar sucesso, informe ao usuário:
163
+ **"Projeto `<nome>` [<branch>] indexado com sucesso no grafo de memória."**
@@ -0,0 +1,108 @@
1
+ # Setup Memory — Preparar ambiente Neo4j e MCP Server
2
+
3
+ Você vai configurar o ambiente de memória semântica para o Claude Code. Siga este fluxo exato, passo a passo.
4
+
5
+ ## REGRA GLOBAL
6
+ Se travar em qualquer etapa — erro inesperado, permissão negada, output estranho — **pare e pergunte ao usuário o que deve ser feito** antes de continuar.
7
+
8
+ ---
9
+
10
+ ## Passo 1 — Verificar Docker
11
+
12
+ Execute:
13
+ ```bash
14
+ docker --version
15
+ ```
16
+
17
+ **Se não instalado:**
18
+ - Pergunte: "Docker não encontrado. Posso tentar instalar agora? (requer sudo)"
19
+ - Se aprovado, detecte o OS (`cat /etc/os-release` ou `uname -a`) e instale:
20
+ - Ubuntu/Debian: `sudo apt-get update && sudo apt-get install -y docker.io`
21
+ - Fedora/RHEL: `sudo dnf install -y docker`
22
+ - macOS: instrua a instalar Docker Desktop manualmente e aguarde confirmação do usuário
23
+ - Se a instalação falhar por qualquer motivo: informe o erro, forneça o link https://docs.docker.com/get-docker/ e aguarde o usuário confirmar que instalou antes de continuar
24
+
25
+ Execute:
26
+ ```bash
27
+ docker info
28
+ ```
29
+
30
+ **Se daemon não rodando:**
31
+ - Pergunte: "Docker está instalado mas não está rodando. Posso iniciar? (requer sudo)"
32
+ - Se aprovado:
33
+ - Linux: `sudo systemctl start docker`
34
+ - macOS: instrua a abrir o Docker Desktop
35
+ - Se falhar: pergunte ao usuário o que fazer
36
+
37
+ ---
38
+
39
+ ## Passo 2 — Verificar container Neo4j
40
+
41
+ Execute:
42
+ ```bash
43
+ docker ps -a --filter name=claude-memory --format "{{.Status}}"
44
+ ```
45
+
46
+ - Se retornar linha começando com `Up`: container já está rodando → **pule para o Passo 4**
47
+ - Se retornar linha começando com `Exited`: execute `docker start claude-memory` e aguarde 10s antes de continuar
48
+ - Se não retornar nada: siga para o Passo 3
49
+
50
+ ---
51
+
52
+ ## Passo 3 — Subir Neo4j (primeira vez)
53
+
54
+ Execute:
55
+ ```bash
56
+ docker run -d \
57
+ --name claude-memory \
58
+ -p 7474:7474 -p 7687:7687 \
59
+ -e NEO4J_AUTH=neo4j/claudememory \
60
+ --restart unless-stopped \
61
+ neo4j:latest
62
+ ```
63
+
64
+ Aguarde Neo4j estar pronto com polling (até 60 segundos):
65
+ ```bash
66
+ for i in $(seq 1 12); do
67
+ docker exec claude-memory cypher-shell -u neo4j -p claudememory "RETURN 1" 2>/dev/null && echo "Neo4j pronto!" && break
68
+ echo "Aguardando Neo4j iniciar... ($i/12)"
69
+ sleep 5
70
+ done
71
+ ```
72
+
73
+ Se não ficar pronto após 60 segundos: pergunte ao usuário o que fazer.
74
+
75
+ ---
76
+
77
+ ## Passo 4 — Registrar MCP Server
78
+
79
+ Descubra o caminho absoluto do bin `jarvis-memory`:
80
+ ```bash
81
+ which jarvis-memory 2>/dev/null || realpath bin/jarvis-memory.js
82
+ ```
83
+
84
+ Leia o arquivo `~/.claude/settings.json`. Se não existir, trate como `{}`.
85
+
86
+ Adicione ou atualize a chave `mcpServers.claude-memory` preservando todas as outras chaves existentes:
87
+ ```json
88
+ {
89
+ "mcpServers": {
90
+ "jarvis-memory": {
91
+ "command": "node",
92
+ "args": ["<CAMINHO_ABSOLUTO_DO_BIN>"]
93
+ }
94
+ }
95
+ }
96
+ ```
97
+
98
+ Salve o arquivo `~/.claude/settings.json`.
99
+
100
+ ---
101
+
102
+ ## Passo 5 — Confirmação Final
103
+
104
+ Informe ao usuário:
105
+ - "Neo4j rodando em http://localhost:7474 (interface web) e bolt://localhost:7687"
106
+ - "MCP server `jarvis-memory` registrado em ~/.claude/settings.json"
107
+ - "**Reinicie o Claude Code** para que o MCP server seja ativado"
108
+ - "Após reiniciar, use `/memory-index` para indexar seu primeiro repositório"
@@ -0,0 +1,25 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(head -50 ~/.claude/telemetry/*.json)",
5
+ "Bash(grep -l \"usage\\\\|tokens\\\\|cost\\\\|model\" ~/.claude/projects/*/*.jsonl)",
6
+ "Bash(xargs -I {} sh -c 'echo \"=== {} ===\" && cat {}')",
7
+ "Bash(chmod +x /tmp/analyze_claude_data.sh)",
8
+ "Bash(/tmp/analyze_claude_data.sh)",
9
+ "Read(//tmp/**)",
10
+ "Bash(chmod +x:*)",
11
+ "Bash(npm install:*)",
12
+ "Bash(node:*)",
13
+ "Bash(claude-usage:*)",
14
+ "Bash(COLUMNS=60 node -e \"process.stdout.columns=60; import\\('./bin/claude-usage.js'\\)\")",
15
+ "Bash(npm set:*)",
16
+ "Bash(git init:*)",
17
+ "Bash(git add:*)",
18
+ "Bash(git commit -m ':*)",
19
+ "Bash(npm publish:*)",
20
+ "Bash(git commit:*)",
21
+ "Bash(git push:*)",
22
+ "Read(//home/patara/.nvm/versions/node/v18.20.8/lib/node_modules/@gabrihhh/jarvis/**)"
23
+ ]
24
+ }
25
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gabrihhh/jarvis",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Claude Code terminal dashboard + semantic memory graph via Neo4j",
5
5
  "bin": {
6
6
  "jarvis": "bin/jarvis.js",
@@ -12,7 +12,8 @@
12
12
  },
13
13
  "files": [
14
14
  "bin/",
15
- "src/"
15
+ "src/",
16
+ ".claude/"
16
17
  ],
17
18
  "keywords": [
18
19
  "claude",