@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.
- package/README.md +346 -0
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +299 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +299 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +381 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base-provider.d.ts +139 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +246 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/error-handler.d.ts +51 -0
- package/dist/providers/error-handler.d.ts.map +1 -0
- package/dist/providers/error-handler.js +170 -0
- package/dist/providers/error-handler.js.map +1 -0
- package/dist/providers/gitea-provider.d.ts +68 -0
- package/dist/providers/gitea-provider.d.ts.map +1 -0
- package/dist/providers/gitea-provider.js +515 -0
- package/dist/providers/gitea-provider.js.map +1 -0
- package/dist/providers/github-provider.d.ts +68 -0
- package/dist/providers/github-provider.d.ts.map +1 -0
- package/dist/providers/github-provider.js +518 -0
- package/dist/providers/github-provider.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +41 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider-factory.d.ts +75 -0
- package/dist/providers/provider-factory.d.ts.map +1 -0
- package/dist/providers/provider-factory.js +298 -0
- package/dist/providers/provider-factory.js.map +1 -0
- package/dist/providers/types.d.ts +276 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +77 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +262 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/actions.d.ts +272 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +428 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/analytics.d.ts +326 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +473 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/branches.d.ts +461 -0
- package/dist/tools/branches.d.ts.map +1 -0
- package/dist/tools/branches.js +525 -0
- package/dist/tools/branches.js.map +1 -0
- package/dist/tools/code-review.d.ts +323 -0
- package/dist/tools/code-review.d.ts.map +1 -0
- package/dist/tools/code-review.js +552 -0
- package/dist/tools/code-review.js.map +1 -0
- package/dist/tools/commits.d.ts +488 -0
- package/dist/tools/commits.d.ts.map +1 -0
- package/dist/tools/commits.js +578 -0
- package/dist/tools/commits.js.map +1 -0
- package/dist/tools/deployments.d.ts +319 -0
- package/dist/tools/deployments.d.ts.map +1 -0
- package/dist/tools/deployments.js +355 -0
- package/dist/tools/deployments.js.map +1 -0
- package/dist/tools/files.d.ts +456 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +531 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/git-sync.d.ts +177 -0
- package/dist/tools/git-sync.d.ts.map +1 -0
- package/dist/tools/git-sync.js +112 -0
- package/dist/tools/git-sync.js.map +1 -0
- package/dist/tools/issues.d.ts +579 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +631 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/pulls.d.ts +702 -0
- package/dist/tools/pulls.d.ts.map +1 -0
- package/dist/tools/pulls.js +730 -0
- package/dist/tools/pulls.js.map +1 -0
- package/dist/tools/releases.d.ts +495 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +551 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/repositories.d.ts +513 -0
- package/dist/tools/repositories.d.ts.map +1 -0
- package/dist/tools/repositories.js +634 -0
- package/dist/tools/repositories.js.map +1 -0
- package/dist/tools/security.d.ts +341 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +394 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/tags.d.ts +419 -0
- package/dist/tools/tags.d.ts.map +1 -0
- package/dist/tools/tags.js +479 -0
- package/dist/tools/tags.js.map +1 -0
- package/dist/tools/users.d.ts +376 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +495 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/validator.d.ts +192 -0
- package/dist/tools/validator.d.ts.map +1 -0
- package/dist/tools/validator.js +198 -0
- package/dist/tools/validator.js.map +1 -0
- package/dist/tools/version-control.d.ts +247 -0
- package/dist/tools/version-control.d.ts.map +1 -0
- package/dist/tools/version-control.js +521 -0
- package/dist/tools/version-control.js.map +1 -0
- package/dist/tools/webhooks.d.ts +478 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +541 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/tools/workflows.d.ts +313 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +430 -0
- package/dist/tools/workflows.js.map +1 -0
- 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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"}
|