@andrebuzeli/git-mcp 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -0
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +299 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +299 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +381 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base-provider.d.ts +139 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +246 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/error-handler.d.ts +51 -0
- package/dist/providers/error-handler.d.ts.map +1 -0
- package/dist/providers/error-handler.js +170 -0
- package/dist/providers/error-handler.js.map +1 -0
- package/dist/providers/gitea-provider.d.ts +68 -0
- package/dist/providers/gitea-provider.d.ts.map +1 -0
- package/dist/providers/gitea-provider.js +515 -0
- package/dist/providers/gitea-provider.js.map +1 -0
- package/dist/providers/github-provider.d.ts +68 -0
- package/dist/providers/github-provider.d.ts.map +1 -0
- package/dist/providers/github-provider.js +518 -0
- package/dist/providers/github-provider.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +41 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider-factory.d.ts +75 -0
- package/dist/providers/provider-factory.d.ts.map +1 -0
- package/dist/providers/provider-factory.js +298 -0
- package/dist/providers/provider-factory.js.map +1 -0
- package/dist/providers/types.d.ts +276 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +77 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +262 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/actions.d.ts +272 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +428 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/analytics.d.ts +326 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +473 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/branches.d.ts +461 -0
- package/dist/tools/branches.d.ts.map +1 -0
- package/dist/tools/branches.js +525 -0
- package/dist/tools/branches.js.map +1 -0
- package/dist/tools/code-review.d.ts +323 -0
- package/dist/tools/code-review.d.ts.map +1 -0
- package/dist/tools/code-review.js +552 -0
- package/dist/tools/code-review.js.map +1 -0
- package/dist/tools/commits.d.ts +488 -0
- package/dist/tools/commits.d.ts.map +1 -0
- package/dist/tools/commits.js +578 -0
- package/dist/tools/commits.js.map +1 -0
- package/dist/tools/deployments.d.ts +319 -0
- package/dist/tools/deployments.d.ts.map +1 -0
- package/dist/tools/deployments.js +355 -0
- package/dist/tools/deployments.js.map +1 -0
- package/dist/tools/files.d.ts +456 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +531 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/git-sync.d.ts +177 -0
- package/dist/tools/git-sync.d.ts.map +1 -0
- package/dist/tools/git-sync.js +112 -0
- package/dist/tools/git-sync.js.map +1 -0
- package/dist/tools/issues.d.ts +579 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +631 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/pulls.d.ts +702 -0
- package/dist/tools/pulls.d.ts.map +1 -0
- package/dist/tools/pulls.js +730 -0
- package/dist/tools/pulls.js.map +1 -0
- package/dist/tools/releases.d.ts +495 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +551 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/repositories.d.ts +513 -0
- package/dist/tools/repositories.d.ts.map +1 -0
- package/dist/tools/repositories.js +634 -0
- package/dist/tools/repositories.js.map +1 -0
- package/dist/tools/security.d.ts +341 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +394 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/tags.d.ts +419 -0
- package/dist/tools/tags.d.ts.map +1 -0
- package/dist/tools/tags.js +479 -0
- package/dist/tools/tags.js.map +1 -0
- package/dist/tools/users.d.ts +376 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +495 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/validator.d.ts +192 -0
- package/dist/tools/validator.d.ts.map +1 -0
- package/dist/tools/validator.js +198 -0
- package/dist/tools/validator.js.map +1 -0
- package/dist/tools/version-control.d.ts +247 -0
- package/dist/tools/version-control.d.ts.map +1 -0
- package/dist/tools/version-control.js +521 -0
- package/dist/tools/version-control.js.map +1 -0
- package/dist/tools/webhooks.d.ts +478 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +541 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/tools/workflows.d.ts +313 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +430 -0
- package/dist/tools/workflows.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,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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"}
|