@gabrihhh/jarvis 2.7.0 → 2.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gabrihhh/jarvis",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "Claude Code terminal dashboard + semantic memory graph via Neo4j",
5
5
  "bin": {
6
6
  "jarvis": "bin/jarvis.js",
@@ -65,12 +65,27 @@ git -C <repo> show-ref --verify --quiet refs/heads/<branch> 2>/dev/null \
65
65
  # exit 0 = existe, exit 1 = não existe
66
66
  ```
67
67
 
68
+ Para repositórios com alterações locais, verifique se as mudanças já foram enviadas ao remote da branch atual:
69
+
70
+ ```bash
71
+ git -C <repo> fetch origin <branch-atual> 2>/dev/null
72
+ git -C <repo> diff origin/<branch-atual>
73
+ ```
74
+
75
+ Se o diff for vazio, as alterações já estão no remote — descarte automaticamente sem perguntar:
76
+
77
+ ```bash
78
+ git -C <repo> checkout -- .
79
+ git -C <repo> clean -fd
80
+ ```
81
+
68
82
  Classifique cada repositório em uma das categorias:
69
83
 
70
84
  | Categoria | Critério |
71
85
  |---|---|
72
86
  | `PRONTO` | Branch existe, sem alterações locais |
73
- | `COM ALTERAÇÕES` | Branch existe, mas tem mudanças locais |
87
+ | `AUTO-DESCARTADO` | Tinha alterações locais, mas estavam no remote — descartado automaticamente |
88
+ | `COM ALTERAÇÕES` | Branch existe, tem mudanças locais que ainda não subiram ao remote |
74
89
  | `SEM BRANCH` | Branch alvo não existe no repo |
75
90
 
76
91
  ---
@@ -86,18 +101,21 @@ Repositórios encontrados em <pasta atual>:
86
101
  • api-service [main → qa]
87
102
  • frontend [main → qa]
88
103
 
104
+ 🔄 AUTO-DESCARTADOS (alterações já estavam no remote — descartadas automaticamente):
105
+ • worker [qa] — 1 arquivo (já sincronizado com origin/qa)
106
+
89
107
  ⚠️ COM ALTERAÇÕES LOCAIS (aguardando decisão):
90
108
  • backend [qa] — 3 arquivos modificados
91
109
 
92
110
  ✗ SEM BRANCH "qa" (serão ignorados):
93
111
  • legacy-app — branch "qa" não encontrado
94
112
 
95
- Total: 4 repositórios | 2 prontos | 1 com alterações | 1 sem branch
113
+ Total: 5 repositórios | 2 prontos | 1 auto-descartado | 1 com alterações | 1 sem branch
96
114
  ```
97
115
 
98
- Pergunte: **"Posso prosseguir? Vou tratar os repositórios com alterações um a um antes de continuar."**
116
+ **Se não houver nenhum repositório COM ALTERAÇÕES:** prossiga automaticamente para o Passo 6, sem pedir confirmação.
99
117
 
100
- Aguarde confirmação antes de continuar.
118
+ **Se houver repositórios COM ALTERAÇÕES:** pergunte: **"Posso prosseguir? Vou tratar os repositórios com alterações um a um antes de continuar."** e aguarde confirmação antes de continuar.
101
119
 
102
120
  ---
103
121
 
@@ -194,9 +212,10 @@ Resumo — reset-folder <branch>
194
212
  ✅ api-service → <branch> atualizado (pull: 3 commits novos)
195
213
  ✅ frontend → <branch> atualizado (pull: já estava atualizado)
196
214
  ✅ backend → <branch> atualizado (stash criado antes do pull)
215
+ 🔄 worker → <branch> atualizado (alterações locais já estavam no remote — descartadas automaticamente)
197
216
  ⏭️ legacy-app → ignorado (branch "<branch>" não existe)
198
217
 
199
- Concluído. 3 repositórios atualizados, 1 ignorado.
218
+ Concluído. 4 repositórios atualizados, 1 ignorado.
200
219
  ```
201
220
 
202
221
  Se algum repositório ficou com stash pendente, lembre o usuário:
@@ -0,0 +1,267 @@
1
+ ---
2
+ name: submit-folder
3
+ description: Detecta o branch base (qa/main), pergunta se é fix ou feature, cria branch no padrão, faz commit com descrição e push — tudo no repositório atual
4
+ ---
5
+
6
+ # /submit-folder — Submeter Alterações do Repositório Atual
7
+
8
+ ## Uso
9
+
10
+ ```
11
+ /submit-folder
12
+ ```
13
+
14
+ Sem argumentos. O comando detecta automaticamente o branch base.
15
+
16
+ ---
17
+
18
+ ## REGRA GLOBAL
19
+
20
+ - Nunca executar `git add`, `commit` ou `push` sem aprovação explícita do usuário
21
+ - Nunca subir arquivos de ambiente ou segredos — bloquear e avisar sempre que encontrado
22
+ - Se travar em qualquer ponto — erro inesperado, ambiguidade — **pare e pergunte ao usuário**
23
+ - Sempre mostrar o que será feito antes de executar qualquer ação destrutiva
24
+
25
+ ---
26
+
27
+ ## Passo 1 — Verificar repositório e alterações
28
+
29
+ Confirme que o diretório atual é um repositório git:
30
+
31
+ ```bash
32
+ git rev-parse --is-inside-work-tree 2>/dev/null
33
+ ```
34
+
35
+ Se não for um repositório git, informe:
36
+ **"Este diretório não é um repositório git. Navegue para um repositório antes de usar `/submit-folder`."**
37
+ Interrompa aqui.
38
+
39
+ Verifique se há alterações pendentes:
40
+
41
+ ```bash
42
+ git status --short
43
+ ```
44
+
45
+ Se não houver nenhuma alteração (output vazio):
46
+ **"Nenhuma alteração pendente encontrada. Nada a submeter."**
47
+ Interrompa aqui.
48
+
49
+ ---
50
+
51
+ ## Passo 2 — Detectar branch base (qa ou main)
52
+
53
+ Execute os comandos abaixo para determinar a origem das alterações:
54
+
55
+ ```bash
56
+ # Branch atual
57
+ git branch --show-current
58
+
59
+ # Verificar relação com qa e main
60
+ git log --oneline origin/qa..HEAD 2>/dev/null | wc -l
61
+ git log --oneline origin/main..HEAD 2>/dev/null | wc -l
62
+ ```
63
+
64
+ **Lógica de detecção:**
65
+
66
+ 1. Se o branch atual **é** `qa` ou `main` → esse é o `BRANCH_BASE`
67
+ 2. Se o branch atual é outro (ex: já numa feature branch):
68
+ - Calcule quantos commits existem desde cada base
69
+ - O branch com **menos commits de distância** é o `BRANCH_BASE`
70
+ - Em caso de empate, use `git merge-base` para confirmar:
71
+ ```bash
72
+ git merge-base HEAD origin/qa
73
+ git merge-base HEAD origin/main
74
+ # Compare qual merge-base é mais recente (mais próximo de HEAD)
75
+ git rev-list --count <merge-base-qa>..HEAD
76
+ git rev-list --count <merge-base-main>..HEAD
77
+ ```
78
+ 3. Se `origin/qa` não existir, use `main` como `BRANCH_BASE`
79
+ 4. Se nenhum dos dois existir no remote, pergunte ao usuário:
80
+ **"Não encontrei `origin/qa` nem `origin/main`. Qual é o branch base das suas alterações?"**
81
+
82
+ Defina internamente:
83
+ - `BRANCH_BASE` = `qa` ou `main`
84
+ - `LABEL` = `QA` ou `MAIN`
85
+
86
+ ---
87
+
88
+ ## Passo 3 — Verificar arquivos sensíveis (BLOQUEIO DE SEGURANÇA)
89
+
90
+ Antes de qualquer `git add`, verifique se há arquivos sensíveis nas alterações:
91
+
92
+ ```bash
93
+ git diff --name-only
94
+ git diff --cached --name-only
95
+ git ls-files --others --exclude-standard
96
+ ```
97
+
98
+ Bloqueie arquivos que correspondam a qualquer um destes padrões:
99
+
100
+ ```
101
+ .env
102
+ .env.*
103
+ *.env
104
+ *.pem
105
+ *.key
106
+ *.p12
107
+ *.pfx
108
+ secrets.*
109
+ *secret*
110
+ *credentials*
111
+ *password*
112
+ *.token
113
+ ```
114
+
115
+ Se encontrar qualquer arquivo bloqueado, **não prossiga**. Informe:
116
+
117
+ ```
118
+ ⛔ Arquivo sensível detectado:
119
+ • .env.local
120
+ • config/secrets.json
121
+
122
+ Corrija o .gitignore ou remova os arquivos antes de tentar novamente.
123
+ ```
124
+
125
+ Interrompa aqui.
126
+
127
+ ---
128
+
129
+ ## Passo 4 — Analisar o que foi alterado
130
+
131
+ Execute:
132
+
133
+ ```bash
134
+ git diff
135
+ git diff --cached
136
+ git status --short
137
+ ```
138
+
139
+ Com base no diff, entenda:
140
+ - Quais arquivos foram modificados, adicionados ou removidos
141
+ - Qual o propósito das alterações (correção de bug, nova funcionalidade, ajuste, etc.)
142
+
143
+ ---
144
+
145
+ ## Passo 5 — Perguntar tipo (fix ou feature)
146
+
147
+ Apresente um resumo do que foi encontrado e pergunte:
148
+
149
+ ```
150
+ Branch base detectado: qa (ou main)
151
+
152
+ Alterações encontradas:
153
+ M src/auth/login.ts
154
+ M src/auth/middleware.ts
155
+ ?? src/utils/tokenHelper.ts
156
+
157
+ Isso é um fix ou uma feature?
158
+ [1] fix — correção de bug, ajuste, hotfix
159
+ [2] feat — nova funcionalidade, melhoria, adição
160
+ ```
161
+
162
+ Aguarde resposta do usuário. Aceite variações como:
163
+ - "fix", "1", "correção", "bug" → `TIPO = fix`, `PREFIXO_COMMIT = fix:`
164
+ - "feat", "feature", "2", "funcionalidade", "melhoria" → `TIPO = feat`, `PREFIXO_COMMIT = feat:`
165
+
166
+ ---
167
+
168
+ ## Passo 6 — Propor branch, commit e descrição
169
+
170
+ Com base no diff e no tipo confirmado, proponha:
171
+
172
+ **Branch** no padrão: `<tipo>/<branch_base>/<slugCamelCase>`
173
+ - Slug em camelCase, curto (3–5 palavras), descritivo do que foi feito
174
+ - Exemplos: `correcaoValidacaoToken`, `novaTelaLogin`, `ajusteMiddlewareAuth`
175
+
176
+ **Commit** no padrão: `<prefixo_commit> [<LABEL>] <Título breve>`
177
+ - Título em português, conciso, sem ponto final
178
+ - Exemplos: `fix: [QA] Correção na validação do token`, `feat: [MAIN] Nova tela de login`
179
+
180
+ **Descrição do commit**: 3–6 linhas explicando o que foi alterado e por quê, baseado no diff.
181
+
182
+ Apresente tudo de uma vez e pergunte uma única confirmação:
183
+
184
+ ```
185
+ Detectei: branch base = qa | tipo = fix
186
+
187
+ Branch: fix/qa/correcaoValidacaoToken
188
+ Commit: fix: [QA] Correção na validação do token de autenticação
189
+
190
+ Ajustado o middleware de autenticação para rejeitar tokens
191
+ expirados corretamente. O comportamento anterior permitia
192
+ tokens inválidos em edge cases de timezone.
193
+ Adicionado helper `tokenHelper.ts` para centralizar validação.
194
+
195
+ Posso criar a branch, commitar e fazer push? (confirme ou ajuste o que quiser)
196
+ ```
197
+
198
+ Aguarde resposta:
199
+ - **Confirmar / sim / pode:** prossiga para o Passo 7 com esses dados
200
+ - **Ajuste pontual (ex: "muda o nome da branch para X"):** aplique e prossiga sem nova confirmação
201
+ - **Cancelar:** interrompa sem modificar nada
202
+
203
+ ---
204
+
205
+ ## Passo 7 — Executar: criar branch, add, commit, push
206
+
207
+ ### 7.1 — Criar a branch a partir do branch base
208
+
209
+ ```bash
210
+ git checkout -b <nova-branch> origin/<branch-base>
211
+ ```
212
+
213
+ Se `origin/<branch-base>` não existir localmente:
214
+ ```bash
215
+ git fetch origin <branch-base>
216
+ git checkout -b <nova-branch> origin/<branch-base>
217
+ ```
218
+
219
+ Se a branch já existir, informe o usuário e pergunte se quer usar um nome diferente.
220
+
221
+ ### 7.2 — Adicionar arquivos
222
+
223
+ ```bash
224
+ git add .
225
+ ```
226
+
227
+ Confirme o que foi staged:
228
+ ```bash
229
+ git status --short
230
+ ```
231
+
232
+ Se arquivos inesperados aparecerem no stage (que não estavam no resumo), avise antes de continuar.
233
+
234
+ ### 7.3 — Fazer commit com mensagem e descrição
235
+
236
+ ```bash
237
+ git commit -m "$(cat <<'EOF'
238
+ <prefixo>: [<LABEL>] <título>
239
+
240
+ <descrição>
241
+ EOF
242
+ )"
243
+ ```
244
+
245
+ Se o commit falhar (hook rejeitou, nada para commitar, etc.), informe o erro e pergunte o que fazer.
246
+
247
+ ### 7.4 — Fazer push
248
+
249
+ ```bash
250
+ git push origin <nova-branch>
251
+ ```
252
+
253
+ Se o push falhar, informe o erro e pergunte ao usuário o que fazer.
254
+
255
+ ---
256
+
257
+ ## Passo 8 — Resumo Final
258
+
259
+ ```
260
+ ✅ submit-folder concluído
261
+
262
+ Branch base: qa
263
+ Tipo: fix
264
+ Branch: fix/qa/correcaoValidacaoToken
265
+ Commit: fix: [QA] Correção na validação do token de autenticação
266
+ Push: origin/fix/qa/correcaoValidacaoToken ✓
267
+ ```
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: folder-submit
2
+ name: submit-folders
3
3
  description: Cria branches, commita e faz push das alterações em todos os repositórios git filhos com mudanças locais pendentes
4
4
  ---
5
5
 
6
- # /folder-submit — Submeter Alterações dos Repositórios Filhos
6
+ # /submit-folders — Submeter Alterações dos Repositórios Filhos
7
7
 
8
8
  ## Uso
9
9
 
@@ -135,69 +135,38 @@ Continue normalmente com os demais repositórios.
135
135
 
136
136
  Para cada repositório aprovado (sem arquivos sensíveis), **um de cada vez**:
137
137
 
138
- **5.1 — Mostrar resumo das alterações:**
139
-
140
- ```bash
141
- git -C <repo> diff --stat
142
- git -C <repo> status --short
143
- ```
144
-
145
- **5.2 — Perguntar tipo e mensagem:**
146
-
147
- ```
148
- Repositório: api-service
149
-
150
- Alterações:
151
- M src/auth/login.js
152
- M src/auth/middleware.js
153
- ?? src/utils/newHelper.js
154
-
155
- [1] fix — correção de bug, ajuste, hotfix
156
- [2] feature — funcionalidade nova, melhoria
157
-
158
- Qual o tipo? E qual a mensagem curta da branch? (será usada em camelCase)
159
- Exemplo: "correcaoValidacaoToken" ou "novaTelaLogin"
160
- ```
161
-
162
- Aguarde a resposta do usuário. Valide:
163
- - Tipo deve ser `fix` ou `feature`
164
- - Mensagem deve ser curta (sem espaços — se o usuário mandar com espaços, converta para camelCase automaticamente)
165
-
166
- Monte o nome da branch:
167
- ```
168
- <tipo>/<branch-alvo>/<mensagem>
169
- Exemplo: fix/qa/correcaoValidacaoToken
170
- ```
171
-
172
- **5.3 — Gerar mensagem de commit:**
173
-
174
- Analise o diff para entender o que foi alterado:
138
+ **5.1 — Analisar diff e propor tudo de uma vez:**
175
139
 
176
140
  ```bash
177
141
  git -C <repo> diff
142
+ git -C <repo> diff --cached
178
143
  ```
179
144
 
180
- Proponha uma mensagem de commit no padrão:
145
+ Com base no diff, decida autonomamente:
146
+ - **Tipo**: `fix` se for correção/ajuste, `feat` se for funcionalidade nova ou melhoria
147
+ - **Slug da branch**: camelCase curto que descreva a alteração (ex: `correcaoValidacaoToken`)
148
+ - **Título do commit**: breve, no padrão `<tipo>: [<LABEL>] <título>`
149
+ - **Descrição do commit**: o que foi feito e por quê, baseado no diff
181
150
 
182
- ```
183
- [<LABEL>] <título breve da alteração>
151
+ Apresente tudo junto e pergunte **uma única vez**:
184
152
 
185
- <descrição do que foi feito e por quê, baseada no diff>
186
153
  ```
154
+ Repositório: api-service
187
155
 
188
- Exemplo:
189
- ```
190
- [QA] Correção na validação do token de autenticação
156
+ Branch: fix/qa/correcaoValidacaoToken
157
+ Commit: fix: [QA] Correção na validação do token de autenticação
191
158
 
192
- Ajustado o middleware de autenticação para rejeitar tokens expirados
193
- corretamente. O comportamento anterior permitia tokens com expiração
194
- inválida passarem pela validação em edge cases de timezone.
195
- ```
159
+ Ajustado o middleware de autenticação para rejeitar tokens
160
+ expirados corretamente. O comportamento anterior permitia
161
+ tokens inválidos passarem em edge cases de timezone.
196
162
 
197
- Mostre a mensagem proposta e pergunte:
198
- **"Essa mensagem está correta? Pode ajustar o título ou a descrição se quiser."**
163
+ Posso subir assim? (ajuste o que quiser ou confirme para prosseguir)
164
+ ```
199
165
 
200
- prossiga após aprovação ou ajuste do usuário.
166
+ Aguarde resposta:
167
+ - **Confirmar / sim / pode:** prossiga para o Passo 6 com esses dados
168
+ - **Ajuste pontual:** aplique e prossiga sem nova confirmação
169
+ - **Cancelar:** pule este repositório e siga para o próximo
201
170
 
202
171
  ---
203
172
 
@@ -234,7 +203,7 @@ Se arquivos inesperados aparecerem no stage (ex: arquivos que não estavam no re
234
203
 
235
204
  ```bash
236
205
  git -C <repo> commit -m "$(cat <<'EOF'
237
- [<LABEL>] <título>
206
+ <tipo>: [<LABEL>] <título>
238
207
 
239
208
  <descrição>
240
209
  EOF
@@ -264,17 +233,17 @@ Se o push falhar, informe o erro e pergunte ao usuário o que fazer.
264
233
  Ao concluir todos os repositórios, apresente o resultado:
265
234
 
266
235
  ```
267
- Resumo — folder-submit <branch-alvo>
236
+ Resumo — submit-folders <branch-alvo>
268
237
 
269
238
  ✅ api-service
270
239
  Branch: fix/qa/correcaoValidacaoToken
271
- Commit: [QA] Correção na validação do token de autenticação
240
+ Commit: fix: [QA] Correção na validação do token de autenticação
272
241
  Push: origin/fix/qa/correcaoValidacaoToken ✓
273
242
 
274
243
  ✅ frontend
275
- Branch: feature/qa/novaTelaLogin
276
- Commit: [QA] Nova tela de login com validação em tempo real
277
- Push: origin/feature/qa/novaTelaLogin ✓
244
+ Branch: feat/qa/novaTelaLogin
245
+ Commit: feat: [QA] Nova tela de login com validação em tempo real
246
+ Push: origin/feat/qa/novaTelaLogin ✓
278
247
 
279
248
  ⛔ config-service → ignorado (arquivo .env detectado)
280
249
 
@@ -282,5 +251,5 @@ Concluído. 2 branches criadas e publicadas, 1 ignorado por segurança.
282
251
 
283
252
  Branches criadas:
284
253
  • fix/qa/correcaoValidacaoToken
285
- feature/qa/novaTelaLogin
254
+ feat/qa/novaTelaLogin
286
255
  ```