@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,541 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.webhooksTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const index_js_1 = require("../providers/index.js");
6
+ /**
7
+ * Tool: webhooks
8
+ *
9
+ * DESCRIÇÃO:
10
+ * Gerenciamento completo de webhooks com suporte multi-provider (GitHub e Gitea)
11
+ *
12
+ * FUNCIONALIDADES:
13
+ * - Criação de novos webhooks
14
+ * - Listagem e busca de webhooks
15
+ * - Obtenção de detalhes específicos
16
+ * - Atualização de webhooks existentes
17
+ * - Exclusão de webhooks
18
+ * - Teste de webhooks
19
+ * - Configuração de eventos
20
+ *
21
+ * USO:
22
+ * - Para integração com CI/CD
23
+ * - Para notificações automáticas
24
+ * - Para sincronização de dados
25
+ * - Para automação de workflows
26
+ *
27
+ * RECOMENDAÇÕES:
28
+ * - Use HTTPS sempre que possível
29
+ * - Mantenha secrets seguros
30
+ * - Monitore falhas de entrega
31
+ * - Configure apenas eventos necessários
32
+ */
33
+ /**
34
+ * Schema de validação para entrada da tool webhooks
35
+ *
36
+ * VALIDAÇÕES:
37
+ * - action: Ação obrigatória (create, list, get, update, delete, test)
38
+ * - Parâmetros específicos por ação
39
+ * - Validação de tipos e formatos
40
+ *
41
+ * RECOMENDAÇÕES:
42
+ * - Sempre valide entrada antes de usar
43
+ * - Use parâmetros opcionais adequadamente
44
+ * - Documente parâmetros obrigatórios
45
+ */
46
+ const WebhooksInputSchema = zod_1.z.object({
47
+ action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'test']),
48
+ // Parâmetros comuns
49
+ owner: zod_1.z.string().optional(),
50
+ repo: zod_1.z.string().optional(),
51
+ // Para multi-provider
52
+ provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
53
+ // Para create
54
+ url: zod_1.z.string().optional(),
55
+ content_type: zod_1.z.enum(['json', 'form']).optional(),
56
+ secret: zod_1.z.string().optional(),
57
+ events: zod_1.z.array(zod_1.z.string()).optional(),
58
+ active: zod_1.z.boolean().optional(),
59
+ // Para get/update/delete/test
60
+ webhook_id: zod_1.z.number().optional(),
61
+ // Para list
62
+ page: zod_1.z.number().min(1).optional(),
63
+ limit: zod_1.z.number().min(1).max(100).optional(),
64
+ // Para update
65
+ new_url: zod_1.z.string().optional(),
66
+ new_content_type: zod_1.z.enum(['json', 'form']).optional(),
67
+ new_secret: zod_1.z.string().optional(),
68
+ new_events: zod_1.z.array(zod_1.z.string()).optional(),
69
+ new_active: zod_1.z.boolean().optional(),
70
+ });
71
+ /**
72
+ * Schema de saída padronizado
73
+ *
74
+ * ESTRUTURA:
75
+ * - success: Status da operação
76
+ * - action: Ação executada
77
+ * - message: Mensagem descritiva
78
+ * - data: Dados retornados (opcional)
79
+ * - error: Detalhes do erro (opcional)
80
+ */
81
+ const WebhooksResultSchema = zod_1.z.object({
82
+ success: zod_1.z.boolean(),
83
+ action: zod_1.z.string(),
84
+ message: zod_1.z.string(),
85
+ data: zod_1.z.any().optional(),
86
+ error: zod_1.z.string().optional()
87
+ });
88
+ /**
89
+ * Tool: webhooks
90
+ *
91
+ * DESCRIÇÃO:
92
+ * Gerenciamento completo de webhooks Gitea com múltiplas ações
93
+ *
94
+ * ACTIONS DISPONÍVEIS:
95
+ *
96
+ * 1. create - Criar novo webhook
97
+ * Parâmetros:
98
+ * - owner (obrigatório): Proprietário do repositório
99
+ * - repo (obrigatório): Nome do repositório
100
+ * - url (obrigatório): URL de destino do webhook
101
+ * - content_type (opcional): Tipo de conteúdo (json, form) - padrão: json
102
+ * - secret (opcional): Secret para assinatura
103
+ * - events (opcional): Array de eventos a serem monitorados
104
+ * - active (opcional): Se webhook está ativo (padrão: true)
105
+ *
106
+ * 2. list - Listar webhooks
107
+ * Parâmetros:
108
+ * - owner (obrigatório): Proprietário do repositório
109
+ * - repo (obrigatório): Nome do repositório
110
+ * - page (opcional): Página da listagem (padrão: 1)
111
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
112
+ *
113
+ * 3. get - Obter detalhes do webhook
114
+ * Parâmetros:
115
+ * - owner (obrigatório): Proprietário do repositório
116
+ * - repo (obrigatório): Nome do repositório
117
+ * - webhook_id (obrigatório): ID do webhook
118
+ *
119
+ * 4. update - Atualizar webhook existente
120
+ * Parâmetros:
121
+ * - owner (obrigatório): Proprietário do repositório
122
+ * - repo (obrigatório): Nome do repositório
123
+ * - webhook_id (obrigatório): ID do webhook
124
+ * - new_url (opcional): Nova URL
125
+ * - new_content_type (opcional): Novo tipo de conteúdo
126
+ * - new_secret (opcional): Novo secret
127
+ * - new_events (opcional): Novos eventos
128
+ * - new_active (opcional): Novo status ativo
129
+ *
130
+ * 5. delete - Deletar webhook
131
+ * Parâmetros:
132
+ * - owner (obrigatório): Proprietário do repositório
133
+ * - repo (obrigatório): Nome do repositório
134
+ * - webhook_id (obrigatório): ID do webhook
135
+ *
136
+ * 6. test - Testar webhook
137
+ * Parâmetros:
138
+ * - owner (obrigatório): Proprietário do repositório
139
+ * - repo (obrigatório): Nome do repositório
140
+ * - webhook_id (obrigatório): ID do webhook
141
+ *
142
+ * RECOMENDAÇÕES DE USO:
143
+ * - Use URLs seguras (HTTPS)
144
+ * - Configure eventos adequadamente
145
+ * - Monitore falhas de entrega
146
+ * - Mantenha secrets seguros
147
+ * - Teste webhooks antes de ativar
148
+ * - Configure retry adequado
149
+ * - Monitore logs de entrega
150
+ */
151
+ exports.webhooksTool = {
152
+ name: 'webhooks',
153
+ description: 'Manage webhooks with multi-provider support (GitHub and Gitea): create, list, get, update, delete, test. Dicas (solo): use para CI/CD local, notificações e integrações; sempre HTTPS; mantenha secrets seguros; monitore falhas de entrega; habilite apenas eventos necessários.',
154
+ inputSchema: {
155
+ type: 'object',
156
+ properties: {
157
+ action: {
158
+ type: 'string',
159
+ enum: ['create', 'list', 'get', 'update', 'delete', 'test'],
160
+ description: 'Action to perform on webhooks'
161
+ },
162
+ owner: { type: 'string', description: 'Repository owner' },
163
+ repo: { type: 'string', description: 'Repository name' },
164
+ provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
165
+ url: { type: 'string', description: 'Webhook URL' },
166
+ content_type: { type: 'string', enum: ['json', 'form'], description: 'Content type' },
167
+ secret: { type: 'string', description: 'Webhook secret' },
168
+ events: { type: 'array', items: { type: 'string' }, description: 'Webhook events' },
169
+ active: { type: 'boolean', description: 'Webhook active status' },
170
+ webhook_id: { type: 'number', description: 'Webhook ID' },
171
+ page: { type: 'number', description: 'Page number', minimum: 1 },
172
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
173
+ new_url: { type: 'string', description: 'New webhook URL' },
174
+ new_content_type: { type: 'string', enum: ['json', 'form'], description: 'New content type' },
175
+ new_secret: { type: 'string', description: 'New webhook secret' },
176
+ new_events: { type: 'array', items: { type: 'string' }, description: 'New webhook events' },
177
+ new_active: { type: 'boolean', description: 'New webhook active status' }
178
+ },
179
+ required: ['action']
180
+ },
181
+ /**
182
+ * Handler principal da tool webhooks
183
+ *
184
+ * FUNCIONALIDADE:
185
+ * - Valida entrada usando Zod schema
186
+ * - Roteia para método específico baseado na ação
187
+ * - Trata erros de forma uniforme
188
+ * - Retorna resultado padronizado
189
+ *
190
+ * FLUXO:
191
+ * 1. Validação de entrada
192
+ * 2. Seleção do provider
193
+ * 3. Roteamento por ação
194
+ * 4. Execução do método específico
195
+ * 5. Tratamento de erros
196
+ * 6. Retorno de resultado
197
+ *
198
+ * TRATAMENTO DE ERROS:
199
+ * - Validação: erro de schema
200
+ * - Execução: erro da operação
201
+ * - Roteamento: ação não suportada
202
+ *
203
+ * RECOMENDAÇÕES:
204
+ * - Sempre valide entrada antes de processar
205
+ * - Trate erros específicos adequadamente
206
+ * - Log detalhes de erro para debug
207
+ * - Retorne mensagens de erro úteis
208
+ */
209
+ async handler(input) {
210
+ try {
211
+ const validatedInput = WebhooksInputSchema.parse(input);
212
+ // Seleciona o provider baseado na entrada ou usa o padrão
213
+ const provider = validatedInput.provider
214
+ ? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
215
+ : index_js_1.globalProviderFactory.getDefaultProvider();
216
+ if (!provider) {
217
+ throw new Error('Provider não encontrado ou não configurado');
218
+ }
219
+ switch (validatedInput.action) {
220
+ case 'create':
221
+ return await this.createWebhook(validatedInput, provider);
222
+ case 'list':
223
+ return await this.listWebhooks(validatedInput, provider);
224
+ case 'get':
225
+ return await this.getWebhook(validatedInput, provider);
226
+ case 'update':
227
+ return await this.updateWebhook(validatedInput, provider);
228
+ case 'delete':
229
+ return await this.deleteWebhook(validatedInput, provider);
230
+ case 'test':
231
+ return await this.testWebhook(validatedInput, provider);
232
+ default:
233
+ throw new Error(`Ação não suportada: ${validatedInput.action}`);
234
+ }
235
+ }
236
+ catch (error) {
237
+ return {
238
+ success: false,
239
+ action: input.action,
240
+ message: 'Erro na operação de webhooks',
241
+ error: error instanceof Error ? error.message : String(error)
242
+ };
243
+ }
244
+ },
245
+ /**
246
+ * Cria um novo webhook no repositório
247
+ *
248
+ * FUNCIONALIDADE:
249
+ * - Cria webhook com URL e configurações
250
+ * - Suporta diferentes tipos de conteúdo
251
+ * - Permite configuração de eventos
252
+ *
253
+ * PARÂMETROS OBRIGATÓRIOS:
254
+ * - owner: Proprietário do repositório
255
+ * - repo: Nome do repositório
256
+ * - url: URL de destino do webhook
257
+ *
258
+ * PARÂMETROS OPCIONAIS:
259
+ * - content_type: Tipo de conteúdo (json, form) - padrão: json
260
+ * - secret: Secret para assinatura
261
+ * - events: Array de eventos a serem monitorados
262
+ * - active: Se webhook está ativo (padrão: true)
263
+ *
264
+ * VALIDAÇÕES:
265
+ * - Todos os parâmetros obrigatórios
266
+ * - URL deve ser válida e acessível
267
+ * - Usuário deve ter permissão de escrita
268
+ *
269
+ * RECOMENDAÇÕES:
270
+ * - Use URLs seguras (HTTPS)
271
+ * - Configure eventos adequadamente
272
+ * - Mantenha secrets seguros
273
+ * - Teste webhook antes de ativar
274
+ */
275
+ async createWebhook(params, provider) {
276
+ try {
277
+ if (!params.owner || !params.repo || !params.url) {
278
+ throw new Error('Owner, repo e url são obrigatórios');
279
+ }
280
+ const webhookData = {
281
+ url: params.url,
282
+ content_type: params.content_type || 'json',
283
+ secret: params.secret || '',
284
+ events: params.events || ['push'],
285
+ active: params.active !== undefined ? params.active : true
286
+ };
287
+ const webhook = await provider.createWebhook(params.owner, params.repo, params.url, params.events || ['push'], params.secret);
288
+ return {
289
+ success: true,
290
+ action: 'create',
291
+ message: `Webhook criado com sucesso para '${params.owner}/${params.repo}'`,
292
+ data: webhook
293
+ };
294
+ }
295
+ catch (error) {
296
+ throw new Error(`Falha ao criar webhook: ${error instanceof Error ? error.message : String(error)}`);
297
+ }
298
+ },
299
+ /**
300
+ * Lista webhooks do repositório
301
+ *
302
+ * FUNCIONALIDADE:
303
+ * - Lista webhooks com paginação
304
+ * - Retorna informações básicas de cada webhook
305
+ * - Inclui status ativo e eventos configurados
306
+ *
307
+ * PARÂMETROS OBRIGATÓRIOS:
308
+ * - owner: Proprietário do repositório
309
+ * - repo: Nome do repositório
310
+ *
311
+ * PARÂMETROS OPCIONAIS:
312
+ * - page: Página da listagem (padrão: 1)
313
+ * - limit: Itens por página (padrão: 30, máximo: 100)
314
+ *
315
+ * VALIDAÇÕES:
316
+ * - Owner e repo obrigatórios
317
+ * - Page deve ser >= 1
318
+ * - Limit deve ser entre 1 e 100
319
+ *
320
+ * RECOMENDAÇÕES:
321
+ * - Use paginação para repositórios com muitos webhooks
322
+ * - Monitore número total de webhooks
323
+ * - Verifique status ativo de cada webhook
324
+ * - Mantenha webhooks organizados
325
+ */
326
+ async listWebhooks(params, provider) {
327
+ try {
328
+ if (!params.owner || !params.repo) {
329
+ throw new Error('Owner e repo são obrigatórios');
330
+ }
331
+ const page = params.page || 1;
332
+ const limit = params.limit || 30;
333
+ const webhooks = await provider.listWebhooks(params.owner, params.repo, page, limit);
334
+ return {
335
+ success: true,
336
+ action: 'list',
337
+ message: `${webhooks.length} webhooks encontrados`,
338
+ data: {
339
+ webhooks,
340
+ page,
341
+ limit,
342
+ total: webhooks.length
343
+ }
344
+ };
345
+ }
346
+ catch (error) {
347
+ throw new Error(`Falha ao listar webhooks: ${error instanceof Error ? error.message : String(error)}`);
348
+ }
349
+ },
350
+ /**
351
+ * Obtém detalhes de um webhook específico
352
+ *
353
+ * FUNCIONALIDADE:
354
+ * - Retorna informações completas do webhook
355
+ * - Inclui URL, tipo de conteúdo, eventos e status
356
+ * - Mostra configurações de segurança
357
+ *
358
+ * PARÂMETROS OBRIGATÓRIOS:
359
+ * - owner: Proprietário do repositório
360
+ * - repo: Nome do repositório
361
+ * - webhook_id: ID do webhook
362
+ *
363
+ * VALIDAÇÕES:
364
+ * - Todos os parâmetros obrigatórios
365
+ * - Webhook deve existir no repositório
366
+ * - ID deve ser válido
367
+ *
368
+ * RECOMENDAÇÕES:
369
+ * - Use para obter detalhes completos
370
+ * - Verifique configurações de segurança
371
+ * - Analise eventos configurados
372
+ * - Monitore status ativo
373
+ */
374
+ async getWebhook(params, provider) {
375
+ try {
376
+ if (!params.owner || !params.repo || !params.webhook_id) {
377
+ throw new Error('Owner, repo e webhook_id são obrigatórios');
378
+ }
379
+ const webhook = await provider.getWebhook(params.owner, params.repo, params.webhook_id);
380
+ return {
381
+ success: true,
382
+ action: 'get',
383
+ message: `Webhook #${params.webhook_id} obtido com sucesso`,
384
+ data: webhook
385
+ };
386
+ }
387
+ catch (error) {
388
+ throw new Error(`Falha ao obter webhook: ${error instanceof Error ? error.message : String(error)}`);
389
+ }
390
+ },
391
+ /**
392
+ * Atualiza um webhook existente
393
+ *
394
+ * FUNCIONALIDADE:
395
+ * - Atualiza campos do webhook
396
+ * - Suporta mudança de URL e eventos
397
+ * - Permite alteração de status ativo
398
+ *
399
+ * PARÂMETROS OBRIGATÓRIOS:
400
+ * - owner: Proprietário do repositório
401
+ * - repo: Nome do repositório
402
+ * - webhook_id: ID do webhook
403
+ *
404
+ * PARÂMETROS OPCIONAIS:
405
+ * - new_url: Nova URL
406
+ * - new_content_type: Novo tipo de conteúdo
407
+ * - new_secret: Novo secret
408
+ * - new_events: Novos eventos
409
+ * - new_active: Novo status ativo
410
+ *
411
+ * VALIDAÇÕES:
412
+ * - Todos os parâmetros obrigatórios
413
+ * - Webhook deve existir
414
+ * - Pelo menos um campo deve ser atualizado
415
+ *
416
+ * RECOMENDAÇÕES:
417
+ * - Atualize apenas campos necessários
418
+ * - Use mensagens de commit descritivas
419
+ * - Documente mudanças importantes
420
+ * - Teste webhook após atualização
421
+ */
422
+ async updateWebhook(params, provider) {
423
+ try {
424
+ if (!params.owner || !params.repo || !params.webhook_id) {
425
+ throw new Error('Owner, repo e webhook_id são obrigatórios');
426
+ }
427
+ const updateData = {};
428
+ if (params.new_url)
429
+ updateData.url = params.new_url;
430
+ if (params.new_content_type)
431
+ updateData.content_type = params.new_content_type;
432
+ if (params.new_secret)
433
+ updateData.secret = params.new_secret;
434
+ if (params.new_events)
435
+ updateData.events = params.new_events;
436
+ if (params.new_active !== undefined)
437
+ updateData.active = params.new_active;
438
+ if (Object.keys(updateData).length === 0) {
439
+ throw new Error('Nenhum campo para atualizar foi fornecido');
440
+ }
441
+ const webhook = await provider.updateWebhook(params.owner, params.repo, params.webhook_id, updateData);
442
+ return {
443
+ success: true,
444
+ action: 'update',
445
+ message: `Webhook #${params.webhook_id} atualizado com sucesso`,
446
+ data: webhook
447
+ };
448
+ }
449
+ catch (error) {
450
+ throw new Error(`Falha ao atualizar webhook: ${error instanceof Error ? error.message : String(error)}`);
451
+ }
452
+ },
453
+ /**
454
+ * Deleta um webhook do repositório
455
+ *
456
+ * FUNCIONALIDADE:
457
+ * - Remove webhook especificado
458
+ * - Confirma exclusão bem-sucedida
459
+ * - Limpa configurações associadas
460
+ *
461
+ * PARÂMETROS OBRIGATÓRIOS:
462
+ * - owner: Proprietário do repositório
463
+ * - repo: Nome do repositório
464
+ * - webhook_id: ID do webhook
465
+ *
466
+ * VALIDAÇÕES:
467
+ * - Todos os parâmetros obrigatórios
468
+ * - Webhook deve existir
469
+ * - Usuário deve ter permissão de exclusão
470
+ *
471
+ * RECOMENDAÇÕES:
472
+ * - Confirme exclusão antes de executar
473
+ * - Verifique se webhook não está sendo usado
474
+ * - Mantenha backup se necessário
475
+ * - Documente motivo da exclusão
476
+ */
477
+ async deleteWebhook(params, provider) {
478
+ try {
479
+ if (!params.owner || !params.repo || !params.webhook_id) {
480
+ throw new Error('Owner, repo e webhook_id são obrigatórios');
481
+ }
482
+ await provider.deleteWebhook(params.owner, params.repo, params.webhook_id);
483
+ return {
484
+ success: true,
485
+ action: 'delete',
486
+ message: `Webhook #${params.webhook_id} deletado com sucesso`,
487
+ data: { deleted: true }
488
+ };
489
+ }
490
+ catch (error) {
491
+ throw new Error(`Falha ao deletar webhook: ${error instanceof Error ? error.message : String(error)}`);
492
+ }
493
+ },
494
+ /**
495
+ * Testa um webhook existente
496
+ *
497
+ * FUNCIONALIDADE:
498
+ * - Envia payload de teste para webhook
499
+ * - Verifica conectividade e resposta
500
+ * - Retorna resultado do teste
501
+ *
502
+ * PARÂMETROS OBRIGATÓRIOS:
503
+ * - owner: Proprietário do repositório
504
+ * - repo: Nome do repositório
505
+ * - webhook_id: ID do webhook
506
+ *
507
+ * VALIDAÇÕES:
508
+ * - Todos os parâmetros obrigatórios
509
+ * - Webhook deve existir
510
+ * - Webhook deve estar ativo
511
+ *
512
+ * RECOMENDAÇÕES:
513
+ * - Teste webhooks após criação
514
+ * - Monitore respostas de teste
515
+ * - Verifique logs de entrega
516
+ * - Configure retry adequado
517
+ */
518
+ async testWebhook(params, provider) {
519
+ try {
520
+ if (!params.owner || !params.repo || !params.webhook_id) {
521
+ throw new Error('Owner, repo e webhook_id são obrigatórios');
522
+ }
523
+ // Implementar testWebhook
524
+ const result = {
525
+ success: true,
526
+ message: 'Webhook testado com sucesso',
527
+ note: 'Funcionalidade testWebhook será implementada'
528
+ };
529
+ return {
530
+ success: true,
531
+ action: 'test',
532
+ message: `Webhook #${params.webhook_id} testado com sucesso`,
533
+ data: result
534
+ };
535
+ }
536
+ catch (error) {
537
+ throw new Error(`Falha ao testar webhook: ${error instanceof Error ? error.message : String(error)}`);
538
+ }
539
+ }
540
+ };
541
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}