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