@andrebuzeli/git-mcp 2.28.2 → 2.29.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.
Files changed (83) hide show
  1. package/dist/providers/error-handler.d.ts +24 -0
  2. package/dist/providers/error-handler.d.ts.map +1 -1
  3. package/dist/providers/error-handler.js +59 -0
  4. package/dist/providers/error-handler.js.map +1 -1
  5. package/dist/server.js +11 -11
  6. package/dist/server.js.map +1 -1
  7. package/dist/tools/git-archive.d.ts +13 -9
  8. package/dist/tools/git-archive.d.ts.map +1 -1
  9. package/dist/tools/git-archive.js +34 -21
  10. package/dist/tools/git-archive.js.map +1 -1
  11. package/dist/tools/git-branches.d.ts +150 -146
  12. package/dist/tools/git-branches.d.ts.map +1 -1
  13. package/dist/tools/git-branches.js +184 -171
  14. package/dist/tools/git-branches.js.map +1 -1
  15. package/dist/tools/git-commits.d.ts +161 -157
  16. package/dist/tools/git-commits.d.ts.map +1 -1
  17. package/dist/tools/git-commits.js +200 -187
  18. package/dist/tools/git-commits.js.map +1 -1
  19. package/dist/tools/git-config.d.ts +18 -14
  20. package/dist/tools/git-config.d.ts.map +1 -1
  21. package/dist/tools/git-config.js +57 -44
  22. package/dist/tools/git-config.js.map +1 -1
  23. package/dist/tools/git-files.d.ts +204 -200
  24. package/dist/tools/git-files.d.ts.map +1 -1
  25. package/dist/tools/git-files.js +233 -220
  26. package/dist/tools/git-files.js.map +1 -1
  27. package/dist/tools/git-initialize.d.ts +46 -42
  28. package/dist/tools/git-initialize.d.ts.map +1 -1
  29. package/dist/tools/git-initialize.js +81 -68
  30. package/dist/tools/git-initialize.js.map +1 -1
  31. package/dist/tools/git-issues.d.ts +193 -189
  32. package/dist/tools/git-issues.d.ts.map +1 -1
  33. package/dist/tools/git-issues.js +238 -225
  34. package/dist/tools/git-issues.js.map +1 -1
  35. package/dist/tools/git-pulls.d.ts +212 -208
  36. package/dist/tools/git-pulls.d.ts.map +1 -1
  37. package/dist/tools/git-pulls.js +238 -225
  38. package/dist/tools/git-pulls.js.map +1 -1
  39. package/dist/tools/git-releases.d.ts +160 -156
  40. package/dist/tools/git-releases.d.ts.map +1 -1
  41. package/dist/tools/git-releases.js +183 -170
  42. package/dist/tools/git-releases.js.map +1 -1
  43. package/dist/tools/git-remote.d.ts +9 -5
  44. package/dist/tools/git-remote.d.ts.map +1 -1
  45. package/dist/tools/git-remote.js +26 -13
  46. package/dist/tools/git-remote.js.map +1 -1
  47. package/dist/tools/git-repositories.d.ts +179 -175
  48. package/dist/tools/git-repositories.d.ts.map +1 -1
  49. package/dist/tools/git-repositories.js +230 -217
  50. package/dist/tools/git-repositories.js.map +1 -1
  51. package/dist/tools/git-reset.d.ts +13 -9
  52. package/dist/tools/git-reset.d.ts.map +1 -1
  53. package/dist/tools/git-reset.js +27 -14
  54. package/dist/tools/git-reset.js.map +1 -1
  55. package/dist/tools/git-revert.d.ts +14 -10
  56. package/dist/tools/git-revert.d.ts.map +1 -1
  57. package/dist/tools/git-revert.js +30 -17
  58. package/dist/tools/git-revert.js.map +1 -1
  59. package/dist/tools/git-stash.d.ts +10 -6
  60. package/dist/tools/git-stash.d.ts.map +1 -1
  61. package/dist/tools/git-stash.js +23 -10
  62. package/dist/tools/git-stash.js.map +1 -1
  63. package/dist/tools/git-sync.d.ts +18 -14
  64. package/dist/tools/git-sync.d.ts.map +1 -1
  65. package/dist/tools/git-sync.js +46 -33
  66. package/dist/tools/git-sync.js.map +1 -1
  67. package/dist/tools/git-tags.d.ts +137 -133
  68. package/dist/tools/git-tags.d.ts.map +1 -1
  69. package/dist/tools/git-tags.js +164 -151
  70. package/dist/tools/git-tags.js.map +1 -1
  71. package/dist/tools/git-upload-project.d.ts +5 -1
  72. package/dist/tools/git-upload-project.d.ts.map +1 -1
  73. package/dist/tools/git-upload-project.js +21 -1
  74. package/dist/tools/git-upload-project.js.map +1 -1
  75. package/dist/tools/git-webhooks.d.ts +147 -143
  76. package/dist/tools/git-webhooks.d.ts.map +1 -1
  77. package/dist/tools/git-webhooks.js +174 -157
  78. package/dist/tools/git-webhooks.js.map +1 -1
  79. package/dist/utils/git-error-analyzer.d.ts +64 -0
  80. package/dist/utils/git-error-analyzer.d.ts.map +1 -0
  81. package/dist/utils/git-error-analyzer.js +286 -0
  82. package/dist/utils/git-error-analyzer.js.map +1 -0
  83. package/package.json +2 -2
@@ -8,50 +8,50 @@ const terminal_controller_js_1 = require("../utils/terminal-controller.js");
8
8
  /**
9
9
  * Tool: commits
10
10
  *
11
- * DESCRIÇÃO:
11
+ * DESCRIÇÃO:
12
12
  * Gerenciamento completo de commits com suporte multi-provider (GitHub e Gitea)
13
13
  *
14
14
  * FUNCIONALIDADES:
15
- * - Listagem de histórico de commits
16
- * - Obtenção de detalhes específicos
17
- * - Criação de novos commits
18
- * - Comparação entre commits
19
- * - Busca por mensagens e conteúdo
20
- * - Análise de mudanças
15
+ * - Listagem de histórico de commits
16
+ * - Obtenção de detalhes específicos
17
+ * - Criação de novos commits
18
+ * - Comparação entre commits
19
+ * - Busca por mensagens e conteúdo
20
+ * - Análise de mudanças
21
21
  *
22
22
  * USO:
23
- * - Para acompanhar histórico de mudanças
24
- * - Para analisar evolução do código
23
+ * - Para acompanhar histórico de mudanças
24
+ * - Para analisar evolução do código
25
25
  * - Para criar commits programaticamente
26
- * - Para auditoria de mudanças
26
+ * - Para auditoria de mudanças
27
27
  *
28
- * RECOMENDAÇÕES:
28
+ * RECOMENDAÇÕES:
29
29
  * - Use mensagens de commit descritivas
30
- * - Mantenha commits atômicos
31
- * - Documente mudanças importantes
32
- * - Revise histórico regularmente
30
+ * - Mantenha commits atômicos
31
+ * - Documente mudanças importantes
32
+ * - Revise histórico regularmente
33
33
  */
34
34
  /**
35
- * Schema de validação para entrada da tool commits
35
+ * Schema de validação para entrada da tool commits
36
36
  *
37
- * VALIDAÇÕES:
38
- * - action: Ação obrigatória (list, get, create, compare, search)
39
- * - Parâmetros específicos por ação
40
- * - Validação de tipos e formatos
37
+ * VALIDAÇÕES:
38
+ * - action: Ação obrigatória (list, get, create, compare, search)
39
+ * - Parâmetros específicos por ação
40
+ * - Validação de tipos e formatos
41
41
  *
42
- * RECOMENDAÇÕES:
42
+ * RECOMENDAÇÕES:
43
43
  * - Sempre valide entrada antes de usar
44
- * - Use parâmetros opcionais adequadamente
45
- * - Documente parâmetros obrigatórios
44
+ * - Use parâmetros opcionais adequadamente
45
+ * - Documente parâmetros obrigatórios
46
46
  */
47
47
  const CommitsInputSchema = zod_1.z.object({
48
48
  action: zod_1.z.enum(['list', 'get', 'create', 'compare', 'search', 'push', 'pull']),
49
- // Parâmetros comuns
49
+ // Parâmetros comuns
50
50
  // owner: obtido automaticamente do provider,
51
51
  repo: zod_1.z.string(),
52
52
  projectPath: zod_1.z.string().describe('Local project path for git operations'),
53
53
  // Para multi-provider
54
- provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Provider específico: gitea, github ou both
54
+ provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Provider específico: gitea, github ou both
55
55
  // Para list
56
56
  sha: zod_1.z.string().optional(),
57
57
  page: zod_1.z.number().min(1).optional(),
@@ -73,11 +73,11 @@ const CommitsInputSchema = zod_1.z.object({
73
73
  author: zod_1.z.string().optional(),
74
74
  });
75
75
  /**
76
- * Schema de saída padronizado
76
+ * Schema de saída padronizado
77
77
  *
78
78
  * ESTRUTURA:
79
- * - success: Status da operação
80
- * - action: Ação executada
79
+ * - success: Status da operação
80
+ * - action: Ação executada
81
81
  * - message: Mensagem descritiva
82
82
  * - data: Dados retornados (opcional)
83
83
  * - error: Detalhes do erro (opcional)
@@ -92,63 +92,63 @@ const CommitsResultSchema = zod_1.z.object({
92
92
  /**
93
93
  * Tool: commits
94
94
  *
95
- * DESCRIÇÃO:
96
- * Gerenciamento completo de commits Gitea com múltiplas ações
95
+ * DESCRIÇÃO:
96
+ * Gerenciamento completo de commits Gitea com múltiplas ações
97
97
  *
98
- * ACTIONS DISPONÍVEIS:
98
+ * ACTIONS DISPONÍVEIS:
99
99
  *
100
100
  * 1. list - Listar commits
101
- * Parâmetros:
102
- * - owner (obrigatório): Proprietário do repositório
103
- * - repo (obrigatório): Nome do repositório
104
- * - sha (opcional): Branch ou commit específico (padrão: branch padrão)
105
- * - page (opcional): Página da listagem (padrão: 1)
106
- * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
101
+ * Parâmetros:
102
+ * - owner (obrigatório): Proprietário do repositório
103
+ * - repo (obrigatório): Nome do repositório
104
+ * - sha (opcional): Branch ou commit específico (padrão: branch padrão)
105
+ * - page (opcional): Página da listagem (padrão: 1)
106
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
107
107
  *
108
108
  * 2. get - Obter detalhes do commit
109
- * Parâmetros:
110
- * - owner (obrigatório): Proprietário do repositório
111
- * - repo (obrigatório): Nome do repositório
112
- * - commit_sha (obrigatório): SHA do commit
109
+ * Parâmetros:
110
+ * - owner (obrigatório): Proprietário do repositório
111
+ * - repo (obrigatório): Nome do repositório
112
+ * - commit_sha (obrigatório): SHA do commit
113
113
  *
114
114
  * 3. create - Criar novo commit
115
- * Parâmetros:
116
- * - owner (obrigatório): Proprietário do repositório
117
- * - repo (obrigatório): Nome do repositório
118
- * - message (obrigatório): Mensagem do commit
119
- * - branch (obrigatório): Branch de destino
115
+ * Parâmetros:
116
+ * - owner (obrigatório): Proprietário do repositório
117
+ * - repo (obrigatório): Nome do repositório
118
+ * - message (obrigatório): Mensagem do commit
119
+ * - branch (obrigatório): Branch de destino
120
120
  * - author_name (opcional): Nome do autor
121
121
  * - author_email (opcional): Email do autor
122
122
  * - committer_name (opcional): Nome do committer
123
123
  * - committer_email (opcional): Email do committer
124
124
  *
125
125
  * 4. compare - Comparar commits
126
- * Parâmetros:
127
- * - owner (obrigatório): Proprietário do repositório
128
- * - repo (obrigatório): Nome do repositório
129
- * - base (obrigatório): Commit base para comparação
130
- * - head (obrigatório): Commit para comparar
126
+ * Parâmetros:
127
+ * - owner (obrigatório): Proprietário do repositório
128
+ * - repo (obrigatório): Nome do repositório
129
+ * - base (obrigatório): Commit base para comparação
130
+ * - head (obrigatório): Commit para comparar
131
131
  *
132
132
  * 5. search - Buscar commits
133
- * Parâmetros:
134
- * - owner (obrigatório): Proprietário do repositório
135
- * - repo (obrigatório): Nome do repositório
136
- * - query (obrigatório): Termo de busca
133
+ * Parâmetros:
134
+ * - owner (obrigatório): Proprietário do repositório
135
+ * - repo (obrigatório): Nome do repositório
136
+ * - query (obrigatório): Termo de busca
137
137
  * - author (opcional): Autor dos commits
138
- * - page (opcional): Página da busca (padrão: 1)
139
- * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
138
+ * - page (opcional): Página da busca (padrão: 1)
139
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
140
140
  *
141
- * RECOMENDAÇÕES DE USO:
141
+ * RECOMENDAÇÕES DE USO:
142
142
  * - Use mensagens de commit descritivas
143
- * - Mantenha commits atômicos
144
- * - Documente mudanças importantes
145
- * - Revise histórico regularmente
143
+ * - Mantenha commits atômicos
144
+ * - Documente mudanças importantes
145
+ * - Revise histórico regularmente
146
146
  * - Use branches para features
147
- * - Mantenha histórico limpo
147
+ * - Mantenha histórico limpo
148
148
  */
149
149
  exports.commitsTool = {
150
150
  name: 'git-commits',
151
- description: 'tool: Gerencia commits Git completos, histórico, criação e sincronização\n──────────────\naction list: lista commits do repositório\naction list requires: repo, page, limit, provider\n───────────────\naction get: obtém detalhes de commit específico\naction get requires: repo, sha, provider\n───────────────\naction create: cria novo commit\naction create requires: repo, message, branch, provider\n───────────────\naction compare: compara commits/branches\naction compare requires: repo, base, head, provider\n───────────────\naction search: busca commits por critérios\naction search requires: repo, query, author, provider\n───────────────\naction push: envia commits para remoto\naction push requires: repo, branch, provider\n───────────────\naction pull: baixa commits do remoto\naction pull requires: repo, branch, provider',
151
+ description: 'tool: Gerencia commits Git completos, histórico, criação e sincronização\n──────────────\naction list: lista commits do repositório\naction list requires: repo, page, limit, provider\n───────────────\naction get: obtém detalhes de commit específico\naction get requires: repo, sha, provider\n───────────────\naction create: cria novo commit\naction create requires: repo, message, branch, provider\n───────────────\naction compare: compara commits/branches\naction compare requires: repo, base, head, provider\n───────────────\naction search: busca commits por critérios\naction search requires: repo, query, author, provider\n───────────────\naction push: envia commits para remoto\naction push requires: repo, branch, provider\n───────────────\naction pull: baixa commits do remoto\naction pull requires: repo, branch, provider',
152
152
  inputSchema: {
153
153
  type: 'object',
154
154
  properties: {
@@ -181,46 +181,46 @@ exports.commitsTool = {
181
181
  *
182
182
  * FUNCIONALIDADE:
183
183
  * - Valida entrada usando Zod schema
184
- * - Roteia para método específico baseado na ação
184
+ * - Roteia para método específico baseado na ação
185
185
  * - Trata erros de forma uniforme
186
186
  * - Retorna resultado padronizado
187
187
  *
188
188
  * FLUXO:
189
- * 1. Validação de entrada
190
- * 2. Seleção do provider
191
- * 3. Roteamento por ação
192
- * 4. Execução do método específico
189
+ * 1. Validação de entrada
190
+ * 2. Seleção do provider
191
+ * 3. Roteamento por ação
192
+ * 4. Execução do método específico
193
193
  * 5. Tratamento de erros
194
194
  * 6. Retorno de resultado
195
195
  *
196
196
  * TRATAMENTO DE ERROS:
197
- * - Validação: erro de schema
198
- * - Execução: erro da operação
199
- * - Roteamento: ação não suportada
197
+ * - Validação: erro de schema
198
+ * - Execução: erro da operação
199
+ * - Roteamento: ação não suportada
200
200
  *
201
- * RECOMENDAÇÕES:
201
+ * RECOMENDAÇÕES:
202
202
  * - Sempre valide entrada antes de processar
203
- * - Trate erros específicos adequadamente
203
+ * - Trate erros específicos adequadamente
204
204
  * - Log detalhes de erro para debug
205
- * - Retorne mensagens de erro úteis
205
+ * - Retorne mensagens de erro úteis
206
206
  */
207
207
  async handler(input) {
208
208
  try {
209
209
  const validatedInput = CommitsInputSchema.parse(input);
210
- // Aplicar auto-detecção de usuário/owner
210
+ // Aplicar auto-detecção de usuário/owner
211
211
  const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
212
212
  // Obter o provider correto
213
213
  const provider = processedInput.provider
214
214
  ? index_js_1.globalProviderFactory.getProvider(processedInput.provider)
215
215
  : index_js_1.globalProviderFactory.getDefaultProvider();
216
216
  if (!provider) {
217
- throw new Error(`Provider '${processedInput.provider}' não encontrado`);
217
+ throw new Error(`Provider '${processedInput.provider}' não encontrado`);
218
218
  }
219
219
  // Obter o owner do provider
220
220
  const owner = (await provider.getCurrentUser()).login;
221
- // Para ações que precisam de owner, verificar se foi determinado
221
+ // Para ações que precisam de owner, verificar se foi determinado
222
222
  if (!owner && ['list', 'get', 'create', 'compare', 'search'].includes(processedInput.action)) {
223
- throw new Error('Não foi possível determinar o owner automaticamente. Verifique se o token está configurado corretamente.');
223
+ throw new Error('Não foi possível determinar o owner automaticamente. Verifique se o token está configurado corretamente.');
224
224
  }
225
225
  switch (processedInput.action) {
226
226
  case 'list':
@@ -238,51 +238,51 @@ exports.commitsTool = {
238
238
  case 'pull':
239
239
  return await this.pullCommits(processedInput, provider);
240
240
  default:
241
- throw new Error(`Ação não suportada: ${processedInput.action}`);
241
+ throw new Error(`Ação não suportada: ${processedInput.action}`);
242
242
  }
243
243
  }
244
244
  catch (error) {
245
245
  return {
246
246
  success: false,
247
247
  action: input.action,
248
- message: 'Erro na operação de commits',
248
+ message: 'Erro na operação de commits',
249
249
  error: error instanceof Error ? error.message : String(error)
250
250
  };
251
251
  }
252
252
  },
253
253
  /**
254
- * Lista commits do repositório
254
+ * Lista commits do repositório
255
255
  *
256
256
  * FUNCIONALIDADE:
257
- * - Lista commits com paginação
257
+ * - Lista commits com paginação
258
258
  * - Suporta filtro por branch ou commit
259
- * - Retorna informações básicas de cada commit
259
+ * - Retorna informações básicas de cada commit
260
260
  *
261
- * PARÂMETROS OBRIGATÓRIOS:
262
- * - owner: Proprietário do repositório
263
- * - repo: Nome do repositório
261
+ * PARÂMETROS OBRIGATÓRIOS:
262
+ * - owner: Proprietário do repositório
263
+ * - repo: Nome do repositório
264
264
  *
265
- * PARÂMETROS OPCIONAIS:
266
- * - sha: Branch, tag ou commit específico (padrão: branch padrão)
267
- * - page: Página da listagem (padrão: 1)
268
- * - limit: Itens por página (padrão: 30, máximo: 100)
265
+ * PARÂMETROS OPCIONAIS:
266
+ * - sha: Branch, tag ou commit específico (padrão: branch padrão)
267
+ * - page: Página da listagem (padrão: 1)
268
+ * - limit: Itens por página (padrão: 30, máximo: 100)
269
269
  *
270
- * VALIDAÇÕES:
271
- * - e repo obrigatórios
272
- * - SHA deve ser válido se fornecido
270
+ * VALIDAÇÕES:
271
+ * - e repo obrigatórios
272
+ * - SHA deve ser válido se fornecido
273
273
  * - Page deve ser >= 1
274
274
  * - Limit deve ser entre 1 e 100
275
275
  *
276
- * RECOMENDAÇÕES:
277
- * - Use paginação para repositórios grandes
278
- * - Monitore número total de commits
279
- * - Use SHA específico para análise
280
- * - Mantenha histórico organizado
276
+ * RECOMENDAÇÕES:
277
+ * - Use paginação para repositórios grandes
278
+ * - Monitore número total de commits
279
+ * - Use SHA específico para análise
280
+ * - Mantenha histórico organizado
281
281
  */
282
282
  async listCommits(params, provider, owner) {
283
283
  try {
284
284
  if (!owner || !params.repo) {
285
- throw new Error('e repo são obrigatórios');
285
+ throw new Error('e repo são obrigatórios');
286
286
  }
287
287
  const page = params.page || 1;
288
288
  const limit = params.limit || 30;
@@ -296,7 +296,7 @@ exports.commitsTool = {
296
296
  page,
297
297
  limit,
298
298
  total: commits.length,
299
- sha: params.sha || 'branch padrão'
299
+ sha: params.sha || 'branch padrão'
300
300
  }
301
301
  };
302
302
  }
@@ -305,36 +305,36 @@ exports.commitsTool = {
305
305
  }
306
306
  },
307
307
  /**
308
- * Obtém detalhes de um commit específico
308
+ * Obtém detalhes de um commit específico
309
309
  *
310
310
  * FUNCIONALIDADE:
311
- * - Obtém informações completas do commit
311
+ * - Obtém informações completas do commit
312
312
  * - Inclui detalhes de autor e committer
313
313
  * - Mostra arquivos modificados
314
314
  * - Retorna hash e mensagem
315
315
  *
316
- * PARÂMETROS OBRIGATÓRIOS:
317
- * - owner: Proprietário do repositório
318
- * - repo: Nome do repositório
316
+ * PARÂMETROS OBRIGATÓRIOS:
317
+ * - owner: Proprietário do repositório
318
+ * - repo: Nome do repositório
319
319
  * - commit_sha: SHA do commit
320
320
  *
321
- * VALIDAÇÕES:
322
- * - Todos os parâmetros obrigatórios
323
- * - SHA deve ser válido
321
+ * VALIDAÇÕES:
322
+ * - Todos os parâmetros obrigatórios
323
+ * - SHA deve ser válido
324
324
  * - Commit deve existir
325
325
  *
326
- * RECOMENDAÇÕES:
327
- * - Use para análise detalhada
326
+ * RECOMENDAÇÕES:
327
+ * - Use para análise detalhada
328
328
  * - Verifique arquivos modificados
329
329
  * - Analise mensagem e autor
330
- * - Documente mudanças importantes
330
+ * - Documente mudanças importantes
331
331
  */
332
332
  async getCommit(params, provider, owner) {
333
333
  try {
334
334
  if (!owner || !params.repo) {
335
- throw new Error('e repo são obrigatórios');
335
+ throw new Error('e repo são obrigatórios');
336
336
  }
337
- // Se não foi fornecido commit_sha, usa o SHA da branch padrão
337
+ // Se não foi fornecido commit_sha, usa o SHA da branch padrão
338
338
  let commitSha = params.commit_sha;
339
339
  if (!commitSha) {
340
340
  try {
@@ -342,13 +342,13 @@ exports.commitsTool = {
342
342
  commitSha = branchInfo.commit.sha;
343
343
  }
344
344
  catch (error) {
345
- // Se não conseguir obter o branch main, tenta master
345
+ // Se não conseguir obter o branch main, tenta master
346
346
  try {
347
347
  const branchInfo = await provider.getBranch(owner, params.repo, 'master');
348
348
  commitSha = branchInfo.commit.sha;
349
349
  }
350
350
  catch (masterError) {
351
- throw new Error('Não foi possível obter SHA do commit. Forneça commit_sha ou verifique se a branch existe.');
351
+ throw new Error('Não foi possível obter SHA do commit. Forneça commit_sha ou verifique se a branch existe.');
352
352
  }
353
353
  }
354
354
  }
@@ -376,48 +376,48 @@ exports.commitsTool = {
376
376
  * - Cria commit com mensagem personalizada
377
377
  * - Suporta autor e committer diferentes
378
378
  * - Permite especificar branch de destino
379
- * - Valida dados obrigatórios
379
+ * - Valida dados obrigatórios
380
380
  *
381
- * PARÂMETROS OBRIGATÓRIOS:
382
- * - owner: Proprietário do repositório
383
- * - repo: Nome do repositório
381
+ * PARÂMETROS OBRIGATÓRIOS:
382
+ * - owner: Proprietário do repositório
383
+ * - repo: Nome do repositório
384
384
  * - message: Mensagem do commit
385
385
  * - branch: Branch de destino
386
386
  *
387
- * PARÂMETROS OPCIONAIS:
387
+ * PARÂMETROS OPCIONAIS:
388
388
  * - author_name: Nome do autor
389
389
  * - author_email: Email do autor
390
390
  * - committer_name: Nome do committer
391
391
  * - committer_email: Email do committer
392
392
  *
393
- * VALIDAÇÕES:
394
- * - Todos os parâmetros obrigatórios
395
- * - Mensagem não pode estar vazia
393
+ * VALIDAÇÕES:
394
+ * - Todos os parâmetros obrigatórios
395
+ * - Mensagem não pode estar vazia
396
396
  * - Branch deve existir
397
- * - Emails devem ser válidos
397
+ * - Emails devem ser válidos
398
398
  *
399
- * RECOMENDAÇÕES:
399
+ * RECOMENDAÇÕES:
400
400
  * - Use mensagens descritivas
401
- * - Mantenha commits atômicos
402
- * - Documente mudanças importantes
401
+ * - Mantenha commits atômicos
402
+ * - Documente mudanças importantes
403
403
  * - Use branches apropriadas
404
404
  */
405
405
  async createCommit(params, provider, owner) {
406
406
  try {
407
407
  if (!owner || !params.repo || !params.message || !params.branch) {
408
- throw new Error('repo, message e branch são obrigatórios');
408
+ throw new Error('repo, message e branch são obrigatórios');
409
409
  }
410
410
  if (params.message.trim().length === 0) {
411
- throw new Error('Mensagem do commit não pode estar vazia');
411
+ throw new Error('Mensagem do commit não pode estar vazia');
412
412
  }
413
413
  // Verificar se a branch existe
414
414
  try {
415
415
  await provider.getBranch(owner, params.repo, params.branch);
416
416
  }
417
417
  catch (error) {
418
- throw new Error(`Branch '${params.branch}' não existe no repositório`);
418
+ throw new Error(`Branch '${params.branch}' não existe no repositório`);
419
419
  }
420
- // Obter informações do usuário atual para usar como padrão
420
+ // Obter informações do usuário atual para usar como padrão
421
421
  const currentUser = await provider.getCurrentUser();
422
422
  // Preparar dados do commit
423
423
  const commitData = {
@@ -457,31 +457,31 @@ exports.commitsTool = {
457
457
  * Compara dois commits ou branches
458
458
  *
459
459
  * FUNCIONALIDADE:
460
- * - Compara diferenças entre commits
460
+ * - Compara diferenças entre commits
461
461
  * - Mostra arquivos modificados
462
- * - Retorna estatísticas de mudanças
462
+ * - Retorna estatísticas de mudanças
463
463
  *
464
- * PARÂMETROS OBRIGATÓRIOS:
465
- * - owner: Proprietário do repositório
466
- * - repo: Nome do repositório
464
+ * PARÂMETROS OBRIGATÓRIOS:
465
+ * - owner: Proprietário do repositório
466
+ * - repo: Nome do repositório
467
467
  * - base: Commit ou branch base
468
468
  * - head: Commit ou branch para comparar
469
469
  *
470
- * VALIDAÇÕES:
471
- * - Todos os parâmetros obrigatórios
470
+ * VALIDAÇÕES:
471
+ * - Todos os parâmetros obrigatórios
472
472
  * - Base e head devem existir
473
- * - Deve ser possível comparar
473
+ * - Deve ser possível comparar
474
474
  *
475
- * RECOMENDAÇÕES:
476
- * - Use para análise de mudanças
475
+ * RECOMENDAÇÕES:
476
+ * - Use para análise de mudanças
477
477
  * - Compare antes de fazer merge
478
478
  * - Analise arquivos modificados
479
- * - Documente diferenças importantes
479
+ * - Documente diferenças importantes
480
480
  */
481
481
  async compareCommits(params, provider, owner) {
482
482
  try {
483
483
  if (!owner || !params.repo || !params.base || !params.head) {
484
- throw new Error('repo, base e head são obrigatórios');
484
+ throw new Error('repo, base e head são obrigatórios');
485
485
  }
486
486
  // Verificar se os commits/branches existem
487
487
  try {
@@ -496,18 +496,18 @@ exports.commitsTool = {
496
496
  await provider.getBranch(owner, params.repo, params.head);
497
497
  }
498
498
  catch (branchError) {
499
- throw new Error(`Commits/branches não encontrados: ${params.base} ou ${params.head}`);
499
+ throw new Error(`Commits/branches não encontrados: ${params.base} ou ${params.head}`);
500
500
  }
501
501
  }
502
- // Obter commits de cada referência para análise
502
+ // Obter commits de cada referência para análise
503
503
  const baseCommits = await provider.listCommits(owner, params.repo, params.base, 1, 10);
504
504
  const headCommits = await provider.listCommits(owner, params.repo, params.head, 1, 10);
505
- // Comparar commits únicos
505
+ // Comparar commits únicos
506
506
  const baseCommitShas = baseCommits.map(c => c.sha);
507
507
  const headCommitShas = headCommits.map(c => c.sha);
508
508
  const uniqueBaseCommits = baseCommits.filter(c => !headCommitShas.includes(c.sha));
509
509
  const uniqueHeadCommits = headCommits.filter(c => !baseCommitShas.includes(c.sha));
510
- // Usar compareCommits do provider se disponível
510
+ // Usar compareCommits do provider se disponível
511
511
  let detailedComparison = null;
512
512
  try {
513
513
  if (provider.compareCommits) {
@@ -515,12 +515,12 @@ exports.commitsTool = {
515
515
  }
516
516
  }
517
517
  catch (error) {
518
- console.warn('Comparação detalhada não disponível:', error);
518
+ console.warn('Comparação detalhada não disponível:', error);
519
519
  }
520
520
  return {
521
521
  success: true,
522
522
  action: 'compare',
523
- message: `Comparação entre '${params.base}' e '${params.head}' realizada com sucesso`,
523
+ message: `Comparação entre '${params.base}' e '${params.head}' realizada com sucesso`,
524
524
  data: {
525
525
  base: {
526
526
  ref: params.base,
@@ -541,8 +541,8 @@ exports.commitsTool = {
541
541
  detailed: detailedComparison
542
542
  },
543
543
  summary: {
544
- status: uniqueBaseCommits.length === 0 ? 'head está à frente' :
545
- uniqueHeadCommits.length === 0 ? 'base está à frente' :
544
+ status: uniqueBaseCommits.length === 0 ? 'head está à frente' :
545
+ uniqueHeadCommits.length === 0 ? 'base está à frente' :
546
546
  'divergiram',
547
547
  can_merge: uniqueBaseCommits.length === 0 || uniqueHeadCommits.length === 0,
548
548
  requires_merge: uniqueBaseCommits.length > 0 && uniqueHeadCommits.length > 0
@@ -555,38 +555,38 @@ exports.commitsTool = {
555
555
  }
556
556
  },
557
557
  /**
558
- * Busca commits por critérios específicos
558
+ * Busca commits por critérios específicos
559
559
  *
560
560
  * FUNCIONALIDADE:
561
561
  * - Busca commits por mensagem
562
562
  * - Filtra por autor
563
- * - Suporta paginação
563
+ * - Suporta paginação
564
564
  *
565
- * PARÂMETROS OBRIGATÓRIOS:
566
- * - owner: Proprietário do repositório
567
- * - repo: Nome do repositório
565
+ * PARÂMETROS OBRIGATÓRIOS:
566
+ * - owner: Proprietário do repositório
567
+ * - repo: Nome do repositório
568
568
  * - query: Termo de busca
569
569
  *
570
- * PARÂMETROS OPCIONAIS:
570
+ * PARÂMETROS OPCIONAIS:
571
571
  * - author: Autor dos commits
572
- * - page: Página da busca (padrão: 1)
573
- * - limit: Itens por página (padrão: 30, máximo: 100)
572
+ * - page: Página da busca (padrão: 1)
573
+ * - limit: Itens por página (padrão: 30, máximo: 100)
574
574
  *
575
- * VALIDAÇÕES:
576
- * - Todos os parâmetros obrigatórios
575
+ * VALIDAÇÕES:
576
+ * - Todos os parâmetros obrigatórios
577
577
  * - Query deve ter pelo menos 3 caracteres
578
- * - Repositório deve existir
578
+ * - Repositório deve existir
579
579
  *
580
- * RECOMENDAÇÕES:
581
- * - Use termos de busca específicos
580
+ * RECOMENDAÇÕES:
581
+ * - Use termos de busca específicos
582
582
  * - Combine com filtros de autor
583
- * - Use paginação para resultados grandes
584
- * - Analise relevância dos resultados
583
+ * - Use paginação para resultados grandes
584
+ * - Analise relevância dos resultados
585
585
  */
586
586
  async searchCommits(params, provider, owner) {
587
587
  try {
588
588
  if (!owner || !params.repo || !params.query) {
589
- throw new Error('repo e query são obrigatórios');
589
+ throw new Error('repo e query são obrigatórios');
590
590
  }
591
591
  if (params.query.length < 3) {
592
592
  throw new Error('Query deve ter pelo menos 3 caracteres');
@@ -604,7 +604,7 @@ exports.commitsTool = {
604
604
  searchResults = allCommits.filter((commit) => commit.message?.toLowerCase().includes(params.query?.toLowerCase() || '') ||
605
605
  commit.commit?.message?.toLowerCase().includes(params.query?.toLowerCase() || ''));
606
606
  }
607
- // Filtrar resultados por página e limite
607
+ // Filtrar resultados por página e limite
608
608
  const startIndex = (page - 1) * limit;
609
609
  const endIndex = startIndex + limit;
610
610
  const paginatedResults = searchResults.slice(startIndex, endIndex);
@@ -641,28 +641,28 @@ exports.commitsTool = {
641
641
  }
642
642
  },
643
643
  /**
644
- * Faz push dos commits locais para o repositório remoto
644
+ * Faz push dos commits locais para o repositório remoto
645
645
  *
646
646
  * FUNCIONALIDADE:
647
647
  * - Faz push da branch atual para o remote
648
- * - Suporta especificar branch específica
649
- * - Verifica se commits para fazer push
648
+ * - Suporta especificar branch específica
649
+ * - Verifica se há commits para fazer push
650
650
  *
651
- * PARÂMETROS OBRIGATÓRIOS:
651
+ * PARÂMETROS OBRIGATÓRIOS:
652
652
  * - projectPath: Caminho do projeto local
653
653
  *
654
- * PARÂMETROS OPCIONAIS:
655
- * - branch: Branch para fazer push (padrão: branch atual)
654
+ * PARÂMETROS OPCIONAIS:
655
+ * - branch: Branch para fazer push (padrão: branch atual)
656
656
  *
657
- * RECOMENDAÇÕES:
658
- * - Verifique se commits locais antes do push
659
- * - Use branch específica se necessário
657
+ * RECOMENDAÇÕES:
658
+ * - Verifique se há commits locais antes do push
659
+ * - Use branch específica se necessário
660
660
  * - Monitore conflitos durante o push
661
661
  */
662
662
  async pushCommits(params, provider) {
663
663
  try {
664
664
  if (!params.projectPath) {
665
- throw new Error('projectPath é obrigatório para push');
665
+ throw new Error('projectPath é obrigatório para push');
666
666
  }
667
667
  const branch = params.branch || 'main';
668
668
  // Faz push usando o terminal controller
@@ -687,28 +687,28 @@ exports.commitsTool = {
687
687
  }
688
688
  },
689
689
  /**
690
- * Faz pull dos commits do repositório remoto
690
+ * Faz pull dos commits do repositório remoto
691
691
  *
692
692
  * FUNCIONALIDADE:
693
693
  * - Faz pull da branch atual do remote
694
- * - Suporta especificar branch específica
695
- * - Faz merge automático se possível
694
+ * - Suporta especificar branch específica
695
+ * - Faz merge automático se possível
696
696
  *
697
- * PARÂMETROS OBRIGATÓRIOS:
697
+ * PARÂMETROS OBRIGATÓRIOS:
698
698
  * - projectPath: Caminho do projeto local
699
699
  *
700
- * PARÂMETROS OPCIONAIS:
701
- * - branch: Branch para fazer pull (padrão: branch atual)
700
+ * PARÂMETROS OPCIONAIS:
701
+ * - branch: Branch para fazer pull (padrão: branch atual)
702
702
  *
703
- * RECOMENDAÇÕES:
704
- * - Faça backup antes do pull
703
+ * RECOMENDAÇÕES:
704
+ * - Faça backup antes do pull
705
705
  * - Resolva conflitos manualmente se houver
706
- * - Use branch específica se necessário
706
+ * - Use branch específica se necessário
707
707
  */
708
708
  async pullCommits(params, provider) {
709
709
  try {
710
710
  if (!params.projectPath) {
711
- throw new Error('projectPath é obrigatório para pull');
711
+ throw new Error('projectPath é obrigatório para pull');
712
712
  }
713
713
  const branch = params.branch || 'main';
714
714
  // Faz pull usando o terminal controller
@@ -731,6 +731,19 @@ exports.commitsTool = {
731
731
  catch (error) {
732
732
  throw new Error(`Falha ao fazer pull: ${error instanceof Error ? error.message : String(error)}`);
733
733
  }
734
+ },
735
+ /**
736
+ * Verifica se erro é relacionado a Git
737
+ */
738
+ isGitRelatedError(errorMessage) {
739
+ const gitKeywords = [
740
+ 'git', 'commit', 'push', 'pull', 'merge', 'conflict', 'branch',
741
+ 'remote', 'repository', 'authentication', 'permission', 'unauthorized',
742
+ 'divergent', 'non-fast-forward', 'fetch first', 'working tree',
743
+ 'uncommitted', 'stash', 'rebase', 'reset', 'checkout'
744
+ ];
745
+ const errorLower = errorMessage.toLowerCase();
746
+ return gitKeywords.some(keyword => errorLower.includes(keyword));
734
747
  }
735
748
  };
736
749
  //# sourceMappingURL=git-commits.js.map