@andrebuzeli/git-mcp 2.29.1 → 2.29.2
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/provider-factory.js +3 -3
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/server.js +7 -7
- package/dist/server.js.map +1 -1
- package/dist/tools/git-archive.d.ts +10 -10
- package/dist/tools/git-archive.js +22 -22
- package/dist/tools/git-archive.js.map +1 -1
- package/dist/tools/git-branches.d.ts +145 -145
- package/dist/tools/git-branches.js +172 -172
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-commits.d.ts +156 -156
- package/dist/tools/git-commits.js +188 -188
- package/dist/tools/git-commits.js.map +1 -1
- package/dist/tools/git-config.d.ts +15 -15
- package/dist/tools/git-config.js +45 -45
- package/dist/tools/git-config.js.map +1 -1
- package/dist/tools/git-files.d.ts +199 -199
- package/dist/tools/git-files.js +221 -221
- package/dist/tools/git-files.js.map +1 -1
- package/dist/tools/git-initialize.d.ts +41 -41
- package/dist/tools/git-initialize.js +73 -73
- package/dist/tools/git-initialize.js.map +1 -1
- package/dist/tools/git-issues.d.ts +190 -190
- package/dist/tools/git-issues.js +226 -226
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +209 -209
- package/dist/tools/git-pulls.js +226 -226
- package/dist/tools/git-pulls.js.map +1 -1
- package/dist/tools/git-releases.d.ts +157 -157
- package/dist/tools/git-releases.js +171 -171
- package/dist/tools/git-releases.js.map +1 -1
- package/dist/tools/git-remote.d.ts +6 -6
- package/dist/tools/git-remote.js +14 -14
- package/dist/tools/git-remote.js.map +1 -1
- package/dist/tools/git-repositories.d.ts +176 -176
- package/dist/tools/git-repositories.js +218 -218
- package/dist/tools/git-repositories.js.map +1 -1
- package/dist/tools/git-reset.d.ts +10 -10
- package/dist/tools/git-reset.js +15 -15
- package/dist/tools/git-reset.js.map +1 -1
- package/dist/tools/git-revert.d.ts +11 -11
- package/dist/tools/git-revert.js +18 -18
- package/dist/tools/git-revert.js.map +1 -1
- package/dist/tools/git-stash.d.ts +7 -7
- package/dist/tools/git-stash.js +11 -11
- package/dist/tools/git-stash.js.map +1 -1
- package/dist/tools/git-sync.d.ts +13 -13
- package/dist/tools/git-sync.js +34 -34
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +134 -134
- package/dist/tools/git-tags.js +152 -152
- package/dist/tools/git-tags.js.map +1 -1
- package/dist/tools/git-upload-project.js +7 -7
- package/dist/tools/git-upload-project.js.map +1 -1
- package/dist/utils/terminal-controller.js +7 -7
- package/dist/utils/terminal-controller.js.map +1 -1
- package/package.json +2 -2
|
@@ -7,45 +7,45 @@ const user_detection_js_1 = require("../utils/user-detection.js");
|
|
|
7
7
|
/**
|
|
8
8
|
* Tool: branches
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* Gerenciamento completo de branches Gitea com
|
|
10
|
+
* DESCRIÇÃO:
|
|
11
|
+
* Gerenciamento completo de branches Gitea com múltiplas ações
|
|
12
12
|
*
|
|
13
13
|
* FUNCIONALIDADES:
|
|
14
|
-
* -
|
|
14
|
+
* - Criação de novas branches
|
|
15
15
|
* - Listagem e busca de branches
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
16
|
+
* - Obtenção de detalhes específicos
|
|
17
|
+
* - Exclusão de branches
|
|
18
18
|
* - Merge de branches
|
|
19
|
-
* -
|
|
19
|
+
* - Comparação entre branches
|
|
20
20
|
*
|
|
21
21
|
* USO:
|
|
22
22
|
* - Para gerenciar fluxo de trabalho Git
|
|
23
23
|
* - Para criar branches de feature
|
|
24
24
|
* - Para organizar desenvolvimento
|
|
25
|
-
* - Para controle de
|
|
25
|
+
* - Para controle de versão
|
|
26
26
|
*
|
|
27
|
-
*
|
|
28
|
-
* - Use
|
|
27
|
+
* RECOMENDAÇÕES:
|
|
28
|
+
* - Use convenções de nomenclatura consistentes
|
|
29
29
|
* - Proteja branches importantes
|
|
30
30
|
* - Mantenha branches limpas
|
|
31
|
-
* - Documente
|
|
31
|
+
* - Documente propósito das branches
|
|
32
32
|
*/
|
|
33
33
|
/**
|
|
34
|
-
* Schema de
|
|
34
|
+
* Schema de validação para entrada da tool branches
|
|
35
35
|
*
|
|
36
|
-
*
|
|
37
|
-
* - action:
|
|
38
|
-
* -
|
|
39
|
-
* -
|
|
36
|
+
* VALIDAÇÕES:
|
|
37
|
+
* - action: Ação obrigatória (create, list, get, delete, merge, compare)
|
|
38
|
+
* - Parâmetros específicos por ação
|
|
39
|
+
* - Validação de tipos e formatos
|
|
40
40
|
*
|
|
41
|
-
*
|
|
41
|
+
* RECOMENDAÇÕES:
|
|
42
42
|
* - Sempre valide entrada antes de usar
|
|
43
|
-
* - Use
|
|
44
|
-
* - Documente
|
|
43
|
+
* - Use parâmetros opcionais adequadamente
|
|
44
|
+
* - Documente parâmetros obrigatórios
|
|
45
45
|
*/
|
|
46
46
|
const BranchesInputSchema = zod_1.z.object({
|
|
47
47
|
action: zod_1.z.enum(['create', 'list', 'get', 'delete', 'merge', 'compare']),
|
|
48
|
-
//
|
|
48
|
+
// Parâmetros comuns
|
|
49
49
|
repo: zod_1.z.string(),
|
|
50
50
|
projectPath: zod_1.z.string().describe('Local project path for git operations'),
|
|
51
51
|
provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Para create
|
|
@@ -65,11 +65,11 @@ const BranchesInputSchema = zod_1.z.object({
|
|
|
65
65
|
head_branch: zod_1.z.string().optional(),
|
|
66
66
|
});
|
|
67
67
|
/**
|
|
68
|
-
* Schema de
|
|
68
|
+
* Schema de saída padronizado
|
|
69
69
|
*
|
|
70
70
|
* ESTRUTURA:
|
|
71
|
-
* - success: Status da
|
|
72
|
-
* - action:
|
|
71
|
+
* - success: Status da operação
|
|
72
|
+
* - action: Ação executada
|
|
73
73
|
* - message: Mensagem descritiva
|
|
74
74
|
* - data: Dados retornados (opcional)
|
|
75
75
|
* - error: Detalhes do erro (opcional)
|
|
@@ -84,63 +84,63 @@ const BranchesResultSchema = zod_1.z.object({
|
|
|
84
84
|
/**
|
|
85
85
|
* Tool: branches
|
|
86
86
|
*
|
|
87
|
-
*
|
|
88
|
-
* Gerenciamento completo de branches Gitea com
|
|
87
|
+
* DESCRIÇÃO:
|
|
88
|
+
* Gerenciamento completo de branches Gitea com múltiplas ações
|
|
89
89
|
*
|
|
90
|
-
* ACTIONS
|
|
90
|
+
* ACTIONS DISPONÍVEIS:
|
|
91
91
|
*
|
|
92
92
|
* 1. create - Criar nova branch
|
|
93
|
-
*
|
|
94
|
-
* - owner (
|
|
95
|
-
* - repo (
|
|
96
|
-
* - branch_name (
|
|
97
|
-
* - from_branch (
|
|
93
|
+
* Parâmetros:
|
|
94
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
95
|
+
* - repo (obrigatório): Nome do repositório
|
|
96
|
+
* - branch_name (obrigatório): Nome da nova branch
|
|
97
|
+
* - from_branch (obrigatório): Branch de origem
|
|
98
98
|
*
|
|
99
99
|
* 2. list - Listar branches
|
|
100
|
-
*
|
|
101
|
-
* - owner (
|
|
102
|
-
* - repo (
|
|
103
|
-
* - page (opcional):
|
|
104
|
-
* - limit (opcional): Itens por
|
|
100
|
+
* Parâmetros:
|
|
101
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
102
|
+
* - repo (obrigatório): Nome do repositório
|
|
103
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
104
|
+
* - limit (opcional): Itens por página (padrão: 30)
|
|
105
105
|
*
|
|
106
106
|
* 3. get - Obter detalhes da branch
|
|
107
|
-
*
|
|
108
|
-
* - owner (
|
|
109
|
-
* - repo (
|
|
110
|
-
* - branch (
|
|
107
|
+
* Parâmetros:
|
|
108
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
109
|
+
* - repo (obrigatório): Nome do repositório
|
|
110
|
+
* - branch (obrigatório): Nome da branch
|
|
111
111
|
*
|
|
112
112
|
* 4. delete - Deletar branch
|
|
113
|
-
*
|
|
114
|
-
* - owner (
|
|
115
|
-
* - repo (
|
|
116
|
-
* - branch (
|
|
113
|
+
* Parâmetros:
|
|
114
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
115
|
+
* - repo (obrigatório): Nome do repositório
|
|
116
|
+
* - branch (obrigatório): Nome da branch
|
|
117
117
|
*
|
|
118
118
|
* 5. merge - Fazer merge de branches
|
|
119
|
-
*
|
|
120
|
-
* - owner (
|
|
121
|
-
* - repo (
|
|
122
|
-
* - head (
|
|
123
|
-
* - base (
|
|
124
|
-
* - merge_method (opcional):
|
|
119
|
+
* Parâmetros:
|
|
120
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
121
|
+
* - repo (obrigatório): Nome do repositório
|
|
122
|
+
* - head (obrigatório): Branch de origem
|
|
123
|
+
* - base (obrigatório): Branch de destino
|
|
124
|
+
* - merge_method (opcional): Método de merge (padrão: merge)
|
|
125
125
|
*
|
|
126
126
|
* 6. compare - Comparar branches
|
|
127
|
-
*
|
|
128
|
-
* - owner (
|
|
129
|
-
* - repo (
|
|
130
|
-
* - base_branch (
|
|
131
|
-
* - head_branch (
|
|
127
|
+
* Parâmetros:
|
|
128
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
129
|
+
* - repo (obrigatório): Nome do repositório
|
|
130
|
+
* - base_branch (obrigatório): Branch base
|
|
131
|
+
* - head_branch (obrigatório): Branch de comparação
|
|
132
132
|
*
|
|
133
|
-
*
|
|
133
|
+
* RECOMENDAÇÕES DE USO:
|
|
134
134
|
* - Use nomes descritivos para branches
|
|
135
135
|
* - Mantenha branches principais protegidas
|
|
136
|
-
* -
|
|
137
|
-
* - Documente
|
|
138
|
-
* - Use
|
|
136
|
+
* - Faça merge regularmente
|
|
137
|
+
* - Documente propósito das branches
|
|
138
|
+
* - Use convenções de nomenclatura
|
|
139
139
|
* - Limpe branches antigas
|
|
140
140
|
*/
|
|
141
141
|
exports.branchesTool = {
|
|
142
142
|
name: 'git-branches',
|
|
143
|
-
description: 'tool: Gerencia branches Git,
|
|
143
|
+
description: 'tool: Gerencia branches Git, criação, listagem, merge e comparação\n──────────────\naction create: cria nova branch\naction create requires: repo, branch_name, from_branch, provider, projectPath\n───────────────\naction list: lista branches do repositório\naction list requires: repo, page, limit, provider, projectPath\n───────────────\naction get: obtém detalhes de branch\naction get requires: repo, branch, provider, projectPath\n───────────────\naction delete: remove branch\naction delete requires: repo, branch, provider, projectPath\n───────────────\naction merge: integra branches\naction merge requires: repo, head, base, merge_method, provider, projectPath\n───────────────\naction compare: compara branches\naction compare requires: repo, base_branch, head_branch, provider, projectPath',
|
|
144
144
|
inputSchema: {
|
|
145
145
|
type: 'object',
|
|
146
146
|
properties: {
|
|
@@ -174,40 +174,40 @@ exports.branchesTool = {
|
|
|
174
174
|
*
|
|
175
175
|
* FUNCIONALIDADE:
|
|
176
176
|
* - Valida entrada usando Zod schema
|
|
177
|
-
* - Roteia para
|
|
177
|
+
* - Roteia para método específico baseado na ação
|
|
178
178
|
* - Trata erros de forma uniforme
|
|
179
179
|
* - Retorna resultado padronizado
|
|
180
180
|
*
|
|
181
181
|
* FLUXO:
|
|
182
|
-
* 1.
|
|
183
|
-
* 2. Roteamento por
|
|
184
|
-
* 3.
|
|
182
|
+
* 1. Validação de entrada
|
|
183
|
+
* 2. Roteamento por ação
|
|
184
|
+
* 3. Execução do método específico
|
|
185
185
|
* 4. Tratamento de erros
|
|
186
186
|
* 5. Retorno de resultado
|
|
187
187
|
*
|
|
188
188
|
* TRATAMENTO DE ERROS:
|
|
189
|
-
* -
|
|
190
|
-
* -
|
|
191
|
-
* - Roteamento:
|
|
189
|
+
* - Validação: erro de schema
|
|
190
|
+
* - Execução: erro da operação
|
|
191
|
+
* - Roteamento: ação não suportada
|
|
192
192
|
*
|
|
193
|
-
*
|
|
193
|
+
* RECOMENDAÇÕES:
|
|
194
194
|
* - Sempre valide entrada antes de processar
|
|
195
|
-
* - Trate erros
|
|
195
|
+
* - Trate erros específicos adequadamente
|
|
196
196
|
* - Log detalhes de erro para debug
|
|
197
|
-
* - Retorne mensagens de erro
|
|
197
|
+
* - Retorne mensagens de erro úteis
|
|
198
198
|
*/
|
|
199
199
|
async handler(input) {
|
|
200
200
|
try {
|
|
201
201
|
const validatedInput = BranchesInputSchema.parse(input);
|
|
202
|
-
// Aplicar auto-
|
|
202
|
+
// Aplicar auto-detecção apenas para owner dentro do provider especificado
|
|
203
203
|
const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
|
|
204
|
-
// Usar o provider especificado pelo
|
|
204
|
+
// Usar o provider especificado pelo usuário ou o padrão se não especificado
|
|
205
205
|
let provider;
|
|
206
206
|
try {
|
|
207
207
|
if (processedInput.provider) {
|
|
208
208
|
const requestedProvider = index_js_1.globalProviderFactory.getProvider(processedInput.provider);
|
|
209
209
|
if (!requestedProvider) {
|
|
210
|
-
console.warn(`[BRANCHES] Provider '${processedInput.provider}'
|
|
210
|
+
console.warn(`[BRANCHES] Provider '${processedInput.provider}' não encontrado, usando padrão`);
|
|
211
211
|
provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
212
212
|
}
|
|
213
213
|
else {
|
|
@@ -218,12 +218,12 @@ exports.branchesTool = {
|
|
|
218
218
|
provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
219
219
|
}
|
|
220
220
|
if (!provider) {
|
|
221
|
-
throw new Error('Nenhum provider
|
|
221
|
+
throw new Error('Nenhum provider disponível');
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
catch (providerError) {
|
|
225
225
|
console.error('[BRANCHES] Erro ao obter provider:', providerError);
|
|
226
|
-
throw new Error(`Erro de
|
|
226
|
+
throw new Error(`Erro de configuração do provider: ${providerError instanceof Error ? providerError.message : 'Provider não disponível'}`);
|
|
227
227
|
}
|
|
228
228
|
switch (processedInput.action) {
|
|
229
229
|
case 'create':
|
|
@@ -239,47 +239,47 @@ exports.branchesTool = {
|
|
|
239
239
|
case 'compare':
|
|
240
240
|
return await this.compareBranches(processedInput, provider);
|
|
241
241
|
default:
|
|
242
|
-
throw new Error(`
|
|
242
|
+
throw new Error(`Ação não suportada: ${processedInput.action}`);
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
catch (error) {
|
|
246
246
|
return {
|
|
247
247
|
success: false,
|
|
248
248
|
action: input.action,
|
|
249
|
-
message: 'Erro na
|
|
249
|
+
message: 'Erro na operação de branches',
|
|
250
250
|
error: error instanceof Error ? error.message : String(error)
|
|
251
251
|
};
|
|
252
252
|
}
|
|
253
253
|
},
|
|
254
254
|
/**
|
|
255
|
-
* Cria uma nova branch no
|
|
255
|
+
* Cria uma nova branch no repositório
|
|
256
256
|
*
|
|
257
257
|
* FUNCIONALIDADE:
|
|
258
|
-
* - Valida
|
|
258
|
+
* - Valida parâmetros obrigatórios
|
|
259
259
|
* - Cria branch a partir de branch existente
|
|
260
260
|
* - Retorna detalhes da nova branch
|
|
261
261
|
*
|
|
262
|
-
*
|
|
263
|
-
* - owner:
|
|
264
|
-
* - repo: Nome do
|
|
262
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
263
|
+
* - owner: Proprietário do repositório
|
|
264
|
+
* - repo: Nome do repositório
|
|
265
265
|
* - branch_name: Nome da nova branch
|
|
266
266
|
* - from_branch: Branch de origem
|
|
267
267
|
*
|
|
268
|
-
*
|
|
269
|
-
* - Todos os
|
|
268
|
+
* VALIDAÇÕES:
|
|
269
|
+
* - Todos os parâmetros obrigatórios
|
|
270
270
|
* - Branch de origem deve existir
|
|
271
|
-
* - Nome da nova branch deve ser
|
|
271
|
+
* - Nome da nova branch deve ser único
|
|
272
272
|
*
|
|
273
|
-
*
|
|
273
|
+
* RECOMENDAÇÕES:
|
|
274
274
|
* - Use nomes descritivos para branches
|
|
275
|
-
* - Crie a partir de branches
|
|
276
|
-
* - Documente
|
|
277
|
-
* - Use
|
|
275
|
+
* - Crie a partir de branches estáveis
|
|
276
|
+
* - Documente propósito da branch
|
|
277
|
+
* - Use convenções de nomenclatura
|
|
278
278
|
*/
|
|
279
279
|
async createBranch(params, provider) {
|
|
280
280
|
try {
|
|
281
281
|
if (!params.repo || !params.branch_name || !params.from_branch) {
|
|
282
|
-
throw new Error('Repo, branch_name e from_branch
|
|
282
|
+
throw new Error('Repo, branch_name e from_branch são obrigatórios');
|
|
283
283
|
}
|
|
284
284
|
const currentUser = await provider.getCurrentUser();
|
|
285
285
|
const owner = currentUser.login;
|
|
@@ -296,35 +296,35 @@ exports.branchesTool = {
|
|
|
296
296
|
}
|
|
297
297
|
},
|
|
298
298
|
/**
|
|
299
|
-
* Lista todas as branches do
|
|
299
|
+
* Lista todas as branches do repositório
|
|
300
300
|
*
|
|
301
301
|
* FUNCIONALIDADE:
|
|
302
|
-
* - Lista branches com
|
|
303
|
-
* - Retorna
|
|
304
|
-
* - Suporta filtros de
|
|
302
|
+
* - Lista branches com paginação
|
|
303
|
+
* - Retorna informações básicas de cada branch
|
|
304
|
+
* - Suporta filtros de paginação
|
|
305
305
|
*
|
|
306
|
-
*
|
|
307
|
-
* - owner:
|
|
308
|
-
* - repo: Nome do
|
|
306
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
307
|
+
* - owner: Proprietário do repositório
|
|
308
|
+
* - repo: Nome do repositório
|
|
309
309
|
*
|
|
310
|
-
*
|
|
311
|
-
* - page:
|
|
312
|
-
* - limit: Itens por
|
|
310
|
+
* PARÂMETROS OPCIONAIS:
|
|
311
|
+
* - page: Página da listagem (padrão: 1)
|
|
312
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
313
313
|
*
|
|
314
|
-
*
|
|
315
|
-
* - e repo
|
|
314
|
+
* VALIDAÇÕES:
|
|
315
|
+
* - e repo obrigatórios
|
|
316
316
|
* - Page deve ser >= 1
|
|
317
317
|
* - Limit deve ser entre 1 e 100
|
|
318
318
|
*
|
|
319
|
-
*
|
|
320
|
-
* - Use
|
|
321
|
-
* - Monitore
|
|
319
|
+
* RECOMENDAÇÕES:
|
|
320
|
+
* - Use paginação para repositórios grandes
|
|
321
|
+
* - Monitore número total de branches
|
|
322
322
|
* - Mantenha branches organizadas
|
|
323
323
|
*/
|
|
324
324
|
async listBranches(params, provider) {
|
|
325
325
|
try {
|
|
326
326
|
if (!params.repo) {
|
|
327
|
-
throw new Error('Repo
|
|
327
|
+
throw new Error('Repo é obrigatório');
|
|
328
328
|
}
|
|
329
329
|
const currentUser = await provider.getCurrentUser();
|
|
330
330
|
const owner = currentUser.login;
|
|
@@ -348,31 +348,31 @@ exports.branchesTool = {
|
|
|
348
348
|
}
|
|
349
349
|
},
|
|
350
350
|
/**
|
|
351
|
-
*
|
|
351
|
+
* Obtém detalhes de uma branch específica
|
|
352
352
|
*
|
|
353
353
|
* FUNCIONALIDADE:
|
|
354
|
-
* - Retorna
|
|
354
|
+
* - Retorna informações completas da branch
|
|
355
355
|
* - Inclui commit mais recente
|
|
356
|
-
* -
|
|
356
|
+
* - Informações de proteção e permissões
|
|
357
357
|
*
|
|
358
|
-
*
|
|
359
|
-
* - owner:
|
|
360
|
-
* - repo: Nome do
|
|
358
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
359
|
+
* - owner: Proprietário do repositório
|
|
360
|
+
* - repo: Nome do repositório
|
|
361
361
|
* - branch: Nome da branch
|
|
362
362
|
*
|
|
363
|
-
*
|
|
364
|
-
* - Todos os
|
|
365
|
-
* - Branch deve existir no
|
|
363
|
+
* VALIDAÇÕES:
|
|
364
|
+
* - Todos os parâmetros obrigatórios
|
|
365
|
+
* - Branch deve existir no repositório
|
|
366
366
|
*
|
|
367
|
-
*
|
|
368
|
-
* - Use para obter
|
|
369
|
-
* - Verifique status de
|
|
367
|
+
* RECOMENDAÇÕES:
|
|
368
|
+
* - Use para obter informações detalhadas
|
|
369
|
+
* - Verifique status de proteção
|
|
370
370
|
* - Monitore commits recentes
|
|
371
371
|
*/
|
|
372
372
|
async getBranch(params, provider) {
|
|
373
373
|
try {
|
|
374
374
|
if (!params.repo || !params.branch) {
|
|
375
|
-
throw new Error('Repo e branch
|
|
375
|
+
throw new Error('Repo e branch são obrigatórios');
|
|
376
376
|
}
|
|
377
377
|
const currentUser = await provider.getCurrentUser();
|
|
378
378
|
const owner = currentUser.login;
|
|
@@ -389,33 +389,33 @@ exports.branchesTool = {
|
|
|
389
389
|
}
|
|
390
390
|
},
|
|
391
391
|
/**
|
|
392
|
-
* Deleta uma branch do
|
|
392
|
+
* Deleta uma branch do repositório
|
|
393
393
|
*
|
|
394
394
|
* FUNCIONALIDADE:
|
|
395
395
|
* - Remove branch especificada
|
|
396
|
-
* - Valida
|
|
397
|
-
* - Confirma
|
|
396
|
+
* - Valida permissões de exclusão
|
|
397
|
+
* - Confirma exclusão bem-sucedida
|
|
398
398
|
*
|
|
399
|
-
*
|
|
400
|
-
* - owner:
|
|
401
|
-
* - repo: Nome do
|
|
399
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
400
|
+
* - owner: Proprietário do repositório
|
|
401
|
+
* - repo: Nome do repositório
|
|
402
402
|
* - branch: Nome da branch a ser deletada
|
|
403
403
|
*
|
|
404
|
-
*
|
|
405
|
-
* - Todos os
|
|
404
|
+
* VALIDAÇÕES:
|
|
405
|
+
* - Todos os parâmetros obrigatórios
|
|
406
406
|
* - Branch deve existir
|
|
407
|
-
* -
|
|
407
|
+
* - Usuário deve ter permissão de exclusão
|
|
408
408
|
*
|
|
409
|
-
*
|
|
409
|
+
* RECOMENDAÇÕES:
|
|
410
410
|
* - Confirme antes de deletar
|
|
411
411
|
* - Verifique se branch foi mergeada
|
|
412
|
-
* - Mantenha backup se
|
|
413
|
-
* - Documente motivo da
|
|
412
|
+
* - Mantenha backup se necessário
|
|
413
|
+
* - Documente motivo da exclusão
|
|
414
414
|
*/
|
|
415
415
|
async deleteBranch(params, provider) {
|
|
416
416
|
try {
|
|
417
417
|
if (!params.repo || !params.branch) {
|
|
418
|
-
throw new Error('Repo e branch
|
|
418
|
+
throw new Error('Repo e branch são obrigatórios');
|
|
419
419
|
}
|
|
420
420
|
const currentUser = await provider.getCurrentUser();
|
|
421
421
|
const owner = currentUser.login;
|
|
@@ -436,33 +436,33 @@ exports.branchesTool = {
|
|
|
436
436
|
*
|
|
437
437
|
* FUNCIONALIDADE:
|
|
438
438
|
* - Merge de branch de origem em branch de destino
|
|
439
|
-
* - Suporta diferentes
|
|
439
|
+
* - Suporta diferentes métodos de merge
|
|
440
440
|
* - Retorna resultado do merge
|
|
441
441
|
*
|
|
442
|
-
*
|
|
443
|
-
* - owner:
|
|
444
|
-
* - repo: Nome do
|
|
445
|
-
* - head: Branch de origem (
|
|
446
|
-
* - base: Branch de destino (
|
|
442
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
443
|
+
* - owner: Proprietário do repositório
|
|
444
|
+
* - repo: Nome do repositório
|
|
445
|
+
* - head: Branch de origem (será mergeada)
|
|
446
|
+
* - base: Branch de destino (receberá o merge)
|
|
447
447
|
*
|
|
448
|
-
*
|
|
449
|
-
* - merge_method:
|
|
448
|
+
* PARÂMETROS OPCIONAIS:
|
|
449
|
+
* - merge_method: Método de merge (merge, rebase, squash)
|
|
450
450
|
*
|
|
451
|
-
*
|
|
452
|
-
* - Todos os
|
|
451
|
+
* VALIDAÇÕES:
|
|
452
|
+
* - Todos os parâmetros obrigatórios
|
|
453
453
|
* - Branches devem existir
|
|
454
|
-
* -
|
|
454
|
+
* - Não deve haver conflitos
|
|
455
455
|
*
|
|
456
|
-
*
|
|
456
|
+
* RECOMENDAÇÕES:
|
|
457
457
|
* - Resolva conflitos antes do merge
|
|
458
|
-
* - Escolha
|
|
459
|
-
* - Teste
|
|
460
|
-
* - Documente
|
|
458
|
+
* - Escolha método de merge adequado
|
|
459
|
+
* - Teste após o merge
|
|
460
|
+
* - Documente mudanças
|
|
461
461
|
*/
|
|
462
462
|
async mergeBranches(params, provider) {
|
|
463
463
|
try {
|
|
464
464
|
if (!params.repo || !params.head || !params.base) {
|
|
465
|
-
throw new Error('Repo, head e base
|
|
465
|
+
throw new Error('Repo, head e base são obrigatórios');
|
|
466
466
|
}
|
|
467
467
|
const currentUser = await provider.getCurrentUser();
|
|
468
468
|
const owner = currentUser.login;
|
|
@@ -473,13 +473,13 @@ exports.branchesTool = {
|
|
|
473
473
|
await provider.getBranch(owner, params.repo, params.base);
|
|
474
474
|
}
|
|
475
475
|
catch (error) {
|
|
476
|
-
throw new Error(`Uma das branches
|
|
476
|
+
throw new Error(`Uma das branches não existe: ${params.head} ou ${params.base}`);
|
|
477
477
|
}
|
|
478
478
|
// Criar pull request para fazer o merge
|
|
479
479
|
const prTitle = `Merge ${params.head} into ${params.base}`;
|
|
480
|
-
const prBody = `Merge
|
|
480
|
+
const prBody = `Merge automático da branch '${params.head}' na branch '${params.base}'\n\nMétodo: ${mergeMethod}`;
|
|
481
481
|
const pullRequest = await provider.createPullRequest(owner, params.repo, prTitle, prBody, params.head, params.base);
|
|
482
|
-
// Se o merge_method for merge direto, fazer merge
|
|
482
|
+
// Se o merge_method for merge direto, fazer merge automático
|
|
483
483
|
if (mergeMethod === 'merge') {
|
|
484
484
|
try {
|
|
485
485
|
await provider.mergePullRequest(owner, params.repo, pullRequest.number, 'merge');
|
|
@@ -500,7 +500,7 @@ exports.branchesTool = {
|
|
|
500
500
|
return {
|
|
501
501
|
success: true,
|
|
502
502
|
action: 'merge',
|
|
503
|
-
message: `Pull request criado para merge de '${params.head}' em '${params.base}' (merge
|
|
503
|
+
message: `Pull request criado para merge de '${params.head}' em '${params.base}' (merge automático falhou)`,
|
|
504
504
|
data: {
|
|
505
505
|
head: params.head,
|
|
506
506
|
base: params.base,
|
|
@@ -533,30 +533,30 @@ exports.branchesTool = {
|
|
|
533
533
|
* Compara duas branches
|
|
534
534
|
*
|
|
535
535
|
* FUNCIONALIDADE:
|
|
536
|
-
* - Compara
|
|
536
|
+
* - Compara diferenças entre branches
|
|
537
537
|
* - Retorna commits diferentes
|
|
538
|
-
* - Mostra
|
|
538
|
+
* - Mostra divergências
|
|
539
539
|
*
|
|
540
|
-
*
|
|
541
|
-
* - owner:
|
|
542
|
-
* - repo: Nome do
|
|
543
|
-
* - base_branch: Branch base para
|
|
540
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
541
|
+
* - owner: Proprietário do repositório
|
|
542
|
+
* - repo: Nome do repositório
|
|
543
|
+
* - base_branch: Branch base para comparação
|
|
544
544
|
* - head_branch: Branch a ser comparada
|
|
545
545
|
*
|
|
546
|
-
*
|
|
547
|
-
* - Todos os
|
|
546
|
+
* VALIDAÇÕES:
|
|
547
|
+
* - Todos os parâmetros obrigatórios
|
|
548
548
|
* - Ambas as branches devem existir
|
|
549
549
|
*
|
|
550
|
-
*
|
|
551
|
-
* - Use para verificar
|
|
550
|
+
* RECOMENDAÇÕES:
|
|
551
|
+
* - Use para verificar divergências
|
|
552
552
|
* - Compare antes de fazer merge
|
|
553
553
|
* - Analise commits diferentes
|
|
554
|
-
* - Documente
|
|
554
|
+
* - Documente diferenças importantes
|
|
555
555
|
*/
|
|
556
556
|
async compareBranches(params, provider) {
|
|
557
557
|
try {
|
|
558
558
|
if (!params.repo || !params.base_branch || !params.head_branch) {
|
|
559
|
-
throw new Error('Repo, base_branch e head_branch
|
|
559
|
+
throw new Error('Repo, base_branch e head_branch são obrigatórios');
|
|
560
560
|
}
|
|
561
561
|
const currentUser = await provider.getCurrentUser();
|
|
562
562
|
const owner = currentUser.login;
|
|
@@ -566,17 +566,17 @@ exports.branchesTool = {
|
|
|
566
566
|
const headBranch = await provider.getBranch(owner, params.repo, params.head_branch);
|
|
567
567
|
}
|
|
568
568
|
catch (error) {
|
|
569
|
-
throw new Error(`Uma das branches
|
|
569
|
+
throw new Error(`Uma das branches não existe: ${params.base_branch} ou ${params.head_branch}`);
|
|
570
570
|
}
|
|
571
571
|
// Obter commits de cada branch
|
|
572
572
|
const baseCommits = await provider.listCommits(owner, params.repo, params.base_branch, 1, 10);
|
|
573
573
|
const headCommits = await provider.listCommits(owner, params.repo, params.head_branch, 1, 10);
|
|
574
|
-
// Comparar commits (simplificado - apenas verificar se
|
|
574
|
+
// Comparar commits (simplificado - apenas verificar se há commits diferentes)
|
|
575
575
|
const baseCommitShas = baseCommits.map(c => c.sha);
|
|
576
576
|
const headCommitShas = headCommits.map(c => c.sha);
|
|
577
577
|
const uniqueBaseCommits = baseCommits.filter(c => !headCommitShas.includes(c.sha));
|
|
578
578
|
const uniqueHeadCommits = headCommits.filter(c => !baseCommitShas.includes(c.sha));
|
|
579
|
-
// Usar compareCommits se
|
|
579
|
+
// Usar compareCommits se disponível no provider
|
|
580
580
|
let detailedComparison = null;
|
|
581
581
|
try {
|
|
582
582
|
if (provider.compareCommits) {
|
|
@@ -584,12 +584,12 @@ exports.branchesTool = {
|
|
|
584
584
|
}
|
|
585
585
|
}
|
|
586
586
|
catch (error) {
|
|
587
|
-
console.warn('
|
|
587
|
+
console.warn('Comparação detalhada não disponível:', error);
|
|
588
588
|
}
|
|
589
589
|
return {
|
|
590
590
|
success: true,
|
|
591
591
|
action: 'compare',
|
|
592
|
-
message: `
|
|
592
|
+
message: `Comparação entre '${params.base_branch}' e '${params.head_branch}' realizada com sucesso`,
|
|
593
593
|
data: {
|
|
594
594
|
base: {
|
|
595
595
|
branch: params.base_branch,
|
|
@@ -607,14 +607,14 @@ exports.branchesTool = {
|
|
|
607
607
|
base_ahead: uniqueBaseCommits.length,
|
|
608
608
|
head_ahead: uniqueHeadCommits.length,
|
|
609
609
|
divergent: uniqueBaseCommits.length > 0 && uniqueHeadCommits.length > 0,
|
|
610
|
-
mergeable: true, // Assumir mergeable por
|
|
610
|
+
mergeable: true, // Assumir mergeable por padrão
|
|
611
611
|
detailed: detailedComparison
|
|
612
612
|
},
|
|
613
613
|
summary: {
|
|
614
614
|
can_merge: uniqueBaseCommits.length === 0 || uniqueHeadCommits.length === 0,
|
|
615
615
|
requires_merge: uniqueBaseCommits.length > 0 && uniqueHeadCommits.length > 0,
|
|
616
|
-
recommendation: uniqueBaseCommits.length === 0 ? 'head
|
|
617
|
-
uniqueHeadCommits.length === 0 ? 'base
|
|
616
|
+
recommendation: uniqueBaseCommits.length === 0 ? 'head está à frente' :
|
|
617
|
+
uniqueHeadCommits.length === 0 ? 'base está à frente' :
|
|
618
618
|
'branches divergiram'
|
|
619
619
|
}
|
|
620
620
|
}
|
|
@@ -625,7 +625,7 @@ exports.branchesTool = {
|
|
|
625
625
|
}
|
|
626
626
|
},
|
|
627
627
|
/**
|
|
628
|
-
* Verifica se erro
|
|
628
|
+
* Verifica se erro é relacionado a Git
|
|
629
629
|
*/
|
|
630
630
|
isGitRelatedError(errorMessage) {
|
|
631
631
|
const gitKeywords = [
|