@andrebuzeli/git-mcp 2.27.4 → 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.
Files changed (112) hide show
  1. package/dist/client.d.ts +306 -306
  2. package/dist/client.js +298 -298
  3. package/dist/config.d.ts +310 -310
  4. package/dist/config.js +392 -392
  5. package/dist/index.d.ts +22 -22
  6. package/dist/index.js +89 -89
  7. package/dist/providers/base-provider.d.ts +160 -156
  8. package/dist/providers/base-provider.d.ts.map +1 -1
  9. package/dist/providers/base-provider.js +274 -260
  10. package/dist/providers/base-provider.js.map +1 -1
  11. package/dist/providers/error-handler.d.ts +50 -50
  12. package/dist/providers/error-handler.js +175 -175
  13. package/dist/providers/gitea-provider.d.ts +97 -97
  14. package/dist/providers/gitea-provider.js +1001 -1001
  15. package/dist/providers/github-provider.d.ts +104 -104
  16. package/dist/providers/github-provider.js +1234 -1234
  17. package/dist/providers/index.d.ts +12 -12
  18. package/dist/providers/index.js +40 -40
  19. package/dist/providers/provider-factory.d.ts +74 -74
  20. package/dist/providers/provider-factory.js +311 -311
  21. package/dist/providers/types.d.ts +318 -298
  22. package/dist/providers/types.d.ts.map +1 -1
  23. package/dist/providers/types.js +6 -6
  24. package/dist/server.d.ts +76 -76
  25. package/dist/server.d.ts.map +1 -1
  26. package/dist/server.js +306 -305
  27. package/dist/server.js.map +1 -1
  28. package/dist/tools/gh-actions.d.ts +252 -252
  29. package/dist/tools/gh-actions.js +389 -389
  30. package/dist/tools/gh-analytics.d.ts +263 -263
  31. package/dist/tools/gh-analytics.js +401 -401
  32. package/dist/tools/gh-code-review.d.ts +304 -304
  33. package/dist/tools/gh-code-review.js +512 -512
  34. package/dist/tools/gh-codespaces.d.ts +138 -138
  35. package/dist/tools/gh-codespaces.js +282 -282
  36. package/dist/tools/gh-deployments.d.ts +300 -300
  37. package/dist/tools/gh-deployments.js +367 -367
  38. package/dist/tools/gh-gists.d.ts +174 -174
  39. package/dist/tools/gh-gists.js +321 -321
  40. package/dist/tools/gh-projects.d.ts +205 -205
  41. package/dist/tools/gh-projects.js +358 -358
  42. package/dist/tools/gh-security.d.ts +274 -274
  43. package/dist/tools/gh-security.js +395 -395
  44. package/dist/tools/gh-sync.d.ts +213 -213
  45. package/dist/tools/gh-sync.js +378 -378
  46. package/dist/tools/gh-workflows.d.ts +290 -290
  47. package/dist/tools/gh-workflows.js +432 -432
  48. package/dist/tools/git-archive.d.ts +165 -165
  49. package/dist/tools/git-archive.js +233 -233
  50. package/dist/tools/git-branches.d.ts +430 -430
  51. package/dist/tools/git-branches.d.ts.map +1 -1
  52. package/dist/tools/git-branches.js +627 -530
  53. package/dist/tools/git-branches.js.map +1 -1
  54. package/dist/tools/git-bundle.d.ts +171 -171
  55. package/dist/tools/git-bundle.js +241 -241
  56. package/dist/tools/git-cherry-pick.d.ts +158 -158
  57. package/dist/tools/git-cherry-pick.js +224 -224
  58. package/dist/tools/git-commits.d.ts +485 -485
  59. package/dist/tools/git-commits.d.ts.map +1 -1
  60. package/dist/tools/git-commits.js +735 -625
  61. package/dist/tools/git-commits.js.map +1 -1
  62. package/dist/tools/git-config.d.ts +140 -140
  63. package/dist/tools/git-config.js +268 -268
  64. package/dist/tools/git-files.d.ts +486 -486
  65. package/dist/tools/git-files.js +607 -607
  66. package/dist/tools/git-issues.d.ts +571 -571
  67. package/dist/tools/git-issues.d.ts.map +1 -1
  68. package/dist/tools/git-issues.js +740 -693
  69. package/dist/tools/git-issues.js.map +1 -1
  70. package/dist/tools/git-pulls.d.ts +694 -694
  71. package/dist/tools/git-pulls.js +732 -732
  72. package/dist/tools/git-rebase.d.ts +137 -137
  73. package/dist/tools/git-rebase.js +213 -213
  74. package/dist/tools/git-releases.d.ts +487 -487
  75. package/dist/tools/git-releases.js +557 -557
  76. package/dist/tools/git-remote.d.ts +138 -138
  77. package/dist/tools/git-remote.js +274 -274
  78. package/dist/tools/git-repositories.d.ts +483 -483
  79. package/dist/tools/git-repositories.js +640 -640
  80. package/dist/tools/git-reset.d.ts +130 -130
  81. package/dist/tools/git-reset.js +223 -223
  82. package/dist/tools/git-revert.d.ts +149 -149
  83. package/dist/tools/git-revert.js +198 -198
  84. package/dist/tools/git-stash.d.ts +140 -140
  85. package/dist/tools/git-stash.js +269 -269
  86. package/dist/tools/git-submodule.d.ts +152 -152
  87. package/dist/tools/git-submodule.js +289 -289
  88. package/dist/tools/git-sync.d.ts +178 -166
  89. package/dist/tools/git-sync.d.ts.map +1 -1
  90. package/dist/tools/git-sync.js +312 -117
  91. package/dist/tools/git-sync.js.map +1 -1
  92. package/dist/tools/git-tags.d.ts +411 -411
  93. package/dist/tools/git-tags.js +485 -485
  94. package/dist/tools/git-webhooks.d.ts +470 -482
  95. package/dist/tools/git-webhooks.d.ts.map +1 -1
  96. package/dist/tools/git-webhooks.js +543 -555
  97. package/dist/tools/git-webhooks.js.map +1 -1
  98. package/dist/tools/git-worktree.d.ts +159 -159
  99. package/dist/tools/git-worktree.js +269 -269
  100. package/dist/tools/repositories.d.ts +405 -405
  101. package/dist/tools/repositories.js +569 -569
  102. package/dist/tools/users.d.ts +372 -372
  103. package/dist/tools/users.js +499 -499
  104. package/dist/tools/validator.d.ts +170 -170
  105. package/dist/tools/validator.js +194 -194
  106. package/dist/tools/version-control.d.ts +136 -136
  107. package/dist/tools/version-control.js +164 -164
  108. package/dist/utils/terminal-controller.d.ts +80 -80
  109. package/dist/utils/terminal-controller.js +345 -345
  110. package/dist/utils/user-detection.d.ts +24 -24
  111. package/dist/utils/user-detection.js +53 -53
  112. package/package.json +59 -59
@@ -1,368 +1,368 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deploymentsTool = 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: deployments
10
- *
11
- * DESCRIÇÃO:
12
- * Gerenciamento completo de deployments com múltiplas ações
13
- *
14
- * FUNCIONALIDADES:
15
- * - Listagem de deployments
16
- * - Criação de deployment
17
- * - Atualização de status de deployment
18
- * - Gerenciamento de ambientes
19
- * - Rollback de deployments
20
- * - Monitoramento de status
21
- *
22
- * USO:
23
- * - Para rastrear deployments em produção
24
- * - Para gerenciar ambientes de deploy
25
- * - Para automação de rollbacks
26
- * - Para monitoramento de releases
27
- *
28
- * RECOMENDAÇÕES:
29
- * - Use ambientes separados para staging/prod
30
- * - Monitore status de deployments
31
- * - Configure rollbacks automáticos
32
- * - Mantenha histórico de deployments
33
- */
34
- /**
35
- * Schema de validação para entrada da tool deployments
36
- */
37
- const DeploymentsInputSchema = zod_1.z.object({
38
- action: zod_1.z.enum(['list', 'create', 'status', 'environments', 'rollback', 'delete']),
39
- // Parâmetros comuns
40
- repo: validator_js_1.CommonSchemas.repo,
41
- // Parâmetros para listagem
42
- page: validator_js_1.CommonSchemas.page,
43
- limit: validator_js_1.CommonSchemas.limit,
44
- // Parâmetros para deployment
45
- deployment_id: validator_js_1.CommonSchemas.shortString,
46
- ref: validator_js_1.CommonSchemas.branch,
47
- environment: validator_js_1.CommonSchemas.shortString,
48
- description: validator_js_1.CommonSchemas.mediumString,
49
- // Parâmetros para criação
50
- task: validator_js_1.CommonSchemas.shortString,
51
- auto_merge: validator_js_1.CommonSchemas.boolean,
52
- required_contexts: zod_1.z.array(zod_1.z.string()).optional(),
53
- payload: zod_1.z.record(zod_1.z.any()).optional(),
54
- // Parâmetros para status
55
- state: zod_1.z.enum(['pending', 'success', 'error', 'failure', 'inactive', 'in_progress', 'queued']).optional(),
56
- log_url: validator_js_1.CommonSchemas.mediumString,
57
- environment_url: validator_js_1.CommonSchemas.mediumString,
58
- // Parâmetros para ambientes
59
- environment_name: validator_js_1.CommonSchemas.shortString,
60
- wait_timer: zod_1.z.number().optional(),
61
- reviewers: zod_1.z.array(zod_1.z.string()).optional(),
62
- // Filtros
63
- sha: validator_js_1.CommonSchemas.shortString,
64
- task_filter: validator_js_1.CommonSchemas.shortString,
65
- environment_filter: validator_js_1.CommonSchemas.shortString
66
- }).refine((data) => {
67
- // Validações específicas por ação
68
- if (['create'].includes(data.action)) {
69
- return data.repo && data.ref && data.environment;
70
- }
71
- if (['status', 'rollback', 'delete'].includes(data.action)) {
72
- return data.repo && data.deployment_id;
73
- }
74
- return data.repo;
75
- }, {
76
- message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
77
- });
78
- /**
79
- * Schema de validação para resultado da tool deployments
80
- */
81
- const DeploymentsResultSchema = 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
- * Implementação da tool deployments
90
- */
91
- exports.deploymentsTool = {
92
- name: 'gh-deployments',
93
- description: 'tool: Gerencia deployments GitHub para controle de versões em produção\n──────────────\naction list: lista deployments do repositório\naction list requires: repo, environment, ref, task, page, limit\n───────────────\naction create: cria novo deployment\naction create requires: repo, ref, environment, description, task, auto_merge, required_contexts, payload\n───────────────\naction status: verifica status de deployment\naction status requires: repo, deployment_id, state, log_url, environment_url, description\n───────────────\naction environments: lista ambientes de deployment\naction environments requires: repo, page, limit\n───────────────\naction rollback: reverte deployment\naction rollback requires: repo, deployment_id, environment\n───────────────\naction delete: remove deployment\naction delete requires: repo, deployment_id',
94
- inputSchema: {
95
- type: 'object',
96
- properties: {
97
- action: {
98
- type: 'string',
99
- enum: ['list', 'create', 'status', 'environments', 'rollback', 'delete'],
100
- description: 'Action to perform on deployments'
101
- },
102
- repo: { type: 'string', description: 'Repository name' },
103
- deployment_id: { type: 'string', description: 'Deployment ID' },
104
- ref: { type: 'string', description: 'Git reference to deploy' },
105
- environment: { type: 'string', description: 'Deployment environment' },
106
- description: { type: 'string', description: 'Deployment description' },
107
- task: { type: 'string', description: 'Deployment task' },
108
- auto_merge: { type: 'boolean', description: 'Auto merge deployment' },
109
- required_contexts: { type: 'array', items: { type: 'string' }, description: 'Required status contexts' },
110
- payload: { type: 'object', description: 'Deployment payload' },
111
- state: { type: 'string', enum: ['pending', 'success', 'error', 'failure', 'inactive', 'in_progress', 'queued'], description: 'Deployment state' },
112
- log_url: { type: 'string', description: 'Log URL' },
113
- environment_url: { type: 'string', description: 'Environment URL' },
114
- environment_name: { type: 'string', description: 'Environment name' },
115
- wait_timer: { type: 'number', description: 'Wait timer in minutes' },
116
- reviewers: { type: 'array', items: { type: 'string' }, description: 'Environment reviewers' },
117
- sha: { type: 'string', description: 'Commit SHA filter' },
118
- task_filter: { type: 'string', description: 'Task filter' },
119
- environment_filter: { type: 'string', description: 'Environment filter' },
120
- page: { type: 'number', description: 'Page number', minimum: 1 },
121
- limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 }
122
- },
123
- required: ['action', 'repo']
124
- },
125
- async handler(input) {
126
- try {
127
- const validatedInput = DeploymentsInputSchema.parse(input);
128
- // Fixar provider como github para tools exclusivas do GitHub
129
- const updatedParams = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, 'github');
130
- const provider = index_js_1.globalProviderFactory.getProvider('github');
131
- if (!provider) {
132
- throw new Error('Provider GitHub não encontrado');
133
- }
134
- switch (updatedParams.action) {
135
- case 'list':
136
- return await this.listDeployments(updatedParams, provider);
137
- case 'create':
138
- return await this.createDeployment(updatedParams, provider);
139
- case 'status':
140
- return await this.updateDeploymentStatus(updatedParams, provider);
141
- case 'environments':
142
- return await this.listEnvironments(updatedParams, provider);
143
- case 'rollback':
144
- return await this.rollbackDeployment(updatedParams, provider);
145
- case 'delete':
146
- return await this.deleteDeployment(updatedParams, provider);
147
- default:
148
- throw new Error(`Ação não suportada: ${updatedParams.action}`);
149
- }
150
- }
151
- catch (error) {
152
- return {
153
- success: false,
154
- action: input.action || 'unknown',
155
- message: 'Erro na operação de deployments',
156
- error: error instanceof Error ? error.message : String(error)
157
- };
158
- }
159
- },
160
- /**
161
- * Lista deployments do repositório
162
- */
163
- async listDeployments(params, provider) {
164
- try {
165
- const currentUser = await provider.getCurrentUser();
166
- const owner = currentUser.login;
167
- if (!provider.listDeployments) {
168
- return {
169
- success: true,
170
- action: 'list',
171
- message: 'Funcionalidade de deployments não suportada por este provider',
172
- data: {
173
- total_count: 0,
174
- deployments: [],
175
- note: 'Deployments não disponíveis neste provider'
176
- }
177
- };
178
- }
179
- const result = await provider.listDeployments({
180
- owner,
181
- repo: params.repo,
182
- sha: params.sha,
183
- ref: params.ref,
184
- task: params.task_filter,
185
- environment: params.environment_filter,
186
- page: params.page,
187
- limit: params.limit
188
- });
189
- return {
190
- success: true,
191
- action: 'list',
192
- message: `${result.deployments?.length || 0} deployments encontrados`,
193
- data: result
194
- };
195
- }
196
- catch (error) {
197
- throw new Error(`Falha ao listar deployments: ${error}`);
198
- }
199
- },
200
- /**
201
- * Cria novo deployment
202
- */
203
- async createDeployment(params, provider) {
204
- try {
205
- if (!provider.createDeployment) {
206
- return {
207
- success: false,
208
- action: 'create-deployment',
209
- message: 'Funcionalidade não suportada por este provider',
210
- error: 'Provider não implementa createDeployment'
211
- };
212
- }
213
- const currentUser = await provider.getCurrentUser();
214
- const owner = currentUser.login;
215
- const result = await provider.createDeployment({
216
- owner,
217
- repo: params.repo,
218
- ref: params.ref,
219
- environment: params.environment,
220
- description: params.description,
221
- task: params.task || 'deploy',
222
- auto_merge: params.auto_merge,
223
- required_contexts: params.required_contexts,
224
- payload: params.payload
225
- });
226
- return {
227
- success: true,
228
- action: 'create',
229
- message: 'Deployment criado com sucesso',
230
- data: result
231
- };
232
- }
233
- catch (error) {
234
- throw new Error(`Falha ao criar deployment: ${error}`);
235
- }
236
- },
237
- /**
238
- * Atualiza status do deployment
239
- */
240
- async updateDeploymentStatus(params, provider) {
241
- try {
242
- if (!provider.updateDeploymentStatus) {
243
- return {
244
- success: false,
245
- action: 'update-deployment-status',
246
- message: 'Funcionalidade não suportada por este provider',
247
- error: 'Provider não implementa updateDeploymentStatus'
248
- };
249
- }
250
- const currentUser = await provider.getCurrentUser();
251
- const owner = currentUser.login;
252
- const result = await provider.updateDeploymentStatus({
253
- owner,
254
- repo: params.repo,
255
- deployment_id: params.deployment_id,
256
- state: params.state || 'pending',
257
- log_url: params.log_url,
258
- description: params.description,
259
- environment_url: params.environment_url
260
- });
261
- return {
262
- success: true,
263
- action: 'status',
264
- message: `Status do deployment atualizado com sucesso`,
265
- data: result
266
- };
267
- }
268
- catch (error) {
269
- throw new Error(`Falha ao atualizar status do deployment: ${error}`);
270
- }
271
- },
272
- /**
273
- * Lista ambientes de deployment
274
- */
275
- async listEnvironments(params, provider) {
276
- try {
277
- if (!provider.listEnvironments) {
278
- return {
279
- success: false,
280
- action: 'list-environments',
281
- message: 'Funcionalidade não suportada por este provider',
282
- error: 'Provider não implementa listEnvironments'
283
- };
284
- }
285
- const currentUser = await provider.getCurrentUser();
286
- const owner = currentUser.login;
287
- const result = await provider.listEnvironments({
288
- owner,
289
- repo: params.repo,
290
- page: params.page,
291
- limit: params.limit
292
- });
293
- return {
294
- success: true,
295
- action: 'environments',
296
- message: `${result.environments?.length || 0} ambientes encontrados`,
297
- data: result
298
- };
299
- }
300
- catch (error) {
301
- throw new Error(`Falha ao listar ambientes: ${error}`);
302
- }
303
- },
304
- /**
305
- * Executa rollback de deployment
306
- */
307
- async rollbackDeployment(params, provider) {
308
- try {
309
- if (!provider.rollbackDeployment) {
310
- return {
311
- success: false,
312
- action: 'rollback-deployment',
313
- message: 'Funcionalidade não suportada por este provider',
314
- error: 'Provider não implementa rollbackDeployment'
315
- };
316
- }
317
- const currentUser = await provider.getCurrentUser();
318
- const owner = currentUser.login;
319
- const result = await provider.rollbackDeployment({
320
- owner,
321
- repo: params.repo,
322
- deployment_id: params.deployment_id,
323
- description: params.description || 'Rollback automático'
324
- });
325
- return {
326
- success: true,
327
- action: 'rollback',
328
- message: `Rollback do deployment executado com sucesso`,
329
- data: result
330
- };
331
- }
332
- catch (error) {
333
- throw new Error(`Falha ao executar rollback: ${error}`);
334
- }
335
- },
336
- /**
337
- * Remove deployment
338
- */
339
- async deleteDeployment(params, provider) {
340
- try {
341
- if (!provider.deleteDeployment) {
342
- return {
343
- success: false,
344
- action: 'delete-deployment',
345
- message: 'Funcionalidade não suportada por este provider',
346
- error: 'Provider não implementa deleteDeployment'
347
- };
348
- }
349
- const currentUser = await provider.getCurrentUser();
350
- const owner = currentUser.login;
351
- const result = await provider.deleteDeployment({
352
- owner,
353
- repo: params.repo,
354
- deployment_id: params.deployment_id
355
- });
356
- return {
357
- success: true,
358
- action: 'delete',
359
- message: `Deployment removido com sucesso`,
360
- data: result
361
- };
362
- }
363
- catch (error) {
364
- throw new Error(`Falha ao remover deployment: ${error}`);
365
- }
366
- }
367
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deploymentsTool = 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: deployments
10
+ *
11
+ * DESCRIÇÃO:
12
+ * Gerenciamento completo de deployments com múltiplas ações
13
+ *
14
+ * FUNCIONALIDADES:
15
+ * - Listagem de deployments
16
+ * - Criação de deployment
17
+ * - Atualização de status de deployment
18
+ * - Gerenciamento de ambientes
19
+ * - Rollback de deployments
20
+ * - Monitoramento de status
21
+ *
22
+ * USO:
23
+ * - Para rastrear deployments em produção
24
+ * - Para gerenciar ambientes de deploy
25
+ * - Para automação de rollbacks
26
+ * - Para monitoramento de releases
27
+ *
28
+ * RECOMENDAÇÕES:
29
+ * - Use ambientes separados para staging/prod
30
+ * - Monitore status de deployments
31
+ * - Configure rollbacks automáticos
32
+ * - Mantenha histórico de deployments
33
+ */
34
+ /**
35
+ * Schema de validação para entrada da tool deployments
36
+ */
37
+ const DeploymentsInputSchema = zod_1.z.object({
38
+ action: zod_1.z.enum(['list', 'create', 'status', 'environments', 'rollback', 'delete']),
39
+ // Parâmetros comuns
40
+ repo: validator_js_1.CommonSchemas.repo,
41
+ // Parâmetros para listagem
42
+ page: validator_js_1.CommonSchemas.page,
43
+ limit: validator_js_1.CommonSchemas.limit,
44
+ // Parâmetros para deployment
45
+ deployment_id: validator_js_1.CommonSchemas.shortString,
46
+ ref: validator_js_1.CommonSchemas.branch,
47
+ environment: validator_js_1.CommonSchemas.shortString,
48
+ description: validator_js_1.CommonSchemas.mediumString,
49
+ // Parâmetros para criação
50
+ task: validator_js_1.CommonSchemas.shortString,
51
+ auto_merge: validator_js_1.CommonSchemas.boolean,
52
+ required_contexts: zod_1.z.array(zod_1.z.string()).optional(),
53
+ payload: zod_1.z.record(zod_1.z.any()).optional(),
54
+ // Parâmetros para status
55
+ state: zod_1.z.enum(['pending', 'success', 'error', 'failure', 'inactive', 'in_progress', 'queued']).optional(),
56
+ log_url: validator_js_1.CommonSchemas.mediumString,
57
+ environment_url: validator_js_1.CommonSchemas.mediumString,
58
+ // Parâmetros para ambientes
59
+ environment_name: validator_js_1.CommonSchemas.shortString,
60
+ wait_timer: zod_1.z.number().optional(),
61
+ reviewers: zod_1.z.array(zod_1.z.string()).optional(),
62
+ // Filtros
63
+ sha: validator_js_1.CommonSchemas.shortString,
64
+ task_filter: validator_js_1.CommonSchemas.shortString,
65
+ environment_filter: validator_js_1.CommonSchemas.shortString
66
+ }).refine((data) => {
67
+ // Validações específicas por ação
68
+ if (['create'].includes(data.action)) {
69
+ return data.repo && data.ref && data.environment;
70
+ }
71
+ if (['status', 'rollback', 'delete'].includes(data.action)) {
72
+ return data.repo && data.deployment_id;
73
+ }
74
+ return data.repo;
75
+ }, {
76
+ message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
77
+ });
78
+ /**
79
+ * Schema de validação para resultado da tool deployments
80
+ */
81
+ const DeploymentsResultSchema = 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
+ * Implementação da tool deployments
90
+ */
91
+ exports.deploymentsTool = {
92
+ name: 'gh-deployments',
93
+ description: 'tool: Gerencia deployments GitHub para controle de versões em produção\n──────────────\naction list: lista deployments do repositório\naction list requires: repo, environment, ref, task, page, limit\n───────────────\naction create: cria novo deployment\naction create requires: repo, ref, environment, description, task, auto_merge, required_contexts, payload\n───────────────\naction status: verifica status de deployment\naction status requires: repo, deployment_id, state, log_url, environment_url, description\n───────────────\naction environments: lista ambientes de deployment\naction environments requires: repo, page, limit\n───────────────\naction rollback: reverte deployment\naction rollback requires: repo, deployment_id, environment\n───────────────\naction delete: remove deployment\naction delete requires: repo, deployment_id',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {
97
+ action: {
98
+ type: 'string',
99
+ enum: ['list', 'create', 'status', 'environments', 'rollback', 'delete'],
100
+ description: 'Action to perform on deployments'
101
+ },
102
+ repo: { type: 'string', description: 'Repository name' },
103
+ deployment_id: { type: 'string', description: 'Deployment ID' },
104
+ ref: { type: 'string', description: 'Git reference to deploy' },
105
+ environment: { type: 'string', description: 'Deployment environment' },
106
+ description: { type: 'string', description: 'Deployment description' },
107
+ task: { type: 'string', description: 'Deployment task' },
108
+ auto_merge: { type: 'boolean', description: 'Auto merge deployment' },
109
+ required_contexts: { type: 'array', items: { type: 'string' }, description: 'Required status contexts' },
110
+ payload: { type: 'object', description: 'Deployment payload' },
111
+ state: { type: 'string', enum: ['pending', 'success', 'error', 'failure', 'inactive', 'in_progress', 'queued'], description: 'Deployment state' },
112
+ log_url: { type: 'string', description: 'Log URL' },
113
+ environment_url: { type: 'string', description: 'Environment URL' },
114
+ environment_name: { type: 'string', description: 'Environment name' },
115
+ wait_timer: { type: 'number', description: 'Wait timer in minutes' },
116
+ reviewers: { type: 'array', items: { type: 'string' }, description: 'Environment reviewers' },
117
+ sha: { type: 'string', description: 'Commit SHA filter' },
118
+ task_filter: { type: 'string', description: 'Task filter' },
119
+ environment_filter: { type: 'string', description: 'Environment filter' },
120
+ page: { type: 'number', description: 'Page number', minimum: 1 },
121
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 }
122
+ },
123
+ required: ['action', 'repo']
124
+ },
125
+ async handler(input) {
126
+ try {
127
+ const validatedInput = DeploymentsInputSchema.parse(input);
128
+ // Fixar provider como github para tools exclusivas do GitHub
129
+ const updatedParams = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, 'github');
130
+ const provider = index_js_1.globalProviderFactory.getProvider('github');
131
+ if (!provider) {
132
+ throw new Error('Provider GitHub não encontrado');
133
+ }
134
+ switch (updatedParams.action) {
135
+ case 'list':
136
+ return await this.listDeployments(updatedParams, provider);
137
+ case 'create':
138
+ return await this.createDeployment(updatedParams, provider);
139
+ case 'status':
140
+ return await this.updateDeploymentStatus(updatedParams, provider);
141
+ case 'environments':
142
+ return await this.listEnvironments(updatedParams, provider);
143
+ case 'rollback':
144
+ return await this.rollbackDeployment(updatedParams, provider);
145
+ case 'delete':
146
+ return await this.deleteDeployment(updatedParams, provider);
147
+ default:
148
+ throw new Error(`Ação não suportada: ${updatedParams.action}`);
149
+ }
150
+ }
151
+ catch (error) {
152
+ return {
153
+ success: false,
154
+ action: input.action || 'unknown',
155
+ message: 'Erro na operação de deployments',
156
+ error: error instanceof Error ? error.message : String(error)
157
+ };
158
+ }
159
+ },
160
+ /**
161
+ * Lista deployments do repositório
162
+ */
163
+ async listDeployments(params, provider) {
164
+ try {
165
+ const currentUser = await provider.getCurrentUser();
166
+ const owner = currentUser.login;
167
+ if (!provider.listDeployments) {
168
+ return {
169
+ success: true,
170
+ action: 'list',
171
+ message: 'Funcionalidade de deployments não suportada por este provider',
172
+ data: {
173
+ total_count: 0,
174
+ deployments: [],
175
+ note: 'Deployments não disponíveis neste provider'
176
+ }
177
+ };
178
+ }
179
+ const result = await provider.listDeployments({
180
+ owner,
181
+ repo: params.repo,
182
+ sha: params.sha,
183
+ ref: params.ref,
184
+ task: params.task_filter,
185
+ environment: params.environment_filter,
186
+ page: params.page,
187
+ limit: params.limit
188
+ });
189
+ return {
190
+ success: true,
191
+ action: 'list',
192
+ message: `${result.deployments?.length || 0} deployments encontrados`,
193
+ data: result
194
+ };
195
+ }
196
+ catch (error) {
197
+ throw new Error(`Falha ao listar deployments: ${error}`);
198
+ }
199
+ },
200
+ /**
201
+ * Cria novo deployment
202
+ */
203
+ async createDeployment(params, provider) {
204
+ try {
205
+ if (!provider.createDeployment) {
206
+ return {
207
+ success: false,
208
+ action: 'create-deployment',
209
+ message: 'Funcionalidade não suportada por este provider',
210
+ error: 'Provider não implementa createDeployment'
211
+ };
212
+ }
213
+ const currentUser = await provider.getCurrentUser();
214
+ const owner = currentUser.login;
215
+ const result = await provider.createDeployment({
216
+ owner,
217
+ repo: params.repo,
218
+ ref: params.ref,
219
+ environment: params.environment,
220
+ description: params.description,
221
+ task: params.task || 'deploy',
222
+ auto_merge: params.auto_merge,
223
+ required_contexts: params.required_contexts,
224
+ payload: params.payload
225
+ });
226
+ return {
227
+ success: true,
228
+ action: 'create',
229
+ message: 'Deployment criado com sucesso',
230
+ data: result
231
+ };
232
+ }
233
+ catch (error) {
234
+ throw new Error(`Falha ao criar deployment: ${error}`);
235
+ }
236
+ },
237
+ /**
238
+ * Atualiza status do deployment
239
+ */
240
+ async updateDeploymentStatus(params, provider) {
241
+ try {
242
+ if (!provider.updateDeploymentStatus) {
243
+ return {
244
+ success: false,
245
+ action: 'update-deployment-status',
246
+ message: 'Funcionalidade não suportada por este provider',
247
+ error: 'Provider não implementa updateDeploymentStatus'
248
+ };
249
+ }
250
+ const currentUser = await provider.getCurrentUser();
251
+ const owner = currentUser.login;
252
+ const result = await provider.updateDeploymentStatus({
253
+ owner,
254
+ repo: params.repo,
255
+ deployment_id: params.deployment_id,
256
+ state: params.state || 'pending',
257
+ log_url: params.log_url,
258
+ description: params.description,
259
+ environment_url: params.environment_url
260
+ });
261
+ return {
262
+ success: true,
263
+ action: 'status',
264
+ message: `Status do deployment atualizado com sucesso`,
265
+ data: result
266
+ };
267
+ }
268
+ catch (error) {
269
+ throw new Error(`Falha ao atualizar status do deployment: ${error}`);
270
+ }
271
+ },
272
+ /**
273
+ * Lista ambientes de deployment
274
+ */
275
+ async listEnvironments(params, provider) {
276
+ try {
277
+ if (!provider.listEnvironments) {
278
+ return {
279
+ success: false,
280
+ action: 'list-environments',
281
+ message: 'Funcionalidade não suportada por este provider',
282
+ error: 'Provider não implementa listEnvironments'
283
+ };
284
+ }
285
+ const currentUser = await provider.getCurrentUser();
286
+ const owner = currentUser.login;
287
+ const result = await provider.listEnvironments({
288
+ owner,
289
+ repo: params.repo,
290
+ page: params.page,
291
+ limit: params.limit
292
+ });
293
+ return {
294
+ success: true,
295
+ action: 'environments',
296
+ message: `${result.environments?.length || 0} ambientes encontrados`,
297
+ data: result
298
+ };
299
+ }
300
+ catch (error) {
301
+ throw new Error(`Falha ao listar ambientes: ${error}`);
302
+ }
303
+ },
304
+ /**
305
+ * Executa rollback de deployment
306
+ */
307
+ async rollbackDeployment(params, provider) {
308
+ try {
309
+ if (!provider.rollbackDeployment) {
310
+ return {
311
+ success: false,
312
+ action: 'rollback-deployment',
313
+ message: 'Funcionalidade não suportada por este provider',
314
+ error: 'Provider não implementa rollbackDeployment'
315
+ };
316
+ }
317
+ const currentUser = await provider.getCurrentUser();
318
+ const owner = currentUser.login;
319
+ const result = await provider.rollbackDeployment({
320
+ owner,
321
+ repo: params.repo,
322
+ deployment_id: params.deployment_id,
323
+ description: params.description || 'Rollback automático'
324
+ });
325
+ return {
326
+ success: true,
327
+ action: 'rollback',
328
+ message: `Rollback do deployment executado com sucesso`,
329
+ data: result
330
+ };
331
+ }
332
+ catch (error) {
333
+ throw new Error(`Falha ao executar rollback: ${error}`);
334
+ }
335
+ },
336
+ /**
337
+ * Remove deployment
338
+ */
339
+ async deleteDeployment(params, provider) {
340
+ try {
341
+ if (!provider.deleteDeployment) {
342
+ return {
343
+ success: false,
344
+ action: 'delete-deployment',
345
+ message: 'Funcionalidade não suportada por este provider',
346
+ error: 'Provider não implementa deleteDeployment'
347
+ };
348
+ }
349
+ const currentUser = await provider.getCurrentUser();
350
+ const owner = currentUser.login;
351
+ const result = await provider.deleteDeployment({
352
+ owner,
353
+ repo: params.repo,
354
+ deployment_id: params.deployment_id
355
+ });
356
+ return {
357
+ success: true,
358
+ action: 'delete',
359
+ message: `Deployment removido com sucesso`,
360
+ data: result
361
+ };
362
+ }
363
+ catch (error) {
364
+ throw new Error(`Falha ao remover deployment: ${error}`);
365
+ }
366
+ }
367
+ };
368
368
  //# sourceMappingURL=gh-deployments.js.map