@andrebuzeli/git-mcp 2.28.2 → 2.29.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.
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 +2 -2
  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
@@ -7,49 +7,49 @@ const user_detection_js_1 = require("../utils/user-detection.js");
7
7
  /**
8
8
  * Tool: issues
9
9
  *
10
- * DESCRIÇÃO:
10
+ * DESCRIÇÃO:
11
11
  * Gerenciamento completo de issues com suporte multi-provider (GitHub e Gitea)
12
12
  *
13
13
  * FUNCIONALIDADES:
14
- * - Criação de novas issues
14
+ * - Criação de novas issues
15
15
  * - Listagem e busca de issues
16
- * - Obtenção de detalhes específicos
17
- * - Atualização de issues existentes
16
+ * - Obtenção de detalhes específicos
17
+ * - Atualização de issues existentes
18
18
  * - Fechamento de issues
19
- * - Adição de comentários
20
- * - Busca por conteúdo e status
19
+ * - Adição de comentários
20
+ * - Busca por conteúdo e status
21
21
  *
22
22
  * USO:
23
23
  * - Para gerenciar bugs e features
24
24
  * - Para acompanhar progresso de desenvolvimento
25
- * - Para comunicação entre equipe
25
+ * - Para comunicação entre equipe
26
26
  * - Para controle de qualidade
27
27
  *
28
- * RECOMENDAÇÕES:
29
- * - Use títulos descritivos
28
+ * RECOMENDAÇÕES:
29
+ * - Use títulos descritivos
30
30
  * - Documente detalhes completos
31
31
  * - Atualize status regularmente
32
32
  * - Use labels adequadamente
33
33
  */
34
34
  /**
35
- * Schema de validação para entrada da tool issues
35
+ * Schema de validação para entrada da tool issues
36
36
  *
37
- * VALIDAÇÕES:
38
- * - action: Ação obrigatória (create, list, get, update, close, comment, 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 (create, list, get, update, close, comment, 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 IssuesInputSchema = zod_1.z.object({
48
48
  action: zod_1.z.enum(['create', 'list', 'get', 'update', 'close', 'comment', 'search']),
49
- // Parâmetros comuns
49
+ // Parâmetros comuns
50
50
  repo: zod_1.z.string(),
51
51
  // Para multi-provider
52
- provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Provider específico: gitea, github ou both
52
+ provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Provider específico: gitea, github ou both
53
53
  projectPath: zod_1.z.string().describe('Local project path for git operations'),
54
54
  // Para create
55
55
  title: zod_1.z.string().optional(),
@@ -79,11 +79,11 @@ const IssuesInputSchema = zod_1.z.object({
79
79
  label: zod_1.z.string().optional(),
80
80
  });
81
81
  /**
82
- * Schema de saída padronizado
82
+ * Schema de saída padronizado
83
83
  *
84
84
  * ESTRUTURA:
85
- * - success: Status da operação
86
- * - action: Ação executada
85
+ * - success: Status da operação
86
+ * - action: Ação executada
87
87
  * - message: Mensagem descritiva
88
88
  * - data: Dados retornados (opcional)
89
89
  * - error: Detalhes do erro (opcional)
@@ -98,80 +98,80 @@ const IssuesResultSchema = zod_1.z.object({
98
98
  /**
99
99
  * Tool: issues
100
100
  *
101
- * DESCRIÇÃO:
102
- * Gerenciamento completo de issues Gitea com múltiplas ações
101
+ * DESCRIÇÃO:
102
+ * Gerenciamento completo de issues Gitea com múltiplas ações
103
103
  *
104
- * ACTIONS DISPONÍVEIS:
104
+ * ACTIONS DISPONÍVEIS:
105
105
  *
106
106
  * 1. create - Criar nova issue
107
- * Parâmetros:
108
- * - owner (obrigatório): Proprietário do repositório
109
- * - repo (obrigatório): Nome do repositório
110
- * - title (obrigatório): Título da issue
111
- * - body (opcional): Descrição detalhada
107
+ * Parâmetros:
108
+ * - owner (obrigatório): Proprietário do repositório
109
+ * - repo (obrigatório): Nome do repositório
110
+ * - title (obrigatório): Título da issue
111
+ * - body (opcional): Descrição detalhada
112
112
  * - labels (opcional): Array de labels
113
- * - assignees (opcional): Array de usuários responsáveis
113
+ * - assignees (opcional): Array de usuários responsáveis
114
114
  * - milestone (opcional): ID do milestone
115
115
  *
116
116
  * 2. list - Listar issues
117
- * Parâmetros:
118
- * - owner (obrigatório): Proprietário do repositório
119
- * - repo (obrigatório): Nome do repositório
120
- * - state (opcional): Estado das issues (open, closed, all) - padrão: open
121
- * - page (opcional): Página da listagem (padrão: 1)
122
- * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
117
+ * Parâmetros:
118
+ * - owner (obrigatório): Proprietário do repositório
119
+ * - repo (obrigatório): Nome do repositório
120
+ * - state (opcional): Estado das issues (open, closed, all) - padrão: open
121
+ * - page (opcional): Página da listagem (padrão: 1)
122
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
123
123
  *
124
124
  * 3. get - Obter detalhes da issue
125
- * Parâmetros:
126
- * - owner (obrigatório): Proprietário do repositório
127
- * - repo (obrigatório): Nome do repositório
128
- * - issue_number (obrigatório): Número da issue
125
+ * Parâmetros:
126
+ * - owner (obrigatório): Proprietário do repositório
127
+ * - repo (obrigatório): Nome do repositório
128
+ * - issue_number (obrigatório): Número da issue
129
129
  *
130
130
  * 4. update - Atualizar issue existente
131
- * Parâmetros:
132
- * - owner (obrigatório): Proprietário do repositório
133
- * - repo (obrigatório): Nome do repositório
134
- * - issue_number (obrigatório): Número da issue
135
- * - new_title (opcional): Novo título
136
- * - new_body (opcional): Nova descrição
131
+ * Parâmetros:
132
+ * - owner (obrigatório): Proprietário do repositório
133
+ * - repo (obrigatório): Nome do repositório
134
+ * - issue_number (obrigatório): Número da issue
135
+ * - new_title (opcional): Novo título
136
+ * - new_body (opcional): Nova descrição
137
137
  * - new_state (opcional): Novo estado
138
138
  * - new_labels (opcional): Novos labels
139
- * - new_assignees (opcional): Novos responsáveis
139
+ * - new_assignees (opcional): Novos responsáveis
140
140
  * - new_milestone (opcional): Novo milestone
141
141
  *
142
142
  * 5. close - Fechar issue
143
- * Parâmetros:
144
- * - owner (obrigatório): Proprietário do repositório
145
- * - repo (obrigatório): Nome do repositório
146
- * - issue_number (obrigatório): Número da issue
143
+ * Parâmetros:
144
+ * - owner (obrigatório): Proprietário do repositório
145
+ * - repo (obrigatório): Nome do repositório
146
+ * - issue_number (obrigatório): Número da issue
147
147
  *
148
- * 6. comment - Adicionar comentário
149
- * Parâmetros:
150
- * - owner (obrigatório): Proprietário do repositório
151
- * - repo (obrigatório): Nome do repositório
152
- * - issue_number (obrigatório): Número da issue
153
- * - comment_body (obrigatório): Conteúdo do comentário
148
+ * 6. comment - Adicionar comentário
149
+ * Parâmetros:
150
+ * - owner (obrigatório): Proprietário do repositório
151
+ * - repo (obrigatório): Nome do repositório
152
+ * - issue_number (obrigatório): Número da issue
153
+ * - comment_body (obrigatório): Conteúdo do comentário
154
154
  *
155
155
  * 7. search - Buscar issues
156
- * Parâmetros:
157
- * - owner (obrigatório): Proprietário do repositório
158
- * - repo (obrigatório): Nome do repositório
159
- * - query (obrigatório): Termo de busca
156
+ * Parâmetros:
157
+ * - owner (obrigatório): Proprietário do repositório
158
+ * - repo (obrigatório): Nome do repositório
159
+ * - query (obrigatório): Termo de busca
160
160
  * - author (opcional): Autor das issues
161
- * - assignee (opcional): Responsável pelas issues
162
- * - label (opcional): Label específico
161
+ * - assignee (opcional): Responsável pelas issues
162
+ * - label (opcional): Label específico
163
163
  *
164
- * RECOMENDAÇÕES DE USO:
165
- * - Use títulos descritivos e claros
166
- * - Documente detalhes completos na descrição
164
+ * RECOMENDAÇÕES DE USO:
165
+ * - Use títulos descritivos e claros
166
+ * - Documente detalhes completos na descrição
167
167
  * - Atualize status regularmente
168
- * - Use labels para categorização
169
- * - Atribua responsáveis adequadamente
168
+ * - Use labels para categorização
169
+ * - Atribua responsáveis adequadamente
170
170
  * - Mantenha issues organizadas
171
171
  */
172
172
  exports.issuesTool = {
173
173
  name: 'git-issues',
174
- description: 'tool: Gerencia issues Git, bugs, features e tarefas\n──────────────\naction create: cria nova issue\naction create requires: repo, title, body, labels, assignees, milestone, provider\n───────────────\naction list: lista issues do repositório\naction list requires: repo, state, page, limit, provider\n───────────────\naction get: obtém detalhes de issue\naction get requires: repo, issue_number, provider\n───────────────\naction update: atualiza issue existente\naction update requires: repo, issue_number, new_title, new_body, new_state, new_labels, new_assignees, new_milestone, provider\n───────────────\naction close: fecha issue\naction close requires: repo, issue_number, provider\n───────────────\naction comment: adiciona comentário\naction comment requires: repo, issue_number, comment_body, provider\n───────────────\naction search: busca issues por critérios\naction search requires: repo, query, author, assignee, label, provider',
174
+ description: 'tool: Gerencia issues Git, bugs, features e tarefas\n──────────────\naction create: cria nova issue\naction create requires: repo, title, body, labels, assignees, milestone, provider\n───────────────\naction list: lista issues do repositório\naction list requires: repo, state, page, limit, provider\n───────────────\naction get: obtém detalhes de issue\naction get requires: repo, issue_number, provider\n───────────────\naction update: atualiza issue existente\naction update requires: repo, issue_number, new_title, new_body, new_state, new_labels, new_assignees, new_milestone, provider\n───────────────\naction close: fecha issue\naction close requires: repo, issue_number, provider\n───────────────\naction comment: adiciona comentário\naction comment requires: repo, issue_number, comment_body, provider\n───────────────\naction search: busca issues por critérios\naction search requires: repo, query, author, assignee, label, provider',
175
175
  inputSchema: {
176
176
  type: 'object',
177
177
  properties: {
@@ -210,33 +210,33 @@ exports.issuesTool = {
210
210
  *
211
211
  * FUNCIONALIDADE:
212
212
  * - Valida entrada usando Zod schema
213
- * - Roteia para método específico baseado na ação
213
+ * - Roteia para método específico baseado na ação
214
214
  * - Trata erros de forma uniforme
215
215
  * - Retorna resultado padronizado
216
216
  *
217
217
  * FLUXO:
218
- * 1. Validação de entrada
219
- * 2. Seleção do provider
220
- * 3. Roteamento por ação
221
- * 4. Execução do método específico
218
+ * 1. Validação de entrada
219
+ * 2. Seleção do provider
220
+ * 3. Roteamento por ação
221
+ * 4. Execução do método específico
222
222
  * 5. Tratamento de erros
223
223
  * 6. Retorno de resultado
224
224
  *
225
225
  * TRATAMENTO DE ERROS:
226
- * - Validação: erro de schema
227
- * - Execução: erro da operação
228
- * - Roteamento: ação não suportada
226
+ * - Validação: erro de schema
227
+ * - Execução: erro da operação
228
+ * - Roteamento: ação não suportada
229
229
  *
230
- * RECOMENDAÇÕES:
230
+ * RECOMENDAÇÕES:
231
231
  * - Sempre valide entrada antes de processar
232
- * - Trate erros específicos adequadamente
232
+ * - Trate erros específicos adequadamente
233
233
  * - Log detalhes de erro para debug
234
- * - Retorne mensagens de erro úteis
234
+ * - Retorne mensagens de erro úteis
235
235
  */
236
236
  async handler(input) {
237
237
  try {
238
238
  const validatedInput = IssuesInputSchema.parse(input);
239
- // Aplicar auto-detecção de usuário/owner
239
+ // Aplicar auto-detecção de usuário/owner
240
240
  const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
241
241
  // Obter o provider correto
242
242
  let provider;
@@ -244,7 +244,7 @@ exports.issuesTool = {
244
244
  if (processedInput.provider) {
245
245
  const requestedProvider = index_js_1.globalProviderFactory.getProvider(processedInput.provider);
246
246
  if (!requestedProvider) {
247
- console.warn(`[ISSUES] Provider '${processedInput.provider}' não encontrado, usando padrão`);
247
+ console.warn(`[ISSUES] Provider '${processedInput.provider}' não encontrado, usando padrão`);
248
248
  provider = index_js_1.globalProviderFactory.getDefaultProvider();
249
249
  }
250
250
  else {
@@ -255,12 +255,12 @@ exports.issuesTool = {
255
255
  provider = index_js_1.globalProviderFactory.getDefaultProvider();
256
256
  }
257
257
  if (!provider) {
258
- throw new Error('Nenhum provider disponível');
258
+ throw new Error('Nenhum provider disponível');
259
259
  }
260
260
  }
261
261
  catch (providerError) {
262
262
  console.error('[ISSUES] Erro ao obter provider:', providerError);
263
- throw new Error(`Erro de configuração do provider: ${providerError instanceof Error ? providerError.message : 'Provider não disponível'}`);
263
+ throw new Error(`Erro de configuração do provider: ${providerError instanceof Error ? providerError.message : 'Provider não disponível'}`);
264
264
  }
265
265
  // Obter o owner do provider
266
266
  const owner = (await provider.getCurrentUser()).login;
@@ -280,59 +280,59 @@ exports.issuesTool = {
280
280
  case 'search':
281
281
  return await this.searchIssues(processedInput, provider, owner);
282
282
  default:
283
- throw new Error(`Ação não suportada: ${processedInput.action}`);
283
+ throw new Error(`Ação não suportada: ${processedInput.action}`);
284
284
  }
285
285
  }
286
286
  catch (error) {
287
287
  return {
288
288
  success: false,
289
289
  action: input.action,
290
- message: 'Erro na operação de issues',
290
+ message: 'Erro na operação de issues',
291
291
  error: error instanceof Error ? error.message : String(error)
292
292
  };
293
293
  }
294
294
  },
295
295
  /**
296
- * Cria uma nova issue no repositório
296
+ * Cria uma nova issue no repositório
297
297
  *
298
298
  * FUNCIONALIDADE:
299
- * - Cria issue com título e descrição
299
+ * - Cria issue com título e descrição
300
300
  * - Suporta labels, assignees e milestone
301
301
  * - Retorna detalhes da issue criada
302
302
  *
303
- * PARÂMETROS OBRIGATÓRIOS:
304
- * - owner: Proprietário do repositório
305
- * - repo: Nome do repositório
306
- * - title: Título da issue
303
+ * PARÂMETROS OBRIGATÓRIOS:
304
+ * - owner: Proprietário do repositório
305
+ * - repo: Nome do repositório
306
+ * - title: Título da issue
307
307
  *
308
- * PARÂMETROS OPCIONAIS:
309
- * - body: Descrição detalhada
310
- * - labels: Array de labels para categorização
311
- * - assignees: Array de usuários responsáveis
308
+ * PARÂMETROS OPCIONAIS:
309
+ * - body: Descrição detalhada
310
+ * - labels: Array de labels para categorização
311
+ * - assignees: Array de usuários responsáveis
312
312
  * - milestone: ID do milestone associado
313
313
  *
314
- * VALIDAÇÕES:
315
- * - Todos os parâmetros obrigatórios
316
- * - Título deve ser único no repositório
317
- * - Labels devem existir no repositório
318
- * - Assignees devem ser usuários válidos
314
+ * VALIDAÇÕES:
315
+ * - Todos os parâmetros obrigatórios
316
+ * - Título deve ser único no repositório
317
+ * - Labels devem existir no repositório
318
+ * - Assignees devem ser usuários válidos
319
319
  *
320
- * RECOMENDAÇÕES:
321
- * - Use títulos descritivos e claros
320
+ * RECOMENDAÇÕES:
321
+ * - Use títulos descritivos e claros
322
322
  * - Documente detalhes completos
323
- * - Use labels para categorização
324
- * - Atribua responsáveis adequadamente
323
+ * - Use labels para categorização
324
+ * - Atribua responsáveis adequadamente
325
325
  */
326
326
  async createIssue(params, provider, owner) {
327
327
  try {
328
328
  if (!owner) {
329
- throw new Error('é obrigatório');
329
+ throw new Error('é obrigatório');
330
330
  }
331
331
  if (!params.repo) {
332
- throw new Error('Repo é obrigatório');
332
+ throw new Error('Repo é obrigatório');
333
333
  }
334
334
  if (!params.title) {
335
- throw new Error('Title é obrigatório');
335
+ throw new Error('Title é obrigatório');
336
336
  }
337
337
  const issue = await provider.createIssue(owner, params.repo, params.title, params.body, params.assignees, params.labels);
338
338
  return {
@@ -347,41 +347,41 @@ exports.issuesTool = {
347
347
  }
348
348
  },
349
349
  /**
350
- * Lista issues do repositório
350
+ * Lista issues do repositório
351
351
  *
352
352
  * FUNCIONALIDADE:
353
353
  * - Lista issues com filtros de estado
354
- * - Suporta paginação
355
- * - Retorna informações básicas de cada issue
354
+ * - Suporta paginação
355
+ * - Retorna informações básicas de cada issue
356
356
  *
357
- * PARÂMETROS OBRIGATÓRIOS:
358
- * - owner: Proprietário do repositório
359
- * - repo: Nome do repositório
357
+ * PARÂMETROS OBRIGATÓRIOS:
358
+ * - owner: Proprietário do repositório
359
+ * - repo: Nome do repositório
360
360
  *
361
- * PARÂMETROS OPCIONAIS:
362
- * - state: Estado das issues (open, closed, all) - padrão: open
363
- * - page: Página da listagem (padrão: 1)
364
- * - limit: Itens por página (padrão: 30, máximo: 100)
361
+ * PARÂMETROS OPCIONAIS:
362
+ * - state: Estado das issues (open, closed, all) - padrão: open
363
+ * - page: Página da listagem (padrão: 1)
364
+ * - limit: Itens por página (padrão: 30, máximo: 100)
365
365
  *
366
- * VALIDAÇÕES:
367
- * - e repo obrigatórios
368
- * - State deve ser um dos valores válidos
366
+ * VALIDAÇÕES:
367
+ * - e repo obrigatórios
368
+ * - State deve ser um dos valores válidos
369
369
  * - Page deve ser >= 1
370
370
  * - Limit deve ser entre 1 e 100
371
371
  *
372
- * RECOMENDAÇÕES:
373
- * - Use paginação para repositórios com muitas issues
374
- * - Monitore número total de issues
375
- * - Filtre por estado para organização
372
+ * RECOMENDAÇÕES:
373
+ * - Use paginação para repositórios com muitas issues
374
+ * - Monitore número total de issues
375
+ * - Filtre por estado para organização
376
376
  * - Mantenha issues organizadas
377
377
  */
378
378
  async listIssues(params, provider, owner) {
379
379
  try {
380
380
  if (!owner) {
381
- throw new Error('é obrigatório');
381
+ throw new Error('é obrigatório');
382
382
  }
383
383
  if (!params.repo) {
384
- throw new Error('Repo é obrigatório');
384
+ throw new Error('Repo é obrigatório');
385
385
  }
386
386
  const state = params.state || 'open';
387
387
  const page = params.page || 1;
@@ -405,40 +405,40 @@ exports.issuesTool = {
405
405
  }
406
406
  },
407
407
  /**
408
- * Obtém detalhes de uma issue específica
408
+ * Obtém detalhes de uma issue específica
409
409
  *
410
410
  * FUNCIONALIDADE:
411
- * - Retorna informações completas da issue
412
- * - Inclui título, descrição, labels, assignees
413
- * - Mostra histórico de comentários
411
+ * - Retorna informações completas da issue
412
+ * - Inclui título, descrição, labels, assignees
413
+ * - Mostra histórico de comentários
414
414
  *
415
- * PARÂMETROS OBRIGATÓRIOS:
416
- * - owner: Proprietário do repositório
417
- * - repo: Nome do repositório
418
- * - issue_number: Número da issue
415
+ * PARÂMETROS OBRIGATÓRIOS:
416
+ * - owner: Proprietário do repositório
417
+ * - repo: Nome do repositório
418
+ * - issue_number: Número da issue
419
419
  *
420
- * VALIDAÇÕES:
421
- * - Todos os parâmetros obrigatórios
422
- * - Issue deve existir no repositório
423
- * - Número deve ser válido
420
+ * VALIDAÇÕES:
421
+ * - Todos os parâmetros obrigatórios
422
+ * - Issue deve existir no repositório
423
+ * - Número deve ser válido
424
424
  *
425
- * RECOMENDAÇÕES:
425
+ * RECOMENDAÇÕES:
426
426
  * - Use para obter detalhes completos
427
427
  * - Verifique status e labels
428
- * - Analise comentários e histórico
429
- * - Monitore mudanças importantes
428
+ * - Analise comentários e histórico
429
+ * - Monitore mudanças importantes
430
430
  */
431
431
  async getIssue(params, provider, owner) {
432
432
  try {
433
- // Aplicar auto-detecção se necessário
433
+ // Aplicar auto-detecção se necessário
434
434
  if (!owner) {
435
- throw new Error('é obrigatório');
435
+ throw new Error('é obrigatório');
436
436
  }
437
437
  if (!params.repo) {
438
- throw new Error('Repo é obrigatório');
438
+ throw new Error('Repo é obrigatório');
439
439
  }
440
440
  if (!params.issue_number) {
441
- throw new Error('Issue_number é obrigatório');
441
+ throw new Error('Issue_number é obrigatório');
442
442
  }
443
443
  const issue = await provider.getIssue((await provider.getCurrentUser()).login, params.repo, params.issue_number);
444
444
  return {
@@ -457,43 +457,43 @@ exports.issuesTool = {
457
457
  *
458
458
  * FUNCIONALIDADE:
459
459
  * - Atualiza campos da issue
460
- * - Suporta mudança de estado
461
- * - Permite alteração de labels e assignees
460
+ * - Suporta mudança de estado
461
+ * - Permite alteração de labels e assignees
462
462
  *
463
- * PARÂMETROS OBRIGATÓRIOS:
464
- * - owner: Proprietário do repositório
465
- * - repo: Nome do repositório
466
- * - issue_number: Número da issue
463
+ * PARÂMETROS OBRIGATÓRIOS:
464
+ * - owner: Proprietário do repositório
465
+ * - repo: Nome do repositório
466
+ * - issue_number: Número da issue
467
467
  *
468
- * PARÂMETROS OPCIONAIS:
469
- * - new_title: Novo título
470
- * - new_body: Nova descrição
468
+ * PARÂMETROS OPCIONAIS:
469
+ * - new_title: Novo título
470
+ * - new_body: Nova descrição
471
471
  * - new_state: Novo estado
472
472
  * - new_labels: Novos labels
473
- * - new_assignees: Novos responsáveis
473
+ * - new_assignees: Novos responsáveis
474
474
  * - new_milestone: Novo milestone
475
475
  *
476
- * VALIDAÇÕES:
477
- * - Todos os parâmetros obrigatórios
476
+ * VALIDAÇÕES:
477
+ * - Todos os parâmetros obrigatórios
478
478
  * - Issue deve existir
479
479
  * - Pelo menos um campo deve ser atualizado
480
480
  *
481
- * RECOMENDAÇÕES:
482
- * - Atualize apenas campos necessários
481
+ * RECOMENDAÇÕES:
482
+ * - Atualize apenas campos necessários
483
483
  * - Use mensagens de commit descritivas
484
- * - Documente mudanças importantes
485
- * - Notifique responsáveis sobre mudanças
484
+ * - Documente mudanças importantes
485
+ * - Notifique responsáveis sobre mudanças
486
486
  */
487
487
  async updateIssue(params, provider, owner) {
488
488
  try {
489
489
  if (!owner) {
490
- throw new Error('é obrigatório');
490
+ throw new Error('é obrigatório');
491
491
  }
492
492
  if (!params.repo) {
493
- throw new Error('Repo é obrigatório');
493
+ throw new Error('Repo é obrigatório');
494
494
  }
495
495
  if (!params.issue_number) {
496
- throw new Error('Issue_number é obrigatório');
496
+ throw new Error('Issue_number é obrigatório');
497
497
  }
498
498
  const updateData = {};
499
499
  if (params.new_title)
@@ -528,35 +528,35 @@ exports.issuesTool = {
528
528
  *
529
529
  * FUNCIONALIDADE:
530
530
  * - Altera estado da issue para closed
531
- * - Mantém histórico e comentários
531
+ * - Mantém histórico e comentários
532
532
  * - Permite reabertura posterior
533
533
  *
534
- * PARÂMETROS OBRIGATÓRIOS:
535
- * - owner: Proprietário do repositório
536
- * - repo: Nome do repositório
537
- * - issue_number: Número da issue
534
+ * PARÂMETROS OBRIGATÓRIOS:
535
+ * - owner: Proprietário do repositório
536
+ * - repo: Nome do repositório
537
+ * - issue_number: Número da issue
538
538
  *
539
- * VALIDAÇÕES:
540
- * - Todos os parâmetros obrigatórios
539
+ * VALIDAÇÕES:
540
+ * - Todos os parâmetros obrigatórios
541
541
  * - Issue deve existir
542
542
  * - Issue deve estar aberta
543
543
  *
544
- * RECOMENDAÇÕES:
544
+ * RECOMENDAÇÕES:
545
545
  * - Confirme que issue foi resolvida
546
- * - Documente solução aplicada
547
- * - Use comentário explicativo
548
- * - Verifique se não dependências
546
+ * - Documente solução aplicada
547
+ * - Use comentário explicativo
548
+ * - Verifique se não há dependências
549
549
  */
550
550
  async closeIssue(params, provider, owner) {
551
551
  try {
552
552
  if (!owner) {
553
- throw new Error('é obrigatório');
553
+ throw new Error('é obrigatório');
554
554
  }
555
555
  if (!params.repo) {
556
- throw new Error('Repo é obrigatório');
556
+ throw new Error('Repo é obrigatório');
557
557
  }
558
558
  if (!params.issue_number) {
559
- throw new Error('Issue_number é obrigatório');
559
+ throw new Error('Issue_number é obrigatório');
560
560
  }
561
561
  const issue = await provider.updateIssue((await provider.getCurrentUser()).login, params.repo, params.issue_number, { state: 'closed' });
562
562
  return {
@@ -571,57 +571,57 @@ exports.issuesTool = {
571
571
  }
572
572
  },
573
573
  /**
574
- * Adiciona comentário a uma issue
574
+ * Adiciona comentário a uma issue
575
575
  *
576
576
  * FUNCIONALIDADE:
577
- * - Cria novo comentário na issue
578
- * - Mantém histórico de discussão
579
- * - Suporta formatação Markdown
580
- *
581
- * PARÂMETROS OBRIGATÓRIOS:
582
- * - owner: Proprietário do repositório
583
- * - repo: Nome do repositório
584
- * - issue_number: Número da issue
585
- * - comment_body: Conteúdo do comentário
586
- *
587
- * VALIDAÇÕES:
588
- * - Todos os parâmetros obrigatórios
577
+ * - Cria novo comentário na issue
578
+ * - Mantém histórico de discussão
579
+ * - Suporta formatação Markdown
580
+ *
581
+ * PARÂMETROS OBRIGATÓRIOS:
582
+ * - owner: Proprietário do repositório
583
+ * - repo: Nome do repositório
584
+ * - issue_number: Número da issue
585
+ * - comment_body: Conteúdo do comentário
586
+ *
587
+ * VALIDAÇÕES:
588
+ * - Todos os parâmetros obrigatórios
589
589
  * - Issue deve existir
590
- * - Comentário não pode estar vazio
590
+ * - Comentário não pode estar vazio
591
591
  *
592
- * RECOMENDAÇÕES:
593
- * - Use comentários para atualizações
594
- * - Documente progresso e decisões
595
- * - Use formatação Markdown adequadamente
596
- * - Mantenha comentários relevantes
592
+ * RECOMENDAÇÕES:
593
+ * - Use comentários para atualizações
594
+ * - Documente progresso e decisões
595
+ * - Use formatação Markdown adequadamente
596
+ * - Mantenha comentários relevantes
597
597
  */
598
598
  async addComment(params, provider, owner) {
599
599
  try {
600
600
  if (!owner) {
601
- throw new Error('é obrigatório');
601
+ throw new Error('é obrigatório');
602
602
  }
603
603
  if (!params.repo) {
604
- throw new Error('Repo é obrigatório');
604
+ throw new Error('Repo é obrigatório');
605
605
  }
606
606
  if (!params.issue_number) {
607
- throw new Error('Issue_number é obrigatório');
607
+ throw new Error('Issue_number é obrigatório');
608
608
  }
609
609
  if (!params.comment_body) {
610
- throw new Error('Comment_body é obrigatório');
610
+ throw new Error('Comment_body é obrigatório');
611
611
  }
612
612
  // Verificar se a issue existe
613
613
  try {
614
614
  await provider.getIssue(owner, params.repo, params.issue_number);
615
615
  }
616
616
  catch (error) {
617
- throw new Error(`Issue #${params.issue_number} não encontrada no repositório`);
617
+ throw new Error(`Issue #${params.issue_number} não encontrada no repositório`);
618
618
  }
619
- // Adicionar comentário usando o provider
619
+ // Adicionar comentário usando o provider
620
620
  const comment = await provider.addComment(owner, params.repo, params.issue_number, params.comment_body);
621
621
  return {
622
622
  success: true,
623
623
  action: 'comment',
624
- message: `Comentário adicionado à issue #${params.issue_number} com sucesso`,
624
+ message: `Comentário adicionado à issue #${params.issue_number} com sucesso`,
625
625
  data: {
626
626
  issue_number: params.issue_number,
627
627
  comment: comment,
@@ -634,48 +634,48 @@ exports.issuesTool = {
634
634
  };
635
635
  }
636
636
  catch (error) {
637
- throw new Error(`Falha ao adicionar comentário: ${error instanceof Error ? error.message : String(error)}`);
637
+ throw new Error(`Falha ao adicionar comentário: ${error instanceof Error ? error.message : String(error)}`);
638
638
  }
639
639
  },
640
640
  /**
641
- * Busca issues por critérios específicos
641
+ * Busca issues por critérios específicos
642
642
  *
643
643
  * FUNCIONALIDADE:
644
- * - Busca issues por conteúdo
644
+ * - Busca issues por conteúdo
645
645
  * - Filtra por autor, assignee e label
646
646
  * - Retorna resultados relevantes
647
647
  *
648
- * PARÂMETROS OBRIGATÓRIOS:
649
- * - owner: Proprietário do repositório
650
- * - repo: Nome do repositório
648
+ * PARÂMETROS OBRIGATÓRIOS:
649
+ * - owner: Proprietário do repositório
650
+ * - repo: Nome do repositório
651
651
  * - query: Termo de busca
652
652
  *
653
- * PARÂMETROS OPCIONAIS:
653
+ * PARÂMETROS OPCIONAIS:
654
654
  * - author: Autor das issues
655
- * - assignee: Responsável pelas issues
656
- * - label: Label específico
655
+ * - assignee: Responsável pelas issues
656
+ * - label: Label específico
657
657
  *
658
- * VALIDAÇÕES:
659
- * - Todos os parâmetros obrigatórios
658
+ * VALIDAÇÕES:
659
+ * - Todos os parâmetros obrigatórios
660
660
  * - Query deve ter pelo menos 3 caracteres
661
- * - Repositório deve existir
661
+ * - Repositório deve existir
662
662
  *
663
- * RECOMENDAÇÕES:
664
- * - Use termos de busca específicos
663
+ * RECOMENDAÇÕES:
664
+ * - Use termos de busca específicos
665
665
  * - Combine filtros para resultados precisos
666
- * - Analise relevância dos resultados
666
+ * - Analise relevância dos resultados
667
667
  * - Use para encontrar issues relacionadas
668
668
  */
669
669
  async searchIssues(params, provider, owner) {
670
670
  try {
671
671
  if (!owner) {
672
- throw new Error('é obrigatório');
672
+ throw new Error('é obrigatório');
673
673
  }
674
674
  if (!params.repo) {
675
- throw new Error('Repo é obrigatório');
675
+ throw new Error('Repo é obrigatório');
676
676
  }
677
677
  if (!params.query) {
678
- throw new Error('Query é obrigatório');
678
+ throw new Error('Query é obrigatório');
679
679
  }
680
680
  if (params.query.length < 3) {
681
681
  throw new Error('Query deve ter pelo menos 3 caracteres');
@@ -693,7 +693,7 @@ exports.issuesTool = {
693
693
  searchResults = allIssues.filter((issue) => issue.title?.toLowerCase().includes(params.query?.toLowerCase() || '') ||
694
694
  issue.body?.toLowerCase().includes(params.query?.toLowerCase() || ''));
695
695
  }
696
- // Filtrar resultados por página e limite
696
+ // Filtrar resultados por página e limite
697
697
  const startIndex = (page - 1) * limit;
698
698
  const endIndex = startIndex + limit;
699
699
  const paginatedResults = searchResults.slice(startIndex, endIndex);
@@ -737,6 +737,19 @@ exports.issuesTool = {
737
737
  catch (error) {
738
738
  throw new Error(`Falha ao buscar issues: ${error instanceof Error ? error.message : String(error)}`);
739
739
  }
740
+ },
741
+ /**
742
+ * Verifica se erro é relacionado a Git
743
+ */
744
+ isGitRelatedError(errorMessage) {
745
+ const gitKeywords = [
746
+ 'git', 'commit', 'push', 'pull', 'merge', 'conflict', 'branch',
747
+ 'remote', 'repository', 'authentication', 'permission', 'unauthorized',
748
+ 'divergent', 'non-fast-forward', 'fetch first', 'working tree',
749
+ 'uncommitted', 'stash', 'rebase', 'reset', 'checkout'
750
+ ];
751
+ const errorLower = errorMessage.toLowerCase();
752
+ return gitKeywords.some(keyword => errorLower.includes(keyword));
740
753
  }
741
754
  };
742
755
  //# sourceMappingURL=git-issues.js.map