@andrebuzeli/git-mcp 2.28.2 → 2.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/providers/error-handler.d.ts +24 -0
- package/dist/providers/error-handler.d.ts.map +1 -1
- package/dist/providers/error-handler.js +59 -0
- package/dist/providers/error-handler.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/git-archive.d.ts +13 -9
- package/dist/tools/git-archive.d.ts.map +1 -1
- package/dist/tools/git-archive.js +34 -21
- package/dist/tools/git-archive.js.map +1 -1
- package/dist/tools/git-branches.d.ts +150 -146
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +184 -171
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-commits.d.ts +161 -157
- package/dist/tools/git-commits.d.ts.map +1 -1
- package/dist/tools/git-commits.js +200 -187
- package/dist/tools/git-commits.js.map +1 -1
- package/dist/tools/git-config.d.ts +18 -14
- package/dist/tools/git-config.d.ts.map +1 -1
- package/dist/tools/git-config.js +57 -44
- package/dist/tools/git-config.js.map +1 -1
- package/dist/tools/git-files.d.ts +204 -200
- package/dist/tools/git-files.d.ts.map +1 -1
- package/dist/tools/git-files.js +233 -220
- package/dist/tools/git-files.js.map +1 -1
- package/dist/tools/git-initialize.d.ts +46 -42
- package/dist/tools/git-initialize.d.ts.map +1 -1
- package/dist/tools/git-initialize.js +81 -68
- package/dist/tools/git-initialize.js.map +1 -1
- package/dist/tools/git-issues.d.ts +193 -189
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +238 -225
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +212 -208
- package/dist/tools/git-pulls.d.ts.map +1 -1
- package/dist/tools/git-pulls.js +238 -225
- package/dist/tools/git-pulls.js.map +1 -1
- package/dist/tools/git-releases.d.ts +160 -156
- package/dist/tools/git-releases.d.ts.map +1 -1
- package/dist/tools/git-releases.js +183 -170
- package/dist/tools/git-releases.js.map +1 -1
- package/dist/tools/git-remote.d.ts +9 -5
- package/dist/tools/git-remote.d.ts.map +1 -1
- package/dist/tools/git-remote.js +26 -13
- package/dist/tools/git-remote.js.map +1 -1
- package/dist/tools/git-repositories.d.ts +179 -175
- package/dist/tools/git-repositories.d.ts.map +1 -1
- package/dist/tools/git-repositories.js +230 -217
- package/dist/tools/git-repositories.js.map +1 -1
- package/dist/tools/git-reset.d.ts +13 -9
- package/dist/tools/git-reset.d.ts.map +1 -1
- package/dist/tools/git-reset.js +27 -14
- package/dist/tools/git-reset.js.map +1 -1
- package/dist/tools/git-revert.d.ts +14 -10
- package/dist/tools/git-revert.d.ts.map +1 -1
- package/dist/tools/git-revert.js +30 -17
- package/dist/tools/git-revert.js.map +1 -1
- package/dist/tools/git-stash.d.ts +10 -6
- package/dist/tools/git-stash.d.ts.map +1 -1
- package/dist/tools/git-stash.js +23 -10
- package/dist/tools/git-stash.js.map +1 -1
- package/dist/tools/git-sync.d.ts +18 -14
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +46 -33
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +137 -133
- package/dist/tools/git-tags.d.ts.map +1 -1
- package/dist/tools/git-tags.js +164 -151
- package/dist/tools/git-tags.js.map +1 -1
- package/dist/tools/git-upload-project.d.ts +5 -1
- package/dist/tools/git-upload-project.d.ts.map +1 -1
- package/dist/tools/git-upload-project.js +21 -1
- package/dist/tools/git-upload-project.js.map +1 -1
- package/dist/tools/git-webhooks.d.ts +147 -143
- package/dist/tools/git-webhooks.d.ts.map +1 -1
- package/dist/tools/git-webhooks.js +174 -157
- package/dist/tools/git-webhooks.js.map +1 -1
- package/dist/utils/git-error-analyzer.d.ts +64 -0
- package/dist/utils/git-error-analyzer.d.ts.map +1 -0
- package/dist/utils/git-error-analyzer.js +286 -0
- package/dist/utils/git-error-analyzer.js.map +1 -0
- package/package.json +2 -2
package/dist/tools/git-issues.js
CHANGED
|
@@ -7,49 +7,49 @@ const user_detection_js_1 = require("../utils/user-detection.js");
|
|
|
7
7
|
/**
|
|
8
8
|
* Tool: issues
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* DESCRIÇÃO:
|
|
11
11
|
* Gerenciamento completo de issues com suporte multi-provider (GitHub e Gitea)
|
|
12
12
|
*
|
|
13
13
|
* FUNCIONALIDADES:
|
|
14
|
-
* -
|
|
14
|
+
* - Criação de novas issues
|
|
15
15
|
* - Listagem e busca de issues
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
16
|
+
* - Obtenção de detalhes especÃficos
|
|
17
|
+
* - Atualização de issues existentes
|
|
18
18
|
* - Fechamento de issues
|
|
19
|
-
* -
|
|
20
|
-
* - Busca por
|
|
19
|
+
* - Adição de comentários
|
|
20
|
+
* - Busca por conteúdo e status
|
|
21
21
|
*
|
|
22
22
|
* USO:
|
|
23
23
|
* - Para gerenciar bugs e features
|
|
24
24
|
* - Para acompanhar progresso de desenvolvimento
|
|
25
|
-
* - Para
|
|
25
|
+
* - Para comunicação entre equipe
|
|
26
26
|
* - Para controle de qualidade
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
* - Use
|
|
28
|
+
* RECOMENDAÇÕES:
|
|
29
|
+
* - Use tÃtulos descritivos
|
|
30
30
|
* - Documente detalhes completos
|
|
31
31
|
* - Atualize status regularmente
|
|
32
32
|
* - Use labels adequadamente
|
|
33
33
|
*/
|
|
34
34
|
/**
|
|
35
|
-
* Schema de
|
|
35
|
+
* Schema de validação para entrada da tool issues
|
|
36
36
|
*
|
|
37
|
-
*
|
|
38
|
-
* - action:
|
|
39
|
-
* -
|
|
40
|
-
* -
|
|
37
|
+
* VALIDAÇÕES:
|
|
38
|
+
* - action: Ação obrigatória (create, list, get, update, close, comment, search)
|
|
39
|
+
* - Parâmetros especÃficos por ação
|
|
40
|
+
* - Validação de tipos e formatos
|
|
41
41
|
*
|
|
42
|
-
*
|
|
42
|
+
* RECOMENDAÇÕES:
|
|
43
43
|
* - Sempre valide entrada antes de usar
|
|
44
|
-
* - Use
|
|
45
|
-
* - Documente
|
|
44
|
+
* - Use parâmetros opcionais adequadamente
|
|
45
|
+
* - Documente parâmetros obrigatórios
|
|
46
46
|
*/
|
|
47
47
|
const IssuesInputSchema = zod_1.z.object({
|
|
48
48
|
action: zod_1.z.enum(['create', 'list', 'get', 'update', 'close', 'comment', 'search']),
|
|
49
|
-
//
|
|
49
|
+
// Parâmetros comuns
|
|
50
50
|
repo: zod_1.z.string(),
|
|
51
51
|
// Para multi-provider
|
|
52
|
-
provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Provider
|
|
52
|
+
provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'), // Provider especÃfico: gitea, github ou both
|
|
53
53
|
projectPath: zod_1.z.string().describe('Local project path for git operations'),
|
|
54
54
|
// Para create
|
|
55
55
|
title: zod_1.z.string().optional(),
|
|
@@ -79,11 +79,11 @@ const IssuesInputSchema = zod_1.z.object({
|
|
|
79
79
|
label: zod_1.z.string().optional(),
|
|
80
80
|
});
|
|
81
81
|
/**
|
|
82
|
-
* Schema de
|
|
82
|
+
* Schema de saÃda padronizado
|
|
83
83
|
*
|
|
84
84
|
* ESTRUTURA:
|
|
85
|
-
* - success: Status da
|
|
86
|
-
* - action:
|
|
85
|
+
* - success: Status da operação
|
|
86
|
+
* - action: Ação executada
|
|
87
87
|
* - message: Mensagem descritiva
|
|
88
88
|
* - data: Dados retornados (opcional)
|
|
89
89
|
* - error: Detalhes do erro (opcional)
|
|
@@ -98,80 +98,80 @@ const IssuesResultSchema = zod_1.z.object({
|
|
|
98
98
|
/**
|
|
99
99
|
* Tool: issues
|
|
100
100
|
*
|
|
101
|
-
*
|
|
102
|
-
* Gerenciamento completo de issues Gitea com
|
|
101
|
+
* DESCRIÇÃO:
|
|
102
|
+
* Gerenciamento completo de issues Gitea com múltiplas ações
|
|
103
103
|
*
|
|
104
|
-
* ACTIONS
|
|
104
|
+
* ACTIONS DISPONÃVEIS:
|
|
105
105
|
*
|
|
106
106
|
* 1. create - Criar nova issue
|
|
107
|
-
*
|
|
108
|
-
* - owner (
|
|
109
|
-
* - repo (
|
|
110
|
-
* - title (
|
|
111
|
-
* - body (opcional):
|
|
107
|
+
* Parâmetros:
|
|
108
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
109
|
+
* - repo (obrigatório): Nome do repositório
|
|
110
|
+
* - title (obrigatório): TÃtulo da issue
|
|
111
|
+
* - body (opcional): Descrição detalhada
|
|
112
112
|
* - labels (opcional): Array de labels
|
|
113
|
-
* - assignees (opcional): Array de
|
|
113
|
+
* - assignees (opcional): Array de usuários responsáveis
|
|
114
114
|
* - milestone (opcional): ID do milestone
|
|
115
115
|
*
|
|
116
116
|
* 2. list - Listar issues
|
|
117
|
-
*
|
|
118
|
-
* - owner (
|
|
119
|
-
* - repo (
|
|
120
|
-
* - state (opcional): Estado das issues (open, closed, all) -
|
|
121
|
-
* - page (opcional):
|
|
122
|
-
* - limit (opcional): Itens por
|
|
117
|
+
* Parâmetros:
|
|
118
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
119
|
+
* - repo (obrigatório): Nome do repositório
|
|
120
|
+
* - state (opcional): Estado das issues (open, closed, all) - padrão: open
|
|
121
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
122
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
123
123
|
*
|
|
124
124
|
* 3. get - Obter detalhes da issue
|
|
125
|
-
*
|
|
126
|
-
* - owner (
|
|
127
|
-
* - repo (
|
|
128
|
-
* - issue_number (
|
|
125
|
+
* Parâmetros:
|
|
126
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
127
|
+
* - repo (obrigatório): Nome do repositório
|
|
128
|
+
* - issue_number (obrigatório): Número da issue
|
|
129
129
|
*
|
|
130
130
|
* 4. update - Atualizar issue existente
|
|
131
|
-
*
|
|
132
|
-
* - owner (
|
|
133
|
-
* - repo (
|
|
134
|
-
* - issue_number (
|
|
135
|
-
* - new_title (opcional): Novo
|
|
136
|
-
* - new_body (opcional): Nova
|
|
131
|
+
* Parâmetros:
|
|
132
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
133
|
+
* - repo (obrigatório): Nome do repositório
|
|
134
|
+
* - issue_number (obrigatório): Número da issue
|
|
135
|
+
* - new_title (opcional): Novo tÃtulo
|
|
136
|
+
* - new_body (opcional): Nova descrição
|
|
137
137
|
* - new_state (opcional): Novo estado
|
|
138
138
|
* - new_labels (opcional): Novos labels
|
|
139
|
-
* - new_assignees (opcional): Novos
|
|
139
|
+
* - new_assignees (opcional): Novos responsáveis
|
|
140
140
|
* - new_milestone (opcional): Novo milestone
|
|
141
141
|
*
|
|
142
142
|
* 5. close - Fechar issue
|
|
143
|
-
*
|
|
144
|
-
* - owner (
|
|
145
|
-
* - repo (
|
|
146
|
-
* - issue_number (
|
|
143
|
+
* Parâmetros:
|
|
144
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
145
|
+
* - repo (obrigatório): Nome do repositório
|
|
146
|
+
* - issue_number (obrigatório): Número da issue
|
|
147
147
|
*
|
|
148
|
-
* 6. comment - Adicionar
|
|
149
|
-
*
|
|
150
|
-
* - owner (
|
|
151
|
-
* - repo (
|
|
152
|
-
* - issue_number (
|
|
153
|
-
* - comment_body (
|
|
148
|
+
* 6. comment - Adicionar comentário
|
|
149
|
+
* Parâmetros:
|
|
150
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
151
|
+
* - repo (obrigatório): Nome do repositório
|
|
152
|
+
* - issue_number (obrigatório): Número da issue
|
|
153
|
+
* - comment_body (obrigatório): Conteúdo do comentário
|
|
154
154
|
*
|
|
155
155
|
* 7. search - Buscar issues
|
|
156
|
-
*
|
|
157
|
-
* - owner (
|
|
158
|
-
* - repo (
|
|
159
|
-
* - query (
|
|
156
|
+
* Parâmetros:
|
|
157
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
158
|
+
* - repo (obrigatório): Nome do repositório
|
|
159
|
+
* - query (obrigatório): Termo de busca
|
|
160
160
|
* - author (opcional): Autor das issues
|
|
161
|
-
* - assignee (opcional):
|
|
162
|
-
* - label (opcional): Label
|
|
161
|
+
* - assignee (opcional): Responsável pelas issues
|
|
162
|
+
* - label (opcional): Label especÃfico
|
|
163
163
|
*
|
|
164
|
-
*
|
|
165
|
-
* - Use
|
|
166
|
-
* - Documente detalhes completos na
|
|
164
|
+
* RECOMENDAÇÕES DE USO:
|
|
165
|
+
* - Use tÃtulos descritivos e claros
|
|
166
|
+
* - Documente detalhes completos na descrição
|
|
167
167
|
* - Atualize status regularmente
|
|
168
|
-
* - Use labels para
|
|
169
|
-
* - Atribua
|
|
168
|
+
* - Use labels para categorização
|
|
169
|
+
* - Atribua responsáveis adequadamente
|
|
170
170
|
* - Mantenha issues organizadas
|
|
171
171
|
*/
|
|
172
172
|
exports.issuesTool = {
|
|
173
173
|
name: 'git-issues',
|
|
174
|
-
description: 'tool: Gerencia issues Git, bugs, features e tarefas\n
|
|
174
|
+
description: 'tool: Gerencia issues Git, bugs, features e tarefas\n──────────────\naction create: cria nova issue\naction create requires: repo, title, body, labels, assignees, milestone, provider\n───────────────\naction list: lista issues do repositório\naction list requires: repo, state, page, limit, provider\n───────────────\naction get: obtém detalhes de issue\naction get requires: repo, issue_number, provider\n───────────────\naction update: atualiza issue existente\naction update requires: repo, issue_number, new_title, new_body, new_state, new_labels, new_assignees, new_milestone, provider\n───────────────\naction close: fecha issue\naction close requires: repo, issue_number, provider\n───────────────\naction comment: adiciona comentário\naction comment requires: repo, issue_number, comment_body, provider\n───────────────\naction search: busca issues por critérios\naction search requires: repo, query, author, assignee, label, provider',
|
|
175
175
|
inputSchema: {
|
|
176
176
|
type: 'object',
|
|
177
177
|
properties: {
|
|
@@ -210,33 +210,33 @@ exports.issuesTool = {
|
|
|
210
210
|
*
|
|
211
211
|
* FUNCIONALIDADE:
|
|
212
212
|
* - Valida entrada usando Zod schema
|
|
213
|
-
* - Roteia para
|
|
213
|
+
* - Roteia para método especÃfico baseado na ação
|
|
214
214
|
* - Trata erros de forma uniforme
|
|
215
215
|
* - Retorna resultado padronizado
|
|
216
216
|
*
|
|
217
217
|
* FLUXO:
|
|
218
|
-
* 1.
|
|
219
|
-
* 2.
|
|
220
|
-
* 3. Roteamento por
|
|
221
|
-
* 4.
|
|
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
222
|
* 5. Tratamento de erros
|
|
223
223
|
* 6. Retorno de resultado
|
|
224
224
|
*
|
|
225
225
|
* TRATAMENTO DE ERROS:
|
|
226
|
-
* -
|
|
227
|
-
* -
|
|
228
|
-
* - Roteamento:
|
|
226
|
+
* - Validação: erro de schema
|
|
227
|
+
* - Execução: erro da operação
|
|
228
|
+
* - Roteamento: ação não suportada
|
|
229
229
|
*
|
|
230
|
-
*
|
|
230
|
+
* RECOMENDAÇÕES:
|
|
231
231
|
* - Sempre valide entrada antes de processar
|
|
232
|
-
* - Trate erros
|
|
232
|
+
* - Trate erros especÃficos adequadamente
|
|
233
233
|
* - Log detalhes de erro para debug
|
|
234
|
-
* - Retorne mensagens de erro
|
|
234
|
+
* - Retorne mensagens de erro úteis
|
|
235
235
|
*/
|
|
236
236
|
async handler(input) {
|
|
237
237
|
try {
|
|
238
238
|
const validatedInput = IssuesInputSchema.parse(input);
|
|
239
|
-
// Aplicar auto-
|
|
239
|
+
// Aplicar auto-detecção de usuário/owner
|
|
240
240
|
const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
|
|
241
241
|
// Obter o provider correto
|
|
242
242
|
let provider;
|
|
@@ -244,7 +244,7 @@ exports.issuesTool = {
|
|
|
244
244
|
if (processedInput.provider) {
|
|
245
245
|
const requestedProvider = index_js_1.globalProviderFactory.getProvider(processedInput.provider);
|
|
246
246
|
if (!requestedProvider) {
|
|
247
|
-
console.warn(`[ISSUES] Provider '${processedInput.provider}'
|
|
247
|
+
console.warn(`[ISSUES] Provider '${processedInput.provider}' não encontrado, usando padrão`);
|
|
248
248
|
provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
249
249
|
}
|
|
250
250
|
else {
|
|
@@ -255,12 +255,12 @@ exports.issuesTool = {
|
|
|
255
255
|
provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
256
256
|
}
|
|
257
257
|
if (!provider) {
|
|
258
|
-
throw new Error('Nenhum provider
|
|
258
|
+
throw new Error('Nenhum provider disponÃvel');
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
261
|
catch (providerError) {
|
|
262
262
|
console.error('[ISSUES] Erro ao obter provider:', providerError);
|
|
263
|
-
throw new Error(`Erro de
|
|
263
|
+
throw new Error(`Erro de configuração do provider: ${providerError instanceof Error ? providerError.message : 'Provider não disponÃvel'}`);
|
|
264
264
|
}
|
|
265
265
|
// Obter o owner do provider
|
|
266
266
|
const owner = (await provider.getCurrentUser()).login;
|
|
@@ -280,59 +280,59 @@ exports.issuesTool = {
|
|
|
280
280
|
case 'search':
|
|
281
281
|
return await this.searchIssues(processedInput, provider, owner);
|
|
282
282
|
default:
|
|
283
|
-
throw new Error(`
|
|
283
|
+
throw new Error(`Ação não suportada: ${processedInput.action}`);
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
catch (error) {
|
|
287
287
|
return {
|
|
288
288
|
success: false,
|
|
289
289
|
action: input.action,
|
|
290
|
-
message: 'Erro na
|
|
290
|
+
message: 'Erro na operação de issues',
|
|
291
291
|
error: error instanceof Error ? error.message : String(error)
|
|
292
292
|
};
|
|
293
293
|
}
|
|
294
294
|
},
|
|
295
295
|
/**
|
|
296
|
-
* Cria uma nova issue no
|
|
296
|
+
* Cria uma nova issue no repositório
|
|
297
297
|
*
|
|
298
298
|
* FUNCIONALIDADE:
|
|
299
|
-
* - Cria issue com
|
|
299
|
+
* - Cria issue com tÃtulo e descrição
|
|
300
300
|
* - Suporta labels, assignees e milestone
|
|
301
301
|
* - Retorna detalhes da issue criada
|
|
302
302
|
*
|
|
303
|
-
*
|
|
304
|
-
* - owner:
|
|
305
|
-
* - repo: Nome do
|
|
306
|
-
* - title:
|
|
303
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
304
|
+
* - owner: Proprietário do repositório
|
|
305
|
+
* - repo: Nome do repositório
|
|
306
|
+
* - title: TÃtulo da issue
|
|
307
307
|
*
|
|
308
|
-
*
|
|
309
|
-
* - body:
|
|
310
|
-
* - labels: Array de labels para
|
|
311
|
-
* - assignees: Array de
|
|
308
|
+
* PARÂMETROS OPCIONAIS:
|
|
309
|
+
* - body: Descrição detalhada
|
|
310
|
+
* - labels: Array de labels para categorização
|
|
311
|
+
* - assignees: Array de usuários responsáveis
|
|
312
312
|
* - milestone: ID do milestone associado
|
|
313
313
|
*
|
|
314
|
-
*
|
|
315
|
-
* - Todos os
|
|
316
|
-
* -
|
|
317
|
-
* - Labels devem existir no
|
|
318
|
-
* - Assignees devem ser
|
|
314
|
+
* VALIDAÇÕES:
|
|
315
|
+
* - Todos os parâmetros obrigatórios
|
|
316
|
+
* - TÃtulo deve ser único no repositório
|
|
317
|
+
* - Labels devem existir no repositório
|
|
318
|
+
* - Assignees devem ser usuários válidos
|
|
319
319
|
*
|
|
320
|
-
*
|
|
321
|
-
* - Use
|
|
320
|
+
* RECOMENDAÇÕES:
|
|
321
|
+
* - Use tÃtulos descritivos e claros
|
|
322
322
|
* - Documente detalhes completos
|
|
323
|
-
* - Use labels para
|
|
324
|
-
* - Atribua
|
|
323
|
+
* - Use labels para categorização
|
|
324
|
+
* - Atribua responsáveis adequadamente
|
|
325
325
|
*/
|
|
326
326
|
async createIssue(params, provider, owner) {
|
|
327
327
|
try {
|
|
328
328
|
if (!owner) {
|
|
329
|
-
throw new Error('
|
|
329
|
+
throw new Error('é obrigatório');
|
|
330
330
|
}
|
|
331
331
|
if (!params.repo) {
|
|
332
|
-
throw new Error('Repo
|
|
332
|
+
throw new Error('Repo é obrigatório');
|
|
333
333
|
}
|
|
334
334
|
if (!params.title) {
|
|
335
|
-
throw new Error('Title
|
|
335
|
+
throw new Error('Title é obrigatório');
|
|
336
336
|
}
|
|
337
337
|
const issue = await provider.createIssue(owner, params.repo, params.title, params.body, params.assignees, params.labels);
|
|
338
338
|
return {
|
|
@@ -347,41 +347,41 @@ exports.issuesTool = {
|
|
|
347
347
|
}
|
|
348
348
|
},
|
|
349
349
|
/**
|
|
350
|
-
* Lista issues do
|
|
350
|
+
* Lista issues do repositório
|
|
351
351
|
*
|
|
352
352
|
* FUNCIONALIDADE:
|
|
353
353
|
* - Lista issues com filtros de estado
|
|
354
|
-
* - Suporta
|
|
355
|
-
* - Retorna
|
|
354
|
+
* - Suporta paginação
|
|
355
|
+
* - Retorna informações básicas de cada issue
|
|
356
356
|
*
|
|
357
|
-
*
|
|
358
|
-
* - owner:
|
|
359
|
-
* - repo: Nome do
|
|
357
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
358
|
+
* - owner: Proprietário do repositório
|
|
359
|
+
* - repo: Nome do repositório
|
|
360
360
|
*
|
|
361
|
-
*
|
|
362
|
-
* - state: Estado das issues (open, closed, all) -
|
|
363
|
-
* - page:
|
|
364
|
-
* - limit: Itens por
|
|
361
|
+
* PARÂMETROS OPCIONAIS:
|
|
362
|
+
* - state: Estado das issues (open, closed, all) - padrão: open
|
|
363
|
+
* - page: Página da listagem (padrão: 1)
|
|
364
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
365
365
|
*
|
|
366
|
-
*
|
|
367
|
-
* - e repo
|
|
368
|
-
* - State deve ser um dos valores
|
|
366
|
+
* VALIDAÇÕES:
|
|
367
|
+
* - e repo obrigatórios
|
|
368
|
+
* - State deve ser um dos valores válidos
|
|
369
369
|
* - Page deve ser >= 1
|
|
370
370
|
* - Limit deve ser entre 1 e 100
|
|
371
371
|
*
|
|
372
|
-
*
|
|
373
|
-
* - Use
|
|
374
|
-
* - Monitore
|
|
375
|
-
* - Filtre por estado para
|
|
372
|
+
* RECOMENDAÇÕES:
|
|
373
|
+
* - Use paginação para repositórios com muitas issues
|
|
374
|
+
* - Monitore número total de issues
|
|
375
|
+
* - Filtre por estado para organização
|
|
376
376
|
* - Mantenha issues organizadas
|
|
377
377
|
*/
|
|
378
378
|
async listIssues(params, provider, owner) {
|
|
379
379
|
try {
|
|
380
380
|
if (!owner) {
|
|
381
|
-
throw new Error('
|
|
381
|
+
throw new Error('é obrigatório');
|
|
382
382
|
}
|
|
383
383
|
if (!params.repo) {
|
|
384
|
-
throw new Error('Repo
|
|
384
|
+
throw new Error('Repo é obrigatório');
|
|
385
385
|
}
|
|
386
386
|
const state = params.state || 'open';
|
|
387
387
|
const page = params.page || 1;
|
|
@@ -405,40 +405,40 @@ exports.issuesTool = {
|
|
|
405
405
|
}
|
|
406
406
|
},
|
|
407
407
|
/**
|
|
408
|
-
*
|
|
408
|
+
* Obtém detalhes de uma issue especÃfica
|
|
409
409
|
*
|
|
410
410
|
* FUNCIONALIDADE:
|
|
411
|
-
* - Retorna
|
|
412
|
-
* - Inclui
|
|
413
|
-
* - Mostra
|
|
411
|
+
* - Retorna informações completas da issue
|
|
412
|
+
* - Inclui tÃtulo, descrição, labels, assignees
|
|
413
|
+
* - Mostra histórico de comentários
|
|
414
414
|
*
|
|
415
|
-
*
|
|
416
|
-
* - owner:
|
|
417
|
-
* - repo: Nome do
|
|
418
|
-
* - issue_number:
|
|
415
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
416
|
+
* - owner: Proprietário do repositório
|
|
417
|
+
* - repo: Nome do repositório
|
|
418
|
+
* - issue_number: Número da issue
|
|
419
419
|
*
|
|
420
|
-
*
|
|
421
|
-
* - Todos os
|
|
422
|
-
* - Issue deve existir no
|
|
423
|
-
* -
|
|
420
|
+
* VALIDAÇÕES:
|
|
421
|
+
* - Todos os parâmetros obrigatórios
|
|
422
|
+
* - Issue deve existir no repositório
|
|
423
|
+
* - Número deve ser válido
|
|
424
424
|
*
|
|
425
|
-
*
|
|
425
|
+
* RECOMENDAÇÕES:
|
|
426
426
|
* - Use para obter detalhes completos
|
|
427
427
|
* - Verifique status e labels
|
|
428
|
-
* - Analise
|
|
429
|
-
* - Monitore
|
|
428
|
+
* - Analise comentários e histórico
|
|
429
|
+
* - Monitore mudanças importantes
|
|
430
430
|
*/
|
|
431
431
|
async getIssue(params, provider, owner) {
|
|
432
432
|
try {
|
|
433
|
-
// Aplicar auto-
|
|
433
|
+
// Aplicar auto-detecção se necessário
|
|
434
434
|
if (!owner) {
|
|
435
|
-
throw new Error('
|
|
435
|
+
throw new Error('é obrigatório');
|
|
436
436
|
}
|
|
437
437
|
if (!params.repo) {
|
|
438
|
-
throw new Error('Repo
|
|
438
|
+
throw new Error('Repo é obrigatório');
|
|
439
439
|
}
|
|
440
440
|
if (!params.issue_number) {
|
|
441
|
-
throw new Error('Issue_number
|
|
441
|
+
throw new Error('Issue_number é obrigatório');
|
|
442
442
|
}
|
|
443
443
|
const issue = await provider.getIssue((await provider.getCurrentUser()).login, params.repo, params.issue_number);
|
|
444
444
|
return {
|
|
@@ -457,43 +457,43 @@ exports.issuesTool = {
|
|
|
457
457
|
*
|
|
458
458
|
* FUNCIONALIDADE:
|
|
459
459
|
* - Atualiza campos da issue
|
|
460
|
-
* - Suporta
|
|
461
|
-
* - Permite
|
|
460
|
+
* - Suporta mudança de estado
|
|
461
|
+
* - Permite alteração de labels e assignees
|
|
462
462
|
*
|
|
463
|
-
*
|
|
464
|
-
* - owner:
|
|
465
|
-
* - repo: Nome do
|
|
466
|
-
* - issue_number:
|
|
463
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
464
|
+
* - owner: Proprietário do repositório
|
|
465
|
+
* - repo: Nome do repositório
|
|
466
|
+
* - issue_number: Número da issue
|
|
467
467
|
*
|
|
468
|
-
*
|
|
469
|
-
* - new_title: Novo
|
|
470
|
-
* - new_body: Nova
|
|
468
|
+
* PARÂMETROS OPCIONAIS:
|
|
469
|
+
* - new_title: Novo tÃtulo
|
|
470
|
+
* - new_body: Nova descrição
|
|
471
471
|
* - new_state: Novo estado
|
|
472
472
|
* - new_labels: Novos labels
|
|
473
|
-
* - new_assignees: Novos
|
|
473
|
+
* - new_assignees: Novos responsáveis
|
|
474
474
|
* - new_milestone: Novo milestone
|
|
475
475
|
*
|
|
476
|
-
*
|
|
477
|
-
* - Todos os
|
|
476
|
+
* VALIDAÇÕES:
|
|
477
|
+
* - Todos os parâmetros obrigatórios
|
|
478
478
|
* - Issue deve existir
|
|
479
479
|
* - Pelo menos um campo deve ser atualizado
|
|
480
480
|
*
|
|
481
|
-
*
|
|
482
|
-
* - Atualize apenas campos
|
|
481
|
+
* RECOMENDAÇÕES:
|
|
482
|
+
* - Atualize apenas campos necessários
|
|
483
483
|
* - Use mensagens de commit descritivas
|
|
484
|
-
* - Documente
|
|
485
|
-
* - Notifique
|
|
484
|
+
* - Documente mudanças importantes
|
|
485
|
+
* - Notifique responsáveis sobre mudanças
|
|
486
486
|
*/
|
|
487
487
|
async updateIssue(params, provider, owner) {
|
|
488
488
|
try {
|
|
489
489
|
if (!owner) {
|
|
490
|
-
throw new Error('
|
|
490
|
+
throw new Error('é obrigatório');
|
|
491
491
|
}
|
|
492
492
|
if (!params.repo) {
|
|
493
|
-
throw new Error('Repo
|
|
493
|
+
throw new Error('Repo é obrigatório');
|
|
494
494
|
}
|
|
495
495
|
if (!params.issue_number) {
|
|
496
|
-
throw new Error('Issue_number
|
|
496
|
+
throw new Error('Issue_number é obrigatório');
|
|
497
497
|
}
|
|
498
498
|
const updateData = {};
|
|
499
499
|
if (params.new_title)
|
|
@@ -528,35 +528,35 @@ exports.issuesTool = {
|
|
|
528
528
|
*
|
|
529
529
|
* FUNCIONALIDADE:
|
|
530
530
|
* - Altera estado da issue para closed
|
|
531
|
-
* -
|
|
531
|
+
* - Mantém histórico e comentários
|
|
532
532
|
* - Permite reabertura posterior
|
|
533
533
|
*
|
|
534
|
-
*
|
|
535
|
-
* - owner:
|
|
536
|
-
* - repo: Nome do
|
|
537
|
-
* - issue_number:
|
|
534
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
535
|
+
* - owner: Proprietário do repositório
|
|
536
|
+
* - repo: Nome do repositório
|
|
537
|
+
* - issue_number: Número da issue
|
|
538
538
|
*
|
|
539
|
-
*
|
|
540
|
-
* - Todos os
|
|
539
|
+
* VALIDAÇÕES:
|
|
540
|
+
* - Todos os parâmetros obrigatórios
|
|
541
541
|
* - Issue deve existir
|
|
542
542
|
* - Issue deve estar aberta
|
|
543
543
|
*
|
|
544
|
-
*
|
|
544
|
+
* RECOMENDAÇÕES:
|
|
545
545
|
* - Confirme que issue foi resolvida
|
|
546
|
-
* - Documente
|
|
547
|
-
* - Use
|
|
548
|
-
* - Verifique se
|
|
546
|
+
* - Documente solução aplicada
|
|
547
|
+
* - Use comentário explicativo
|
|
548
|
+
* - Verifique se não há dependências
|
|
549
549
|
*/
|
|
550
550
|
async closeIssue(params, provider, owner) {
|
|
551
551
|
try {
|
|
552
552
|
if (!owner) {
|
|
553
|
-
throw new Error('
|
|
553
|
+
throw new Error('é obrigatório');
|
|
554
554
|
}
|
|
555
555
|
if (!params.repo) {
|
|
556
|
-
throw new Error('Repo
|
|
556
|
+
throw new Error('Repo é obrigatório');
|
|
557
557
|
}
|
|
558
558
|
if (!params.issue_number) {
|
|
559
|
-
throw new Error('Issue_number
|
|
559
|
+
throw new Error('Issue_number é obrigatório');
|
|
560
560
|
}
|
|
561
561
|
const issue = await provider.updateIssue((await provider.getCurrentUser()).login, params.repo, params.issue_number, { state: 'closed' });
|
|
562
562
|
return {
|
|
@@ -571,57 +571,57 @@ exports.issuesTool = {
|
|
|
571
571
|
}
|
|
572
572
|
},
|
|
573
573
|
/**
|
|
574
|
-
* Adiciona
|
|
574
|
+
* Adiciona comentário a uma issue
|
|
575
575
|
*
|
|
576
576
|
* FUNCIONALIDADE:
|
|
577
|
-
* - Cria novo
|
|
578
|
-
* -
|
|
579
|
-
* - Suporta
|
|
580
|
-
*
|
|
581
|
-
*
|
|
582
|
-
* - owner:
|
|
583
|
-
* - repo: Nome do
|
|
584
|
-
* - issue_number:
|
|
585
|
-
* - comment_body:
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
* - Todos os
|
|
577
|
+
* - Cria novo comentário na issue
|
|
578
|
+
* - Mantém histórico de discussão
|
|
579
|
+
* - Suporta formatação Markdown
|
|
580
|
+
*
|
|
581
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
582
|
+
* - owner: Proprietário do repositório
|
|
583
|
+
* - repo: Nome do repositório
|
|
584
|
+
* - issue_number: Número da issue
|
|
585
|
+
* - comment_body: Conteúdo do comentário
|
|
586
|
+
*
|
|
587
|
+
* VALIDAÇÕES:
|
|
588
|
+
* - Todos os parâmetros obrigatórios
|
|
589
589
|
* - Issue deve existir
|
|
590
|
-
* -
|
|
590
|
+
* - Comentário não pode estar vazio
|
|
591
591
|
*
|
|
592
|
-
*
|
|
593
|
-
* - Use
|
|
594
|
-
* - Documente progresso e
|
|
595
|
-
* - Use
|
|
596
|
-
* - Mantenha
|
|
592
|
+
* RECOMENDAÇÕES:
|
|
593
|
+
* - Use comentários para atualizações
|
|
594
|
+
* - Documente progresso e decisões
|
|
595
|
+
* - Use formatação Markdown adequadamente
|
|
596
|
+
* - Mantenha comentários relevantes
|
|
597
597
|
*/
|
|
598
598
|
async addComment(params, provider, owner) {
|
|
599
599
|
try {
|
|
600
600
|
if (!owner) {
|
|
601
|
-
throw new Error('
|
|
601
|
+
throw new Error('é obrigatório');
|
|
602
602
|
}
|
|
603
603
|
if (!params.repo) {
|
|
604
|
-
throw new Error('Repo
|
|
604
|
+
throw new Error('Repo é obrigatório');
|
|
605
605
|
}
|
|
606
606
|
if (!params.issue_number) {
|
|
607
|
-
throw new Error('Issue_number
|
|
607
|
+
throw new Error('Issue_number é obrigatório');
|
|
608
608
|
}
|
|
609
609
|
if (!params.comment_body) {
|
|
610
|
-
throw new Error('Comment_body
|
|
610
|
+
throw new Error('Comment_body é obrigatório');
|
|
611
611
|
}
|
|
612
612
|
// Verificar se a issue existe
|
|
613
613
|
try {
|
|
614
614
|
await provider.getIssue(owner, params.repo, params.issue_number);
|
|
615
615
|
}
|
|
616
616
|
catch (error) {
|
|
617
|
-
throw new Error(`Issue #${params.issue_number}
|
|
617
|
+
throw new Error(`Issue #${params.issue_number} não encontrada no repositório`);
|
|
618
618
|
}
|
|
619
|
-
// Adicionar
|
|
619
|
+
// Adicionar comentário usando o provider
|
|
620
620
|
const comment = await provider.addComment(owner, params.repo, params.issue_number, params.comment_body);
|
|
621
621
|
return {
|
|
622
622
|
success: true,
|
|
623
623
|
action: 'comment',
|
|
624
|
-
message: `
|
|
624
|
+
message: `Comentário adicionado à issue #${params.issue_number} com sucesso`,
|
|
625
625
|
data: {
|
|
626
626
|
issue_number: params.issue_number,
|
|
627
627
|
comment: comment,
|
|
@@ -634,48 +634,48 @@ exports.issuesTool = {
|
|
|
634
634
|
};
|
|
635
635
|
}
|
|
636
636
|
catch (error) {
|
|
637
|
-
throw new Error(`Falha ao adicionar
|
|
637
|
+
throw new Error(`Falha ao adicionar comentário: ${error instanceof Error ? error.message : String(error)}`);
|
|
638
638
|
}
|
|
639
639
|
},
|
|
640
640
|
/**
|
|
641
|
-
* Busca issues por
|
|
641
|
+
* Busca issues por critérios especÃficos
|
|
642
642
|
*
|
|
643
643
|
* FUNCIONALIDADE:
|
|
644
|
-
* - Busca issues por
|
|
644
|
+
* - Busca issues por conteúdo
|
|
645
645
|
* - Filtra por autor, assignee e label
|
|
646
646
|
* - Retorna resultados relevantes
|
|
647
647
|
*
|
|
648
|
-
*
|
|
649
|
-
* - owner:
|
|
650
|
-
* - repo: Nome do
|
|
648
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
649
|
+
* - owner: Proprietário do repositório
|
|
650
|
+
* - repo: Nome do repositório
|
|
651
651
|
* - query: Termo de busca
|
|
652
652
|
*
|
|
653
|
-
*
|
|
653
|
+
* PARÂMETROS OPCIONAIS:
|
|
654
654
|
* - author: Autor das issues
|
|
655
|
-
* - assignee:
|
|
656
|
-
* - label: Label
|
|
655
|
+
* - assignee: Responsável pelas issues
|
|
656
|
+
* - label: Label especÃfico
|
|
657
657
|
*
|
|
658
|
-
*
|
|
659
|
-
* - Todos os
|
|
658
|
+
* VALIDAÇÕES:
|
|
659
|
+
* - Todos os parâmetros obrigatórios
|
|
660
660
|
* - Query deve ter pelo menos 3 caracteres
|
|
661
|
-
* -
|
|
661
|
+
* - Repositório deve existir
|
|
662
662
|
*
|
|
663
|
-
*
|
|
664
|
-
* - Use termos de busca
|
|
663
|
+
* RECOMENDAÇÕES:
|
|
664
|
+
* - Use termos de busca especÃficos
|
|
665
665
|
* - Combine filtros para resultados precisos
|
|
666
|
-
* - Analise
|
|
666
|
+
* - Analise relevância dos resultados
|
|
667
667
|
* - Use para encontrar issues relacionadas
|
|
668
668
|
*/
|
|
669
669
|
async searchIssues(params, provider, owner) {
|
|
670
670
|
try {
|
|
671
671
|
if (!owner) {
|
|
672
|
-
throw new Error('
|
|
672
|
+
throw new Error('é obrigatório');
|
|
673
673
|
}
|
|
674
674
|
if (!params.repo) {
|
|
675
|
-
throw new Error('Repo
|
|
675
|
+
throw new Error('Repo é obrigatório');
|
|
676
676
|
}
|
|
677
677
|
if (!params.query) {
|
|
678
|
-
throw new Error('Query
|
|
678
|
+
throw new Error('Query é obrigatório');
|
|
679
679
|
}
|
|
680
680
|
if (params.query.length < 3) {
|
|
681
681
|
throw new Error('Query deve ter pelo menos 3 caracteres');
|
|
@@ -693,7 +693,7 @@ exports.issuesTool = {
|
|
|
693
693
|
searchResults = allIssues.filter((issue) => issue.title?.toLowerCase().includes(params.query?.toLowerCase() || '') ||
|
|
694
694
|
issue.body?.toLowerCase().includes(params.query?.toLowerCase() || ''));
|
|
695
695
|
}
|
|
696
|
-
// Filtrar resultados por
|
|
696
|
+
// Filtrar resultados por página e limite
|
|
697
697
|
const startIndex = (page - 1) * limit;
|
|
698
698
|
const endIndex = startIndex + limit;
|
|
699
699
|
const paginatedResults = searchResults.slice(startIndex, endIndex);
|
|
@@ -737,6 +737,19 @@ exports.issuesTool = {
|
|
|
737
737
|
catch (error) {
|
|
738
738
|
throw new Error(`Falha ao buscar issues: ${error instanceof Error ? error.message : String(error)}`);
|
|
739
739
|
}
|
|
740
|
+
},
|
|
741
|
+
/**
|
|
742
|
+
* Verifica se erro é relacionado a Git
|
|
743
|
+
*/
|
|
744
|
+
isGitRelatedError(errorMessage) {
|
|
745
|
+
const gitKeywords = [
|
|
746
|
+
'git', 'commit', 'push', 'pull', 'merge', 'conflict', 'branch',
|
|
747
|
+
'remote', 'repository', 'authentication', 'permission', 'unauthorized',
|
|
748
|
+
'divergent', 'non-fast-forward', 'fetch first', 'working tree',
|
|
749
|
+
'uncommitted', 'stash', 'rebase', 'reset', 'checkout'
|
|
750
|
+
];
|
|
751
|
+
const errorLower = errorMessage.toLowerCase();
|
|
752
|
+
return gitKeywords.some(keyword => errorLower.includes(keyword));
|
|
740
753
|
}
|
|
741
754
|
};
|
|
742
755
|
//# sourceMappingURL=git-issues.js.map
|