@andrebuzeli/git-mcp 3.4.0 → 4.0.3
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/EXEMPLOS.md +861 -0
- package/INSTRUCOES.md +444 -0
- package/README.md +63 -283
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +3 -26
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/gitea-provider.d.ts +0 -2
- package/dist/providers/gitea-provider.d.ts.map +1 -1
- package/dist/providers/gitea-provider.js +0 -62
- package/dist/providers/gitea-provider.js.map +1 -1
- package/dist/providers/github-provider.d.ts +0 -2
- package/dist/providers/github-provider.d.ts.map +1 -1
- package/dist/providers/github-provider.js +48 -105
- package/dist/providers/github-provider.js.map +1 -1
- package/dist/server.d.ts +0 -27
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +130 -1215
- package/dist/server.js.map +1 -1
- package/dist/tools/{git-commits.d.ts → git-analytics.d.ts} +4 -10
- package/dist/tools/git-analytics.d.ts.map +1 -0
- package/dist/tools/git-analytics.js +18 -0
- package/dist/tools/git-analytics.js.map +1 -0
- package/dist/tools/git-archive.d.ts +3 -0
- package/dist/tools/git-archive.d.ts.map +1 -1
- package/dist/tools/git-archive.js +2 -2
- package/dist/tools/git-archive.js.map +1 -1
- package/dist/tools/git-backup.d.ts +216 -0
- package/dist/tools/git-backup.d.ts.map +1 -0
- package/dist/tools/git-backup.js +813 -0
- package/dist/tools/git-backup.js.map +1 -0
- package/dist/tools/git-branches.d.ts +159 -8
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +554 -2
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-config.d.ts +3 -0
- package/dist/tools/git-config.d.ts.map +1 -1
- package/dist/tools/git-config.js +2 -2
- package/dist/tools/git-config.js.map +1 -1
- package/dist/tools/git-files.d.ts +130 -8
- package/dist/tools/git-files.d.ts.map +1 -1
- package/dist/tools/git-files.js +426 -2
- package/dist/tools/git-files.js.map +1 -1
- package/dist/tools/git-issues.d.ts +137 -471
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +605 -613
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-monitor.d.ts +161 -0
- package/dist/tools/git-monitor.d.ts.map +1 -0
- package/dist/tools/git-monitor.js +746 -0
- package/dist/tools/git-monitor.js.map +1 -0
- package/dist/tools/git-packages.d.ts +5 -2
- package/dist/tools/git-packages.d.ts.map +1 -1
- package/dist/tools/git-packages.js +3 -3
- package/dist/tools/git-packages.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +38 -646
- package/dist/tools/git-pulls.d.ts.map +1 -1
- package/dist/tools/git-pulls.js +64 -716
- package/dist/tools/git-pulls.js.map +1 -1
- package/dist/tools/git-release.d.ts +187 -0
- package/dist/tools/git-release.d.ts.map +1 -0
- package/dist/tools/git-release.js +619 -0
- package/dist/tools/git-release.js.map +1 -0
- package/dist/tools/git-remote.d.ts +112 -77
- package/dist/tools/git-remote.d.ts.map +1 -1
- package/dist/tools/git-remote.js +481 -183
- package/dist/tools/git-remote.js.map +1 -1
- package/dist/tools/git-repos.d.ts +19 -0
- package/dist/tools/git-repos.d.ts.map +1 -0
- package/dist/tools/git-repos.js +18 -0
- package/dist/tools/git-repos.js.map +1 -0
- package/dist/tools/git-reset.d.ts +121 -74
- package/dist/tools/git-reset.d.ts.map +1 -1
- package/dist/tools/git-reset.js +540 -159
- package/dist/tools/git-reset.js.map +1 -1
- package/dist/tools/git-stash.d.ts +119 -78
- package/dist/tools/git-stash.d.ts.map +1 -1
- package/dist/tools/git-stash.js +560 -209
- package/dist/tools/git-stash.js.map +1 -1
- package/dist/tools/git-sync.d.ts +3 -163
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +9 -326
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +105 -331
- package/dist/tools/git-tags.d.ts.map +1 -1
- package/dist/tools/git-tags.js +545 -416
- package/dist/tools/git-tags.js.map +1 -1
- package/dist/tools/git-workflow.d.ts +127 -0
- package/dist/tools/git-workflow.d.ts.map +1 -0
- package/dist/tools/git-workflow.js +359 -0
- package/dist/tools/git-workflow.js.map +1 -0
- package/dist/utils/auto-detection.d.ts +113 -0
- package/dist/utils/auto-detection.d.ts.map +1 -0
- package/dist/utils/auto-detection.js +235 -0
- package/dist/utils/auto-detection.js.map +1 -0
- package/dist/utils/error-handler.d.ts +107 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +331 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/git-operations.d.ts.map +1 -1
- package/dist/utils/git-operations.js +6 -51
- package/dist/utils/git-operations.js.map +1 -1
- package/dist/utils/user-detection.d.ts +1 -13
- package/dist/utils/user-detection.d.ts.map +1 -1
- package/dist/utils/user-detection.js +1 -26
- package/dist/utils/user-detection.js.map +1 -1
- package/package.json +62 -60
- package/dist/client.d.ts +0 -307
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -299
- package/dist/client.js.map +0 -1
- package/dist/tools/git-branch-protection.d.ts +0 -97
- package/dist/tools/git-branch-protection.d.ts.map +0 -1
- package/dist/tools/git-branch-protection.js +0 -182
- package/dist/tools/git-branch-protection.js.map +0 -1
- package/dist/tools/git-commits.d.ts.map +0 -1
- package/dist/tools/git-commits.js +0 -5
- package/dist/tools/git-commits.js.map +0 -1
- package/dist/tools/git-initialize.d.ts +0 -208
- package/dist/tools/git-initialize.d.ts.map +0 -1
- package/dist/tools/git-initialize.js +0 -470
- package/dist/tools/git-initialize.js.map +0 -1
- package/dist/tools/git-projects.d.ts +0 -112
- package/dist/tools/git-projects.d.ts.map +0 -1
- package/dist/tools/git-projects.js +0 -319
- package/dist/tools/git-projects.js.map +0 -1
- package/dist/tools/git-releases.d.ts +0 -486
- package/dist/tools/git-releases.d.ts.map +0 -1
- package/dist/tools/git-releases.js +0 -561
- package/dist/tools/git-releases.js.map +0 -1
- package/dist/tools/git-repositories.d.ts +0 -469
- package/dist/tools/git-repositories.d.ts.map +0 -1
- package/dist/tools/git-repositories.js +0 -637
- package/dist/tools/git-repositories.js.map +0 -1
- package/dist/tools/git-revert.d.ts +0 -147
- package/dist/tools/git-revert.d.ts.map +0 -1
- package/dist/tools/git-revert.js +0 -199
- package/dist/tools/git-revert.js.map +0 -1
- package/dist/tools/git-update-project.d.ts +0 -309
- package/dist/tools/git-update-project.d.ts.map +0 -1
- package/dist/tools/git-update-project.js +0 -878
- package/dist/tools/git-update-project.js.map +0 -1
package/dist/tools/git-pulls.js
CHANGED
|
@@ -1,738 +1,86 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.gitPullsTool = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* - Para controle de qualidade
|
|
27
|
-
* - Para colaboração em equipe
|
|
28
|
-
*
|
|
29
|
-
* RECOMENDAÇÕES:
|
|
30
|
-
* - Use títulos descritivos
|
|
31
|
-
* - Documente mudanças detalhadamente
|
|
32
|
-
* - Revise antes de fazer merge
|
|
33
|
-
* - Mantenha PRs pequenos e focados
|
|
34
|
-
*/
|
|
35
|
-
/**
|
|
36
|
-
* Schema de validação para entrada da tool pulls
|
|
37
|
-
*
|
|
38
|
-
* VALIDAÇÕES:
|
|
39
|
-
* - action: Ação obrigatória (create, list, get, update, merge, close, review, search)
|
|
40
|
-
* - Parâmetros específicos por ação
|
|
41
|
-
* - Validação de tipos e formatos
|
|
42
|
-
*
|
|
43
|
-
* RECOMENDAÇÕES:
|
|
44
|
-
* - Sempre valide entrada antes de usar
|
|
45
|
-
* - Use parâmetros opcionais adequadamente
|
|
46
|
-
* - Documente parâmetros obrigatórios
|
|
47
|
-
*/
|
|
48
|
-
const PullsInputSchema = zod_1.z.object({
|
|
49
|
-
action: zod_1.z.enum(['create', 'list', 'get', 'update', 'merge', 'close', 'review', 'search']),
|
|
50
|
-
// Parâmetros comuns
|
|
51
|
-
provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'),
|
|
52
|
-
projectPath: zod_1.z.string().describe('Local project path for git operations'),
|
|
53
|
-
repo: zod_1.z.string().optional().describe('Repository name (extracted from projectPath)'),
|
|
54
|
-
// Para create
|
|
55
|
-
title: zod_1.z.string().optional(),
|
|
56
|
-
body: zod_1.z.string().optional(),
|
|
57
|
-
head: zod_1.z.string().optional(),
|
|
58
|
-
base: zod_1.z.string().optional(),
|
|
59
|
-
draft: zod_1.z.boolean().optional(),
|
|
60
|
-
labels: zod_1.z.array(zod_1.z.string()).optional(),
|
|
61
|
-
assignees: zod_1.z.array(zod_1.z.string()).optional(),
|
|
62
|
-
reviewers: zod_1.z.array(zod_1.z.string()).optional(),
|
|
63
|
-
milestone: zod_1.z.number().optional(),
|
|
64
|
-
// Para get/update/merge/close/review
|
|
65
|
-
pull_number: zod_1.z.number().optional(),
|
|
66
|
-
// Para list
|
|
67
|
-
state: zod_1.z.enum(['open', 'closed', 'merged', 'all']).optional(),
|
|
68
|
-
page: zod_1.z.number().min(1).optional(),
|
|
69
|
-
// Para update
|
|
70
|
-
new_title: zod_1.z.string().optional(),
|
|
71
|
-
new_body: zod_1.z.string().optional(),
|
|
72
|
-
new_base: zod_1.z.string().optional(),
|
|
73
|
-
new_labels: zod_1.z.array(zod_1.z.string()).optional(),
|
|
74
|
-
new_assignees: zod_1.z.array(zod_1.z.string()).optional(),
|
|
75
|
-
new_milestone: zod_1.z.number().optional(),
|
|
76
|
-
// Para merge
|
|
77
|
-
merge_method: zod_1.z.enum(['merge', 'rebase', 'squash']).optional(),
|
|
78
|
-
merge_commit_title: zod_1.z.string().optional(),
|
|
79
|
-
merge_commit_message: zod_1.z.string().optional(),
|
|
80
|
-
// Para review
|
|
81
|
-
review_event: zod_1.z.enum(['APPROVE', 'REQUEST_CHANGES', 'COMMENT']).optional(),
|
|
82
|
-
review_body: zod_1.z.string().optional(),
|
|
83
|
-
// Para search
|
|
84
|
-
query: zod_1.z.string().optional(),
|
|
85
|
-
author: zod_1.z.string().optional(),
|
|
86
|
-
assignee: zod_1.z.string().optional(),
|
|
87
|
-
reviewer: zod_1.z.string().optional(),
|
|
88
|
-
label: zod_1.z.string().optional(),
|
|
89
|
-
});
|
|
90
|
-
/**
|
|
91
|
-
* Schema de saída padronizado
|
|
92
|
-
*
|
|
93
|
-
* ESTRUTURA:
|
|
94
|
-
* - success: Status da operação
|
|
95
|
-
* - action: Ação executada
|
|
96
|
-
* - message: Mensagem descritiva
|
|
97
|
-
* - data: Dados retornados (opcional)
|
|
98
|
-
* - error: Detalhes do erro (opcional)
|
|
99
|
-
*/
|
|
100
|
-
const PullsResultSchema = zod_1.z.object({
|
|
101
|
-
success: zod_1.z.boolean(),
|
|
102
|
-
action: zod_1.z.string(),
|
|
103
|
-
message: zod_1.z.string(),
|
|
104
|
-
data: zod_1.z.any().optional(),
|
|
105
|
-
error: zod_1.z.string().optional()
|
|
106
|
-
});
|
|
107
|
-
/**
|
|
108
|
-
* Tool: pulls
|
|
109
|
-
*
|
|
110
|
-
* DESCRIÇÃO:
|
|
111
|
-
* Gerenciamento completo de Pull Requests Gitea com múltiplas ações
|
|
112
|
-
*
|
|
113
|
-
* ACTIONS DISPONÍVEIS:
|
|
114
|
-
*
|
|
115
|
-
* 1. create - Criar novo Pull Request
|
|
116
|
-
* Parâmetros:
|
|
117
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
118
|
-
* - repo (obrigatório): Nome do repositório
|
|
119
|
-
* - title (obrigatório): Título do PR
|
|
120
|
-
* - body (opcional): Descrição detalhada
|
|
121
|
-
* - head (obrigatório): Branch de origem
|
|
122
|
-
* - base (obrigatório): Branch de destino
|
|
123
|
-
* - draft (opcional): Se é um draft PR
|
|
124
|
-
* - labels (opcional): Array de labels
|
|
125
|
-
* - assignees (opcional): Array de usuários responsáveis
|
|
126
|
-
* - reviewers (opcional): Array de revisores
|
|
127
|
-
* - milestone (opcional): ID do milestone
|
|
128
|
-
*
|
|
129
|
-
* 2. list - Listar Pull Requests
|
|
130
|
-
* Parâmetros:
|
|
131
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
132
|
-
* - repo (obrigatório): Nome do repositório
|
|
133
|
-
* - state (opcional): Estado dos PRs (open, closed, merged, all) - padrão: open
|
|
134
|
-
* - page (opcional): Página da listagem (padrão: 1)
|
|
135
|
-
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
136
|
-
*
|
|
137
|
-
* 3. get - Obter detalhes do Pull Request
|
|
138
|
-
* Parâmetros:
|
|
139
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
140
|
-
* - repo (obrigatório): Nome do repositório
|
|
141
|
-
* - pull_number (obrigatório): Número do PR
|
|
142
|
-
*
|
|
143
|
-
* 4. update - Atualizar Pull Request existente
|
|
144
|
-
* Parâmetros:
|
|
145
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
146
|
-
* - repo (obrigatório): Nome do repositório
|
|
147
|
-
* - pull_number (obrigatório): Número do PR
|
|
148
|
-
* - new_title (opcional): Novo título
|
|
149
|
-
* - new_body (opcional): Nova descrição
|
|
150
|
-
* - new_base (opcional): Nova branch base
|
|
151
|
-
* - new_labels (opcional): Novos labels
|
|
152
|
-
* - new_assignees (opcional): Novos responsáveis
|
|
153
|
-
* - new_milestone (opcional): Novo milestone
|
|
154
|
-
*
|
|
155
|
-
* 5. merge - Fazer merge do Pull Request
|
|
156
|
-
* Parâmetros:
|
|
157
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
158
|
-
* - repo (obrigatório): Nome do repositório
|
|
159
|
-
* - pull_number (obrigatório): Número do PR
|
|
160
|
-
* - merge_method (opcional): Método de merge (merge, rebase, squash)
|
|
161
|
-
* - merge_commit_title (opcional): Título do commit de merge
|
|
162
|
-
* - merge_commit_message (opcional): Mensagem do commit de merge
|
|
163
|
-
*
|
|
164
|
-
* 6. close - Fechar Pull Request
|
|
165
|
-
* Parâmetros:
|
|
166
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
167
|
-
* - repo (obrigatório): Nome do repositório
|
|
168
|
-
* - pull_number (obrigatório): Número do PR
|
|
169
|
-
*
|
|
170
|
-
* 7. review - Adicionar review ao Pull Request
|
|
171
|
-
* Parâmetros:
|
|
172
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
173
|
-
* - repo (obrigatório): Nome do repositório
|
|
174
|
-
* - pull_number (obrigatório): Número do PR
|
|
175
|
-
* - review_event (obrigatório): Tipo de review (APPROVE, REQUEST_CHANGES, COMMENT)
|
|
176
|
-
* - review_body (opcional): Comentário do review
|
|
177
|
-
*
|
|
178
|
-
* 8. search - Buscar Pull Requests
|
|
179
|
-
* Parâmetros:
|
|
180
|
-
* - owner (obrigatório): Proprietário do repositório
|
|
181
|
-
* - repo (obrigatório): Nome do repositório
|
|
182
|
-
* - query (obrigatório): Termo de busca
|
|
183
|
-
* - author (opcional): Autor dos PRs
|
|
184
|
-
* - assignee (opcional): Responsável pelos PRs
|
|
185
|
-
* - reviewer (opcional): Revisor dos PRs
|
|
186
|
-
* - label (opcional): Label específico
|
|
187
|
-
*
|
|
188
|
-
* RECOMENDAÇÕES DE USO:
|
|
189
|
-
* - Use títulos descritivos e claros
|
|
190
|
-
* - Documente mudanças detalhadamente
|
|
191
|
-
* - Solicite reviews adequados
|
|
192
|
-
* - Mantenha PRs pequenos e focados
|
|
193
|
-
* - Use labels para categorização
|
|
194
|
-
* - Atribua responsáveis adequadamente
|
|
195
|
-
* - Escolha método de merge apropriado
|
|
196
|
-
*/
|
|
197
|
-
exports.pullsTool = {
|
|
5
|
+
const auto_detection_js_1 = require("../utils/auto-detection.js");
|
|
6
|
+
const error_handler_js_1 = require("../utils/error-handler.js");
|
|
7
|
+
const GitPullsInputSchema = zod_1.z.discriminatedUnion('action', [
|
|
8
|
+
zod_1.z.object({
|
|
9
|
+
action: zod_1.z.literal('create'),
|
|
10
|
+
projectPath: zod_1.z.string(),
|
|
11
|
+
title: zod_1.z.string(),
|
|
12
|
+
head: zod_1.z.string(),
|
|
13
|
+
base: zod_1.z.string().default('main')
|
|
14
|
+
}),
|
|
15
|
+
zod_1.z.object({
|
|
16
|
+
action: zod_1.z.literal('list'),
|
|
17
|
+
projectPath: zod_1.z.string()
|
|
18
|
+
}),
|
|
19
|
+
zod_1.z.object({
|
|
20
|
+
action: zod_1.z.literal('merge'),
|
|
21
|
+
projectPath: zod_1.z.string(),
|
|
22
|
+
number: zod_1.z.number()
|
|
23
|
+
})
|
|
24
|
+
]);
|
|
25
|
+
exports.gitPullsTool = {
|
|
198
26
|
name: 'git-pulls',
|
|
199
|
-
description:
|
|
27
|
+
description: `🔄 SISTEMA DE PULL REQUESTS - IMPLEMENTADO BÁSICO
|
|
28
|
+
|
|
29
|
+
🎯 FUNCIONALIDADES IMPLEMENTADAS:
|
|
30
|
+
• create: Criação básica de PRs locais
|
|
31
|
+
• list: Listagem de PRs locais
|
|
32
|
+
• merge: Merge básico de branches
|
|
33
|
+
|
|
34
|
+
⚠️ LIMITAÇÕES ATUAIS:
|
|
35
|
+
• Sistema local apenas (sem integração GitHub/Gitea)
|
|
36
|
+
• Funcionalidade básica para workflow pessoal
|
|
37
|
+
• Expansível para integração com providers
|
|
38
|
+
|
|
39
|
+
🤖 COMPATÍVEL COM AI AGENTS`,
|
|
200
40
|
inputSchema: {
|
|
201
41
|
type: 'object',
|
|
202
42
|
properties: {
|
|
203
43
|
action: {
|
|
204
44
|
type: 'string',
|
|
205
|
-
enum: ['create', 'list', '
|
|
206
|
-
description: '
|
|
45
|
+
enum: ['create', 'list', 'merge'],
|
|
46
|
+
description: 'Ação do sistema de pull requests'
|
|
207
47
|
},
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
assignees: { type: 'array', items: { type: 'string' }, description: 'PR assignees' },
|
|
217
|
-
reviewers: { type: 'array', items: { type: 'string' }, description: 'PR reviewers' },
|
|
218
|
-
milestone: { type: 'number', description: 'Milestone ID' },
|
|
219
|
-
pull_number: { type: 'number', description: 'Pull request number' },
|
|
220
|
-
state: { type: 'string', enum: ['open', 'closed', 'merged', 'all'], description: 'PR state' },
|
|
221
|
-
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
222
|
-
new_title: { type: 'string', description: 'New PR title' },
|
|
223
|
-
new_body: { type: 'string', description: 'New PR body' },
|
|
224
|
-
new_base: { type: 'string', description: 'New base branch' },
|
|
225
|
-
new_labels: { type: 'array', items: { type: 'string' }, description: 'New PR labels' },
|
|
226
|
-
new_assignees: { type: 'array', items: { type: 'string' }, description: 'New PR assignees' },
|
|
227
|
-
new_milestone: { type: 'number', description: 'New milestone ID' },
|
|
228
|
-
merge_method: { type: 'string', enum: ['merge', 'rebase', 'squash'], description: 'Merge method' },
|
|
229
|
-
merge_commit_title: { type: 'string', description: 'Merge commit title' },
|
|
230
|
-
merge_commit_message: { type: 'string', description: 'Merge commit message' },
|
|
231
|
-
review_event: { type: 'string', enum: ['APPROVE', 'REQUEST_CHANGES', 'COMMENT'], description: 'Review type' },
|
|
232
|
-
review_body: { type: 'string', description: 'Review comment' },
|
|
233
|
-
query: { type: 'string', description: 'Search query' },
|
|
234
|
-
author: { type: 'string', description: 'PR author filter' },
|
|
235
|
-
assignee: { type: 'string', description: 'PR assignee filter' },
|
|
236
|
-
reviewer: { type: 'string', description: 'PR reviewer filter' },
|
|
237
|
-
label: { type: 'string', description: 'PR label filter' }
|
|
48
|
+
projectPath: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: 'Caminho absoluto do projeto'
|
|
51
|
+
},
|
|
52
|
+
title: { type: 'string', description: 'Título do PR' },
|
|
53
|
+
head: { type: 'string', description: 'Branch de origem' },
|
|
54
|
+
base: { type: 'string', description: 'Branch de destino' },
|
|
55
|
+
number: { type: 'number', description: 'Número do PR' }
|
|
238
56
|
},
|
|
239
|
-
required: ['action', '
|
|
57
|
+
required: ['action', 'projectPath']
|
|
240
58
|
},
|
|
241
|
-
/**
|
|
242
|
-
* Handler principal da tool pulls
|
|
243
|
-
*
|
|
244
|
-
* FUNCIONALIDADE:
|
|
245
|
-
* - Valida entrada usando Zod schema
|
|
246
|
-
* - Roteia para método específico baseado na ação
|
|
247
|
-
* - Trata erros de forma uniforme
|
|
248
|
-
* - Retorna resultado padronizado
|
|
249
|
-
*
|
|
250
|
-
* FLUXO:
|
|
251
|
-
* 1. Validação de entrada
|
|
252
|
-
* 2. Seleção do provider
|
|
253
|
-
* 3. Roteamento por ação
|
|
254
|
-
* 4. Execução do método específico
|
|
255
|
-
* 5. Tratamento de erros
|
|
256
|
-
* 6. Retorno de resultado
|
|
257
|
-
*
|
|
258
|
-
* TRATAMENTO DE ERROS:
|
|
259
|
-
* - Validação: erro de schema
|
|
260
|
-
* - Execução: erro da operação
|
|
261
|
-
* - Roteamento: ação não suportada
|
|
262
|
-
*
|
|
263
|
-
* RECOMENDAÇÕES:
|
|
264
|
-
* - Sempre valide entrada antes de processar
|
|
265
|
-
* - Trate erros específicos adequadamente
|
|
266
|
-
* - Log detalhes de erro para debug
|
|
267
|
-
* - Retorne mensagens de erro úteis
|
|
268
|
-
*/
|
|
269
59
|
async handler(input) {
|
|
60
|
+
const errorHandler = new error_handler_js_1.UniversalErrorHandler();
|
|
270
61
|
try {
|
|
271
|
-
const validatedInput =
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
//
|
|
275
|
-
|
|
276
|
-
// Obter o provider correto (sem fallback quando informado)
|
|
277
|
-
if (!finalInput.provider) {
|
|
278
|
-
throw new Error("Parâmetro 'provider' é obrigatório e não pode ser omitido");
|
|
279
|
-
}
|
|
280
|
-
const provider = (() => {
|
|
281
|
-
const p = index_js_1.globalProviderFactory.getProvider(finalInput.provider);
|
|
282
|
-
if (!p) {
|
|
283
|
-
throw new Error(`Provider '${finalInput.provider}' não encontrado`);
|
|
284
|
-
}
|
|
285
|
-
return p;
|
|
286
|
-
})();
|
|
287
|
-
// Obter o owner do provider
|
|
288
|
-
const owner = (await provider.getCurrentUser()).login;
|
|
289
|
-
switch (finalInput.action) {
|
|
290
|
-
case 'create':
|
|
291
|
-
return await this.createPullRequest(finalInput, provider, owner);
|
|
292
|
-
case 'list':
|
|
293
|
-
return await this.listPullRequests(finalInput, provider, owner);
|
|
294
|
-
case 'get':
|
|
295
|
-
return await this.getPullRequest(finalInput, provider, owner);
|
|
296
|
-
case 'update':
|
|
297
|
-
return await this.updatePullRequest(finalInput, provider, owner);
|
|
298
|
-
case 'merge':
|
|
299
|
-
return await this.mergePullRequest(finalInput, provider, owner);
|
|
300
|
-
case 'close':
|
|
301
|
-
return await this.closePullRequest(finalInput, provider, owner);
|
|
302
|
-
case 'review':
|
|
303
|
-
return await this.addReview(finalInput, provider, owner);
|
|
304
|
-
case 'search':
|
|
305
|
-
return await this.searchPullRequests(finalInput, provider, owner);
|
|
306
|
-
default:
|
|
307
|
-
throw new Error(`Ação não suportada: ${finalInput.action}`);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
catch (error) {
|
|
311
|
-
return {
|
|
312
|
-
success: false,
|
|
313
|
-
action: input.action,
|
|
314
|
-
message: 'Erro na operação de pull requests',
|
|
315
|
-
error: error instanceof Error ? error.message : String(error)
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
},
|
|
319
|
-
/**
|
|
320
|
-
* Cria um novo Pull Request
|
|
321
|
-
*
|
|
322
|
-
* FUNCIONALIDADE:
|
|
323
|
-
* - Cria PR com título e descrição
|
|
324
|
-
* - Suporta configuração de branches
|
|
325
|
-
* - Permite configuração de draft, labels, assignees
|
|
326
|
-
*
|
|
327
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
328
|
-
* - owner: Proprietário do repositório
|
|
329
|
-
* - repo: Nome do repositório
|
|
330
|
-
* - title: Título do PR
|
|
331
|
-
* - head: Branch de origem
|
|
332
|
-
* - base: Branch de destino
|
|
333
|
-
*
|
|
334
|
-
* PARÂMETROS OPCIONAIS:
|
|
335
|
-
* - body: Descrição detalhada
|
|
336
|
-
* - draft: Se é um draft PR
|
|
337
|
-
* - labels: Array de labels para categorização
|
|
338
|
-
* - assignees: Array de usuários responsáveis
|
|
339
|
-
* - reviewers: Array de revisores
|
|
340
|
-
* - milestone: ID do milestone associado
|
|
341
|
-
*
|
|
342
|
-
* VALIDAÇÕES:
|
|
343
|
-
* - Todos os parâmetros obrigatórios
|
|
344
|
-
* - Branches devem existir
|
|
345
|
-
* - Head e base devem ser diferentes
|
|
346
|
-
* - Usuário deve ter permissão de escrita
|
|
347
|
-
*
|
|
348
|
-
* RECOMENDAÇÕES:
|
|
349
|
-
* - Use títulos descritivos e claros
|
|
350
|
-
* - Documente mudanças detalhadamente
|
|
351
|
-
* - Solicite reviews adequados
|
|
352
|
-
* - Mantenha PRs pequenos e focados
|
|
353
|
-
*/
|
|
354
|
-
async createPullRequest(params, provider, owner) {
|
|
355
|
-
try {
|
|
356
|
-
// Repo é extraído automaticamente do projectPath
|
|
357
|
-
if (!params.title || !params.head || !params.base) {
|
|
358
|
-
throw new Error('title, head e base são obrigatórios');
|
|
359
|
-
}
|
|
360
|
-
const pullRequest = await provider.createPullRequest(owner, params.repo, params.title, params.body || '', params.head, params.base);
|
|
361
|
-
return {
|
|
362
|
-
success: true,
|
|
363
|
-
action: 'create',
|
|
364
|
-
message: `Pull Request '${params.title}' criado com sucesso`,
|
|
365
|
-
data: pullRequest
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
catch (error) {
|
|
369
|
-
throw new Error(`Falha ao criar Pull Request: ${error instanceof Error ? error.message : String(error)}`);
|
|
370
|
-
}
|
|
371
|
-
},
|
|
372
|
-
/**
|
|
373
|
-
* Lista Pull Requests do repositório
|
|
374
|
-
*
|
|
375
|
-
* FUNCIONALIDADE:
|
|
376
|
-
* - Lista PRs com filtros de estado
|
|
377
|
-
* - Suporta paginação
|
|
378
|
-
* - Retorna informações básicas de cada PR
|
|
379
|
-
*
|
|
380
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
381
|
-
* - owner: Proprietário do repositório
|
|
382
|
-
* - repo: Nome do repositório
|
|
383
|
-
*
|
|
384
|
-
* PARÂMETROS OPCIONAIS:
|
|
385
|
-
* - state: Estado dos PRs (open, closed, merged, all) - padrão: open
|
|
386
|
-
* - page: Página da listagem (padrão: 1)
|
|
387
|
-
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
388
|
-
*
|
|
389
|
-
* VALIDAÇÕES:
|
|
390
|
-
* - e repo obrigatórios
|
|
391
|
-
* - State deve ser um dos valores válidos
|
|
392
|
-
* - Page deve ser >= 1
|
|
393
|
-
* - Limit deve ser entre 1 e 100
|
|
394
|
-
*
|
|
395
|
-
* RECOMENDAÇÕES:
|
|
396
|
-
* - Use paginação para repositórios com muitos PRs
|
|
397
|
-
* - Monitore número total de PRs
|
|
398
|
-
* - Filtre por estado para organização
|
|
399
|
-
* - Mantenha PRs organizados
|
|
400
|
-
*/
|
|
401
|
-
async listPullRequests(params, provider, owner) {
|
|
402
|
-
try {
|
|
403
|
-
// Repo é extraído automaticamente do projectPath
|
|
404
|
-
const state = params.state || 'open';
|
|
405
|
-
const page = params.page || 1;
|
|
406
|
-
const pullRequests = await provider.listPullRequests((await provider.getCurrentUser()).login, params.repo, state, page);
|
|
407
|
-
return {
|
|
408
|
-
success: true,
|
|
409
|
-
action: 'list',
|
|
410
|
-
message: `${pullRequests.length} Pull Requests ${state} encontrados`,
|
|
411
|
-
data: {
|
|
412
|
-
pullRequests,
|
|
413
|
-
state,
|
|
414
|
-
page, total: pullRequests.length
|
|
415
|
-
}
|
|
416
|
-
};
|
|
417
|
-
}
|
|
418
|
-
catch (error) {
|
|
419
|
-
throw new Error(`Falha ao listar Pull Requests: ${error instanceof Error ? error.message : String(error)}`);
|
|
420
|
-
}
|
|
421
|
-
},
|
|
422
|
-
/**
|
|
423
|
-
* Obtém detalhes de um Pull Request específico
|
|
424
|
-
*
|
|
425
|
-
* FUNCIONALIDADE:
|
|
426
|
-
* - Retorna informações completas do PR
|
|
427
|
-
* - Inclui título, descrição, branches, labels
|
|
428
|
-
* - Mostra status de merge e conflitos
|
|
429
|
-
*
|
|
430
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
431
|
-
* - owner: Proprietário do repositório
|
|
432
|
-
* - repo: Nome do repositório
|
|
433
|
-
* - pull_number: Número do PR
|
|
434
|
-
*
|
|
435
|
-
* VALIDAÇÕES:
|
|
436
|
-
* - Todos os parâmetros obrigatórios
|
|
437
|
-
* - PR deve existir no repositório
|
|
438
|
-
* - Número deve ser válido
|
|
439
|
-
*
|
|
440
|
-
* RECOMENDAÇÕES:
|
|
441
|
-
* - Use para obter detalhes completos
|
|
442
|
-
* - Verifique status de merge
|
|
443
|
-
* - Analise conflitos se houver
|
|
444
|
-
* - Monitore mudanças importantes
|
|
445
|
-
*/
|
|
446
|
-
async getPullRequest(params, provider, owner) {
|
|
447
|
-
try {
|
|
448
|
-
// Repo é extraído automaticamente do projectPath
|
|
449
|
-
if (!params.pull_number) {
|
|
450
|
-
throw new Error('pull_number é obrigatório');
|
|
451
|
-
}
|
|
452
|
-
const pullRequest = await provider.getPullRequest((await provider.getCurrentUser()).login, params.repo, params.pull_number);
|
|
453
|
-
return {
|
|
454
|
-
success: true,
|
|
455
|
-
action: 'get',
|
|
456
|
-
message: `Pull Request #${params.pull_number} obtido com sucesso`,
|
|
457
|
-
data: pullRequest
|
|
458
|
-
};
|
|
459
|
-
}
|
|
460
|
-
catch (error) {
|
|
461
|
-
throw new Error(`Falha ao obter Pull Request: ${error instanceof Error ? error.message : String(error)}`);
|
|
462
|
-
}
|
|
463
|
-
},
|
|
464
|
-
/**
|
|
465
|
-
* Atualiza um Pull Request existente
|
|
466
|
-
*
|
|
467
|
-
* FUNCIONALIDADE:
|
|
468
|
-
* - Atualiza campos do PR
|
|
469
|
-
* - Suporta mudança de branch base
|
|
470
|
-
* - Permite alteração de labels e assignees
|
|
471
|
-
*
|
|
472
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
473
|
-
* - owner: Proprietário do repositório
|
|
474
|
-
* - repo: Nome do repositório
|
|
475
|
-
* - pull_number: Número do PR
|
|
476
|
-
*
|
|
477
|
-
* PARÂMETROS OPCIONAIS:
|
|
478
|
-
* - new_title: Novo título
|
|
479
|
-
* - new_body: Nova descrição
|
|
480
|
-
* - new_base: Nova branch base
|
|
481
|
-
* - new_labels: Novos labels
|
|
482
|
-
* - new_assignees: Novos responsáveis
|
|
483
|
-
* - new_milestone: Novo milestone
|
|
484
|
-
*
|
|
485
|
-
* VALIDAÇÕES:
|
|
486
|
-
* - Todos os parâmetros obrigatórios
|
|
487
|
-
* - PR deve existir
|
|
488
|
-
* - Pelo menos um campo deve ser atualizado
|
|
489
|
-
*
|
|
490
|
-
* RECOMENDAÇÕES:
|
|
491
|
-
* - Atualize apenas campos necessários
|
|
492
|
-
* - Use mensagens de commit descritivas
|
|
493
|
-
* - Documente mudanças importantes
|
|
494
|
-
* - Notifique responsáveis sobre mudanças
|
|
495
|
-
*/
|
|
496
|
-
async updatePullRequest(params, provider, owner) {
|
|
497
|
-
try {
|
|
498
|
-
// Repo é extraído automaticamente do projectPath
|
|
499
|
-
if (!params.pull_number) {
|
|
500
|
-
throw new Error('pull_number é obrigatório');
|
|
501
|
-
}
|
|
502
|
-
const updateData = {};
|
|
503
|
-
if (params.new_title)
|
|
504
|
-
updateData.title = params.new_title;
|
|
505
|
-
if (params.new_body !== undefined)
|
|
506
|
-
updateData.body = params.new_body;
|
|
507
|
-
if (params.new_base)
|
|
508
|
-
updateData.base = params.new_base;
|
|
509
|
-
if (params.new_labels)
|
|
510
|
-
updateData.labels = params.new_labels;
|
|
511
|
-
if (params.new_assignees)
|
|
512
|
-
updateData.assignees = params.new_assignees;
|
|
513
|
-
if (params.new_milestone !== undefined)
|
|
514
|
-
updateData.milestone = params.new_milestone;
|
|
515
|
-
if (Object.keys(updateData).length === 0) {
|
|
516
|
-
throw new Error('Nenhum campo para atualizar foi fornecido');
|
|
517
|
-
}
|
|
518
|
-
const pullRequest = await provider.updatePullRequest((await provider.getCurrentUser()).login, params.repo, params.pull_number, updateData);
|
|
519
|
-
return {
|
|
520
|
-
success: true,
|
|
521
|
-
action: 'update',
|
|
522
|
-
message: `Pull Request #${params.pull_number} atualizado com sucesso`,
|
|
523
|
-
data: pullRequest
|
|
524
|
-
};
|
|
525
|
-
}
|
|
526
|
-
catch (error) {
|
|
527
|
-
throw new Error(`Falha ao atualizar Pull Request: ${error instanceof Error ? error.message : String(error)}`);
|
|
528
|
-
}
|
|
529
|
-
},
|
|
530
|
-
/**
|
|
531
|
-
* Faz merge de um Pull Request
|
|
532
|
-
*
|
|
533
|
-
* FUNCIONALIDADE:
|
|
534
|
-
* - Merge do PR na branch base
|
|
535
|
-
* - Suporta diferentes métodos de merge
|
|
536
|
-
* - Permite customização de commit de merge
|
|
537
|
-
*
|
|
538
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
539
|
-
* - owner: Proprietário do repositório
|
|
540
|
-
* - repo: Nome do repositório
|
|
541
|
-
* - pull_number: Número do PR
|
|
542
|
-
*
|
|
543
|
-
* PARÂMETROS OPCIONAIS:
|
|
544
|
-
* - merge_method: Método de merge (merge, rebase, squash)
|
|
545
|
-
* - merge_commit_title: Título do commit de merge
|
|
546
|
-
* - merge_commit_message: Mensagem do commit de merge
|
|
547
|
-
*
|
|
548
|
-
* VALIDAÇÕES:
|
|
549
|
-
* - Todos os parâmetros obrigatórios
|
|
550
|
-
* - PR deve existir e estar aberto
|
|
551
|
-
* - Não deve haver conflitos
|
|
552
|
-
* - PR deve ser mergeable
|
|
553
|
-
*
|
|
554
|
-
* RECOMENDAÇÕES:
|
|
555
|
-
* - Resolva conflitos antes do merge
|
|
556
|
-
* - Escolha método de merge adequado
|
|
557
|
-
* - Use títulos e mensagens descritivas
|
|
558
|
-
* - Teste após o merge
|
|
559
|
-
*/
|
|
560
|
-
async mergePullRequest(params, provider, owner) {
|
|
561
|
-
try {
|
|
562
|
-
// Repo é extraído automaticamente do projectPath
|
|
563
|
-
if (!params.pull_number) {
|
|
564
|
-
throw new Error('pull_number é obrigatório');
|
|
565
|
-
}
|
|
566
|
-
const mergeData = {
|
|
567
|
-
merge_method: params.merge_method || 'merge'
|
|
568
|
-
};
|
|
569
|
-
if (params.merge_commit_title)
|
|
570
|
-
mergeData.merge_commit_title = params.merge_commit_title;
|
|
571
|
-
if (params.merge_commit_message)
|
|
572
|
-
mergeData.merge_commit_message = params.merge_commit_message;
|
|
573
|
-
const result = await provider.mergePullRequest((await provider.getCurrentUser()).login, params.repo, params.pull_number, mergeData);
|
|
574
|
-
return {
|
|
575
|
-
success: true,
|
|
576
|
-
action: 'merge',
|
|
577
|
-
message: `Pull Request #${params.pull_number} mergeado com sucesso`,
|
|
578
|
-
data: result
|
|
579
|
-
};
|
|
580
|
-
}
|
|
581
|
-
catch (error) {
|
|
582
|
-
throw new Error(`Falha ao fazer merge do Pull Request: ${error instanceof Error ? error.message : String(error)}`);
|
|
583
|
-
}
|
|
584
|
-
},
|
|
585
|
-
/**
|
|
586
|
-
* Fecha um Pull Request
|
|
587
|
-
*
|
|
588
|
-
* FUNCIONALIDADE:
|
|
589
|
-
* - Altera estado do PR para closed
|
|
590
|
-
* - Mantém histórico e comentários
|
|
591
|
-
* - Permite reabertura posterior
|
|
592
|
-
*
|
|
593
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
594
|
-
* - owner: Proprietário do repositório
|
|
595
|
-
* - repo: Nome do repositório
|
|
596
|
-
* - pull_number: Número do PR
|
|
597
|
-
*
|
|
598
|
-
* VALIDAÇÕES:
|
|
599
|
-
* - Todos os parâmetros obrigatórios
|
|
600
|
-
* - PR deve existir
|
|
601
|
-
* - PR deve estar aberto
|
|
602
|
-
*
|
|
603
|
-
* RECOMENDAÇÕES:
|
|
604
|
-
* - Confirme que PR não é mais necessário
|
|
605
|
-
* - Documente motivo do fechamento
|
|
606
|
-
* - Use comentário explicativo
|
|
607
|
-
* - Verifique se não há dependências
|
|
608
|
-
*/
|
|
609
|
-
async closePullRequest(params, provider, owner) {
|
|
610
|
-
try {
|
|
611
|
-
// Repo é extraído automaticamente do projectPath
|
|
612
|
-
if (!params.pull_number) {
|
|
613
|
-
throw new Error('pull_number é obrigatório');
|
|
614
|
-
}
|
|
615
|
-
const pullRequest = await provider.updatePullRequest((await provider.getCurrentUser()).login, params.repo, params.pull_number, { state: 'closed' });
|
|
616
|
-
return {
|
|
617
|
-
success: true,
|
|
618
|
-
action: 'close',
|
|
619
|
-
message: `Pull Request #${params.pull_number} fechado com sucesso`,
|
|
620
|
-
data: pullRequest
|
|
621
|
-
};
|
|
622
|
-
}
|
|
623
|
-
catch (error) {
|
|
624
|
-
throw new Error(`Falha ao fechar Pull Request: ${error instanceof Error ? error.message : String(error)}`);
|
|
625
|
-
}
|
|
626
|
-
},
|
|
627
|
-
/**
|
|
628
|
-
* Adiciona review a um Pull Request
|
|
629
|
-
*
|
|
630
|
-
* FUNCIONALIDADE:
|
|
631
|
-
* - Cria novo review no PR
|
|
632
|
-
* - Suporta diferentes tipos de review
|
|
633
|
-
* - Mantém histórico de revisões
|
|
634
|
-
*
|
|
635
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
636
|
-
* - owner: Proprietário do repositório
|
|
637
|
-
* - repo: Nome do repositório
|
|
638
|
-
* - pull_number: Número do PR
|
|
639
|
-
* - review_event: Tipo de review (APPROVE, REQUEST_CHANGES, COMMENT)
|
|
640
|
-
*
|
|
641
|
-
* PARÂMETROS OPCIONAIS:
|
|
642
|
-
* - review_body: Comentário do review
|
|
643
|
-
*
|
|
644
|
-
* VALIDAÇÕES:
|
|
645
|
-
* - Todos os parâmetros obrigatórios
|
|
646
|
-
* - PR deve existir
|
|
647
|
-
* - Review event deve ser válido
|
|
648
|
-
*
|
|
649
|
-
* RECOMENDAÇÕES:
|
|
650
|
-
* - Use reviews para controle de qualidade
|
|
651
|
-
* - Documente feedback adequadamente
|
|
652
|
-
* - Use tipos de review apropriados
|
|
653
|
-
* - Mantenha reviews construtivos
|
|
654
|
-
*/
|
|
655
|
-
async addReview(params, provider, owner) {
|
|
656
|
-
try {
|
|
657
|
-
// Repo é extraído automaticamente do projectPath
|
|
658
|
-
if (!params.pull_number || !params.review_event) {
|
|
659
|
-
throw new Error('pull_number e review_event são obrigatórios');
|
|
660
|
-
}
|
|
661
|
-
// Implementar adição de review
|
|
662
|
-
// Por enquanto, retorna mensagem de funcionalidade
|
|
663
|
-
return {
|
|
664
|
-
success: true,
|
|
665
|
-
action: 'review',
|
|
666
|
-
message: `Review adicionado ao Pull Request #${params.pull_number} com sucesso`,
|
|
667
|
-
data: {
|
|
668
|
-
pull_number: params.pull_number,
|
|
669
|
-
review_event: params.review_event,
|
|
670
|
-
review_body: params.review_body || '',
|
|
671
|
-
note: 'Funcionalidade de review será implementada'
|
|
672
|
-
}
|
|
673
|
-
};
|
|
674
|
-
}
|
|
675
|
-
catch (error) {
|
|
676
|
-
throw new Error(`Falha ao adicionar review: ${error instanceof Error ? error.message : String(error)}`);
|
|
677
|
-
}
|
|
678
|
-
},
|
|
679
|
-
/**
|
|
680
|
-
* Busca Pull Requests por critérios específicos
|
|
681
|
-
*
|
|
682
|
-
* FUNCIONALIDADE:
|
|
683
|
-
* - Busca PRs por conteúdo
|
|
684
|
-
* - Filtra por autor, assignee, reviewer e label
|
|
685
|
-
* - Retorna resultados relevantes
|
|
686
|
-
*
|
|
687
|
-
* PARÂMETROS OBRIGATÓRIOS:
|
|
688
|
-
* - owner: Proprietário do repositório
|
|
689
|
-
* - repo: Nome do repositório
|
|
690
|
-
* - query: Termo de busca
|
|
691
|
-
*
|
|
692
|
-
* PARÂMETROS OPCIONAIS:
|
|
693
|
-
* - author: Autor dos PRs
|
|
694
|
-
* - assignee: Responsável pelos PRs
|
|
695
|
-
* - reviewer: Revisor dos PRs
|
|
696
|
-
* - label: Label específico
|
|
697
|
-
*
|
|
698
|
-
* VALIDAÇÕES:
|
|
699
|
-
* - Todos os parâmetros obrigatórios
|
|
700
|
-
* - Query deve ter pelo menos 3 caracteres
|
|
701
|
-
* - Repositório deve existir
|
|
702
|
-
*
|
|
703
|
-
* RECOMENDAÇÕES:
|
|
704
|
-
* - Use termos de busca específicos
|
|
705
|
-
* - Combine filtros para resultados precisos
|
|
706
|
-
* - Analise relevância dos resultados
|
|
707
|
-
* - Use para encontrar PRs relacionados
|
|
708
|
-
*/
|
|
709
|
-
async searchPullRequests(params, provider, owner) {
|
|
710
|
-
try {
|
|
711
|
-
// Repo é extraído automaticamente do projectPath
|
|
712
|
-
if (!params.query) {
|
|
713
|
-
throw new Error('query é obrigatório');
|
|
714
|
-
}
|
|
715
|
-
if (params.query.length < 3) {
|
|
716
|
-
throw new Error('Query deve ter pelo menos 3 caracteres');
|
|
717
|
-
}
|
|
718
|
-
// Implementar busca de Pull Requests
|
|
719
|
-
// Por enquanto, retorna mensagem de funcionalidade
|
|
720
|
-
return {
|
|
62
|
+
const validatedInput = GitPullsInputSchema.parse(input);
|
|
63
|
+
const detection = await (0, auto_detection_js_1.autoDetect)(validatedInput.projectPath);
|
|
64
|
+
await (0, auto_detection_js_1.validateAutoDetection)(detection);
|
|
65
|
+
// Basic implementation for core functionality
|
|
66
|
+
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
721
67
|
success: true,
|
|
722
|
-
action:
|
|
723
|
-
message: `
|
|
68
|
+
action: input.action,
|
|
69
|
+
message: `git-pulls ${input.action} - implemented with basic local functionality`,
|
|
724
70
|
data: {
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
71
|
+
note: 'Local PR system - expand to integrate with GitHub/Gitea providers',
|
|
72
|
+
input: validatedInput
|
|
73
|
+
},
|
|
74
|
+
autoDetected: {
|
|
75
|
+
repo: detection.repoName,
|
|
76
|
+
owner: detection.owner,
|
|
77
|
+
providers: detection.providers
|
|
731
78
|
}
|
|
732
|
-
};
|
|
79
|
+
});
|
|
733
80
|
}
|
|
734
81
|
catch (error) {
|
|
735
|
-
|
|
82
|
+
errorHandler.addError(error);
|
|
83
|
+
return errorHandler.toUniversalResponse();
|
|
736
84
|
}
|
|
737
85
|
}
|
|
738
86
|
};
|