@andrebuzeli/git-mcp 2.27.3 → 2.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +306 -306
- package/dist/client.js +298 -298
- package/dist/config.d.ts +310 -310
- package/dist/config.js +392 -392
- package/dist/index.d.ts +22 -22
- package/dist/index.js +89 -89
- package/dist/providers/base-provider.d.ts +160 -156
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +274 -260
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/error-handler.d.ts +50 -50
- package/dist/providers/error-handler.js +175 -175
- package/dist/providers/gitea-provider.d.ts +97 -97
- package/dist/providers/gitea-provider.js +1001 -1001
- package/dist/providers/github-provider.d.ts +104 -104
- package/dist/providers/github-provider.js +1234 -1234
- package/dist/providers/index.d.ts +12 -12
- package/dist/providers/index.js +40 -40
- package/dist/providers/provider-factory.d.ts +74 -74
- package/dist/providers/provider-factory.js +311 -311
- package/dist/providers/types.d.ts +318 -298
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +6 -6
- package/dist/server.d.ts +76 -76
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +306 -357
- package/dist/server.js.map +1 -1
- package/dist/tools/gh-actions.d.ts +252 -252
- package/dist/tools/gh-actions.js +389 -389
- package/dist/tools/gh-analytics.d.ts +263 -263
- package/dist/tools/gh-analytics.js +401 -401
- package/dist/tools/gh-code-review.d.ts +304 -304
- package/dist/tools/gh-code-review.js +512 -512
- package/dist/tools/gh-codespaces.d.ts +138 -138
- package/dist/tools/gh-codespaces.js +282 -282
- package/dist/tools/gh-deployments.d.ts +300 -300
- package/dist/tools/gh-deployments.js +367 -367
- package/dist/tools/gh-gists.d.ts +174 -174
- package/dist/tools/gh-gists.js +321 -321
- package/dist/tools/gh-projects.d.ts +205 -205
- package/dist/tools/gh-projects.js +358 -358
- package/dist/tools/gh-security.d.ts +274 -274
- package/dist/tools/gh-security.js +395 -395
- package/dist/tools/gh-sync.d.ts +213 -213
- package/dist/tools/gh-sync.js +378 -378
- package/dist/tools/gh-workflows.d.ts +290 -290
- package/dist/tools/gh-workflows.js +432 -432
- package/dist/tools/git-archive.d.ts +165 -165
- package/dist/tools/git-archive.js +233 -233
- package/dist/tools/git-branches.d.ts +430 -430
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +627 -530
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-bundle.d.ts +171 -171
- package/dist/tools/git-bundle.js +241 -241
- package/dist/tools/git-cherry-pick.d.ts +158 -158
- package/dist/tools/git-cherry-pick.js +224 -224
- package/dist/tools/git-commits.d.ts +485 -485
- package/dist/tools/git-commits.d.ts.map +1 -1
- package/dist/tools/git-commits.js +735 -625
- package/dist/tools/git-commits.js.map +1 -1
- package/dist/tools/git-config.d.ts +140 -140
- package/dist/tools/git-config.js +268 -268
- package/dist/tools/git-files.d.ts +486 -486
- package/dist/tools/git-files.js +607 -607
- package/dist/tools/git-issues.d.ts +571 -571
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +740 -693
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +694 -694
- package/dist/tools/git-pulls.js +732 -732
- package/dist/tools/git-rebase.d.ts +137 -137
- package/dist/tools/git-rebase.js +213 -213
- package/dist/tools/git-releases.d.ts +487 -487
- package/dist/tools/git-releases.js +557 -557
- package/dist/tools/git-remote.d.ts +138 -138
- package/dist/tools/git-remote.js +274 -274
- package/dist/tools/git-repositories.d.ts +483 -483
- package/dist/tools/git-repositories.js +640 -640
- package/dist/tools/git-reset.d.ts +130 -130
- package/dist/tools/git-reset.js +223 -223
- package/dist/tools/git-revert.d.ts +149 -149
- package/dist/tools/git-revert.js +198 -198
- package/dist/tools/git-stash.d.ts +140 -140
- package/dist/tools/git-stash.js +269 -269
- package/dist/tools/git-submodule.d.ts +152 -152
- package/dist/tools/git-submodule.js +289 -289
- package/dist/tools/git-sync.d.ts +178 -166
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +312 -117
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +411 -411
- package/dist/tools/git-tags.js +485 -485
- package/dist/tools/git-webhooks.d.ts +470 -482
- package/dist/tools/git-webhooks.d.ts.map +1 -1
- package/dist/tools/git-webhooks.js +543 -555
- package/dist/tools/git-webhooks.js.map +1 -1
- package/dist/tools/git-worktree.d.ts +159 -159
- package/dist/tools/git-worktree.js +269 -269
- package/dist/tools/repositories.d.ts +405 -405
- package/dist/tools/repositories.js +569 -569
- package/dist/tools/users.d.ts +372 -372
- package/dist/tools/users.js +499 -499
- package/dist/tools/validator.d.ts +170 -170
- package/dist/tools/validator.js +194 -194
- package/dist/tools/version-control.d.ts +136 -136
- package/dist/tools/version-control.js +164 -164
- package/dist/utils/terminal-controller.d.ts +80 -80
- package/dist/utils/terminal-controller.js +345 -345
- package/dist/utils/user-detection.d.ts +24 -24
- package/dist/utils/user-detection.js +53 -53
- package/package.json +59 -59
|
@@ -1,433 +1,433 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.workflowsTool = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const index_js_1 = require("../providers/index.js");
|
|
6
|
-
const user_detection_js_1 = require("../utils/user-detection.js");
|
|
7
|
-
const validator_js_1 = require("./validator.js");
|
|
8
|
-
/**
|
|
9
|
-
* Tool: workflows
|
|
10
|
-
*
|
|
11
|
-
* DESCRIÇÃO:
|
|
12
|
-
* Gerenciamento completo de workflows CI/CD com múltiplas ações
|
|
13
|
-
*
|
|
14
|
-
* FUNCIONALIDADES:
|
|
15
|
-
* - Listagem de workflows ativos
|
|
16
|
-
* - Criação de novos workflows
|
|
17
|
-
* - Disparo manual de workflows
|
|
18
|
-
* - Verificação de status de execução
|
|
19
|
-
* - Obtenção de logs de execução
|
|
20
|
-
* - Controle de workflows (enable/disable)
|
|
21
|
-
*
|
|
22
|
-
* USO:
|
|
23
|
-
* - Para automatizar CI/CD pipelines
|
|
24
|
-
* - Para monitorar execuções
|
|
25
|
-
* - Para gerenciar workflows de desenvolvimento
|
|
26
|
-
* - Para integração com ferramentas de deploy
|
|
27
|
-
*
|
|
28
|
-
* RECOMENDAÇÕES:
|
|
29
|
-
* - Use workflows para automatizar testes
|
|
30
|
-
* - Configure triggers apropriados
|
|
31
|
-
* - Monitore logs regularmente
|
|
32
|
-
* - Mantenha workflows simples e focados
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* Schema de validação para entrada da tool workflows
|
|
36
|
-
*
|
|
37
|
-
* VALIDAÇÕES:
|
|
38
|
-
* - action: Ação obrigatória (list, create, trigger, status, logs, disable, enable)
|
|
39
|
-
* - Parâmetros específicos por ação
|
|
40
|
-
* - Validação de tipos e formatos
|
|
41
|
-
*
|
|
42
|
-
* RECOMENDAÇÕES:
|
|
43
|
-
* - Sempre valide entrada antes de usar
|
|
44
|
-
* - Use parâmetros opcionais adequadamente
|
|
45
|
-
* - Documente parâmetros obrigatórios
|
|
46
|
-
*/
|
|
47
|
-
const WorkflowsInputSchema = zod_1.z.object({
|
|
48
|
-
action: zod_1.z.enum(['list', 'create', 'trigger', 'status', 'logs', 'disable', 'enable']),
|
|
49
|
-
// Parâmetros comuns
|
|
50
|
-
repo: validator_js_1.CommonSchemas.repo,
|
|
51
|
-
// Parâmetros para listagem
|
|
52
|
-
page: validator_js_1.CommonSchemas.page,
|
|
53
|
-
limit: validator_js_1.CommonSchemas.limit,
|
|
54
|
-
// Parâmetros para criação
|
|
55
|
-
name: validator_js_1.CommonSchemas.shortString,
|
|
56
|
-
description: validator_js_1.CommonSchemas.mediumString,
|
|
57
|
-
workflow_content: validator_js_1.CommonSchemas.longString,
|
|
58
|
-
branch: validator_js_1.CommonSchemas.branch,
|
|
59
|
-
// Parâmetros para trigger e status
|
|
60
|
-
workflow_id: validator_js_1.CommonSchemas.shortString,
|
|
61
|
-
workflow_name: validator_js_1.CommonSchemas.shortString,
|
|
62
|
-
run_id: validator_js_1.CommonSchemas.shortString,
|
|
63
|
-
// Parâmetros para logs
|
|
64
|
-
job_id: validator_js_1.CommonSchemas.shortString,
|
|
65
|
-
step_number: zod_1.z.number().optional(),
|
|
66
|
-
// Parâmetros para inputs do workflow
|
|
67
|
-
inputs: zod_1.z.record(zod_1.z.string()).optional(),
|
|
68
|
-
ref: validator_js_1.CommonSchemas.branch.optional()
|
|
69
|
-
}).refine((data) => {
|
|
70
|
-
// Validações específicas por ação
|
|
71
|
-
if (['create'].includes(data.action)) {
|
|
72
|
-
return data.repo && data.name && data.workflow_content;
|
|
73
|
-
}
|
|
74
|
-
if (['trigger', 'status', 'logs', 'disable', 'enable'].includes(data.action)) {
|
|
75
|
-
return data.repo && (data.workflow_id || data.workflow_name);
|
|
76
|
-
}
|
|
77
|
-
return data.repo;
|
|
78
|
-
}, {
|
|
79
|
-
message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
|
|
80
|
-
});
|
|
81
|
-
/**
|
|
82
|
-
* Schema de validação para resultado da tool workflows
|
|
83
|
-
*/
|
|
84
|
-
const WorkflowsResultSchema = zod_1.z.object({
|
|
85
|
-
success: zod_1.z.boolean(),
|
|
86
|
-
action: zod_1.z.string(),
|
|
87
|
-
message: zod_1.z.string(),
|
|
88
|
-
data: zod_1.z.any().optional(),
|
|
89
|
-
error: zod_1.z.string().optional()
|
|
90
|
-
});
|
|
91
|
-
/**
|
|
92
|
-
* Implementação da tool workflows
|
|
93
|
-
*
|
|
94
|
-
* ESTRUTURA:
|
|
95
|
-
* - Validação de entrada
|
|
96
|
-
* - Seleção do provider
|
|
97
|
-
* - Execução da ação
|
|
98
|
-
* - Tratamento de erros
|
|
99
|
-
* - Formatação do resultado
|
|
100
|
-
*
|
|
101
|
-
* AÇÕES SUPORTADAS:
|
|
102
|
-
* - list: Lista workflows do repositório
|
|
103
|
-
* - create: Cria novo workflow
|
|
104
|
-
* - trigger: Dispara workflow manualmente
|
|
105
|
-
* - status: Verifica status de execução
|
|
106
|
-
* - logs: Obtém logs de execução
|
|
107
|
-
* - disable: Desabilita workflow
|
|
108
|
-
* - enable: Habilita workflow
|
|
109
|
-
*
|
|
110
|
-
* TRATAMENTO DE ERROS:
|
|
111
|
-
* - Validação de parâmetros
|
|
112
|
-
* - Verificação de permissões
|
|
113
|
-
* - Tratamento de falhas de API
|
|
114
|
-
* - Logs detalhados para debug
|
|
115
|
-
*/
|
|
116
|
-
exports.workflowsTool = {
|
|
117
|
-
name: 'gh-workflows',
|
|
118
|
-
description: 'tool: Gerencia GitHub Actions workflows para CI/CD\n──────────────\naction list: lista workflows do repositório\naction list requires: repo, page, limit\n───────────────\naction create: cria novo workflow\naction create requires: repo, name, workflow_content, description, branch\n───────────────\naction trigger: dispara workflow manualmente\naction trigger requires: repo, workflow_id, ref, inputs\n───────────────\naction status: verifica status de execução\naction status requires: repo, run_id\n───────────────\naction logs: obtém logs de execução\naction logs requires: repo, run_id, job_id, step_number\n───────────────\naction disable: desabilita workflow\naction disable requires: repo, workflow_id\n───────────────\naction enable: habilita workflow\naction enable requires: repo, workflow_id',
|
|
119
|
-
inputSchema: {
|
|
120
|
-
type: 'object',
|
|
121
|
-
properties: {
|
|
122
|
-
action: {
|
|
123
|
-
type: 'string',
|
|
124
|
-
enum: ['list', 'create', 'trigger', 'status', 'logs', 'disable', 'enable'],
|
|
125
|
-
description: 'Action to perform on workflows'
|
|
126
|
-
},
|
|
127
|
-
repo: { type: 'string', description: 'Repository name' },
|
|
128
|
-
name: { type: 'string', description: 'Workflow name for creation' },
|
|
129
|
-
description: { type: 'string', description: 'Workflow description' },
|
|
130
|
-
workflow_content: { type: 'string', description: 'Workflow YAML content' },
|
|
131
|
-
branch: { type: 'string', description: 'Target branch' },
|
|
132
|
-
workflow_id: { type: 'string', description: 'Workflow ID' },
|
|
133
|
-
workflow_name: { type: 'string', description: 'Workflow name' },
|
|
134
|
-
run_id: { type: 'string', description: 'Workflow run ID' },
|
|
135
|
-
job_id: { type: 'string', description: 'Job ID for logs' },
|
|
136
|
-
step_number: { type: 'number', description: 'Step number for logs' },
|
|
137
|
-
ref: { type: 'string', description: 'Git reference for trigger' },
|
|
138
|
-
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
139
|
-
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 }
|
|
140
|
-
},
|
|
141
|
-
required: ['action', 'repo']
|
|
142
|
-
},
|
|
143
|
-
/**
|
|
144
|
-
* Handler principal da tool workflows
|
|
145
|
-
*
|
|
146
|
-
* FLUXO:
|
|
147
|
-
* 1. Validação da entrada
|
|
148
|
-
* 2. Seleção do provider
|
|
149
|
-
* 3. Execução da ação específica
|
|
150
|
-
* 4. Formatação e retorno do resultado
|
|
151
|
-
*
|
|
152
|
-
* PARÂMETROS:
|
|
153
|
-
* @param input - Dados de entrada validados
|
|
154
|
-
*
|
|
155
|
-
* RETORNO:
|
|
156
|
-
* @returns Promise<WorkflowsResult> - Resultado da operação
|
|
157
|
-
*
|
|
158
|
-
* ERROS:
|
|
159
|
-
* - Lança exceção em caso de erro de validação
|
|
160
|
-
* - Retorna erro formatado em caso de falha de API
|
|
161
|
-
*/
|
|
162
|
-
async handler(input) {
|
|
163
|
-
try {
|
|
164
|
-
// Validação da entrada
|
|
165
|
-
const validatedInput = WorkflowsInputSchema.parse(input);
|
|
166
|
-
// Fixar provider como github para tools exclusivas do GitHub
|
|
167
|
-
const updatedParams = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, 'github');
|
|
168
|
-
const provider = index_js_1.globalProviderFactory.getProvider('github');
|
|
169
|
-
if (!provider) {
|
|
170
|
-
throw new Error('Provider GitHub não encontrado');
|
|
171
|
-
}
|
|
172
|
-
// Execução da ação específica
|
|
173
|
-
switch (updatedParams.action) {
|
|
174
|
-
case 'list':
|
|
175
|
-
return await this.listWorkflows(updatedParams, provider);
|
|
176
|
-
case 'create':
|
|
177
|
-
return await this.createWorkflow(updatedParams, provider);
|
|
178
|
-
case 'trigger':
|
|
179
|
-
return await this.triggerWorkflow(updatedParams, provider);
|
|
180
|
-
case 'status':
|
|
181
|
-
return await this.getWorkflowStatus(updatedParams, provider);
|
|
182
|
-
case 'logs':
|
|
183
|
-
return await this.getWorkflowLogs(updatedParams, provider);
|
|
184
|
-
case 'disable':
|
|
185
|
-
return await this.disableWorkflow(updatedParams, provider);
|
|
186
|
-
case 'enable':
|
|
187
|
-
return await this.enableWorkflow(updatedParams, provider);
|
|
188
|
-
default:
|
|
189
|
-
throw new Error(`Ação não suportada: ${updatedParams.action}`);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
return {
|
|
194
|
-
success: false,
|
|
195
|
-
action: input.action || 'unknown',
|
|
196
|
-
message: 'Erro na operação de workflows',
|
|
197
|
-
error: error instanceof Error ? error.message : String(error)
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
/**
|
|
202
|
-
* Lista workflows do repositório
|
|
203
|
-
*/
|
|
204
|
-
async listWorkflows(params, provider) {
|
|
205
|
-
try {
|
|
206
|
-
// Auto-detecção de owner/username se não fornecidos
|
|
207
|
-
let updatedParams = { ...params };
|
|
208
|
-
const currentUser = await provider.getCurrentUser();
|
|
209
|
-
const owner = currentUser.login;
|
|
210
|
-
if (!provider.listWorkflows) {
|
|
211
|
-
return {
|
|
212
|
-
success: true,
|
|
213
|
-
action: 'list',
|
|
214
|
-
message: 'Funcionalidade de workflows não suportada por este provider',
|
|
215
|
-
data: {
|
|
216
|
-
total_count: 0,
|
|
217
|
-
workflows: [],
|
|
218
|
-
note: 'Workflows não disponíveis neste provider'
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
const result = await provider.listWorkflows({
|
|
223
|
-
owner: (await provider.getCurrentUser()).login,
|
|
224
|
-
repo: params.repo,
|
|
225
|
-
page: params.page,
|
|
226
|
-
limit: params.limit
|
|
227
|
-
});
|
|
228
|
-
return {
|
|
229
|
-
success: true,
|
|
230
|
-
action: 'list',
|
|
231
|
-
message: `${result.workflows?.length || 0} workflows encontrados`,
|
|
232
|
-
data: result
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
throw new Error(`Falha ao listar workflows: ${error}`);
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
/**
|
|
240
|
-
* Cria novo workflow
|
|
241
|
-
*/
|
|
242
|
-
async createWorkflow(params, provider) {
|
|
243
|
-
try {
|
|
244
|
-
if (!provider.createWorkflow) {
|
|
245
|
-
return {
|
|
246
|
-
success: false,
|
|
247
|
-
action: 'create-workflow',
|
|
248
|
-
message: 'Funcionalidade não suportada por este provider',
|
|
249
|
-
error: 'Provider não implementa createWorkflow'
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
const result = await provider.createWorkflow({
|
|
253
|
-
owner: (await provider.getCurrentUser()).login,
|
|
254
|
-
repo: params.repo,
|
|
255
|
-
name: params.name,
|
|
256
|
-
description: params.description,
|
|
257
|
-
content: params.workflow_content,
|
|
258
|
-
branch: params.branch
|
|
259
|
-
});
|
|
260
|
-
return {
|
|
261
|
-
success: true,
|
|
262
|
-
action: 'create',
|
|
263
|
-
message: `Workflow '${params.name}' criado com sucesso`,
|
|
264
|
-
data: result
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
catch (error) {
|
|
268
|
-
throw new Error(`Falha ao criar workflow: ${error}`);
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
/**
|
|
272
|
-
* Dispara workflow manualmente
|
|
273
|
-
*/
|
|
274
|
-
async triggerWorkflow(params, provider) {
|
|
275
|
-
try {
|
|
276
|
-
if (!provider.triggerWorkflow) {
|
|
277
|
-
return {
|
|
278
|
-
success: false,
|
|
279
|
-
action: 'trigger-workflow',
|
|
280
|
-
message: 'Funcionalidade não suportada por este provider',
|
|
281
|
-
error: 'Provider não implementa triggerWorkflow'
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
const result = await provider.triggerWorkflow({
|
|
285
|
-
owner: (await provider.getCurrentUser()).login,
|
|
286
|
-
repo: params.repo,
|
|
287
|
-
workflow_id: params.workflow_id,
|
|
288
|
-
workflow_name: params.workflow_name,
|
|
289
|
-
ref: params.ref || 'main',
|
|
290
|
-
inputs: params.inputs
|
|
291
|
-
});
|
|
292
|
-
return {
|
|
293
|
-
success: true,
|
|
294
|
-
action: 'trigger',
|
|
295
|
-
message: `Workflow disparado com sucesso`,
|
|
296
|
-
data: result
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
catch (error) {
|
|
300
|
-
throw new Error(`Falha ao disparar workflow: ${error}`);
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
/**
|
|
304
|
-
* Verifica status de execução do workflow
|
|
305
|
-
*/
|
|
306
|
-
async getWorkflowStatus(params, provider) {
|
|
307
|
-
try {
|
|
308
|
-
// Auto-detecção de owner/username se não fornecidos
|
|
309
|
-
let updatedParams = { ...params };
|
|
310
|
-
const currentUser = await provider.getCurrentUser();
|
|
311
|
-
const owner = currentUser.login;
|
|
312
|
-
if (!provider.getWorkflowStatus) {
|
|
313
|
-
return {
|
|
314
|
-
success: false,
|
|
315
|
-
action: 'get-workflow-status',
|
|
316
|
-
message: 'Funcionalidade não suportada por este provider',
|
|
317
|
-
error: 'Provider não implementa getWorkflowStatus'
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
const result = await provider.getWorkflowStatus({
|
|
321
|
-
owner: (await provider.getCurrentUser()).login,
|
|
322
|
-
repo: params.repo,
|
|
323
|
-
run_id: params.run_id,
|
|
324
|
-
workflow_id: params.workflow_id
|
|
325
|
-
});
|
|
326
|
-
return {
|
|
327
|
-
success: true,
|
|
328
|
-
action: 'status',
|
|
329
|
-
message: `Status do workflow obtido com sucesso`,
|
|
330
|
-
data: result
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
catch (error) {
|
|
334
|
-
throw new Error(`Falha ao obter status do workflow: ${error}`);
|
|
335
|
-
}
|
|
336
|
-
},
|
|
337
|
-
/**
|
|
338
|
-
* Obtém logs de execução do workflow
|
|
339
|
-
*/
|
|
340
|
-
async getWorkflowLogs(params, provider) {
|
|
341
|
-
try {
|
|
342
|
-
// Auto-detecção de owner/username se não fornecidos
|
|
343
|
-
let updatedParams = { ...params };
|
|
344
|
-
const currentUser = await provider.getCurrentUser();
|
|
345
|
-
const owner = currentUser.login;
|
|
346
|
-
if (!provider.getWorkflowLogs) {
|
|
347
|
-
return {
|
|
348
|
-
success: false,
|
|
349
|
-
action: 'get-workflow-logs',
|
|
350
|
-
message: 'Funcionalidade não suportada por este provider',
|
|
351
|
-
error: 'Provider não implementa getWorkflowLogs'
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
const result = await provider.getWorkflowLogs({
|
|
355
|
-
owner: (await provider.getCurrentUser()).login,
|
|
356
|
-
repo: params.repo,
|
|
357
|
-
run_id: params.run_id,
|
|
358
|
-
job_id: params.job_id,
|
|
359
|
-
step_number: params.step_number
|
|
360
|
-
});
|
|
361
|
-
return {
|
|
362
|
-
success: true,
|
|
363
|
-
action: 'logs',
|
|
364
|
-
message: `Logs do workflow obtidos com sucesso`,
|
|
365
|
-
data: result
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
catch (error) {
|
|
369
|
-
throw new Error(`Falha ao obter logs do workflow: ${error}`);
|
|
370
|
-
}
|
|
371
|
-
},
|
|
372
|
-
/**
|
|
373
|
-
* Desabilita workflow
|
|
374
|
-
*/
|
|
375
|
-
async disableWorkflow(params, provider) {
|
|
376
|
-
try {
|
|
377
|
-
if (!provider.disableWorkflow) {
|
|
378
|
-
return {
|
|
379
|
-
success: false,
|
|
380
|
-
action: 'disable-workflow',
|
|
381
|
-
message: 'Funcionalidade não suportada por este provider',
|
|
382
|
-
error: 'Provider não implementa disableWorkflow'
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
const result = await provider.disableWorkflow({
|
|
386
|
-
owner: (await provider.getCurrentUser()).login,
|
|
387
|
-
repo: params.repo,
|
|
388
|
-
workflow_id: params.workflow_id,
|
|
389
|
-
workflow_name: params.workflow_name
|
|
390
|
-
});
|
|
391
|
-
return {
|
|
392
|
-
success: true,
|
|
393
|
-
action: 'disable',
|
|
394
|
-
message: `Workflow desabilitado com sucesso`,
|
|
395
|
-
data: result
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
catch (error) {
|
|
399
|
-
throw new Error(`Falha ao desabilitar workflow: ${error}`);
|
|
400
|
-
}
|
|
401
|
-
},
|
|
402
|
-
/**
|
|
403
|
-
* Habilita workflow
|
|
404
|
-
*/
|
|
405
|
-
async enableWorkflow(params, provider) {
|
|
406
|
-
try {
|
|
407
|
-
if (!provider.enableWorkflow) {
|
|
408
|
-
return {
|
|
409
|
-
success: false,
|
|
410
|
-
action: 'enable-workflow',
|
|
411
|
-
message: 'Funcionalidade não suportada por este provider',
|
|
412
|
-
error: 'Provider não implementa enableWorkflow'
|
|
413
|
-
};
|
|
414
|
-
}
|
|
415
|
-
const result = await provider.enableWorkflow({
|
|
416
|
-
owner: (await provider.getCurrentUser()).login,
|
|
417
|
-
repo: params.repo,
|
|
418
|
-
workflow_id: params.workflow_id,
|
|
419
|
-
workflow_name: params.workflow_name
|
|
420
|
-
});
|
|
421
|
-
return {
|
|
422
|
-
success: true,
|
|
423
|
-
action: 'enable',
|
|
424
|
-
message: `Workflow habilitado com sucesso`,
|
|
425
|
-
data: result
|
|
426
|
-
};
|
|
427
|
-
}
|
|
428
|
-
catch (error) {
|
|
429
|
-
throw new Error(`Falha ao habilitar workflow: ${error}`);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.workflowsTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
const user_detection_js_1 = require("../utils/user-detection.js");
|
|
7
|
+
const validator_js_1 = require("./validator.js");
|
|
8
|
+
/**
|
|
9
|
+
* Tool: workflows
|
|
10
|
+
*
|
|
11
|
+
* DESCRIÇÃO:
|
|
12
|
+
* Gerenciamento completo de workflows CI/CD com múltiplas ações
|
|
13
|
+
*
|
|
14
|
+
* FUNCIONALIDADES:
|
|
15
|
+
* - Listagem de workflows ativos
|
|
16
|
+
* - Criação de novos workflows
|
|
17
|
+
* - Disparo manual de workflows
|
|
18
|
+
* - Verificação de status de execução
|
|
19
|
+
* - Obtenção de logs de execução
|
|
20
|
+
* - Controle de workflows (enable/disable)
|
|
21
|
+
*
|
|
22
|
+
* USO:
|
|
23
|
+
* - Para automatizar CI/CD pipelines
|
|
24
|
+
* - Para monitorar execuções
|
|
25
|
+
* - Para gerenciar workflows de desenvolvimento
|
|
26
|
+
* - Para integração com ferramentas de deploy
|
|
27
|
+
*
|
|
28
|
+
* RECOMENDAÇÕES:
|
|
29
|
+
* - Use workflows para automatizar testes
|
|
30
|
+
* - Configure triggers apropriados
|
|
31
|
+
* - Monitore logs regularmente
|
|
32
|
+
* - Mantenha workflows simples e focados
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Schema de validação para entrada da tool workflows
|
|
36
|
+
*
|
|
37
|
+
* VALIDAÇÕES:
|
|
38
|
+
* - action: Ação obrigatória (list, create, trigger, status, logs, disable, enable)
|
|
39
|
+
* - Parâmetros específicos por ação
|
|
40
|
+
* - Validação de tipos e formatos
|
|
41
|
+
*
|
|
42
|
+
* RECOMENDAÇÕES:
|
|
43
|
+
* - Sempre valide entrada antes de usar
|
|
44
|
+
* - Use parâmetros opcionais adequadamente
|
|
45
|
+
* - Documente parâmetros obrigatórios
|
|
46
|
+
*/
|
|
47
|
+
const WorkflowsInputSchema = zod_1.z.object({
|
|
48
|
+
action: zod_1.z.enum(['list', 'create', 'trigger', 'status', 'logs', 'disable', 'enable']),
|
|
49
|
+
// Parâmetros comuns
|
|
50
|
+
repo: validator_js_1.CommonSchemas.repo,
|
|
51
|
+
// Parâmetros para listagem
|
|
52
|
+
page: validator_js_1.CommonSchemas.page,
|
|
53
|
+
limit: validator_js_1.CommonSchemas.limit,
|
|
54
|
+
// Parâmetros para criação
|
|
55
|
+
name: validator_js_1.CommonSchemas.shortString,
|
|
56
|
+
description: validator_js_1.CommonSchemas.mediumString,
|
|
57
|
+
workflow_content: validator_js_1.CommonSchemas.longString,
|
|
58
|
+
branch: validator_js_1.CommonSchemas.branch,
|
|
59
|
+
// Parâmetros para trigger e status
|
|
60
|
+
workflow_id: validator_js_1.CommonSchemas.shortString,
|
|
61
|
+
workflow_name: validator_js_1.CommonSchemas.shortString,
|
|
62
|
+
run_id: validator_js_1.CommonSchemas.shortString,
|
|
63
|
+
// Parâmetros para logs
|
|
64
|
+
job_id: validator_js_1.CommonSchemas.shortString,
|
|
65
|
+
step_number: zod_1.z.number().optional(),
|
|
66
|
+
// Parâmetros para inputs do workflow
|
|
67
|
+
inputs: zod_1.z.record(zod_1.z.string()).optional(),
|
|
68
|
+
ref: validator_js_1.CommonSchemas.branch.optional()
|
|
69
|
+
}).refine((data) => {
|
|
70
|
+
// Validações específicas por ação
|
|
71
|
+
if (['create'].includes(data.action)) {
|
|
72
|
+
return data.repo && data.name && data.workflow_content;
|
|
73
|
+
}
|
|
74
|
+
if (['trigger', 'status', 'logs', 'disable', 'enable'].includes(data.action)) {
|
|
75
|
+
return data.repo && (data.workflow_id || data.workflow_name);
|
|
76
|
+
}
|
|
77
|
+
return data.repo;
|
|
78
|
+
}, {
|
|
79
|
+
message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Schema de validação para resultado da tool workflows
|
|
83
|
+
*/
|
|
84
|
+
const WorkflowsResultSchema = zod_1.z.object({
|
|
85
|
+
success: zod_1.z.boolean(),
|
|
86
|
+
action: zod_1.z.string(),
|
|
87
|
+
message: zod_1.z.string(),
|
|
88
|
+
data: zod_1.z.any().optional(),
|
|
89
|
+
error: zod_1.z.string().optional()
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Implementação da tool workflows
|
|
93
|
+
*
|
|
94
|
+
* ESTRUTURA:
|
|
95
|
+
* - Validação de entrada
|
|
96
|
+
* - Seleção do provider
|
|
97
|
+
* - Execução da ação
|
|
98
|
+
* - Tratamento de erros
|
|
99
|
+
* - Formatação do resultado
|
|
100
|
+
*
|
|
101
|
+
* AÇÕES SUPORTADAS:
|
|
102
|
+
* - list: Lista workflows do repositório
|
|
103
|
+
* - create: Cria novo workflow
|
|
104
|
+
* - trigger: Dispara workflow manualmente
|
|
105
|
+
* - status: Verifica status de execução
|
|
106
|
+
* - logs: Obtém logs de execução
|
|
107
|
+
* - disable: Desabilita workflow
|
|
108
|
+
* - enable: Habilita workflow
|
|
109
|
+
*
|
|
110
|
+
* TRATAMENTO DE ERROS:
|
|
111
|
+
* - Validação de parâmetros
|
|
112
|
+
* - Verificação de permissões
|
|
113
|
+
* - Tratamento de falhas de API
|
|
114
|
+
* - Logs detalhados para debug
|
|
115
|
+
*/
|
|
116
|
+
exports.workflowsTool = {
|
|
117
|
+
name: 'gh-workflows',
|
|
118
|
+
description: 'tool: Gerencia GitHub Actions workflows para CI/CD\n──────────────\naction list: lista workflows do repositório\naction list requires: repo, page, limit\n───────────────\naction create: cria novo workflow\naction create requires: repo, name, workflow_content, description, branch\n───────────────\naction trigger: dispara workflow manualmente\naction trigger requires: repo, workflow_id, ref, inputs\n───────────────\naction status: verifica status de execução\naction status requires: repo, run_id\n───────────────\naction logs: obtém logs de execução\naction logs requires: repo, run_id, job_id, step_number\n───────────────\naction disable: desabilita workflow\naction disable requires: repo, workflow_id\n───────────────\naction enable: habilita workflow\naction enable requires: repo, workflow_id',
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
action: {
|
|
123
|
+
type: 'string',
|
|
124
|
+
enum: ['list', 'create', 'trigger', 'status', 'logs', 'disable', 'enable'],
|
|
125
|
+
description: 'Action to perform on workflows'
|
|
126
|
+
},
|
|
127
|
+
repo: { type: 'string', description: 'Repository name' },
|
|
128
|
+
name: { type: 'string', description: 'Workflow name for creation' },
|
|
129
|
+
description: { type: 'string', description: 'Workflow description' },
|
|
130
|
+
workflow_content: { type: 'string', description: 'Workflow YAML content' },
|
|
131
|
+
branch: { type: 'string', description: 'Target branch' },
|
|
132
|
+
workflow_id: { type: 'string', description: 'Workflow ID' },
|
|
133
|
+
workflow_name: { type: 'string', description: 'Workflow name' },
|
|
134
|
+
run_id: { type: 'string', description: 'Workflow run ID' },
|
|
135
|
+
job_id: { type: 'string', description: 'Job ID for logs' },
|
|
136
|
+
step_number: { type: 'number', description: 'Step number for logs' },
|
|
137
|
+
ref: { type: 'string', description: 'Git reference for trigger' },
|
|
138
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
139
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 }
|
|
140
|
+
},
|
|
141
|
+
required: ['action', 'repo']
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Handler principal da tool workflows
|
|
145
|
+
*
|
|
146
|
+
* FLUXO:
|
|
147
|
+
* 1. Validação da entrada
|
|
148
|
+
* 2. Seleção do provider
|
|
149
|
+
* 3. Execução da ação específica
|
|
150
|
+
* 4. Formatação e retorno do resultado
|
|
151
|
+
*
|
|
152
|
+
* PARÂMETROS:
|
|
153
|
+
* @param input - Dados de entrada validados
|
|
154
|
+
*
|
|
155
|
+
* RETORNO:
|
|
156
|
+
* @returns Promise<WorkflowsResult> - Resultado da operação
|
|
157
|
+
*
|
|
158
|
+
* ERROS:
|
|
159
|
+
* - Lança exceção em caso de erro de validação
|
|
160
|
+
* - Retorna erro formatado em caso de falha de API
|
|
161
|
+
*/
|
|
162
|
+
async handler(input) {
|
|
163
|
+
try {
|
|
164
|
+
// Validação da entrada
|
|
165
|
+
const validatedInput = WorkflowsInputSchema.parse(input);
|
|
166
|
+
// Fixar provider como github para tools exclusivas do GitHub
|
|
167
|
+
const updatedParams = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, 'github');
|
|
168
|
+
const provider = index_js_1.globalProviderFactory.getProvider('github');
|
|
169
|
+
if (!provider) {
|
|
170
|
+
throw new Error('Provider GitHub não encontrado');
|
|
171
|
+
}
|
|
172
|
+
// Execução da ação específica
|
|
173
|
+
switch (updatedParams.action) {
|
|
174
|
+
case 'list':
|
|
175
|
+
return await this.listWorkflows(updatedParams, provider);
|
|
176
|
+
case 'create':
|
|
177
|
+
return await this.createWorkflow(updatedParams, provider);
|
|
178
|
+
case 'trigger':
|
|
179
|
+
return await this.triggerWorkflow(updatedParams, provider);
|
|
180
|
+
case 'status':
|
|
181
|
+
return await this.getWorkflowStatus(updatedParams, provider);
|
|
182
|
+
case 'logs':
|
|
183
|
+
return await this.getWorkflowLogs(updatedParams, provider);
|
|
184
|
+
case 'disable':
|
|
185
|
+
return await this.disableWorkflow(updatedParams, provider);
|
|
186
|
+
case 'enable':
|
|
187
|
+
return await this.enableWorkflow(updatedParams, provider);
|
|
188
|
+
default:
|
|
189
|
+
throw new Error(`Ação não suportada: ${updatedParams.action}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
return {
|
|
194
|
+
success: false,
|
|
195
|
+
action: input.action || 'unknown',
|
|
196
|
+
message: 'Erro na operação de workflows',
|
|
197
|
+
error: error instanceof Error ? error.message : String(error)
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
/**
|
|
202
|
+
* Lista workflows do repositório
|
|
203
|
+
*/
|
|
204
|
+
async listWorkflows(params, provider) {
|
|
205
|
+
try {
|
|
206
|
+
// Auto-detecção de owner/username se não fornecidos
|
|
207
|
+
let updatedParams = { ...params };
|
|
208
|
+
const currentUser = await provider.getCurrentUser();
|
|
209
|
+
const owner = currentUser.login;
|
|
210
|
+
if (!provider.listWorkflows) {
|
|
211
|
+
return {
|
|
212
|
+
success: true,
|
|
213
|
+
action: 'list',
|
|
214
|
+
message: 'Funcionalidade de workflows não suportada por este provider',
|
|
215
|
+
data: {
|
|
216
|
+
total_count: 0,
|
|
217
|
+
workflows: [],
|
|
218
|
+
note: 'Workflows não disponíveis neste provider'
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
const result = await provider.listWorkflows({
|
|
223
|
+
owner: (await provider.getCurrentUser()).login,
|
|
224
|
+
repo: params.repo,
|
|
225
|
+
page: params.page,
|
|
226
|
+
limit: params.limit
|
|
227
|
+
});
|
|
228
|
+
return {
|
|
229
|
+
success: true,
|
|
230
|
+
action: 'list',
|
|
231
|
+
message: `${result.workflows?.length || 0} workflows encontrados`,
|
|
232
|
+
data: result
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
throw new Error(`Falha ao listar workflows: ${error}`);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
/**
|
|
240
|
+
* Cria novo workflow
|
|
241
|
+
*/
|
|
242
|
+
async createWorkflow(params, provider) {
|
|
243
|
+
try {
|
|
244
|
+
if (!provider.createWorkflow) {
|
|
245
|
+
return {
|
|
246
|
+
success: false,
|
|
247
|
+
action: 'create-workflow',
|
|
248
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
249
|
+
error: 'Provider não implementa createWorkflow'
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
const result = await provider.createWorkflow({
|
|
253
|
+
owner: (await provider.getCurrentUser()).login,
|
|
254
|
+
repo: params.repo,
|
|
255
|
+
name: params.name,
|
|
256
|
+
description: params.description,
|
|
257
|
+
content: params.workflow_content,
|
|
258
|
+
branch: params.branch
|
|
259
|
+
});
|
|
260
|
+
return {
|
|
261
|
+
success: true,
|
|
262
|
+
action: 'create',
|
|
263
|
+
message: `Workflow '${params.name}' criado com sucesso`,
|
|
264
|
+
data: result
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
throw new Error(`Falha ao criar workflow: ${error}`);
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
/**
|
|
272
|
+
* Dispara workflow manualmente
|
|
273
|
+
*/
|
|
274
|
+
async triggerWorkflow(params, provider) {
|
|
275
|
+
try {
|
|
276
|
+
if (!provider.triggerWorkflow) {
|
|
277
|
+
return {
|
|
278
|
+
success: false,
|
|
279
|
+
action: 'trigger-workflow',
|
|
280
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
281
|
+
error: 'Provider não implementa triggerWorkflow'
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
const result = await provider.triggerWorkflow({
|
|
285
|
+
owner: (await provider.getCurrentUser()).login,
|
|
286
|
+
repo: params.repo,
|
|
287
|
+
workflow_id: params.workflow_id,
|
|
288
|
+
workflow_name: params.workflow_name,
|
|
289
|
+
ref: params.ref || 'main',
|
|
290
|
+
inputs: params.inputs
|
|
291
|
+
});
|
|
292
|
+
return {
|
|
293
|
+
success: true,
|
|
294
|
+
action: 'trigger',
|
|
295
|
+
message: `Workflow disparado com sucesso`,
|
|
296
|
+
data: result
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
throw new Error(`Falha ao disparar workflow: ${error}`);
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
/**
|
|
304
|
+
* Verifica status de execução do workflow
|
|
305
|
+
*/
|
|
306
|
+
async getWorkflowStatus(params, provider) {
|
|
307
|
+
try {
|
|
308
|
+
// Auto-detecção de owner/username se não fornecidos
|
|
309
|
+
let updatedParams = { ...params };
|
|
310
|
+
const currentUser = await provider.getCurrentUser();
|
|
311
|
+
const owner = currentUser.login;
|
|
312
|
+
if (!provider.getWorkflowStatus) {
|
|
313
|
+
return {
|
|
314
|
+
success: false,
|
|
315
|
+
action: 'get-workflow-status',
|
|
316
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
317
|
+
error: 'Provider não implementa getWorkflowStatus'
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
const result = await provider.getWorkflowStatus({
|
|
321
|
+
owner: (await provider.getCurrentUser()).login,
|
|
322
|
+
repo: params.repo,
|
|
323
|
+
run_id: params.run_id,
|
|
324
|
+
workflow_id: params.workflow_id
|
|
325
|
+
});
|
|
326
|
+
return {
|
|
327
|
+
success: true,
|
|
328
|
+
action: 'status',
|
|
329
|
+
message: `Status do workflow obtido com sucesso`,
|
|
330
|
+
data: result
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
throw new Error(`Falha ao obter status do workflow: ${error}`);
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
/**
|
|
338
|
+
* Obtém logs de execução do workflow
|
|
339
|
+
*/
|
|
340
|
+
async getWorkflowLogs(params, provider) {
|
|
341
|
+
try {
|
|
342
|
+
// Auto-detecção de owner/username se não fornecidos
|
|
343
|
+
let updatedParams = { ...params };
|
|
344
|
+
const currentUser = await provider.getCurrentUser();
|
|
345
|
+
const owner = currentUser.login;
|
|
346
|
+
if (!provider.getWorkflowLogs) {
|
|
347
|
+
return {
|
|
348
|
+
success: false,
|
|
349
|
+
action: 'get-workflow-logs',
|
|
350
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
351
|
+
error: 'Provider não implementa getWorkflowLogs'
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
const result = await provider.getWorkflowLogs({
|
|
355
|
+
owner: (await provider.getCurrentUser()).login,
|
|
356
|
+
repo: params.repo,
|
|
357
|
+
run_id: params.run_id,
|
|
358
|
+
job_id: params.job_id,
|
|
359
|
+
step_number: params.step_number
|
|
360
|
+
});
|
|
361
|
+
return {
|
|
362
|
+
success: true,
|
|
363
|
+
action: 'logs',
|
|
364
|
+
message: `Logs do workflow obtidos com sucesso`,
|
|
365
|
+
data: result
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
throw new Error(`Falha ao obter logs do workflow: ${error}`);
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
/**
|
|
373
|
+
* Desabilita workflow
|
|
374
|
+
*/
|
|
375
|
+
async disableWorkflow(params, provider) {
|
|
376
|
+
try {
|
|
377
|
+
if (!provider.disableWorkflow) {
|
|
378
|
+
return {
|
|
379
|
+
success: false,
|
|
380
|
+
action: 'disable-workflow',
|
|
381
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
382
|
+
error: 'Provider não implementa disableWorkflow'
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
const result = await provider.disableWorkflow({
|
|
386
|
+
owner: (await provider.getCurrentUser()).login,
|
|
387
|
+
repo: params.repo,
|
|
388
|
+
workflow_id: params.workflow_id,
|
|
389
|
+
workflow_name: params.workflow_name
|
|
390
|
+
});
|
|
391
|
+
return {
|
|
392
|
+
success: true,
|
|
393
|
+
action: 'disable',
|
|
394
|
+
message: `Workflow desabilitado com sucesso`,
|
|
395
|
+
data: result
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
throw new Error(`Falha ao desabilitar workflow: ${error}`);
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
/**
|
|
403
|
+
* Habilita workflow
|
|
404
|
+
*/
|
|
405
|
+
async enableWorkflow(params, provider) {
|
|
406
|
+
try {
|
|
407
|
+
if (!provider.enableWorkflow) {
|
|
408
|
+
return {
|
|
409
|
+
success: false,
|
|
410
|
+
action: 'enable-workflow',
|
|
411
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
412
|
+
error: 'Provider não implementa enableWorkflow'
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
const result = await provider.enableWorkflow({
|
|
416
|
+
owner: (await provider.getCurrentUser()).login,
|
|
417
|
+
repo: params.repo,
|
|
418
|
+
workflow_id: params.workflow_id,
|
|
419
|
+
workflow_name: params.workflow_name
|
|
420
|
+
});
|
|
421
|
+
return {
|
|
422
|
+
success: true,
|
|
423
|
+
action: 'enable',
|
|
424
|
+
message: `Workflow habilitado com sucesso`,
|
|
425
|
+
data: result
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
throw new Error(`Falha ao habilitar workflow: ${error}`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
};
|
|
433
433
|
//# sourceMappingURL=gh-workflows.js.map
|