@andrebuzeli/git-mcp 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +346 -0
  2. package/dist/client.d.ts +307 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +299 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +299 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +381 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/index.d.ts +22 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +53 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/providers/base-provider.d.ts +139 -0
  15. package/dist/providers/base-provider.d.ts.map +1 -0
  16. package/dist/providers/base-provider.js +246 -0
  17. package/dist/providers/base-provider.js.map +1 -0
  18. package/dist/providers/error-handler.d.ts +51 -0
  19. package/dist/providers/error-handler.d.ts.map +1 -0
  20. package/dist/providers/error-handler.js +170 -0
  21. package/dist/providers/error-handler.js.map +1 -0
  22. package/dist/providers/gitea-provider.d.ts +68 -0
  23. package/dist/providers/gitea-provider.d.ts.map +1 -0
  24. package/dist/providers/gitea-provider.js +515 -0
  25. package/dist/providers/gitea-provider.js.map +1 -0
  26. package/dist/providers/github-provider.d.ts +68 -0
  27. package/dist/providers/github-provider.d.ts.map +1 -0
  28. package/dist/providers/github-provider.js +518 -0
  29. package/dist/providers/github-provider.js.map +1 -0
  30. package/dist/providers/index.d.ts +13 -0
  31. package/dist/providers/index.d.ts.map +1 -0
  32. package/dist/providers/index.js +41 -0
  33. package/dist/providers/index.js.map +1 -0
  34. package/dist/providers/provider-factory.d.ts +75 -0
  35. package/dist/providers/provider-factory.d.ts.map +1 -0
  36. package/dist/providers/provider-factory.js +298 -0
  37. package/dist/providers/provider-factory.js.map +1 -0
  38. package/dist/providers/types.d.ts +276 -0
  39. package/dist/providers/types.d.ts.map +1 -0
  40. package/dist/providers/types.js +7 -0
  41. package/dist/providers/types.js.map +1 -0
  42. package/dist/server.d.ts +77 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +262 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools/actions.d.ts +272 -0
  47. package/dist/tools/actions.d.ts.map +1 -0
  48. package/dist/tools/actions.js +428 -0
  49. package/dist/tools/actions.js.map +1 -0
  50. package/dist/tools/analytics.d.ts +326 -0
  51. package/dist/tools/analytics.d.ts.map +1 -0
  52. package/dist/tools/analytics.js +473 -0
  53. package/dist/tools/analytics.js.map +1 -0
  54. package/dist/tools/branches.d.ts +461 -0
  55. package/dist/tools/branches.d.ts.map +1 -0
  56. package/dist/tools/branches.js +525 -0
  57. package/dist/tools/branches.js.map +1 -0
  58. package/dist/tools/code-review.d.ts +323 -0
  59. package/dist/tools/code-review.d.ts.map +1 -0
  60. package/dist/tools/code-review.js +552 -0
  61. package/dist/tools/code-review.js.map +1 -0
  62. package/dist/tools/commits.d.ts +488 -0
  63. package/dist/tools/commits.d.ts.map +1 -0
  64. package/dist/tools/commits.js +578 -0
  65. package/dist/tools/commits.js.map +1 -0
  66. package/dist/tools/deployments.d.ts +319 -0
  67. package/dist/tools/deployments.d.ts.map +1 -0
  68. package/dist/tools/deployments.js +355 -0
  69. package/dist/tools/deployments.js.map +1 -0
  70. package/dist/tools/files.d.ts +456 -0
  71. package/dist/tools/files.d.ts.map +1 -0
  72. package/dist/tools/files.js +531 -0
  73. package/dist/tools/files.js.map +1 -0
  74. package/dist/tools/git-sync.d.ts +177 -0
  75. package/dist/tools/git-sync.d.ts.map +1 -0
  76. package/dist/tools/git-sync.js +112 -0
  77. package/dist/tools/git-sync.js.map +1 -0
  78. package/dist/tools/issues.d.ts +579 -0
  79. package/dist/tools/issues.d.ts.map +1 -0
  80. package/dist/tools/issues.js +631 -0
  81. package/dist/tools/issues.js.map +1 -0
  82. package/dist/tools/pulls.d.ts +702 -0
  83. package/dist/tools/pulls.d.ts.map +1 -0
  84. package/dist/tools/pulls.js +730 -0
  85. package/dist/tools/pulls.js.map +1 -0
  86. package/dist/tools/releases.d.ts +495 -0
  87. package/dist/tools/releases.d.ts.map +1 -0
  88. package/dist/tools/releases.js +551 -0
  89. package/dist/tools/releases.js.map +1 -0
  90. package/dist/tools/repositories.d.ts +513 -0
  91. package/dist/tools/repositories.d.ts.map +1 -0
  92. package/dist/tools/repositories.js +634 -0
  93. package/dist/tools/repositories.js.map +1 -0
  94. package/dist/tools/security.d.ts +341 -0
  95. package/dist/tools/security.d.ts.map +1 -0
  96. package/dist/tools/security.js +394 -0
  97. package/dist/tools/security.js.map +1 -0
  98. package/dist/tools/tags.d.ts +419 -0
  99. package/dist/tools/tags.d.ts.map +1 -0
  100. package/dist/tools/tags.js +479 -0
  101. package/dist/tools/tags.js.map +1 -0
  102. package/dist/tools/users.d.ts +376 -0
  103. package/dist/tools/users.d.ts.map +1 -0
  104. package/dist/tools/users.js +495 -0
  105. package/dist/tools/users.js.map +1 -0
  106. package/dist/tools/validator.d.ts +192 -0
  107. package/dist/tools/validator.d.ts.map +1 -0
  108. package/dist/tools/validator.js +198 -0
  109. package/dist/tools/validator.js.map +1 -0
  110. package/dist/tools/version-control.d.ts +247 -0
  111. package/dist/tools/version-control.d.ts.map +1 -0
  112. package/dist/tools/version-control.js +521 -0
  113. package/dist/tools/version-control.js.map +1 -0
  114. package/dist/tools/webhooks.d.ts +478 -0
  115. package/dist/tools/webhooks.d.ts.map +1 -0
  116. package/dist/tools/webhooks.js +541 -0
  117. package/dist/tools/webhooks.js.map +1 -0
  118. package/dist/tools/workflows.d.ts +313 -0
  119. package/dist/tools/workflows.d.ts.map +1 -0
  120. package/dist/tools/workflows.js +430 -0
  121. package/dist/tools/workflows.js.map +1 -0
  122. package/package.json +58 -0
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.releasesTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const index_js_1 = require("../providers/index.js");
6
+ /**
7
+ * Tool: releases
8
+ *
9
+ * DESCRIÇÃO:
10
+ * Gerenciamento completo de releases com suporte multi-provider (GitHub e Gitea)
11
+ *
12
+ * FUNCIONALIDADES:
13
+ * - Criação de novos releases
14
+ * - Listagem e busca de releases
15
+ * - Obtenção de detalhes específicos
16
+ * - Atualização de releases existentes
17
+ * - Publicação de releases
18
+ * - Exclusão de releases
19
+ * - Controle de versão
20
+ *
21
+ * USO:
22
+ * - Para gerenciar versões do software
23
+ * - Para controle de deploy
24
+ * - Para documentação de mudanças
25
+ * - Para distribuição de releases
26
+ *
27
+ * RECOMENDAÇÕES:
28
+ * - Use versionamento semântico
29
+ * - Documente mudanças detalhadamente
30
+ * - Teste antes de publicar
31
+ * - Mantenha histórico de versões
32
+ */
33
+ /**
34
+ * Schema de validação para entrada da tool releases
35
+ *
36
+ * VALIDAÇÕES:
37
+ * - action: Ação obrigatória (create, list, get, update, delete, publish)
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 ReleasesInputSchema = zod_1.z.object({
47
+ action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'publish']),
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
+ tag_name: zod_1.z.string().optional(),
55
+ name: zod_1.z.string().optional(),
56
+ body: zod_1.z.string().optional(),
57
+ draft: zod_1.z.boolean().optional(),
58
+ prerelease: zod_1.z.boolean().optional(),
59
+ target_commitish: zod_1.z.string().optional(),
60
+ // Para get/update/delete/publish
61
+ release_id: zod_1.z.number().optional(),
62
+ // Para list
63
+ page: zod_1.z.number().min(1).optional(),
64
+ limit: zod_1.z.number().min(1).max(100).optional(),
65
+ // Para update
66
+ new_tag_name: zod_1.z.string().optional(),
67
+ new_name: zod_1.z.string().optional(),
68
+ new_body: zod_1.z.string().optional(),
69
+ new_draft: zod_1.z.boolean().optional(),
70
+ new_prerelease: zod_1.z.boolean().optional(),
71
+ new_target_commitish: zod_1.z.string().optional(),
72
+ // Para publish
73
+ latest: zod_1.z.boolean().optional(),
74
+ });
75
+ /**
76
+ * Schema de saída padronizado
77
+ *
78
+ * ESTRUTURA:
79
+ * - success: Status da operação
80
+ * - action: Ação executada
81
+ * - message: Mensagem descritiva
82
+ * - data: Dados retornados (opcional)
83
+ * - error: Detalhes do erro (opcional)
84
+ */
85
+ const ReleasesResultSchema = zod_1.z.object({
86
+ success: zod_1.z.boolean(),
87
+ action: zod_1.z.string(),
88
+ message: zod_1.z.string(),
89
+ data: zod_1.z.any().optional(),
90
+ error: zod_1.z.string().optional()
91
+ });
92
+ /**
93
+ * Tool: releases
94
+ *
95
+ * DESCRIÇÃO:
96
+ * Gerenciamento completo de releases Gitea com múltiplas ações
97
+ *
98
+ * ACTIONS DISPONÍVEIS:
99
+ *
100
+ * 1. create - Criar novo release
101
+ * Parâmetros:
102
+ * - owner (obrigatório): Proprietário do repositório
103
+ * - repo (obrigatório): Nome do repositório
104
+ * - tag_name (obrigatório): Nome da tag do release
105
+ * - name (opcional): Nome do release
106
+ * - body (opcional): Descrição detalhada (changelog)
107
+ * - draft (opcional): Se é um draft release (padrão: false)
108
+ * - prerelease (opcional): Se é um prerelease (padrão: false)
109
+ * - target_commitish (opcional): Branch ou commit alvo (padrão: branch padrão)
110
+ *
111
+ * 2. list - Listar releases
112
+ * Parâmetros:
113
+ * - owner (obrigatório): Proprietário do repositório
114
+ * - repo (obrigatório): Nome do repositório
115
+ * - page (opcional): Página da listagem (padrão: 1)
116
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
117
+ *
118
+ * 3. get - Obter detalhes do release
119
+ * Parâmetros:
120
+ * - owner (obrigatório): Proprietário do repositório
121
+ * - repo (obrigatório): Nome do repositório
122
+ * - release_id (obrigatório): ID do release
123
+ *
124
+ * 4. update - Atualizar release existente
125
+ * Parâmetros:
126
+ * - owner (obrigatório): Proprietário do repositório
127
+ * - repo (obrigatório): Nome do repositório
128
+ * - release_id (obrigatório): ID do release
129
+ * - new_tag_name (opcional): Nova tag
130
+ * - new_name (opcional): Novo nome
131
+ * - new_body (opcional): Nova descrição
132
+ * - new_draft (opcional): Novo status de draft
133
+ * - new_prerelease (opcional): Novo status de prerelease
134
+ * - new_target_commitish (opcional): Nova branch/commit alvo
135
+ *
136
+ * 5. delete - Deletar release
137
+ * Parâmetros:
138
+ * - owner (obrigatório): Proprietário do repositório
139
+ * - repo (obrigatório): Nome do repositório
140
+ * - release_id (obrigatório): ID do release
141
+ *
142
+ * 6. publish - Publicar release
143
+ * Parâmetros:
144
+ * - owner (obrigatório): Proprietário do repositório
145
+ * - repo (obrigatório): Nome do repositório
146
+ * - release_id (obrigatório): ID do release
147
+ *
148
+ * RECOMENDAÇÕES DE USO:
149
+ * - Use versionamento semântico (ex: v1.0.0, v2.1.3)
150
+ * - Documente mudanças detalhadamente no body
151
+ * - Use drafts para releases em preparação
152
+ * - Marque prereleases adequadamente
153
+ * - Teste releases antes de publicar
154
+ * - Mantenha changelog organizado
155
+ */
156
+ exports.releasesTool = {
157
+ name: 'releases',
158
+ description: 'Manage releases with multi-provider support (GitHub and Gitea): create, list, get, update, delete, publish. Boas práticas (solo): use versionamento semântico (vMAJOR.MINOR.PATCH); documente mudanças no body (changelog); utilize prerelease/draft; crie releases para cada entrega "rodável"; para rollback, redeploy do release anterior.',
159
+ inputSchema: {
160
+ type: 'object',
161
+ properties: {
162
+ action: {
163
+ type: 'string',
164
+ enum: ['create', 'list', 'get', 'update', 'delete', 'publish'],
165
+ description: 'Action to perform on releases'
166
+ },
167
+ owner: { type: 'string', description: 'Repository owner' },
168
+ repo: { type: 'string', description: 'Repository name' },
169
+ provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
170
+ tag_name: { type: 'string', description: 'Release tag name' },
171
+ name: { type: 'string', description: 'Release name' },
172
+ body: { type: 'string', description: 'Release description/notes' },
173
+ draft: { type: 'boolean', description: 'Create as draft release' },
174
+ prerelease: { type: 'boolean', description: 'Mark as prerelease' },
175
+ target_commitish: { type: 'string', description: 'Target branch or commit' },
176
+ release_id: { type: 'number', description: 'Release ID' },
177
+ page: { type: 'number', description: 'Page number', minimum: 1 },
178
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
179
+ new_tag_name: { type: 'string', description: 'New tag name' },
180
+ new_name: { type: 'string', description: 'New release name' },
181
+ new_body: { type: 'string', description: 'New release description' },
182
+ new_draft: { type: 'boolean', description: 'New draft status' },
183
+ new_prerelease: { type: 'boolean', description: 'New prerelease status' },
184
+ new_target_commitish: { type: 'string', description: 'New target branch or commit' },
185
+ latest: { type: 'boolean', description: 'Get latest release' }
186
+ },
187
+ required: ['action']
188
+ },
189
+ /**
190
+ * Handler principal da tool releases
191
+ *
192
+ * FUNCIONALIDADE:
193
+ * - Valida entrada usando Zod schema
194
+ * - Roteia para método específico baseado na ação
195
+ * - Trata erros de forma uniforme
196
+ * - Retorna resultado padronizado
197
+ *
198
+ * FLUXO:
199
+ * 1. Validação de entrada
200
+ * 2. Seleção do provider
201
+ * 3. Roteamento por ação
202
+ * 4. Execução do método específico
203
+ * 5. Tratamento de erros
204
+ * 6. Retorno de resultado
205
+ *
206
+ * TRATAMENTO DE ERROS:
207
+ * - Validação: erro de schema
208
+ * - Execução: erro da operação
209
+ * - Roteamento: ação não suportada
210
+ *
211
+ * RECOMENDAÇÕES:
212
+ * - Sempre valide entrada antes de processar
213
+ * - Trate erros específicos adequadamente
214
+ * - Log detalhes de erro para debug
215
+ * - Retorne mensagens de erro úteis
216
+ */
217
+ async handler(input) {
218
+ try {
219
+ const validatedInput = ReleasesInputSchema.parse(input);
220
+ // Seleciona o provider baseado na entrada ou usa o padrão
221
+ const provider = validatedInput.provider
222
+ ? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
223
+ : index_js_1.globalProviderFactory.getDefaultProvider();
224
+ if (!provider) {
225
+ throw new Error('Provider não encontrado ou não configurado');
226
+ }
227
+ switch (validatedInput.action) {
228
+ case 'create':
229
+ return await this.createRelease(validatedInput, provider);
230
+ case 'list':
231
+ return await this.listReleases(validatedInput, provider);
232
+ case 'get':
233
+ return await this.getRelease(validatedInput, provider);
234
+ case 'update':
235
+ return await this.updateRelease(validatedInput, provider);
236
+ case 'delete':
237
+ return await this.deleteRelease(validatedInput, provider);
238
+ case 'publish':
239
+ return await this.publishRelease(validatedInput, provider);
240
+ default:
241
+ throw new Error(`Ação não suportada: ${validatedInput.action}`);
242
+ }
243
+ }
244
+ catch (error) {
245
+ return {
246
+ success: false,
247
+ action: input.action,
248
+ message: 'Erro na operação de releases',
249
+ error: error instanceof Error ? error.message : String(error)
250
+ };
251
+ }
252
+ },
253
+ /**
254
+ * Cria um novo release no repositório
255
+ *
256
+ * FUNCIONALIDADE:
257
+ * - Cria release com tag e descrição
258
+ * - Suporta configuração de draft e prerelease
259
+ * - Permite especificar branch/commit alvo
260
+ *
261
+ * PARÂMETROS OBRIGATÓRIOS:
262
+ * - owner: Proprietário do repositório
263
+ * - repo: Nome do repositório
264
+ * - tag_name: Nome da tag do release
265
+ *
266
+ * PARÂMETROS OPCIONAIS:
267
+ * - name: Nome do release
268
+ * - body: Descrição detalhada (changelog)
269
+ * - draft: Se é um draft release (padrão: false)
270
+ * - prerelease: Se é um prerelease (padrão: false)
271
+ * - target_commitish: Branch ou commit alvo (padrão: branch padrão)
272
+ *
273
+ * VALIDAÇÕES:
274
+ * - Todos os parâmetros obrigatórios
275
+ * - Tag deve ser única no repositório
276
+ * - Target commitish deve existir
277
+ * - Usuário deve ter permissão de escrita
278
+ *
279
+ * RECOMENDAÇÕES:
280
+ * - Use versionamento semântico (ex: v1.0.0)
281
+ * - Documente mudanças detalhadamente
282
+ * - Use drafts para releases em preparação
283
+ * - Marque prereleases adequadamente
284
+ */
285
+ async createRelease(params, provider) {
286
+ try {
287
+ if (!params.owner || !params.repo || !params.tag_name) {
288
+ throw new Error('Owner, repo e tag_name são obrigatórios');
289
+ }
290
+ const releaseData = {
291
+ tag_name: params.tag_name,
292
+ name: params.name || params.tag_name,
293
+ body: params.body || '',
294
+ draft: params.draft || false,
295
+ prerelease: params.prerelease || false,
296
+ target_commitish: params.target_commitish || 'main'
297
+ };
298
+ const release = await provider.createRelease(params.tag_name, params.name || params.tag_name, params.body, params.draft, params.prerelease);
299
+ return {
300
+ success: true,
301
+ action: 'create',
302
+ message: `Release '${params.tag_name}' criado com sucesso`,
303
+ data: release
304
+ };
305
+ }
306
+ catch (error) {
307
+ throw new Error(`Falha ao criar release: ${error instanceof Error ? error.message : String(error)}`);
308
+ }
309
+ },
310
+ /**
311
+ * Lista releases do repositório
312
+ *
313
+ * FUNCIONALIDADE:
314
+ * - Lista releases com paginação
315
+ * - Retorna informações básicas de cada release
316
+ * - Inclui status de draft e prerelease
317
+ *
318
+ * PARÂMETROS OBRIGATÓRIOS:
319
+ * - owner: Proprietário do repositório
320
+ * - repo: Nome do repositório
321
+ *
322
+ * PARÂMETROS OPCIONAIS:
323
+ * - page: Página da listagem (padrão: 1)
324
+ * - limit: Itens por página (padrão: 30, máximo: 100)
325
+ *
326
+ * VALIDAÇÕES:
327
+ * - Owner e repo obrigatórios
328
+ * - Page deve ser >= 1
329
+ * - Limit deve ser entre 1 e 100
330
+ *
331
+ * RECOMENDAÇÕES:
332
+ * - Use paginação para repositórios com muitos releases
333
+ * - Monitore número total de releases
334
+ * - Verifique status de draft e prerelease
335
+ * - Mantenha releases organizados
336
+ */
337
+ async listReleases(params, provider) {
338
+ try {
339
+ if (!params.owner || !params.repo) {
340
+ throw new Error('Owner e repo são obrigatórios');
341
+ }
342
+ const page = params.page || 1;
343
+ const limit = params.limit || 30;
344
+ const releases = await provider.listReleases(params.owner, params.repo, page, limit);
345
+ return {
346
+ success: true,
347
+ action: 'list',
348
+ message: `${releases.length} releases encontrados`,
349
+ data: {
350
+ releases,
351
+ page,
352
+ limit,
353
+ total: releases.length
354
+ }
355
+ };
356
+ }
357
+ catch (error) {
358
+ throw new Error(`Falha ao listar releases: ${error instanceof Error ? error.message : String(error)}`);
359
+ }
360
+ },
361
+ /**
362
+ * Obtém detalhes de um release específico
363
+ *
364
+ * FUNCIONALIDADE:
365
+ * - Retorna informações completas do release
366
+ * - Inclui tag, nome, descrição e status
367
+ * - Mostra URLs de download
368
+ *
369
+ * PARÂMETROS OBRIGATÓRIOS:
370
+ * - owner: Proprietário do repositório
371
+ * - repo: Nome do repositório
372
+ * - release_id: ID do release
373
+ *
374
+ * VALIDAÇÕES:
375
+ * - Todos os parâmetros obrigatórios
376
+ * - Release deve existir no repositório
377
+ * - ID deve ser válido
378
+ *
379
+ * RECOMENDAÇÕES:
380
+ * - Use para obter detalhes completos
381
+ * - Verifique status de draft e prerelease
382
+ * - Analise changelog e descrição
383
+ * - Monitore URLs de download
384
+ */
385
+ async getRelease(params, provider) {
386
+ try {
387
+ if (!params.owner || !params.repo || !params.release_id) {
388
+ throw new Error('Owner, repo e release_id são obrigatórios');
389
+ }
390
+ const release = await provider.getRelease(params.owner, params.repo, params.release_id);
391
+ return {
392
+ success: true,
393
+ action: 'get',
394
+ message: `Release #${params.release_id} obtido com sucesso`,
395
+ data: release
396
+ };
397
+ }
398
+ catch (error) {
399
+ throw new Error(`Falha ao obter release: ${error instanceof Error ? error.message : String(error)}`);
400
+ }
401
+ },
402
+ /**
403
+ * Atualiza um release existente
404
+ *
405
+ * FUNCIONALIDADE:
406
+ * - Atualiza campos do release
407
+ * - Suporta mudança de tag e descrição
408
+ * - Permite alteração de status
409
+ *
410
+ * PARÂMETROS OBRIGATÓRIOS:
411
+ * - owner: Proprietário do repositório
412
+ * - repo: Nome do repositório
413
+ * - release_id: ID do release
414
+ *
415
+ * PARÂMETROS OPCIONAIS:
416
+ * - new_tag_name: Nova tag
417
+ * - new_name: Novo nome
418
+ * - new_body: Nova descrição
419
+ * - new_draft: Novo status de draft
420
+ * - new_prerelease: Novo status de prerelease
421
+ * - new_target_commitish: Nova branch/commit alvo
422
+ *
423
+ * VALIDAÇÕES:
424
+ * - Todos os parâmetros obrigatórios
425
+ * - Release deve existir
426
+ * - Pelo menos um campo deve ser atualizado
427
+ *
428
+ * RECOMENDAÇÕES:
429
+ * - Atualize apenas campos necessários
430
+ * - Use mensagens de commit descritivas
431
+ * - Documente mudanças importantes
432
+ * - Notifique usuários sobre mudanças
433
+ */
434
+ async updateRelease(params, provider) {
435
+ try {
436
+ if (!params.owner || !params.repo || !params.release_id) {
437
+ throw new Error('Owner, repo e release_id são obrigatórios');
438
+ }
439
+ const updateData = {};
440
+ if (params.new_tag_name)
441
+ updateData.tag_name = params.new_tag_name;
442
+ if (params.new_name)
443
+ updateData.name = params.new_name;
444
+ if (params.new_body !== undefined)
445
+ updateData.body = params.new_body;
446
+ if (params.new_draft !== undefined)
447
+ updateData.draft = params.new_draft;
448
+ if (params.new_prerelease !== undefined)
449
+ updateData.prerelease = params.new_prerelease;
450
+ if (params.new_target_commitish)
451
+ updateData.target_commitish = params.new_target_commitish;
452
+ if (Object.keys(updateData).length === 0) {
453
+ throw new Error('Nenhum campo para atualizar foi fornecido');
454
+ }
455
+ const release = await provider.updateRelease(params.release_id, updateData);
456
+ return {
457
+ success: true,
458
+ action: 'update',
459
+ message: `Release #${params.release_id} atualizado com sucesso`,
460
+ data: release
461
+ };
462
+ }
463
+ catch (error) {
464
+ throw new Error(`Falha ao atualizar release: ${error instanceof Error ? error.message : String(error)}`);
465
+ }
466
+ },
467
+ /**
468
+ * Deleta um release do repositório
469
+ *
470
+ * FUNCIONALIDADE:
471
+ * - Remove release especificado
472
+ * - Mantém tag associada (se existir)
473
+ * - Confirma exclusão bem-sucedida
474
+ *
475
+ * PARÂMETROS OBRIGATÓRIOS:
476
+ * - owner: Proprietário do repositório
477
+ * - repo: Nome do repositório
478
+ * - release_id: ID do release
479
+ *
480
+ * VALIDAÇÕES:
481
+ * - Todos os parâmetros obrigatórios
482
+ * - Release deve existir
483
+ * - Usuário deve ter permissão de exclusão
484
+ *
485
+ * RECOMENDAÇÕES:
486
+ * - Confirme exclusão antes de executar
487
+ * - Verifique se release não está sendo usado
488
+ * - Mantenha backup se necessário
489
+ * - Documente motivo da exclusão
490
+ */
491
+ async deleteRelease(params, provider) {
492
+ try {
493
+ if (!params.owner || !params.repo || !params.release_id) {
494
+ throw new Error('Owner, repo e release_id são obrigatórios');
495
+ }
496
+ await provider.deleteRelease(params.release_id);
497
+ return {
498
+ success: true,
499
+ action: 'delete',
500
+ message: `Release #${params.release_id} deletado com sucesso`,
501
+ data: { deleted: true }
502
+ };
503
+ }
504
+ catch (error) {
505
+ throw new Error(`Falha ao deletar release: ${error instanceof Error ? error.message : String(error)}`);
506
+ }
507
+ },
508
+ /**
509
+ * Publica um release draft
510
+ *
511
+ * FUNCIONALIDADE:
512
+ * - Altera status do release de draft para publicado
513
+ * - Mantém todas as outras configurações
514
+ * - Permite download público
515
+ *
516
+ * PARÂMETROS OBRIGATÓRIOS:
517
+ * - owner: Proprietário do repositório
518
+ * - repo: Nome do repositório
519
+ * - release_id: ID do release
520
+ *
521
+ * VALIDAÇÕES:
522
+ * - Todos os parâmetros obrigatórios
523
+ * - Release deve existir
524
+ * - Release deve estar como draft
525
+ *
526
+ * RECOMENDAÇÕES:
527
+ * - Confirme que release está pronto
528
+ * - Teste antes de publicar
529
+ * - Verifique se não há bugs conhecidos
530
+ * - Notifique usuários sobre nova versão
531
+ */
532
+ async publishRelease(params, provider) {
533
+ try {
534
+ if (!params.owner || !params.repo || !params.release_id) {
535
+ throw new Error('Owner, repo e release_id são obrigatórios');
536
+ }
537
+ // Publicar release alterando status de draft para false
538
+ const release = await provider.updateRelease(params.release_id, { draft: false });
539
+ return {
540
+ success: true,
541
+ action: 'publish',
542
+ message: `Release #${params.release_id} publicado com sucesso`,
543
+ data: release
544
+ };
545
+ }
546
+ catch (error) {
547
+ throw new Error(`Falha ao publicar release: ${error instanceof Error ? error.message : String(error)}`);
548
+ }
549
+ }
550
+ };
551
+ //# sourceMappingURL=releases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releases.js","sourceRoot":"","sources":["../../src/tools/releases.ts"],"names":[],"mappings":"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"}