@andrebuzeli/git-mcp 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -0
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +299 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +299 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +381 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base-provider.d.ts +139 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +246 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/error-handler.d.ts +51 -0
- package/dist/providers/error-handler.d.ts.map +1 -0
- package/dist/providers/error-handler.js +170 -0
- package/dist/providers/error-handler.js.map +1 -0
- package/dist/providers/gitea-provider.d.ts +68 -0
- package/dist/providers/gitea-provider.d.ts.map +1 -0
- package/dist/providers/gitea-provider.js +515 -0
- package/dist/providers/gitea-provider.js.map +1 -0
- package/dist/providers/github-provider.d.ts +68 -0
- package/dist/providers/github-provider.d.ts.map +1 -0
- package/dist/providers/github-provider.js +518 -0
- package/dist/providers/github-provider.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +41 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider-factory.d.ts +75 -0
- package/dist/providers/provider-factory.d.ts.map +1 -0
- package/dist/providers/provider-factory.js +298 -0
- package/dist/providers/provider-factory.js.map +1 -0
- package/dist/providers/types.d.ts +276 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +77 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +262 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/actions.d.ts +272 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +428 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/analytics.d.ts +326 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +473 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/branches.d.ts +461 -0
- package/dist/tools/branches.d.ts.map +1 -0
- package/dist/tools/branches.js +525 -0
- package/dist/tools/branches.js.map +1 -0
- package/dist/tools/code-review.d.ts +323 -0
- package/dist/tools/code-review.d.ts.map +1 -0
- package/dist/tools/code-review.js +552 -0
- package/dist/tools/code-review.js.map +1 -0
- package/dist/tools/commits.d.ts +488 -0
- package/dist/tools/commits.d.ts.map +1 -0
- package/dist/tools/commits.js +578 -0
- package/dist/tools/commits.js.map +1 -0
- package/dist/tools/deployments.d.ts +319 -0
- package/dist/tools/deployments.d.ts.map +1 -0
- package/dist/tools/deployments.js +355 -0
- package/dist/tools/deployments.js.map +1 -0
- package/dist/tools/files.d.ts +456 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +531 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/git-sync.d.ts +177 -0
- package/dist/tools/git-sync.d.ts.map +1 -0
- package/dist/tools/git-sync.js +112 -0
- package/dist/tools/git-sync.js.map +1 -0
- package/dist/tools/issues.d.ts +579 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +631 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/pulls.d.ts +702 -0
- package/dist/tools/pulls.d.ts.map +1 -0
- package/dist/tools/pulls.js +730 -0
- package/dist/tools/pulls.js.map +1 -0
- package/dist/tools/releases.d.ts +495 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +551 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/repositories.d.ts +513 -0
- package/dist/tools/repositories.d.ts.map +1 -0
- package/dist/tools/repositories.js +634 -0
- package/dist/tools/repositories.js.map +1 -0
- package/dist/tools/security.d.ts +341 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +394 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/tags.d.ts +419 -0
- package/dist/tools/tags.d.ts.map +1 -0
- package/dist/tools/tags.js +479 -0
- package/dist/tools/tags.js.map +1 -0
- package/dist/tools/users.d.ts +376 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +495 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/validator.d.ts +192 -0
- package/dist/tools/validator.d.ts.map +1 -0
- package/dist/tools/validator.js +198 -0
- package/dist/tools/validator.js.map +1 -0
- package/dist/tools/version-control.d.ts +247 -0
- package/dist/tools/version-control.d.ts.map +1 -0
- package/dist/tools/version-control.js +521 -0
- package/dist/tools/version-control.js.map +1 -0
- package/dist/tools/webhooks.d.ts +478 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +541 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/tools/workflows.d.ts +313 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +430 -0
- package/dist/tools/workflows.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.issuesTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: issues
|
|
8
|
+
*
|
|
9
|
+
* DESCRIÇÃO:
|
|
10
|
+
* Gerenciamento completo de issues com suporte multi-provider (GitHub e Gitea)
|
|
11
|
+
*
|
|
12
|
+
* FUNCIONALIDADES:
|
|
13
|
+
* - Criação de novas issues
|
|
14
|
+
* - Listagem e busca de issues
|
|
15
|
+
* - Obtenção de detalhes específicos
|
|
16
|
+
* - Atualização de issues existentes
|
|
17
|
+
* - Fechamento de issues
|
|
18
|
+
* - Adição de comentários
|
|
19
|
+
* - Busca por conteúdo e status
|
|
20
|
+
*
|
|
21
|
+
* USO:
|
|
22
|
+
* - Para gerenciar bugs e features
|
|
23
|
+
* - Para acompanhar progresso de desenvolvimento
|
|
24
|
+
* - Para comunicação entre equipe
|
|
25
|
+
* - Para controle de qualidade
|
|
26
|
+
*
|
|
27
|
+
* RECOMENDAÇÕES:
|
|
28
|
+
* - Use títulos descritivos
|
|
29
|
+
* - Documente detalhes completos
|
|
30
|
+
* - Atualize status regularmente
|
|
31
|
+
* - Use labels adequadamente
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Schema de validação para entrada da tool issues
|
|
35
|
+
*
|
|
36
|
+
* VALIDAÇÕES:
|
|
37
|
+
* - action: Ação obrigatória (create, list, get, update, close, comment, search)
|
|
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 IssuesInputSchema = zod_1.z.object({
|
|
47
|
+
action: zod_1.z.enum(['create', 'list', 'get', 'update', 'close', 'comment', 'search']),
|
|
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
|
+
title: zod_1.z.string().optional(),
|
|
55
|
+
body: zod_1.z.string().optional(),
|
|
56
|
+
labels: zod_1.z.array(zod_1.z.string()).optional(),
|
|
57
|
+
assignees: zod_1.z.array(zod_1.z.string()).optional(),
|
|
58
|
+
milestone: zod_1.z.number().optional(),
|
|
59
|
+
// Para get/update/close/comment
|
|
60
|
+
issue_number: zod_1.z.number().optional(),
|
|
61
|
+
// Para list
|
|
62
|
+
state: zod_1.z.enum(['open', 'closed', 'all']).optional(),
|
|
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_title: zod_1.z.string().optional(),
|
|
67
|
+
new_body: zod_1.z.string().optional(),
|
|
68
|
+
new_state: zod_1.z.enum(['open', 'closed']).optional(),
|
|
69
|
+
new_labels: zod_1.z.array(zod_1.z.string()).optional(),
|
|
70
|
+
new_assignees: zod_1.z.array(zod_1.z.string()).optional(),
|
|
71
|
+
new_milestone: zod_1.z.number().optional(),
|
|
72
|
+
// Para comment
|
|
73
|
+
comment_body: zod_1.z.string().optional(),
|
|
74
|
+
// Para search
|
|
75
|
+
query: zod_1.z.string().optional(),
|
|
76
|
+
author: zod_1.z.string().optional(),
|
|
77
|
+
assignee: zod_1.z.string().optional(),
|
|
78
|
+
label: zod_1.z.string().optional(),
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* Schema de saída padronizado
|
|
82
|
+
*
|
|
83
|
+
* ESTRUTURA:
|
|
84
|
+
* - success: Status da operação
|
|
85
|
+
* - action: Ação executada
|
|
86
|
+
* - message: Mensagem descritiva
|
|
87
|
+
* - data: Dados retornados (opcional)
|
|
88
|
+
* - error: Detalhes do erro (opcional)
|
|
89
|
+
*/
|
|
90
|
+
const IssuesResultSchema = zod_1.z.object({
|
|
91
|
+
success: zod_1.z.boolean(),
|
|
92
|
+
action: zod_1.z.string(),
|
|
93
|
+
message: zod_1.z.string(),
|
|
94
|
+
data: zod_1.z.any().optional(),
|
|
95
|
+
error: zod_1.z.string().optional()
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* Tool: issues
|
|
99
|
+
*
|
|
100
|
+
* DESCRIÇÃO:
|
|
101
|
+
* Gerenciamento completo de issues Gitea com múltiplas ações
|
|
102
|
+
*
|
|
103
|
+
* ACTIONS DISPONÍVEIS:
|
|
104
|
+
*
|
|
105
|
+
* 1. create - Criar nova issue
|
|
106
|
+
* Parâmetros:
|
|
107
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
108
|
+
* - repo (obrigatório): Nome do repositório
|
|
109
|
+
* - title (obrigatório): Título da issue
|
|
110
|
+
* - body (opcional): Descrição detalhada
|
|
111
|
+
* - labels (opcional): Array de labels
|
|
112
|
+
* - assignees (opcional): Array de usuários responsáveis
|
|
113
|
+
* - milestone (opcional): ID do milestone
|
|
114
|
+
*
|
|
115
|
+
* 2. list - Listar issues
|
|
116
|
+
* Parâmetros:
|
|
117
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
118
|
+
* - repo (obrigatório): Nome do repositório
|
|
119
|
+
* - state (opcional): Estado das issues (open, closed, all) - padrão: open
|
|
120
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
121
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
122
|
+
*
|
|
123
|
+
* 3. get - Obter detalhes da issue
|
|
124
|
+
* Parâmetros:
|
|
125
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
126
|
+
* - repo (obrigatório): Nome do repositório
|
|
127
|
+
* - issue_number (obrigatório): Número da issue
|
|
128
|
+
*
|
|
129
|
+
* 4. update - Atualizar issue existente
|
|
130
|
+
* Parâmetros:
|
|
131
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
132
|
+
* - repo (obrigatório): Nome do repositório
|
|
133
|
+
* - issue_number (obrigatório): Número da issue
|
|
134
|
+
* - new_title (opcional): Novo título
|
|
135
|
+
* - new_body (opcional): Nova descrição
|
|
136
|
+
* - new_state (opcional): Novo estado
|
|
137
|
+
* - new_labels (opcional): Novos labels
|
|
138
|
+
* - new_assignees (opcional): Novos responsáveis
|
|
139
|
+
* - new_milestone (opcional): Novo milestone
|
|
140
|
+
*
|
|
141
|
+
* 5. close - Fechar issue
|
|
142
|
+
* Parâmetros:
|
|
143
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
144
|
+
* - repo (obrigatório): Nome do repositório
|
|
145
|
+
* - issue_number (obrigatório): Número da issue
|
|
146
|
+
*
|
|
147
|
+
* 6. comment - Adicionar comentário
|
|
148
|
+
* Parâmetros:
|
|
149
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
150
|
+
* - repo (obrigatório): Nome do repositório
|
|
151
|
+
* - issue_number (obrigatório): Número da issue
|
|
152
|
+
* - comment_body (obrigatório): Conteúdo do comentário
|
|
153
|
+
*
|
|
154
|
+
* 7. search - Buscar issues
|
|
155
|
+
* Parâmetros:
|
|
156
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
157
|
+
* - repo (obrigatório): Nome do repositório
|
|
158
|
+
* - query (obrigatório): Termo de busca
|
|
159
|
+
* - author (opcional): Autor das issues
|
|
160
|
+
* - assignee (opcional): Responsável pelas issues
|
|
161
|
+
* - label (opcional): Label específico
|
|
162
|
+
*
|
|
163
|
+
* RECOMENDAÇÕES DE USO:
|
|
164
|
+
* - Use títulos descritivos e claros
|
|
165
|
+
* - Documente detalhes completos na descrição
|
|
166
|
+
* - Atualize status regularmente
|
|
167
|
+
* - Use labels para categorização
|
|
168
|
+
* - Atribua responsáveis adequadamente
|
|
169
|
+
* - Mantenha issues organizadas
|
|
170
|
+
*/
|
|
171
|
+
exports.issuesTool = {
|
|
172
|
+
name: 'issues',
|
|
173
|
+
description: 'Manage issues with multi-provider support (GitHub and Gitea): create, list, get, update, close, comment, search. Boas práticas (solo): use issues como notas/tarefas pesquisáveis; títulos descritivos; corpo objetivo; labels para prioridade/categoria; feche com comentários de conclusão e aprendizado.',
|
|
174
|
+
inputSchema: {
|
|
175
|
+
type: 'object',
|
|
176
|
+
properties: {
|
|
177
|
+
action: {
|
|
178
|
+
type: 'string',
|
|
179
|
+
enum: ['create', 'list', 'get', 'update', 'close', 'comment', 'search'],
|
|
180
|
+
description: 'Action to perform on issues'
|
|
181
|
+
},
|
|
182
|
+
owner: { type: 'string', description: 'Repository owner' },
|
|
183
|
+
repo: { type: 'string', description: 'Repository name' },
|
|
184
|
+
provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
|
|
185
|
+
title: { type: 'string', description: 'Issue title' },
|
|
186
|
+
body: { type: 'string', description: 'Issue body/description' },
|
|
187
|
+
labels: { type: 'array', items: { type: 'string' }, description: 'Issue labels' },
|
|
188
|
+
assignees: { type: 'array', items: { type: 'string' }, description: 'Issue assignees' },
|
|
189
|
+
milestone: { type: 'number', description: 'Milestone ID' },
|
|
190
|
+
issue_number: { type: 'number', description: 'Issue number' },
|
|
191
|
+
state: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Issue state' },
|
|
192
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
193
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
|
|
194
|
+
new_title: { type: 'string', description: 'New issue title' },
|
|
195
|
+
new_body: { type: 'string', description: 'New issue body' },
|
|
196
|
+
new_state: { type: 'string', enum: ['open', 'closed'], description: 'New issue state' },
|
|
197
|
+
new_labels: { type: 'array', items: { type: 'string' }, description: 'New issue labels' },
|
|
198
|
+
new_assignees: { type: 'array', items: { type: 'string' }, description: 'New issue assignees' },
|
|
199
|
+
new_milestone: { type: 'number', description: 'New milestone ID' },
|
|
200
|
+
comment_body: { type: 'string', description: 'Comment content' },
|
|
201
|
+
query: { type: 'string', description: 'Search query' },
|
|
202
|
+
author: { type: 'string', description: 'Issue author filter' },
|
|
203
|
+
assignee: { type: 'string', description: 'Issue assignee filter' },
|
|
204
|
+
label: { type: 'string', description: 'Issue label filter' }
|
|
205
|
+
},
|
|
206
|
+
required: ['action']
|
|
207
|
+
},
|
|
208
|
+
/**
|
|
209
|
+
* Handler principal da tool issues
|
|
210
|
+
*
|
|
211
|
+
* FUNCIONALIDADE:
|
|
212
|
+
* - Valida entrada usando Zod schema
|
|
213
|
+
* - Roteia para método específico baseado na ação
|
|
214
|
+
* - Trata erros de forma uniforme
|
|
215
|
+
* - Retorna resultado padronizado
|
|
216
|
+
*
|
|
217
|
+
* FLUXO:
|
|
218
|
+
* 1. Validação de entrada
|
|
219
|
+
* 2. Seleção do provider
|
|
220
|
+
* 3. Roteamento por ação
|
|
221
|
+
* 4. Execução do método específico
|
|
222
|
+
* 5. Tratamento de erros
|
|
223
|
+
* 6. Retorno de resultado
|
|
224
|
+
*
|
|
225
|
+
* TRATAMENTO DE ERROS:
|
|
226
|
+
* - Validação: erro de schema
|
|
227
|
+
* - Execução: erro da operação
|
|
228
|
+
* - Roteamento: ação não suportada
|
|
229
|
+
*
|
|
230
|
+
* RECOMENDAÇÕES:
|
|
231
|
+
* - Sempre valide entrada antes de processar
|
|
232
|
+
* - Trate erros específicos adequadamente
|
|
233
|
+
* - Log detalhes de erro para debug
|
|
234
|
+
* - Retorne mensagens de erro úteis
|
|
235
|
+
*/
|
|
236
|
+
async handler(input) {
|
|
237
|
+
try {
|
|
238
|
+
const validatedInput = IssuesInputSchema.parse(input);
|
|
239
|
+
// Seleciona o provider baseado na entrada ou usa o padrão
|
|
240
|
+
const provider = validatedInput.provider
|
|
241
|
+
? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
|
|
242
|
+
: index_js_1.globalProviderFactory.getDefaultProvider();
|
|
243
|
+
if (!provider) {
|
|
244
|
+
throw new Error('Provider não encontrado ou não configurado');
|
|
245
|
+
}
|
|
246
|
+
switch (validatedInput.action) {
|
|
247
|
+
case 'create':
|
|
248
|
+
return await this.createIssue(validatedInput, provider);
|
|
249
|
+
case 'list':
|
|
250
|
+
return await this.listIssues(validatedInput, provider);
|
|
251
|
+
case 'get':
|
|
252
|
+
return await this.getIssue(validatedInput, provider);
|
|
253
|
+
case 'update':
|
|
254
|
+
return await this.updateIssue(validatedInput, provider);
|
|
255
|
+
case 'close':
|
|
256
|
+
return await this.closeIssue(validatedInput, provider);
|
|
257
|
+
case 'comment':
|
|
258
|
+
return await this.addComment(validatedInput, provider);
|
|
259
|
+
case 'search':
|
|
260
|
+
return await this.searchIssues(validatedInput, provider);
|
|
261
|
+
default:
|
|
262
|
+
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
return {
|
|
267
|
+
success: false,
|
|
268
|
+
action: input.action,
|
|
269
|
+
message: 'Erro na operação de issues',
|
|
270
|
+
error: error instanceof Error ? error.message : String(error)
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
/**
|
|
275
|
+
* Cria uma nova issue no repositório
|
|
276
|
+
*
|
|
277
|
+
* FUNCIONALIDADE:
|
|
278
|
+
* - Cria issue com título e descrição
|
|
279
|
+
* - Suporta labels, assignees e milestone
|
|
280
|
+
* - Retorna detalhes da issue criada
|
|
281
|
+
*
|
|
282
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
283
|
+
* - owner: Proprietário do repositório
|
|
284
|
+
* - repo: Nome do repositório
|
|
285
|
+
* - title: Título da issue
|
|
286
|
+
*
|
|
287
|
+
* PARÂMETROS OPCIONAIS:
|
|
288
|
+
* - body: Descrição detalhada
|
|
289
|
+
* - labels: Array de labels para categorização
|
|
290
|
+
* - assignees: Array de usuários responsáveis
|
|
291
|
+
* - milestone: ID do milestone associado
|
|
292
|
+
*
|
|
293
|
+
* VALIDAÇÕES:
|
|
294
|
+
* - Todos os parâmetros obrigatórios
|
|
295
|
+
* - Título deve ser único no repositório
|
|
296
|
+
* - Labels devem existir no repositório
|
|
297
|
+
* - Assignees devem ser usuários válidos
|
|
298
|
+
*
|
|
299
|
+
* RECOMENDAÇÕES:
|
|
300
|
+
* - Use títulos descritivos e claros
|
|
301
|
+
* - Documente detalhes completos
|
|
302
|
+
* - Use labels para categorização
|
|
303
|
+
* - Atribua responsáveis adequadamente
|
|
304
|
+
*/
|
|
305
|
+
async createIssue(params, provider) {
|
|
306
|
+
try {
|
|
307
|
+
if (!params.owner || !params.repo || !params.title) {
|
|
308
|
+
throw new Error('Owner, repo e title são obrigatórios');
|
|
309
|
+
}
|
|
310
|
+
const issue = await provider.createIssue(params.owner, params.repo, params.title, params.body, params.assignees, params.labels);
|
|
311
|
+
return {
|
|
312
|
+
success: true,
|
|
313
|
+
action: 'create',
|
|
314
|
+
message: `Issue '${params.title}' criada com sucesso`,
|
|
315
|
+
data: issue
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
throw new Error(`Falha ao criar issue: ${error instanceof Error ? error.message : String(error)}`);
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
/**
|
|
323
|
+
* Lista issues do repositório
|
|
324
|
+
*
|
|
325
|
+
* FUNCIONALIDADE:
|
|
326
|
+
* - Lista issues com filtros de estado
|
|
327
|
+
* - Suporta paginação
|
|
328
|
+
* - Retorna informações básicas de cada issue
|
|
329
|
+
*
|
|
330
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
331
|
+
* - owner: Proprietário do repositório
|
|
332
|
+
* - repo: Nome do repositório
|
|
333
|
+
*
|
|
334
|
+
* PARÂMETROS OPCIONAIS:
|
|
335
|
+
* - state: Estado das issues (open, closed, all) - padrão: open
|
|
336
|
+
* - page: Página da listagem (padrão: 1)
|
|
337
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
338
|
+
*
|
|
339
|
+
* VALIDAÇÕES:
|
|
340
|
+
* - Owner e repo obrigatórios
|
|
341
|
+
* - State deve ser um dos valores válidos
|
|
342
|
+
* - Page deve ser >= 1
|
|
343
|
+
* - Limit deve ser entre 1 e 100
|
|
344
|
+
*
|
|
345
|
+
* RECOMENDAÇÕES:
|
|
346
|
+
* - Use paginação para repositórios com muitas issues
|
|
347
|
+
* - Monitore número total de issues
|
|
348
|
+
* - Filtre por estado para organização
|
|
349
|
+
* - Mantenha issues organizadas
|
|
350
|
+
*/
|
|
351
|
+
async listIssues(params, provider) {
|
|
352
|
+
try {
|
|
353
|
+
if (!params.owner || !params.repo) {
|
|
354
|
+
throw new Error('Owner e repo são obrigatórios');
|
|
355
|
+
}
|
|
356
|
+
const state = params.state || 'open';
|
|
357
|
+
const page = params.page || 1;
|
|
358
|
+
const limit = params.limit || 30;
|
|
359
|
+
const issues = await provider.listIssues(params.owner, params.repo, state, page, limit);
|
|
360
|
+
return {
|
|
361
|
+
success: true,
|
|
362
|
+
action: 'list',
|
|
363
|
+
message: `${issues.length} issues ${state} encontradas`,
|
|
364
|
+
data: {
|
|
365
|
+
issues,
|
|
366
|
+
state,
|
|
367
|
+
page,
|
|
368
|
+
limit,
|
|
369
|
+
total: issues.length
|
|
370
|
+
}
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
throw new Error(`Falha ao listar issues: ${error instanceof Error ? error.message : String(error)}`);
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
/**
|
|
378
|
+
* Obtém detalhes de uma issue específica
|
|
379
|
+
*
|
|
380
|
+
* FUNCIONALIDADE:
|
|
381
|
+
* - Retorna informações completas da issue
|
|
382
|
+
* - Inclui título, descrição, labels, assignees
|
|
383
|
+
* - Mostra histórico de comentários
|
|
384
|
+
*
|
|
385
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
386
|
+
* - owner: Proprietário do repositório
|
|
387
|
+
* - repo: Nome do repositório
|
|
388
|
+
* - issue_number: Número da issue
|
|
389
|
+
*
|
|
390
|
+
* VALIDAÇÕES:
|
|
391
|
+
* - Todos os parâmetros obrigatórios
|
|
392
|
+
* - Issue deve existir no repositório
|
|
393
|
+
* - Número deve ser válido
|
|
394
|
+
*
|
|
395
|
+
* RECOMENDAÇÕES:
|
|
396
|
+
* - Use para obter detalhes completos
|
|
397
|
+
* - Verifique status e labels
|
|
398
|
+
* - Analise comentários e histórico
|
|
399
|
+
* - Monitore mudanças importantes
|
|
400
|
+
*/
|
|
401
|
+
async getIssue(params, provider) {
|
|
402
|
+
try {
|
|
403
|
+
if (!params.owner || !params.repo || !params.issue_number) {
|
|
404
|
+
throw new Error('Owner, repo e issue_number são obrigatórios');
|
|
405
|
+
}
|
|
406
|
+
const issue = await provider.getIssue(params.owner, params.repo, params.issue_number);
|
|
407
|
+
return {
|
|
408
|
+
success: true,
|
|
409
|
+
action: 'get',
|
|
410
|
+
message: `Issue #${params.issue_number} obtida com sucesso`,
|
|
411
|
+
data: issue
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
throw new Error(`Falha ao obter issue: ${error instanceof Error ? error.message : String(error)}`);
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
/**
|
|
419
|
+
* Atualiza uma issue existente
|
|
420
|
+
*
|
|
421
|
+
* FUNCIONALIDADE:
|
|
422
|
+
* - Atualiza campos da issue
|
|
423
|
+
* - Suporta mudança de estado
|
|
424
|
+
* - Permite alteração de labels e assignees
|
|
425
|
+
*
|
|
426
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
427
|
+
* - owner: Proprietário do repositório
|
|
428
|
+
* - repo: Nome do repositório
|
|
429
|
+
* - issue_number: Número da issue
|
|
430
|
+
*
|
|
431
|
+
* PARÂMETROS OPCIONAIS:
|
|
432
|
+
* - new_title: Novo título
|
|
433
|
+
* - new_body: Nova descrição
|
|
434
|
+
* - new_state: Novo estado
|
|
435
|
+
* - new_labels: Novos labels
|
|
436
|
+
* - new_assignees: Novos responsáveis
|
|
437
|
+
* - new_milestone: Novo milestone
|
|
438
|
+
*
|
|
439
|
+
* VALIDAÇÕES:
|
|
440
|
+
* - Todos os parâmetros obrigatórios
|
|
441
|
+
* - Issue deve existir
|
|
442
|
+
* - Pelo menos um campo deve ser atualizado
|
|
443
|
+
*
|
|
444
|
+
* RECOMENDAÇÕES:
|
|
445
|
+
* - Atualize apenas campos necessários
|
|
446
|
+
* - Use mensagens de commit descritivas
|
|
447
|
+
* - Documente mudanças importantes
|
|
448
|
+
* - Notifique responsáveis sobre mudanças
|
|
449
|
+
*/
|
|
450
|
+
async updateIssue(params, provider) {
|
|
451
|
+
try {
|
|
452
|
+
if (!params.owner || !params.repo || !params.issue_number) {
|
|
453
|
+
throw new Error('Owner, repo e issue_number são obrigatórios');
|
|
454
|
+
}
|
|
455
|
+
const updateData = {};
|
|
456
|
+
if (params.new_title)
|
|
457
|
+
updateData.title = params.new_title;
|
|
458
|
+
if (params.new_body !== undefined)
|
|
459
|
+
updateData.body = params.new_body;
|
|
460
|
+
if (params.new_state)
|
|
461
|
+
updateData.state = params.new_state;
|
|
462
|
+
if (params.new_labels)
|
|
463
|
+
updateData.labels = params.new_labels;
|
|
464
|
+
if (params.new_assignees)
|
|
465
|
+
updateData.assignees = params.new_assignees;
|
|
466
|
+
if (params.new_milestone !== undefined)
|
|
467
|
+
updateData.milestone = params.new_milestone;
|
|
468
|
+
if (Object.keys(updateData).length === 0) {
|
|
469
|
+
throw new Error('Nenhum campo para atualizar foi fornecido');
|
|
470
|
+
}
|
|
471
|
+
const issue = await provider.updateIssue(params.owner, params.repo, params.issue_number, updateData);
|
|
472
|
+
return {
|
|
473
|
+
success: true,
|
|
474
|
+
action: 'update',
|
|
475
|
+
message: `Issue #${params.issue_number} atualizada com sucesso`,
|
|
476
|
+
data: issue
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
throw new Error(`Falha ao atualizar issue: ${error instanceof Error ? error.message : String(error)}`);
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
/**
|
|
484
|
+
* Fecha uma issue
|
|
485
|
+
*
|
|
486
|
+
* FUNCIONALIDADE:
|
|
487
|
+
* - Altera estado da issue para closed
|
|
488
|
+
* - Mantém histórico e comentários
|
|
489
|
+
* - Permite reabertura posterior
|
|
490
|
+
*
|
|
491
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
492
|
+
* - owner: Proprietário do repositório
|
|
493
|
+
* - repo: Nome do repositório
|
|
494
|
+
* - issue_number: Número da issue
|
|
495
|
+
*
|
|
496
|
+
* VALIDAÇÕES:
|
|
497
|
+
* - Todos os parâmetros obrigatórios
|
|
498
|
+
* - Issue deve existir
|
|
499
|
+
* - Issue deve estar aberta
|
|
500
|
+
*
|
|
501
|
+
* RECOMENDAÇÕES:
|
|
502
|
+
* - Confirme que issue foi resolvida
|
|
503
|
+
* - Documente solução aplicada
|
|
504
|
+
* - Use comentário explicativo
|
|
505
|
+
* - Verifique se não há dependências
|
|
506
|
+
*/
|
|
507
|
+
async closeIssue(params, provider) {
|
|
508
|
+
try {
|
|
509
|
+
if (!params.owner || !params.repo || !params.issue_number) {
|
|
510
|
+
throw new Error('Owner, repo e issue_number são obrigatórios');
|
|
511
|
+
}
|
|
512
|
+
const issue = await provider.updateIssue(params.owner, params.repo, params.issue_number, { state: 'closed' });
|
|
513
|
+
return {
|
|
514
|
+
success: true,
|
|
515
|
+
action: 'close',
|
|
516
|
+
message: `Issue #${params.issue_number} fechada com sucesso`,
|
|
517
|
+
data: issue
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
catch (error) {
|
|
521
|
+
throw new Error(`Falha ao fechar issue: ${error instanceof Error ? error.message : String(error)}`);
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
/**
|
|
525
|
+
* Adiciona comentário a uma issue
|
|
526
|
+
*
|
|
527
|
+
* FUNCIONALIDADE:
|
|
528
|
+
* - Cria novo comentário na issue
|
|
529
|
+
* - Mantém histórico de discussão
|
|
530
|
+
* - Suporta formatação Markdown
|
|
531
|
+
*
|
|
532
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
533
|
+
* - owner: Proprietário do repositório
|
|
534
|
+
* - repo: Nome do repositório
|
|
535
|
+
* - issue_number: Número da issue
|
|
536
|
+
* - comment_body: Conteúdo do comentário
|
|
537
|
+
*
|
|
538
|
+
* VALIDAÇÕES:
|
|
539
|
+
* - Todos os parâmetros obrigatórios
|
|
540
|
+
* - Issue deve existir
|
|
541
|
+
* - Comentário não pode estar vazio
|
|
542
|
+
*
|
|
543
|
+
* RECOMENDAÇÕES:
|
|
544
|
+
* - Use comentários para atualizações
|
|
545
|
+
* - Documente progresso e decisões
|
|
546
|
+
* - Use formatação Markdown adequadamente
|
|
547
|
+
* - Mantenha comentários relevantes
|
|
548
|
+
*/
|
|
549
|
+
async addComment(params, provider) {
|
|
550
|
+
try {
|
|
551
|
+
if (!params.owner || !params.repo || !params.issue_number || !params.comment_body) {
|
|
552
|
+
throw new Error('Owner, repo, issue_number e comment_body são obrigatórios');
|
|
553
|
+
}
|
|
554
|
+
// Implementar criação de comentário
|
|
555
|
+
// Por enquanto, retorna mensagem de funcionalidade
|
|
556
|
+
const comment = {
|
|
557
|
+
id: Date.now(),
|
|
558
|
+
body: params.comment_body,
|
|
559
|
+
user: { login: 'usuário atual', id: 1 },
|
|
560
|
+
created_at: new Date().toISOString(),
|
|
561
|
+
note: 'Funcionalidade de comentário será implementada'
|
|
562
|
+
};
|
|
563
|
+
return {
|
|
564
|
+
success: true,
|
|
565
|
+
action: 'comment',
|
|
566
|
+
message: `Comentário adicionado à issue #${params.issue_number} com sucesso`,
|
|
567
|
+
data: comment
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
catch (error) {
|
|
571
|
+
throw new Error(`Falha ao adicionar comentário: ${error instanceof Error ? error.message : String(error)}`);
|
|
572
|
+
}
|
|
573
|
+
},
|
|
574
|
+
/**
|
|
575
|
+
* Busca issues por critérios específicos
|
|
576
|
+
*
|
|
577
|
+
* FUNCIONALIDADE:
|
|
578
|
+
* - Busca issues por conteúdo
|
|
579
|
+
* - Filtra por autor, assignee e label
|
|
580
|
+
* - Retorna resultados relevantes
|
|
581
|
+
*
|
|
582
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
583
|
+
* - owner: Proprietário do repositório
|
|
584
|
+
* - repo: Nome do repositório
|
|
585
|
+
* - query: Termo de busca
|
|
586
|
+
*
|
|
587
|
+
* PARÂMETROS OPCIONAIS:
|
|
588
|
+
* - author: Autor das issues
|
|
589
|
+
* - assignee: Responsável pelas issues
|
|
590
|
+
* - label: Label específico
|
|
591
|
+
*
|
|
592
|
+
* VALIDAÇÕES:
|
|
593
|
+
* - Todos os parâmetros obrigatórios
|
|
594
|
+
* - Query deve ter pelo menos 3 caracteres
|
|
595
|
+
* - Repositório deve existir
|
|
596
|
+
*
|
|
597
|
+
* RECOMENDAÇÕES:
|
|
598
|
+
* - Use termos de busca específicos
|
|
599
|
+
* - Combine filtros para resultados precisos
|
|
600
|
+
* - Analise relevância dos resultados
|
|
601
|
+
* - Use para encontrar issues relacionadas
|
|
602
|
+
*/
|
|
603
|
+
async searchIssues(params, provider) {
|
|
604
|
+
try {
|
|
605
|
+
if (!params.owner || !params.repo || !params.query) {
|
|
606
|
+
throw new Error('Owner, repo e query são obrigatórios');
|
|
607
|
+
}
|
|
608
|
+
if (params.query.length < 3) {
|
|
609
|
+
throw new Error('Query deve ter pelo menos 3 caracteres');
|
|
610
|
+
}
|
|
611
|
+
// Implementar busca de issues
|
|
612
|
+
// Por enquanto, retorna mensagem de funcionalidade
|
|
613
|
+
return {
|
|
614
|
+
success: true,
|
|
615
|
+
action: 'search',
|
|
616
|
+
message: `Busca por issues com '${params.query}' solicitada`,
|
|
617
|
+
data: {
|
|
618
|
+
query: params.query,
|
|
619
|
+
author: params.author || 'todos',
|
|
620
|
+
assignee: params.assignee || 'todos',
|
|
621
|
+
label: params.label || 'todos',
|
|
622
|
+
results: 'Funcionalidade de busca será implementada'
|
|
623
|
+
}
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
catch (error) {
|
|
627
|
+
throw new Error(`Falha ao buscar issues: ${error instanceof Error ? error.message : String(error)}`);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
};
|
|
631
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}
|