@andrebuzeli/git-mcp 2.6.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 (122) hide show
  1. package/README.md +346 -0
  2. package/dist/client.d.ts +307 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +299 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +299 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +381 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/index.d.ts +22 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +53 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/providers/base-provider.d.ts +139 -0
  15. package/dist/providers/base-provider.d.ts.map +1 -0
  16. package/dist/providers/base-provider.js +246 -0
  17. package/dist/providers/base-provider.js.map +1 -0
  18. package/dist/providers/error-handler.d.ts +51 -0
  19. package/dist/providers/error-handler.d.ts.map +1 -0
  20. package/dist/providers/error-handler.js +170 -0
  21. package/dist/providers/error-handler.js.map +1 -0
  22. package/dist/providers/gitea-provider.d.ts +68 -0
  23. package/dist/providers/gitea-provider.d.ts.map +1 -0
  24. package/dist/providers/gitea-provider.js +515 -0
  25. package/dist/providers/gitea-provider.js.map +1 -0
  26. package/dist/providers/github-provider.d.ts +68 -0
  27. package/dist/providers/github-provider.d.ts.map +1 -0
  28. package/dist/providers/github-provider.js +518 -0
  29. package/dist/providers/github-provider.js.map +1 -0
  30. package/dist/providers/index.d.ts +13 -0
  31. package/dist/providers/index.d.ts.map +1 -0
  32. package/dist/providers/index.js +41 -0
  33. package/dist/providers/index.js.map +1 -0
  34. package/dist/providers/provider-factory.d.ts +75 -0
  35. package/dist/providers/provider-factory.d.ts.map +1 -0
  36. package/dist/providers/provider-factory.js +298 -0
  37. package/dist/providers/provider-factory.js.map +1 -0
  38. package/dist/providers/types.d.ts +276 -0
  39. package/dist/providers/types.d.ts.map +1 -0
  40. package/dist/providers/types.js +7 -0
  41. package/dist/providers/types.js.map +1 -0
  42. package/dist/server.d.ts +77 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +262 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools/actions.d.ts +272 -0
  47. package/dist/tools/actions.d.ts.map +1 -0
  48. package/dist/tools/actions.js +428 -0
  49. package/dist/tools/actions.js.map +1 -0
  50. package/dist/tools/analytics.d.ts +326 -0
  51. package/dist/tools/analytics.d.ts.map +1 -0
  52. package/dist/tools/analytics.js +473 -0
  53. package/dist/tools/analytics.js.map +1 -0
  54. package/dist/tools/branches.d.ts +461 -0
  55. package/dist/tools/branches.d.ts.map +1 -0
  56. package/dist/tools/branches.js +525 -0
  57. package/dist/tools/branches.js.map +1 -0
  58. package/dist/tools/code-review.d.ts +323 -0
  59. package/dist/tools/code-review.d.ts.map +1 -0
  60. package/dist/tools/code-review.js +552 -0
  61. package/dist/tools/code-review.js.map +1 -0
  62. package/dist/tools/commits.d.ts +488 -0
  63. package/dist/tools/commits.d.ts.map +1 -0
  64. package/dist/tools/commits.js +578 -0
  65. package/dist/tools/commits.js.map +1 -0
  66. package/dist/tools/deployments.d.ts +319 -0
  67. package/dist/tools/deployments.d.ts.map +1 -0
  68. package/dist/tools/deployments.js +355 -0
  69. package/dist/tools/deployments.js.map +1 -0
  70. package/dist/tools/files.d.ts +456 -0
  71. package/dist/tools/files.d.ts.map +1 -0
  72. package/dist/tools/files.js +531 -0
  73. package/dist/tools/files.js.map +1 -0
  74. package/dist/tools/git-sync.d.ts +177 -0
  75. package/dist/tools/git-sync.d.ts.map +1 -0
  76. package/dist/tools/git-sync.js +112 -0
  77. package/dist/tools/git-sync.js.map +1 -0
  78. package/dist/tools/issues.d.ts +579 -0
  79. package/dist/tools/issues.d.ts.map +1 -0
  80. package/dist/tools/issues.js +631 -0
  81. package/dist/tools/issues.js.map +1 -0
  82. package/dist/tools/pulls.d.ts +702 -0
  83. package/dist/tools/pulls.d.ts.map +1 -0
  84. package/dist/tools/pulls.js +730 -0
  85. package/dist/tools/pulls.js.map +1 -0
  86. package/dist/tools/releases.d.ts +495 -0
  87. package/dist/tools/releases.d.ts.map +1 -0
  88. package/dist/tools/releases.js +551 -0
  89. package/dist/tools/releases.js.map +1 -0
  90. package/dist/tools/repositories.d.ts +513 -0
  91. package/dist/tools/repositories.d.ts.map +1 -0
  92. package/dist/tools/repositories.js +634 -0
  93. package/dist/tools/repositories.js.map +1 -0
  94. package/dist/tools/security.d.ts +341 -0
  95. package/dist/tools/security.d.ts.map +1 -0
  96. package/dist/tools/security.js +394 -0
  97. package/dist/tools/security.js.map +1 -0
  98. package/dist/tools/tags.d.ts +419 -0
  99. package/dist/tools/tags.d.ts.map +1 -0
  100. package/dist/tools/tags.js +479 -0
  101. package/dist/tools/tags.js.map +1 -0
  102. package/dist/tools/users.d.ts +376 -0
  103. package/dist/tools/users.d.ts.map +1 -0
  104. package/dist/tools/users.js +495 -0
  105. package/dist/tools/users.js.map +1 -0
  106. package/dist/tools/validator.d.ts +192 -0
  107. package/dist/tools/validator.d.ts.map +1 -0
  108. package/dist/tools/validator.js +198 -0
  109. package/dist/tools/validator.js.map +1 -0
  110. package/dist/tools/version-control.d.ts +247 -0
  111. package/dist/tools/version-control.d.ts.map +1 -0
  112. package/dist/tools/version-control.js +521 -0
  113. package/dist/tools/version-control.js.map +1 -0
  114. package/dist/tools/webhooks.d.ts +478 -0
  115. package/dist/tools/webhooks.d.ts.map +1 -0
  116. package/dist/tools/webhooks.js +541 -0
  117. package/dist/tools/webhooks.js.map +1 -0
  118. package/dist/tools/workflows.d.ts +313 -0
  119. package/dist/tools/workflows.d.ts.map +1 -0
  120. package/dist/tools/workflows.js +430 -0
  121. package/dist/tools/workflows.js.map +1 -0
  122. package/package.json +58 -0
@@ -0,0 +1,578 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commitsTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const index_js_1 = require("../providers/index.js");
6
+ /**
7
+ * Tool: commits
8
+ *
9
+ * DESCRIÇÃO:
10
+ * Gerenciamento completo de commits com suporte multi-provider (GitHub e Gitea)
11
+ *
12
+ * FUNCIONALIDADES:
13
+ * - Listagem de histórico de commits
14
+ * - Obtenção de detalhes específicos
15
+ * - Criação de novos commits
16
+ * - Comparação entre commits
17
+ * - Busca por mensagens e conteúdo
18
+ * - Análise de mudanças
19
+ *
20
+ * USO:
21
+ * - Para acompanhar histórico de mudanças
22
+ * - Para analisar evolução do código
23
+ * - Para criar commits programaticamente
24
+ * - Para auditoria de mudanças
25
+ *
26
+ * RECOMENDAÇÕES:
27
+ * - Use mensagens de commit descritivas
28
+ * - Mantenha commits atômicos
29
+ * - Documente mudanças importantes
30
+ * - Revise histórico regularmente
31
+ */
32
+ /**
33
+ * Schema de validação para entrada da tool commits
34
+ *
35
+ * VALIDAÇÕES:
36
+ * - action: Ação obrigatória (list, get, create, compare, search)
37
+ * - Parâmetros específicos por ação
38
+ * - Validação de tipos e formatos
39
+ *
40
+ * RECOMENDAÇÕES:
41
+ * - Sempre valide entrada antes de usar
42
+ * - Use parâmetros opcionais adequadamente
43
+ * - Documente parâmetros obrigatórios
44
+ */
45
+ const CommitsInputSchema = zod_1.z.object({
46
+ action: zod_1.z.enum(['list', 'get', 'create', 'compare', 'search']),
47
+ // Parâmetros comuns com validações aprimoradas
48
+ owner: zod_1.z.string().min(1, 'Owner é obrigatório').max(100, 'Owner muito longo').optional(),
49
+ repo: zod_1.z.string().min(1, 'Nome do repositório é obrigatório').max(100, 'Nome do repositório muito longo').optional(),
50
+ // Para multi-provider
51
+ provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
52
+ // Para list - validação de SHA
53
+ sha: zod_1.z.string().regex(/^[a-f0-9]{7,40}$/i, 'SHA deve ter 7-40 caracteres hexadecimais').optional(),
54
+ page: zod_1.z.number().min(1, 'Página deve ser pelo menos 1').max(1000, 'Página muito alta').optional(),
55
+ limit: zod_1.z.number().min(1, 'Limite deve ser pelo menos 1').max(100, 'Limite não pode exceder 100').optional(),
56
+ // Para get - validação de SHA obrigatória
57
+ commit_sha: zod_1.z.string().regex(/^[a-f0-9]{7,40}$/i, 'SHA deve ter 7-40 caracteres hexadecimais').optional(),
58
+ // Para create - validações específicas
59
+ message: zod_1.z.string().min(1, 'Mensagem do commit é obrigatória').max(1000, 'Mensagem muito longa').optional(),
60
+ branch: zod_1.z.string().min(1, 'Branch é obrigatória').max(255, 'Nome da branch muito longo').optional(),
61
+ author_name: zod_1.z.string().min(1, 'Nome do autor é obrigatório').max(100, 'Nome muito longo').optional(),
62
+ author_email: zod_1.z.string().email('Email do autor inválido').max(255, 'Email muito longo').optional(),
63
+ committer_name: zod_1.z.string().min(1, 'Nome do committer é obrigatório').max(100, 'Nome muito longo').optional(),
64
+ committer_email: zod_1.z.string().email('Email do committer inválido').max(255, 'Email muito longo').optional(),
65
+ // Para compare - validação de SHAs
66
+ base: zod_1.z.string().regex(/^[a-f0-9]{7,40}$/i, 'SHA base deve ter 7-40 caracteres hexadecimais').optional(),
67
+ head: zod_1.z.string().regex(/^[a-f0-9]{7,40}$/i, 'SHA head deve ter 7-40 caracteres hexadecimais').optional(),
68
+ // Para search - validações específicas
69
+ query: zod_1.z.string().min(3, 'Query deve ter pelo menos 3 caracteres').max(255, 'Query muito longa').optional(),
70
+ author: zod_1.z.string().min(1, 'Nome do autor é obrigatório').max(100, 'Nome muito longo').optional(),
71
+ }).refine((data) => {
72
+ // Validações condicionais por ação
73
+ if (data.action === 'get') {
74
+ return data.owner && data.repo && data.commit_sha;
75
+ }
76
+ if (data.action === 'create') {
77
+ return data.owner && data.repo && data.message && data.branch;
78
+ }
79
+ if (data.action === 'compare') {
80
+ return data.owner && data.repo && data.base && data.head;
81
+ }
82
+ if (data.action === 'search') {
83
+ return data.owner && data.repo && data.query;
84
+ }
85
+ if (data.action === 'list') {
86
+ return data.owner && data.repo;
87
+ }
88
+ return data.owner && data.repo;
89
+ }, {
90
+ message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
91
+ });
92
+ /**
93
+ * Schema de saída padronizado
94
+ *
95
+ * ESTRUTURA:
96
+ * - success: Status da operação
97
+ * - action: Ação executada
98
+ * - message: Mensagem descritiva
99
+ * - data: Dados retornados (opcional)
100
+ * - error: Detalhes do erro (opcional)
101
+ */
102
+ const CommitsResultSchema = zod_1.z.object({
103
+ success: zod_1.z.boolean(),
104
+ action: zod_1.z.string(),
105
+ message: zod_1.z.string(),
106
+ data: zod_1.z.any().optional(),
107
+ error: zod_1.z.string().optional()
108
+ });
109
+ /**
110
+ * Tool: commits
111
+ *
112
+ * DESCRIÇÃO:
113
+ * Gerenciamento completo de commits Gitea com múltiplas ações
114
+ *
115
+ * ACTIONS DISPONÍVEIS:
116
+ *
117
+ * 1. list - Listar commits
118
+ * Parâmetros:
119
+ * - owner (obrigatório): Proprietário do repositório
120
+ * - repo (obrigatório): Nome do repositório
121
+ * - sha (opcional): Branch ou commit específico (padrão: branch padrão)
122
+ * - page (opcional): Página da listagem (padrão: 1)
123
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
124
+ *
125
+ * 2. get - Obter detalhes do commit
126
+ * Parâmetros:
127
+ * - owner (obrigatório): Proprietário do repositório
128
+ * - repo (obrigatório): Nome do repositório
129
+ * - commit_sha (obrigatório): SHA do commit
130
+ *
131
+ * 3. create - Criar novo commit
132
+ * Parâmetros:
133
+ * - owner (obrigatório): Proprietário do repositório
134
+ * - repo (obrigatório): Nome do repositório
135
+ * - message (obrigatório): Mensagem do commit
136
+ * - branch (obrigatório): Branch de destino
137
+ * - author_name (opcional): Nome do autor
138
+ * - author_email (opcional): Email do autor
139
+ * - committer_name (opcional): Nome do committer
140
+ * - committer_email (opcional): Email do committer
141
+ *
142
+ * 4. compare - Comparar commits
143
+ * Parâmetros:
144
+ * - owner (obrigatório): Proprietário do repositório
145
+ * - repo (obrigatório): Nome do repositório
146
+ * - base (obrigatório): Commit base para comparação
147
+ * - head (obrigatório): Commit para comparar
148
+ *
149
+ * 5. search - Buscar commits
150
+ * Parâmetros:
151
+ * - owner (obrigatório): Proprietário do repositório
152
+ * - repo (obrigatório): Nome do repositório
153
+ * - query (obrigatório): Termo de busca
154
+ * - author (opcional): Autor dos commits
155
+ * - page (opcional): Página da busca (padrão: 1)
156
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
157
+ *
158
+ * RECOMENDAÇÕES DE USO:
159
+ * - Use mensagens de commit descritivas
160
+ * - Mantenha commits atômicos
161
+ * - Documente mudanças importantes
162
+ * - Revise histórico regularmente
163
+ * - Use branches para features
164
+ * - Mantenha histórico limpo
165
+ */
166
+ exports.commitsTool = {
167
+ name: 'commits',
168
+ description: 'Manage commits with multi-provider support (GitHub and Gitea): list, get, create, compare, search. Boas práticas (solo): faça commits pequenos e atômicos com mensagens claras; use compare para auditoria; documente mudanças relevantes no corpo da mensagem.',
169
+ inputSchema: {
170
+ type: 'object',
171
+ properties: {
172
+ action: {
173
+ type: 'string',
174
+ enum: ['list', 'get', 'create', 'compare', 'search'],
175
+ description: 'Action to perform on commits'
176
+ },
177
+ owner: { type: 'string', description: 'Repository owner' },
178
+ repo: { type: 'string', description: 'Repository name' },
179
+ provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
180
+ sha: { type: 'string', description: 'Branch, tag or commit SHA' },
181
+ page: { type: 'number', description: 'Page number', minimum: 1 },
182
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
183
+ commit_sha: { type: 'string', description: 'Specific commit SHA' },
184
+ message: { type: 'string', description: 'Commit message' },
185
+ branch: { type: 'string', description: 'Target branch' },
186
+ author_name: { type: 'string', description: 'Author name' },
187
+ author_email: { type: 'string', description: 'Author email' },
188
+ committer_name: { type: 'string', description: 'Committer name' },
189
+ committer_email: { type: 'string', description: 'Committer email' },
190
+ base: { type: 'string', description: 'Base commit/branch for comparison' },
191
+ head: { type: 'string', description: 'Head commit/branch for comparison' },
192
+ query: { type: 'string', description: 'Search query' },
193
+ author: { type: 'string', description: 'Author filter for search' }
194
+ },
195
+ required: ['action']
196
+ },
197
+ /**
198
+ * Handler principal da tool commits
199
+ *
200
+ * FUNCIONALIDADE:
201
+ * - Valida entrada usando Zod schema
202
+ * - Roteia para método específico baseado na ação
203
+ * - Trata erros de forma uniforme
204
+ * - Retorna resultado padronizado
205
+ *
206
+ * FLUXO:
207
+ * 1. Validação de entrada
208
+ * 2. Seleção do provider
209
+ * 3. Roteamento por ação
210
+ * 4. Execução do método específico
211
+ * 5. Tratamento de erros
212
+ * 6. Retorno de resultado
213
+ *
214
+ * TRATAMENTO DE ERROS:
215
+ * - Validação: erro de schema
216
+ * - Execução: erro da operação
217
+ * - Roteamento: ação não suportada
218
+ *
219
+ * RECOMENDAÇÕES:
220
+ * - Sempre valide entrada antes de processar
221
+ * - Trate erros específicos adequadamente
222
+ * - Log detalhes de erro para debug
223
+ * - Retorne mensagens de erro úteis
224
+ */
225
+ async handler(input) {
226
+ try {
227
+ const validatedInput = CommitsInputSchema.parse(input);
228
+ // Seleciona o provider baseado na entrada ou usa o padrão
229
+ const provider = validatedInput.provider
230
+ ? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
231
+ : index_js_1.globalProviderFactory.getDefaultProvider();
232
+ if (!provider) {
233
+ throw new Error('Provider não encontrado ou não configurado');
234
+ }
235
+ switch (validatedInput.action) {
236
+ case 'list':
237
+ return await this.listCommits(validatedInput, provider);
238
+ case 'get':
239
+ return await this.getCommit(validatedInput, provider);
240
+ case 'create':
241
+ return await this.createCommit(validatedInput, provider);
242
+ case 'compare':
243
+ return await this.compareCommits(validatedInput, provider);
244
+ case 'search':
245
+ return await this.searchCommits(validatedInput, provider);
246
+ default:
247
+ throw new Error(`Ação não suportada: ${validatedInput.action}`);
248
+ }
249
+ }
250
+ catch (error) {
251
+ return {
252
+ success: false,
253
+ action: input.action,
254
+ message: 'Erro na operação de commits',
255
+ error: error instanceof Error ? error.message : String(error)
256
+ };
257
+ }
258
+ },
259
+ /**
260
+ * Lista commits do repositório
261
+ *
262
+ * FUNCIONALIDADE:
263
+ * - Lista commits com paginação
264
+ * - Suporta filtro por branch ou commit
265
+ * - Retorna informações básicas de cada commit
266
+ *
267
+ * PARÂMETROS OBRIGATÓRIOS:
268
+ * - owner: Proprietário do repositório
269
+ * - repo: Nome do repositório
270
+ *
271
+ * PARÂMETROS OPCIONAIS:
272
+ * - sha: Branch, tag ou commit específico (padrão: branch padrão)
273
+ * - page: Página da listagem (padrão: 1)
274
+ * - limit: Itens por página (padrão: 30, máximo: 100)
275
+ *
276
+ * VALIDAÇÕES:
277
+ * - Owner e repo obrigatórios
278
+ * - SHA deve ser válido se fornecido
279
+ * - Page deve ser >= 1
280
+ * - Limit deve ser entre 1 e 100
281
+ *
282
+ * RECOMENDAÇÕES:
283
+ * - Use paginação para repositórios grandes
284
+ * - Monitore número total de commits
285
+ * - Use SHA específico para análise
286
+ * - Mantenha histórico organizado
287
+ */
288
+ async listCommits(params, provider) {
289
+ try {
290
+ if (!params.owner || !params.repo) {
291
+ throw new Error('Owner e repo são obrigatórios');
292
+ }
293
+ const page = params.page || 1;
294
+ const limit = params.limit || 30;
295
+ const commits = await provider.listCommits(params.owner, params.repo, params.sha, page, limit);
296
+ return {
297
+ success: true,
298
+ action: 'list',
299
+ message: `${commits.length} commits encontrados`,
300
+ data: {
301
+ commits,
302
+ page,
303
+ limit,
304
+ total: commits.length,
305
+ sha: params.sha || 'branch padrão'
306
+ }
307
+ };
308
+ }
309
+ catch (error) {
310
+ throw new Error(`Falha ao listar commits: ${error instanceof Error ? error.message : String(error)}`);
311
+ }
312
+ },
313
+ /**
314
+ * Obtém detalhes de um commit específico
315
+ *
316
+ * FUNCIONALIDADE:
317
+ * - Obtém informações completas do commit
318
+ * - Inclui detalhes de autor e committer
319
+ * - Mostra arquivos modificados
320
+ * - Retorna hash e mensagem
321
+ *
322
+ * PARÂMETROS OBRIGATÓRIOS:
323
+ * - owner: Proprietário do repositório
324
+ * - repo: Nome do repositório
325
+ * - commit_sha: SHA do commit
326
+ *
327
+ * VALIDAÇÕES:
328
+ * - Todos os parâmetros obrigatórios
329
+ * - SHA deve ser válido
330
+ * - Commit deve existir
331
+ *
332
+ * RECOMENDAÇÕES:
333
+ * - Use para análise detalhada
334
+ * - Verifique arquivos modificados
335
+ * - Analise mensagem e autor
336
+ * - Documente mudanças importantes
337
+ */
338
+ async getCommit(params, provider) {
339
+ try {
340
+ if (!params.owner || !params.repo || !params.commit_sha) {
341
+ throw new Error('Owner, repo e commit_sha são obrigatórios');
342
+ }
343
+ const commit = await provider.getCommit(params.owner, params.repo, params.commit_sha);
344
+ return {
345
+ success: true,
346
+ action: 'get',
347
+ message: `Commit '${params.commit_sha}' obtido com sucesso`,
348
+ data: {
349
+ commit,
350
+ sha: params.commit_sha,
351
+ owner: params.owner,
352
+ repo: params.repo
353
+ }
354
+ };
355
+ }
356
+ catch (error) {
357
+ throw new Error(`Falha ao obter commit: ${error instanceof Error ? error.message : String(error)}`);
358
+ }
359
+ },
360
+ /**
361
+ * Cria um novo commit
362
+ *
363
+ * FUNCIONALIDADE:
364
+ * - Cria commit com mensagem personalizada
365
+ * - Suporta autor e committer diferentes
366
+ * - Permite especificar branch de destino
367
+ * - Valida dados obrigatórios
368
+ *
369
+ * PARÂMETROS OBRIGATÓRIOS:
370
+ * - owner: Proprietário do repositório
371
+ * - repo: Nome do repositório
372
+ * - message: Mensagem do commit
373
+ * - branch: Branch de destino
374
+ *
375
+ * PARÂMETROS OPCIONAIS:
376
+ * - author_name: Nome do autor
377
+ * - author_email: Email do autor
378
+ * - committer_name: Nome do committer
379
+ * - committer_email: Email do committer
380
+ *
381
+ * VALIDAÇÕES:
382
+ * - Todos os parâmetros obrigatórios
383
+ * - Mensagem não pode estar vazia
384
+ * - Branch deve existir
385
+ * - Emails devem ser válidos
386
+ *
387
+ * RECOMENDAÇÕES:
388
+ * - Use mensagens descritivas
389
+ * - Mantenha commits atômicos
390
+ * - Documente mudanças importantes
391
+ * - Use branches apropriadas
392
+ */
393
+ async createCommit(params, provider) {
394
+ try {
395
+ if (!params.owner || !params.repo || !params.message || !params.branch) {
396
+ throw new Error('Owner, repo, message e branch são obrigatórios');
397
+ }
398
+ if (params.message.trim().length === 0) {
399
+ throw new Error('Mensagem do commit não pode estar vazia');
400
+ }
401
+ // Implementar criação de commit
402
+ try {
403
+ // Para criar um commit, podemos usar a funcionalidade de criar arquivo ou fazer mudanças
404
+ // Por enquanto, vamos simular criando um commit através de mudanças em arquivos
405
+ const changes = {
406
+ message: params.message,
407
+ branch: params.branch,
408
+ author: {
409
+ name: params.author_name || 'Unknown',
410
+ email: params.author_email || 'unknown@example.com'
411
+ },
412
+ committer: {
413
+ name: params.committer_name || params.author_name || 'Unknown',
414
+ email: params.committer_email || params.author_email || 'unknown@example.com'
415
+ }
416
+ };
417
+ const commit = await provider.createCommit(params.owner, params.repo, params.message, params.branch, changes);
418
+ return {
419
+ success: true,
420
+ action: 'create',
421
+ message: `Commit criado com sucesso na branch '${params.branch}'`,
422
+ data: {
423
+ commit,
424
+ message: params.message,
425
+ branch: params.branch,
426
+ author: changes.author,
427
+ committer: changes.committer
428
+ }
429
+ };
430
+ }
431
+ catch (createError) {
432
+ // Se falhar, retornar erro específico
433
+ return {
434
+ success: false,
435
+ action: 'create',
436
+ message: `Falha ao criar commit`,
437
+ error: `Erro na criação do commit: ${createError instanceof Error ? createError.message : String(createError)}`,
438
+ data: {
439
+ message: params.message,
440
+ branch: params.branch,
441
+ attempted: true
442
+ }
443
+ };
444
+ }
445
+ }
446
+ catch (error) {
447
+ throw new Error(`Falha ao criar commit: ${error instanceof Error ? error.message : String(error)}`);
448
+ }
449
+ },
450
+ /**
451
+ * Compara dois commits ou branches
452
+ *
453
+ * FUNCIONALIDADE:
454
+ * - Compara diferenças entre commits
455
+ * - Mostra arquivos modificados
456
+ * - Retorna estatísticas de mudanças
457
+ *
458
+ * PARÂMETROS OBRIGATÓRIOS:
459
+ * - owner: Proprietário do repositório
460
+ * - repo: Nome do repositório
461
+ * - base: Commit ou branch base
462
+ * - head: Commit ou branch para comparar
463
+ *
464
+ * VALIDAÇÕES:
465
+ * - Todos os parâmetros obrigatórios
466
+ * - Base e head devem existir
467
+ * - Deve ser possível comparar
468
+ *
469
+ * RECOMENDAÇÕES:
470
+ * - Use para análise de mudanças
471
+ * - Compare antes de fazer merge
472
+ * - Analise arquivos modificados
473
+ * - Documente diferenças importantes
474
+ */
475
+ async compareCommits(params, provider) {
476
+ try {
477
+ if (!params.owner || !params.repo || !params.base || !params.head) {
478
+ throw new Error('Owner, repo, base e head são obrigatórios');
479
+ }
480
+ // Implementar comparação de commits
481
+ // Por enquanto, retorna mensagem de funcionalidade
482
+ return {
483
+ success: true,
484
+ action: 'compare',
485
+ message: `Comparação entre '${params.base}' e '${params.head}' solicitada`,
486
+ data: {
487
+ base: params.base,
488
+ head: params.head,
489
+ comparison: 'Funcionalidade de comparação será implementada'
490
+ }
491
+ };
492
+ }
493
+ catch (error) {
494
+ throw new Error(`Falha ao comparar commits: ${error instanceof Error ? error.message : String(error)}`);
495
+ }
496
+ },
497
+ /**
498
+ * Busca commits por critérios específicos
499
+ *
500
+ * FUNCIONALIDADE:
501
+ * - Busca commits por mensagem
502
+ * - Filtra por autor
503
+ * - Suporta paginação
504
+ *
505
+ * PARÂMETROS OBRIGATÓRIOS:
506
+ * - owner: Proprietário do repositório
507
+ * - repo: Nome do repositório
508
+ * - query: Termo de busca
509
+ *
510
+ * PARÂMETROS OPCIONAIS:
511
+ * - author: Autor dos commits
512
+ * - page: Página da busca (padrão: 1)
513
+ * - limit: Itens por página (padrão: 30, máximo: 100)
514
+ *
515
+ * VALIDAÇÕES:
516
+ * - Todos os parâmetros obrigatórios
517
+ * - Query deve ter pelo menos 3 caracteres
518
+ * - Repositório deve existir
519
+ *
520
+ * RECOMENDAÇÕES:
521
+ * - Use termos de busca específicos
522
+ * - Combine com filtros de autor
523
+ * - Use paginação para resultados grandes
524
+ * - Analise relevância dos resultados
525
+ */
526
+ async searchCommits(params, provider) {
527
+ try {
528
+ if (!params.owner || !params.repo || !params.query) {
529
+ throw new Error('Owner, repo e query são obrigatórios');
530
+ }
531
+ if (params.query.length < 3) {
532
+ throw new Error('Query deve ter pelo menos 3 caracteres');
533
+ }
534
+ // Garantir que query não é undefined criando variável local
535
+ const searchQuery = params.query;
536
+ const searchAuthor = params.author;
537
+ // Implementar busca básica de commits por mensagem
538
+ try {
539
+ // Para uma busca básica, vamos listar commits e filtrar por mensagem
540
+ const commits = await provider.listCommits(params.owner, params.repo, undefined, 1, 100);
541
+ // Filtrar commits que contenham a query na mensagem
542
+ const filteredCommits = commits.filter(commit => commit.message.toLowerCase().includes(searchQuery.toLowerCase()) ||
543
+ (searchAuthor && commit.author.name.toLowerCase().includes(searchAuthor.toLowerCase())) ||
544
+ (searchAuthor && commit.committer.name.toLowerCase().includes(searchAuthor.toLowerCase())));
545
+ return {
546
+ success: true,
547
+ action: 'search',
548
+ message: `Encontrados ${filteredCommits.length} commits correspondendo à busca '${searchQuery}'`,
549
+ data: {
550
+ query: searchQuery,
551
+ author: searchAuthor || 'todos',
552
+ total: commits.length,
553
+ filtered: filteredCommits.length,
554
+ results: filteredCommits.slice(0, 50) // Limitar a 50 resultados
555
+ }
556
+ };
557
+ }
558
+ catch (searchError) {
559
+ // Se a busca falhar, retornar mensagem de erro
560
+ return {
561
+ success: false,
562
+ action: 'search',
563
+ message: `Erro na busca de commits`,
564
+ error: `Falha ao buscar commits: ${searchError instanceof Error ? searchError.message : String(searchError)}`,
565
+ data: {
566
+ query: searchQuery,
567
+ author: searchAuthor || 'todos',
568
+ results: []
569
+ }
570
+ };
571
+ }
572
+ }
573
+ catch (error) {
574
+ throw new Error(`Falha ao buscar commits: ${error instanceof Error ? error.message : String(error)}`);
575
+ }
576
+ }
577
+ };
578
+ //# sourceMappingURL=commits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commits.js","sourceRoot":"","sources":["../../src/tools/commits.ts"],"names":[],"mappings":"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"}