@andrebuzeli/git-mcp 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +346 -0
  2. package/dist/client.d.ts +307 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +299 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +299 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +381 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/index.d.ts +22 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +53 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/providers/base-provider.d.ts +139 -0
  15. package/dist/providers/base-provider.d.ts.map +1 -0
  16. package/dist/providers/base-provider.js +246 -0
  17. package/dist/providers/base-provider.js.map +1 -0
  18. package/dist/providers/error-handler.d.ts +51 -0
  19. package/dist/providers/error-handler.d.ts.map +1 -0
  20. package/dist/providers/error-handler.js +170 -0
  21. package/dist/providers/error-handler.js.map +1 -0
  22. package/dist/providers/gitea-provider.d.ts +68 -0
  23. package/dist/providers/gitea-provider.d.ts.map +1 -0
  24. package/dist/providers/gitea-provider.js +515 -0
  25. package/dist/providers/gitea-provider.js.map +1 -0
  26. package/dist/providers/github-provider.d.ts +68 -0
  27. package/dist/providers/github-provider.d.ts.map +1 -0
  28. package/dist/providers/github-provider.js +518 -0
  29. package/dist/providers/github-provider.js.map +1 -0
  30. package/dist/providers/index.d.ts +13 -0
  31. package/dist/providers/index.d.ts.map +1 -0
  32. package/dist/providers/index.js +41 -0
  33. package/dist/providers/index.js.map +1 -0
  34. package/dist/providers/provider-factory.d.ts +75 -0
  35. package/dist/providers/provider-factory.d.ts.map +1 -0
  36. package/dist/providers/provider-factory.js +298 -0
  37. package/dist/providers/provider-factory.js.map +1 -0
  38. package/dist/providers/types.d.ts +276 -0
  39. package/dist/providers/types.d.ts.map +1 -0
  40. package/dist/providers/types.js +7 -0
  41. package/dist/providers/types.js.map +1 -0
  42. package/dist/server.d.ts +77 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +262 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools/actions.d.ts +272 -0
  47. package/dist/tools/actions.d.ts.map +1 -0
  48. package/dist/tools/actions.js +428 -0
  49. package/dist/tools/actions.js.map +1 -0
  50. package/dist/tools/analytics.d.ts +326 -0
  51. package/dist/tools/analytics.d.ts.map +1 -0
  52. package/dist/tools/analytics.js +473 -0
  53. package/dist/tools/analytics.js.map +1 -0
  54. package/dist/tools/branches.d.ts +461 -0
  55. package/dist/tools/branches.d.ts.map +1 -0
  56. package/dist/tools/branches.js +525 -0
  57. package/dist/tools/branches.js.map +1 -0
  58. package/dist/tools/code-review.d.ts +323 -0
  59. package/dist/tools/code-review.d.ts.map +1 -0
  60. package/dist/tools/code-review.js +552 -0
  61. package/dist/tools/code-review.js.map +1 -0
  62. package/dist/tools/commits.d.ts +488 -0
  63. package/dist/tools/commits.d.ts.map +1 -0
  64. package/dist/tools/commits.js +578 -0
  65. package/dist/tools/commits.js.map +1 -0
  66. package/dist/tools/deployments.d.ts +319 -0
  67. package/dist/tools/deployments.d.ts.map +1 -0
  68. package/dist/tools/deployments.js +355 -0
  69. package/dist/tools/deployments.js.map +1 -0
  70. package/dist/tools/files.d.ts +456 -0
  71. package/dist/tools/files.d.ts.map +1 -0
  72. package/dist/tools/files.js +531 -0
  73. package/dist/tools/files.js.map +1 -0
  74. package/dist/tools/git-sync.d.ts +177 -0
  75. package/dist/tools/git-sync.d.ts.map +1 -0
  76. package/dist/tools/git-sync.js +112 -0
  77. package/dist/tools/git-sync.js.map +1 -0
  78. package/dist/tools/issues.d.ts +579 -0
  79. package/dist/tools/issues.d.ts.map +1 -0
  80. package/dist/tools/issues.js +631 -0
  81. package/dist/tools/issues.js.map +1 -0
  82. package/dist/tools/pulls.d.ts +702 -0
  83. package/dist/tools/pulls.d.ts.map +1 -0
  84. package/dist/tools/pulls.js +730 -0
  85. package/dist/tools/pulls.js.map +1 -0
  86. package/dist/tools/releases.d.ts +495 -0
  87. package/dist/tools/releases.d.ts.map +1 -0
  88. package/dist/tools/releases.js +551 -0
  89. package/dist/tools/releases.js.map +1 -0
  90. package/dist/tools/repositories.d.ts +513 -0
  91. package/dist/tools/repositories.d.ts.map +1 -0
  92. package/dist/tools/repositories.js +634 -0
  93. package/dist/tools/repositories.js.map +1 -0
  94. package/dist/tools/security.d.ts +341 -0
  95. package/dist/tools/security.d.ts.map +1 -0
  96. package/dist/tools/security.js +394 -0
  97. package/dist/tools/security.js.map +1 -0
  98. package/dist/tools/tags.d.ts +419 -0
  99. package/dist/tools/tags.d.ts.map +1 -0
  100. package/dist/tools/tags.js +479 -0
  101. package/dist/tools/tags.js.map +1 -0
  102. package/dist/tools/users.d.ts +376 -0
  103. package/dist/tools/users.d.ts.map +1 -0
  104. package/dist/tools/users.js +495 -0
  105. package/dist/tools/users.js.map +1 -0
  106. package/dist/tools/validator.d.ts +192 -0
  107. package/dist/tools/validator.d.ts.map +1 -0
  108. package/dist/tools/validator.js +198 -0
  109. package/dist/tools/validator.js.map +1 -0
  110. package/dist/tools/version-control.d.ts +247 -0
  111. package/dist/tools/version-control.d.ts.map +1 -0
  112. package/dist/tools/version-control.js +521 -0
  113. package/dist/tools/version-control.js.map +1 -0
  114. package/dist/tools/webhooks.d.ts +478 -0
  115. package/dist/tools/webhooks.d.ts.map +1 -0
  116. package/dist/tools/webhooks.js +541 -0
  117. package/dist/tools/webhooks.js.map +1 -0
  118. package/dist/tools/workflows.d.ts +313 -0
  119. package/dist/tools/workflows.d.ts.map +1 -0
  120. package/dist/tools/workflows.js +430 -0
  121. package/dist/tools/workflows.js.map +1 -0
  122. package/package.json +58 -0
@@ -0,0 +1,525 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.branchesTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const index_js_1 = require("../providers/index.js");
6
+ /**
7
+ * Tool: branches
8
+ *
9
+ * DESCRIÇÃO:
10
+ * Gerenciamento completo de branches Gitea com múltiplas ações
11
+ *
12
+ * FUNCIONALIDADES:
13
+ * - Criação de novas branches
14
+ * - Listagem e busca de branches
15
+ * - Obtenção de detalhes específicos
16
+ * - Exclusão de branches
17
+ * - Merge de branches
18
+ * - Comparação entre branches
19
+ *
20
+ * USO:
21
+ * - Para gerenciar fluxo de trabalho Git
22
+ * - Para criar branches de feature
23
+ * - Para organizar desenvolvimento
24
+ * - Para controle de versão
25
+ *
26
+ * RECOMENDAÇÕES:
27
+ * - Use convenções de nomenclatura consistentes
28
+ * - Proteja branches importantes
29
+ * - Mantenha branches limpas
30
+ * - Documente propósito das branches
31
+ */
32
+ /**
33
+ * Schema de validação para entrada da tool branches
34
+ *
35
+ * VALIDAÇÕES:
36
+ * - action: Ação obrigatória (create, list, get, delete, merge, compare)
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 BranchesInputSchema = zod_1.z.object({
46
+ action: zod_1.z.enum(['create', 'list', 'get', 'delete', 'merge', 'compare']),
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
+ provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
51
+ // Para create - validações específicas
52
+ branch_name: zod_1.z.string().min(1, 'Nome da branch é obrigatório').max(255, 'Nome da branch muito longo')
53
+ .regex(/^[^.\s][^~\^\:\?\*\[\]\s]*$/, 'Nome de branch contém caracteres inválidos').optional(),
54
+ from_branch: zod_1.z.string().min(1, 'Branch de origem é obrigatória').max(255, 'Nome da branch de origem muito longo').optional(),
55
+ // Para get/delete - validação de nome de branch
56
+ branch: zod_1.z.string().min(1, 'Nome da branch é obrigatório').max(255, 'Nome da branch muito longo').optional(),
57
+ // Para merge - validações específicas
58
+ head: zod_1.z.string().min(1, 'Branch de origem é obrigatória').max(255, 'Nome da branch muito longo').optional(),
59
+ base: zod_1.z.string().min(1, 'Branch de destino é obrigatória').max(255, 'Nome da branch muito longo').optional(),
60
+ merge_method: zod_1.z.enum(['merge', 'rebase', 'squash']).optional(),
61
+ // Para list - paginação
62
+ page: zod_1.z.number().min(1, 'Página deve ser pelo menos 1').max(1000, 'Página muito alta').optional(),
63
+ limit: zod_1.z.number().min(1, 'Limite deve ser pelo menos 1').max(100, 'Limite não pode exceder 100').optional(),
64
+ // Para compare - validações específicas
65
+ base_branch: zod_1.z.string().min(1, 'Branch base é obrigatória').max(255, 'Nome da branch muito longo').optional(),
66
+ head_branch: zod_1.z.string().min(1, 'Branch de comparação é obrigatória').max(255, 'Nome da branch muito longo').optional(),
67
+ }).refine((data) => {
68
+ // Validações condicionais por ação
69
+ if (data.action === 'create') {
70
+ return data.owner && data.repo && data.branch_name && data.from_branch;
71
+ }
72
+ if (['get', 'delete'].includes(data.action)) {
73
+ return data.owner && data.repo && data.branch;
74
+ }
75
+ if (data.action === 'merge') {
76
+ return data.owner && data.repo && data.head && data.base;
77
+ }
78
+ if (data.action === 'compare') {
79
+ return data.owner && data.repo && data.base_branch && data.head_branch;
80
+ }
81
+ if (data.action === 'list') {
82
+ return data.owner && data.repo;
83
+ }
84
+ return data.owner && data.repo;
85
+ }, {
86
+ message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
87
+ });
88
+ /**
89
+ * Schema de saída padronizado
90
+ *
91
+ * ESTRUTURA:
92
+ * - success: Status da operação
93
+ * - action: Ação executada
94
+ * - message: Mensagem descritiva
95
+ * - data: Dados retornados (opcional)
96
+ * - error: Detalhes do erro (opcional)
97
+ */
98
+ const BranchesResultSchema = zod_1.z.object({
99
+ success: zod_1.z.boolean(),
100
+ action: zod_1.z.string(),
101
+ message: zod_1.z.string(),
102
+ data: zod_1.z.any().optional(),
103
+ error: zod_1.z.string().optional()
104
+ });
105
+ /**
106
+ * Tool: branches
107
+ *
108
+ * DESCRIÇÃO:
109
+ * Gerenciamento completo de branches Gitea com múltiplas ações
110
+ *
111
+ * ACTIONS DISPONÍVEIS:
112
+ *
113
+ * 1. create - Criar nova branch
114
+ * Parâmetros:
115
+ * - owner (obrigatório): Proprietário do repositório
116
+ * - repo (obrigatório): Nome do repositório
117
+ * - branch_name (obrigatório): Nome da nova branch
118
+ * - from_branch (obrigatório): Branch de origem
119
+ *
120
+ * 2. list - Listar branches
121
+ * Parâmetros:
122
+ * - owner (obrigatório): Proprietário do repositório
123
+ * - repo (obrigatório): Nome do repositório
124
+ * - page (opcional): Página da listagem (padrão: 1)
125
+ * - limit (opcional): Itens por página (padrão: 30)
126
+ *
127
+ * 3. get - Obter detalhes da branch
128
+ * Parâmetros:
129
+ * - owner (obrigatório): Proprietário do repositório
130
+ * - repo (obrigatório): Nome do repositório
131
+ * - branch (obrigatório): Nome da branch
132
+ *
133
+ * 4. delete - Deletar branch
134
+ * Parâmetros:
135
+ * - owner (obrigatório): Proprietário do repositório
136
+ * - repo (obrigatório): Nome do repositório
137
+ * - branch (obrigatório): Nome da branch
138
+ *
139
+ * 5. merge - Fazer merge de branches
140
+ * Parâmetros:
141
+ * - owner (obrigatório): Proprietário do repositório
142
+ * - repo (obrigatório): Nome do repositório
143
+ * - head (obrigatório): Branch de origem
144
+ * - base (obrigatório): Branch de destino
145
+ * - merge_method (opcional): Método de merge (padrão: merge)
146
+ *
147
+ * 6. compare - Comparar branches
148
+ * Parâmetros:
149
+ * - owner (obrigatório): Proprietário do repositório
150
+ * - repo (obrigatório): Nome do repositório
151
+ * - base_branch (obrigatório): Branch base
152
+ * - head_branch (obrigatório): Branch de comparação
153
+ *
154
+ * RECOMENDAÇÕES DE USO:
155
+ * - Use nomes descritivos para branches
156
+ * - Mantenha branches principais protegidas
157
+ * - Faça merge regularmente
158
+ * - Documente propósito das branches
159
+ * - Use convenções de nomenclatura
160
+ * - Limpe branches antigas
161
+ */
162
+ exports.branchesTool = {
163
+ name: 'branches',
164
+ description: 'Manage branches with multiple actions: create, list, get, delete, merge, compare. Suporte completo a GitHub e Gitea simultaneamente. Boas práticas (solo): use branches para isolar trabalhos (feature/x, fix/x, hotfix/x); mantenha as principais protegidas; faça merges pequenos e frequentes; compare antes de integrar; limpe branches antigas.',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {
168
+ action: {
169
+ type: 'string',
170
+ enum: ['create', 'list', 'get', 'delete', 'merge', 'compare'],
171
+ description: 'Action to perform on branches'
172
+ },
173
+ owner: { type: 'string', description: 'Repository owner' },
174
+ repo: { type: 'string', description: 'Repository name' },
175
+ provider: { type: 'string', description: 'Specific provider (github, gitea) or use default' },
176
+ branch_name: { type: 'string', description: 'Name of the new branch' },
177
+ from_branch: { type: 'string', description: 'Source branch for creation' },
178
+ branch: { type: 'string', description: 'Branch name' },
179
+ head: { type: 'string', description: 'Source branch for merge' },
180
+ base: { type: 'string', description: 'Target branch for merge' },
181
+ merge_method: {
182
+ type: 'string',
183
+ enum: ['merge', 'rebase', 'squash'],
184
+ description: 'Merge method'
185
+ },
186
+ page: { type: 'number', description: 'Page number', minimum: 1 },
187
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
188
+ base_branch: { type: 'string', description: 'Base branch for comparison' },
189
+ head_branch: { type: 'string', description: 'Head branch for comparison' }
190
+ },
191
+ required: ['action']
192
+ },
193
+ /**
194
+ * Handler principal da tool branches
195
+ *
196
+ * FUNCIONALIDADE:
197
+ * - Valida entrada usando Zod schema
198
+ * - Roteia para método específico baseado na ação
199
+ * - Trata erros de forma uniforme
200
+ * - Retorna resultado padronizado
201
+ *
202
+ * FLUXO:
203
+ * 1. Validação de entrada
204
+ * 2. Roteamento por ação
205
+ * 3. Execução do método específico
206
+ * 4. Tratamento de erros
207
+ * 5. Retorno de resultado
208
+ *
209
+ * TRATAMENTO DE ERROS:
210
+ * - Validação: erro de schema
211
+ * - Execução: erro da operação
212
+ * - Roteamento: ação não suportada
213
+ *
214
+ * RECOMENDAÇÕES:
215
+ * - Sempre valide entrada antes de processar
216
+ * - Trate erros específicos adequadamente
217
+ * - Log detalhes de erro para debug
218
+ * - Retorne mensagens de erro úteis
219
+ */
220
+ async handler(input) {
221
+ try {
222
+ const validatedInput = BranchesInputSchema.parse(input);
223
+ // Obter o provider correto
224
+ const provider = validatedInput.provider
225
+ ? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
226
+ : index_js_1.globalProviderFactory.getDefaultProvider();
227
+ if (!provider) {
228
+ throw new Error(`Provider '${validatedInput.provider}' não encontrado`);
229
+ }
230
+ switch (validatedInput.action) {
231
+ case 'create':
232
+ return await this.createBranch(validatedInput, provider);
233
+ case 'list':
234
+ return await this.listBranches(validatedInput, provider);
235
+ case 'get':
236
+ return await this.getBranch(validatedInput, provider);
237
+ case 'delete':
238
+ return await this.deleteBranch(validatedInput, provider);
239
+ case 'merge':
240
+ return await this.mergeBranches(validatedInput, provider);
241
+ case 'compare':
242
+ return await this.compareBranches(validatedInput, provider);
243
+ default:
244
+ throw new Error(`Ação não suportada: ${validatedInput.action}`);
245
+ }
246
+ }
247
+ catch (error) {
248
+ return {
249
+ success: false,
250
+ action: input.action,
251
+ message: 'Erro na operação de branches',
252
+ error: error instanceof Error ? error.message : String(error)
253
+ };
254
+ }
255
+ },
256
+ /**
257
+ * Cria uma nova branch no repositório
258
+ *
259
+ * FUNCIONALIDADE:
260
+ * - Valida parâmetros obrigatórios
261
+ * - Cria branch a partir de branch existente
262
+ * - Retorna detalhes da nova branch
263
+ *
264
+ * PARÂMETROS OBRIGATÓRIOS:
265
+ * - owner: Proprietário do repositório
266
+ * - repo: Nome do repositório
267
+ * - branch_name: Nome da nova branch
268
+ * - from_branch: Branch de origem
269
+ *
270
+ * VALIDAÇÕES:
271
+ * - Todos os parâmetros obrigatórios
272
+ * - Branch de origem deve existir
273
+ * - Nome da nova branch deve ser único
274
+ *
275
+ * RECOMENDAÇÕES:
276
+ * - Use nomes descritivos para branches
277
+ * - Crie a partir de branches estáveis
278
+ * - Documente propósito da branch
279
+ * - Use convenções de nomenclatura
280
+ */
281
+ async createBranch(params, provider) {
282
+ try {
283
+ if (!params.owner || !params.repo || !params.branch_name || !params.from_branch) {
284
+ throw new Error('Owner, repo, branch_name e from_branch são obrigatórios');
285
+ }
286
+ const branch = await provider.createBranch(params.owner, params.repo, params.branch_name, params.from_branch);
287
+ return {
288
+ success: true,
289
+ action: 'create',
290
+ message: `Branch '${params.branch_name}' criada com sucesso a partir de '${params.from_branch}'`,
291
+ data: branch
292
+ };
293
+ }
294
+ catch (error) {
295
+ throw new Error(`Falha ao criar branch: ${error instanceof Error ? error.message : String(error)}`);
296
+ }
297
+ },
298
+ /**
299
+ * Lista todas as branches do repositório
300
+ *
301
+ * FUNCIONALIDADE:
302
+ * - Lista branches com paginação
303
+ * - Retorna informações básicas de cada branch
304
+ * - Suporta filtros de paginação
305
+ *
306
+ * PARÂMETROS OBRIGATÓRIOS:
307
+ * - owner: Proprietário do repositório
308
+ * - repo: Nome do repositório
309
+ *
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
+ *
314
+ * VALIDAÇÕES:
315
+ * - Owner e repo obrigatórios
316
+ * - Page deve ser >= 1
317
+ * - Limit deve ser entre 1 e 100
318
+ *
319
+ * RECOMENDAÇÕES:
320
+ * - Use paginação para repositórios grandes
321
+ * - Monitore número total de branches
322
+ * - Mantenha branches organizadas
323
+ */
324
+ async listBranches(params, provider) {
325
+ try {
326
+ if (!params.owner || !params.repo) {
327
+ throw new Error('Owner e repo são obrigatórios');
328
+ }
329
+ const page = params.page || 1;
330
+ const limit = params.limit || 30;
331
+ const branches = await provider.listBranches(params.owner, params.repo, page, limit);
332
+ return {
333
+ success: true,
334
+ action: 'list',
335
+ message: `${branches.length} branches encontradas`,
336
+ data: {
337
+ branches,
338
+ page,
339
+ limit,
340
+ total: branches.length
341
+ }
342
+ };
343
+ }
344
+ catch (error) {
345
+ throw new Error(`Falha ao listar branches: ${error instanceof Error ? error.message : String(error)}`);
346
+ }
347
+ },
348
+ /**
349
+ * Obtém detalhes de uma branch específica
350
+ *
351
+ * FUNCIONALIDADE:
352
+ * - Retorna informações completas da branch
353
+ * - Inclui commit mais recente
354
+ * - Informações de proteção e permissões
355
+ *
356
+ * PARÂMETROS OBRIGATÓRIOS:
357
+ * - owner: Proprietário do repositório
358
+ * - repo: Nome do repositório
359
+ * - branch: Nome da branch
360
+ *
361
+ * VALIDAÇÕES:
362
+ * - Todos os parâmetros obrigatórios
363
+ * - Branch deve existir no repositório
364
+ *
365
+ * RECOMENDAÇÕES:
366
+ * - Use para obter informações detalhadas
367
+ * - Verifique status de proteção
368
+ * - Monitore commits recentes
369
+ */
370
+ async getBranch(params, provider) {
371
+ try {
372
+ if (!params.owner || !params.repo || !params.branch) {
373
+ throw new Error('Owner, repo e branch são obrigatórios');
374
+ }
375
+ const branch = await provider.getBranch(params.owner, params.repo, params.branch);
376
+ return {
377
+ success: true,
378
+ action: 'get',
379
+ message: `Branch '${params.branch}' obtida com sucesso`,
380
+ data: branch
381
+ };
382
+ }
383
+ catch (error) {
384
+ throw new Error(`Falha ao obter branch: ${error instanceof Error ? error.message : String(error)}`);
385
+ }
386
+ },
387
+ /**
388
+ * Deleta uma branch do repositório
389
+ *
390
+ * FUNCIONALIDADE:
391
+ * - Remove branch especificada
392
+ * - Valida permissões de exclusão
393
+ * - Confirma exclusão bem-sucedida
394
+ *
395
+ * PARÂMETROS OBRIGATÓRIOS:
396
+ * - owner: Proprietário do repositório
397
+ * - repo: Nome do repositório
398
+ * - branch: Nome da branch a ser deletada
399
+ *
400
+ * VALIDAÇÕES:
401
+ * - Todos os parâmetros obrigatórios
402
+ * - Branch deve existir
403
+ * - Usuário deve ter permissão de exclusão
404
+ *
405
+ * RECOMENDAÇÕES:
406
+ * - Confirme antes de deletar
407
+ * - Verifique se branch foi mergeada
408
+ * - Mantenha backup se necessário
409
+ * - Documente motivo da exclusão
410
+ */
411
+ async deleteBranch(params, provider) {
412
+ try {
413
+ if (!params.owner || !params.repo || !params.branch) {
414
+ throw new Error('Owner, repo e branch são obrigatórios');
415
+ }
416
+ await provider.deleteBranch(params.owner, params.repo, params.branch);
417
+ return {
418
+ success: true,
419
+ action: 'delete',
420
+ message: `Branch '${params.branch}' deletada com sucesso`,
421
+ data: { deleted: true }
422
+ };
423
+ }
424
+ catch (error) {
425
+ throw new Error(`Falha ao deletar branch: ${error instanceof Error ? error.message : String(error)}`);
426
+ }
427
+ },
428
+ /**
429
+ * Faz merge de uma branch em outra
430
+ *
431
+ * FUNCIONALIDADE:
432
+ * - Merge de branch de origem em branch de destino
433
+ * - Suporta diferentes métodos de merge
434
+ * - Retorna resultado do merge
435
+ *
436
+ * PARÂMETROS OBRIGATÓRIOS:
437
+ * - owner: Proprietário do repositório
438
+ * - repo: Nome do repositório
439
+ * - head: Branch de origem (será mergeada)
440
+ * - base: Branch de destino (receberá o merge)
441
+ *
442
+ * PARÂMETROS OPCIONAIS:
443
+ * - merge_method: Método de merge (merge, rebase, squash)
444
+ *
445
+ * VALIDAÇÕES:
446
+ * - Todos os parâmetros obrigatórios
447
+ * - Branches devem existir
448
+ * - Não deve haver conflitos
449
+ *
450
+ * RECOMENDAÇÕES:
451
+ * - Resolva conflitos antes do merge
452
+ * - Escolha método de merge adequado
453
+ * - Teste após o merge
454
+ * - Documente mudanças
455
+ */
456
+ async mergeBranches(params, provider) {
457
+ try {
458
+ if (!params.owner || !params.repo || !params.head || !params.base) {
459
+ throw new Error('Owner, repo, head e base são obrigatórios');
460
+ }
461
+ // Por enquanto, retorna mensagem de funcionalidade não implementada
462
+ // TODO: Implementar merge direto de branches via provider
463
+ return {
464
+ success: true,
465
+ action: 'merge',
466
+ message: `Merge de '${params.head}' em '${params.base}' solicitado (funcionalidade será implementada)`,
467
+ data: {
468
+ head: params.head,
469
+ base: params.base,
470
+ merge_method: params.merge_method || 'merge'
471
+ }
472
+ };
473
+ }
474
+ catch (error) {
475
+ throw new Error(`Falha ao fazer merge: ${error instanceof Error ? error.message : String(error)}`);
476
+ }
477
+ },
478
+ /**
479
+ * Compara duas branches
480
+ *
481
+ * FUNCIONALIDADE:
482
+ * - Compara diferenças entre branches
483
+ * - Retorna commits diferentes
484
+ * - Mostra divergências
485
+ *
486
+ * PARÂMETROS OBRIGATÓRIOS:
487
+ * - owner: Proprietário do repositório
488
+ * - repo: Nome do repositório
489
+ * - base_branch: Branch base para comparação
490
+ * - head_branch: Branch a ser comparada
491
+ *
492
+ * VALIDAÇÕES:
493
+ * - Todos os parâmetros obrigatórios
494
+ * - Ambas as branches devem existir
495
+ *
496
+ * RECOMENDAÇÕES:
497
+ * - Use para verificar divergências
498
+ * - Compare antes de fazer merge
499
+ * - Analise commits diferentes
500
+ * - Documente diferenças importantes
501
+ */
502
+ async compareBranches(params, provider) {
503
+ try {
504
+ if (!params.owner || !params.repo || !params.base_branch || !params.head_branch) {
505
+ throw new Error('Owner, repo, base_branch e head_branch são obrigatórios');
506
+ }
507
+ // Implementar comparação de branches
508
+ // Por enquanto, retorna mensagem de funcionalidade
509
+ return {
510
+ success: true,
511
+ action: 'compare',
512
+ message: `Comparação entre '${params.base_branch}' e '${params.head_branch}' solicitada`,
513
+ data: {
514
+ base: params.base_branch,
515
+ head: params.head_branch,
516
+ comparison: 'Funcionalidade de comparação será implementada'
517
+ }
518
+ };
519
+ }
520
+ catch (error) {
521
+ throw new Error(`Falha ao comparar branches: ${error instanceof Error ? error.message : String(error)}`);
522
+ }
523
+ }
524
+ };
525
+ //# sourceMappingURL=branches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../src/tools/branches.ts"],"names":[],"mappings":"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"}