@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,634 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.repositoriesTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
const validator_js_1 = require("./validator.js");
|
|
7
|
+
/**
|
|
8
|
+
* Tool: repositories
|
|
9
|
+
*
|
|
10
|
+
* DESCRIÇÃO:
|
|
11
|
+
* Gerenciamento completo de repositórios Gitea com múltiplas ações
|
|
12
|
+
*
|
|
13
|
+
* FUNCIONALIDADES:
|
|
14
|
+
* - Criação de repositórios
|
|
15
|
+
* - Listagem e busca
|
|
16
|
+
* - Atualização e configuração
|
|
17
|
+
* - Fork e clonagem
|
|
18
|
+
* - Exclusão e arquivamento
|
|
19
|
+
*
|
|
20
|
+
* USO:
|
|
21
|
+
* - Para gerenciar repositórios de projetos
|
|
22
|
+
* - Para automatizar criação de repositórios
|
|
23
|
+
* - Para backup e migração
|
|
24
|
+
* - Para organização de código
|
|
25
|
+
*
|
|
26
|
+
* RECOMENDAÇÕES:
|
|
27
|
+
* - Use nomes descritivos para repositórios
|
|
28
|
+
* - Configure visibilidade adequada
|
|
29
|
+
* - Mantenha descrições atualizadas
|
|
30
|
+
* - Use templates quando possível
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Schema de validação para entrada da tool repositories
|
|
34
|
+
*
|
|
35
|
+
* VALIDAÇÕES:
|
|
36
|
+
* - action: Ação obrigatória (create, list, get, update, delete, fork, search)
|
|
37
|
+
* - Parâmetros específicos por ação
|
|
38
|
+
* - Validação de tipos e formatos
|
|
39
|
+
*
|
|
40
|
+
* RECOMENDAÇÕES:
|
|
41
|
+
* - Sempre valide entrada antes de usar
|
|
42
|
+
* - Use parâmetros opcionais adequadamente
|
|
43
|
+
* - Documente parâmetros obrigatórios
|
|
44
|
+
*/
|
|
45
|
+
const RepositoriesInputSchema = zod_1.z.object({
|
|
46
|
+
action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'clone', 'archive', 'transfer', 'template', 'mirror']),
|
|
47
|
+
// Parâmetros comuns
|
|
48
|
+
owner: validator_js_1.CommonSchemas.owner.optional(),
|
|
49
|
+
repo: validator_js_1.CommonSchemas.repo.optional(),
|
|
50
|
+
provider: validator_js_1.CommonSchemas.provider,
|
|
51
|
+
page: validator_js_1.CommonSchemas.page,
|
|
52
|
+
limit: validator_js_1.CommonSchemas.limit,
|
|
53
|
+
// Para create
|
|
54
|
+
name: validator_js_1.CommonSchemas.shortString,
|
|
55
|
+
description: validator_js_1.CommonSchemas.mediumString,
|
|
56
|
+
private: validator_js_1.CommonSchemas.boolean,
|
|
57
|
+
auto_init: validator_js_1.CommonSchemas.boolean,
|
|
58
|
+
gitignores: validator_js_1.CommonSchemas.shortString,
|
|
59
|
+
license: validator_js_1.CommonSchemas.shortString,
|
|
60
|
+
readme: validator_js_1.CommonSchemas.longString,
|
|
61
|
+
default_branch: validator_js_1.CommonSchemas.branch,
|
|
62
|
+
// Para list
|
|
63
|
+
username: validator_js_1.CommonSchemas.shortString,
|
|
64
|
+
// Para update
|
|
65
|
+
new_name: validator_js_1.CommonSchemas.shortString,
|
|
66
|
+
new_description: validator_js_1.CommonSchemas.mediumString,
|
|
67
|
+
new_private: validator_js_1.CommonSchemas.boolean,
|
|
68
|
+
archived: validator_js_1.CommonSchemas.boolean,
|
|
69
|
+
// Para fork
|
|
70
|
+
organization: validator_js_1.CommonSchemas.shortString,
|
|
71
|
+
// Para search
|
|
72
|
+
query: validator_js_1.CommonSchemas.mediumString,
|
|
73
|
+
// Para clone
|
|
74
|
+
clone_url: validator_js_1.CommonSchemas.mediumString,
|
|
75
|
+
local_path: validator_js_1.CommonSchemas.mediumString,
|
|
76
|
+
// Para archive/unarchive
|
|
77
|
+
archive_status: validator_js_1.CommonSchemas.boolean,
|
|
78
|
+
// Para transfer
|
|
79
|
+
new_owner: validator_js_1.CommonSchemas.shortString,
|
|
80
|
+
// Para template
|
|
81
|
+
template_owner: validator_js_1.CommonSchemas.shortString,
|
|
82
|
+
template_repo: validator_js_1.CommonSchemas.shortString,
|
|
83
|
+
include_all_branches: validator_js_1.CommonSchemas.boolean,
|
|
84
|
+
// Para mirror
|
|
85
|
+
mirror_url: validator_js_1.CommonSchemas.mediumString,
|
|
86
|
+
mirror_username: validator_js_1.CommonSchemas.shortString,
|
|
87
|
+
mirror_password: validator_js_1.CommonSchemas.shortString,
|
|
88
|
+
}).refine((data) => {
|
|
89
|
+
// Validações customizadas
|
|
90
|
+
if (data.action === 'create' && !data.name) {
|
|
91
|
+
throw new Error('Name is required for create action');
|
|
92
|
+
}
|
|
93
|
+
if (['get', 'update', 'delete', 'fork', 'archive', 'transfer'].includes(data.action)) {
|
|
94
|
+
if (!data.owner || !data.repo) {
|
|
95
|
+
throw new Error('Owner and repo are required for this action');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (data.action === 'list' && !data.username && !data.owner) {
|
|
99
|
+
throw new Error('Username or owner is required for list action');
|
|
100
|
+
}
|
|
101
|
+
if (data.action === 'search' && !data.query) {
|
|
102
|
+
throw new Error('Query is required for search action');
|
|
103
|
+
}
|
|
104
|
+
if (data.action === 'template' && (!data.template_owner || !data.template_repo)) {
|
|
105
|
+
throw new Error('Template owner and repo are required for template action');
|
|
106
|
+
}
|
|
107
|
+
if (data.action === 'clone' && !data.clone_url) {
|
|
108
|
+
throw new Error('Clone URL is required for clone action');
|
|
109
|
+
}
|
|
110
|
+
if (data.action === 'mirror' && !data.mirror_url) {
|
|
111
|
+
throw new Error('Mirror URL is required for mirror action');
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
});
|
|
115
|
+
// Schema de saída
|
|
116
|
+
const RepositoriesResultSchema = zod_1.z.object({
|
|
117
|
+
success: zod_1.z.boolean(),
|
|
118
|
+
action: zod_1.z.string(),
|
|
119
|
+
message: zod_1.z.string(),
|
|
120
|
+
data: zod_1.z.any().optional(),
|
|
121
|
+
error: zod_1.z.string().optional()
|
|
122
|
+
});
|
|
123
|
+
/**
|
|
124
|
+
* Tool: repositories
|
|
125
|
+
*
|
|
126
|
+
* DESCRIÇÃO:
|
|
127
|
+
* Gerenciamento completo de repositórios Gitea com múltiplas ações
|
|
128
|
+
*
|
|
129
|
+
* ACTIONS DISPONÍVEIS:
|
|
130
|
+
*
|
|
131
|
+
* 1. create - Criar novo repositório
|
|
132
|
+
* Parâmetros:
|
|
133
|
+
* - name (obrigatório): Nome do repositório
|
|
134
|
+
* - description (opcional): Descrição do repositório
|
|
135
|
+
* - private (opcional): Repositório privado (padrão: false)
|
|
136
|
+
* - auto_init (opcional): Inicializar com README (padrão: false)
|
|
137
|
+
* - gitignores (opcional): Template de .gitignore
|
|
138
|
+
* - license (opcional): Template de licença
|
|
139
|
+
* - readme (opcional): Conteúdo do README
|
|
140
|
+
* - default_branch (opcional): Branch padrão
|
|
141
|
+
*
|
|
142
|
+
* 2. list - Listar repositórios
|
|
143
|
+
* Parâmetros:
|
|
144
|
+
* - username (opcional): Usuário específico (padrão: usuário atual)
|
|
145
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
146
|
+
* - limit (opcional): Itens por página (padrão: 30)
|
|
147
|
+
*
|
|
148
|
+
* 3. get - Obter detalhes do repositório
|
|
149
|
+
* Parâmetros:
|
|
150
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
151
|
+
* - repo (obrigatório): Nome do repositório
|
|
152
|
+
*
|
|
153
|
+
* 4. update - Atualizar repositório
|
|
154
|
+
* Parâmetros:
|
|
155
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
156
|
+
* - repo (obrigatório): Nome do repositório
|
|
157
|
+
* - new_name (opcional): Novo nome
|
|
158
|
+
* - new_description (opcional): Nova descrição
|
|
159
|
+
* - new_private (opcional): Nova visibilidade
|
|
160
|
+
* - archived (opcional): Status de arquivamento
|
|
161
|
+
*
|
|
162
|
+
* 5. delete - Deletar repositório
|
|
163
|
+
* Parâmetros:
|
|
164
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
165
|
+
* - repo (obrigatório): Nome do repositório
|
|
166
|
+
*
|
|
167
|
+
* 6. fork - Fazer fork do repositório
|
|
168
|
+
* Parâmetros:
|
|
169
|
+
* - owner (obrigatório): Proprietário do repositório original
|
|
170
|
+
* - repo (obrigatório): Nome do repositório original
|
|
171
|
+
* - organization (opcional): Organização de destino
|
|
172
|
+
*
|
|
173
|
+
* 7. search - Buscar repositórios
|
|
174
|
+
* Parâmetros:
|
|
175
|
+
* - query (obrigatório): Termo de busca
|
|
176
|
+
* - page (opcional): Página da busca (padrão: 1)
|
|
177
|
+
* - limit (opcional): Itens por página (padrão: 30)
|
|
178
|
+
*
|
|
179
|
+
* RECOMENDAÇÕES DE USO:
|
|
180
|
+
* - Use nomes descritivos para repositórios
|
|
181
|
+
* - Configure visibilidade adequada para o projeto
|
|
182
|
+
* - Mantenha descrições atualizadas
|
|
183
|
+
* - Use templates para projetos similares
|
|
184
|
+
* - Configure branch padrão adequada
|
|
185
|
+
* - Use paginação para listas grandes
|
|
186
|
+
*/
|
|
187
|
+
exports.repositoriesTool = {
|
|
188
|
+
name: 'repositories',
|
|
189
|
+
description: 'Manage repositories with 12 comprehensive actions: create, list, get, update, delete, fork, search, clone, archive, transfer, template, mirror. Full GitHub + Gitea support with advanced operations. Usage: list requires username OR owner; get/update/delete require owner+repo; create requires name; search requires query; clone requires clone_url; template requires template_owner+template_repo; mirror requires mirror_url. Best practices: initialize with README/LICENSE/.gitignore, set default branch, use tags for stable releases.',
|
|
190
|
+
inputSchema: {
|
|
191
|
+
type: 'object',
|
|
192
|
+
properties: {
|
|
193
|
+
action: {
|
|
194
|
+
type: 'string',
|
|
195
|
+
enum: ['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'clone', 'archive', 'transfer', 'template', 'mirror'],
|
|
196
|
+
description: 'Action to perform on repositories'
|
|
197
|
+
},
|
|
198
|
+
owner: { type: 'string', description: 'Repository owner' },
|
|
199
|
+
repo: { type: 'string', description: 'Repository name' },
|
|
200
|
+
provider: { type: 'string', description: 'Specific provider (github, gitea) or use default' },
|
|
201
|
+
name: { type: 'string', description: 'Repository name for creation' },
|
|
202
|
+
description: { type: 'string', description: 'Repository description' },
|
|
203
|
+
private: { type: 'boolean', description: 'Private repository' },
|
|
204
|
+
auto_init: { type: 'boolean', description: 'Auto initialize with README' },
|
|
205
|
+
gitignores: { type: 'string', description: 'Gitignore template' },
|
|
206
|
+
license: { type: 'string', description: 'License template' },
|
|
207
|
+
readme: { type: 'string', description: 'README content' },
|
|
208
|
+
default_branch: { type: 'string', description: 'Default branch name' },
|
|
209
|
+
username: { type: 'string', description: 'Username for listing repos' },
|
|
210
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
211
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
|
|
212
|
+
new_name: { type: 'string', description: 'New repository name' },
|
|
213
|
+
new_description: { type: 'string', description: 'New repository description' },
|
|
214
|
+
new_private: { type: 'boolean', description: 'New privacy setting' },
|
|
215
|
+
archived: { type: 'boolean', description: 'Archive status' },
|
|
216
|
+
organization: { type: 'string', description: 'Organization for fork' },
|
|
217
|
+
query: { type: 'string', description: 'Search query' },
|
|
218
|
+
clone_url: { type: 'string', description: 'Repository clone URL' },
|
|
219
|
+
local_path: { type: 'string', description: 'Local path for clone' },
|
|
220
|
+
archive_status: { type: 'boolean', description: 'Archive status' },
|
|
221
|
+
new_owner: { type: 'string', description: 'New owner for transfer' },
|
|
222
|
+
template_owner: { type: 'string', description: 'Template repository owner' },
|
|
223
|
+
template_repo: { type: 'string', description: 'Template repository name' },
|
|
224
|
+
include_all_branches: { type: 'boolean', description: 'Include all branches from template' },
|
|
225
|
+
mirror_url: { type: 'string', description: 'Mirror repository URL' },
|
|
226
|
+
mirror_username: { type: 'string', description: 'Mirror username' },
|
|
227
|
+
mirror_password: { type: 'string', description: 'Mirror password' }
|
|
228
|
+
},
|
|
229
|
+
required: ['action']
|
|
230
|
+
},
|
|
231
|
+
/**
|
|
232
|
+
* Handler principal da tool repositories
|
|
233
|
+
*
|
|
234
|
+
* FUNCIONALIDADE:
|
|
235
|
+
* - Valida entrada usando Zod schema
|
|
236
|
+
* - Roteia para método específico baseado na ação
|
|
237
|
+
* - Trata erros de forma uniforme
|
|
238
|
+
* - Retorna resultado padronizado
|
|
239
|
+
*
|
|
240
|
+
* FLUXO:
|
|
241
|
+
* 1. Validação de entrada
|
|
242
|
+
* 2. Roteamento por ação
|
|
243
|
+
* 3. Execução do método específico
|
|
244
|
+
* 4. Tratamento de erros
|
|
245
|
+
* 5. Retorno de resultado
|
|
246
|
+
*
|
|
247
|
+
* TRATAMENTO DE ERROS:
|
|
248
|
+
* - Validação: erro de schema
|
|
249
|
+
* - Execução: erro da operação
|
|
250
|
+
* - Roteamento: ação não suportada
|
|
251
|
+
*
|
|
252
|
+
* RECOMENDAÇÕES:
|
|
253
|
+
* - Sempre valide entrada antes de processar
|
|
254
|
+
* - Trate erros específicos adequadamente
|
|
255
|
+
* - Log detalhes de erro para debug
|
|
256
|
+
* - Retorne mensagens de erro úteis
|
|
257
|
+
*/
|
|
258
|
+
async handler(input) {
|
|
259
|
+
try {
|
|
260
|
+
const params = RepositoriesInputSchema.parse(input);
|
|
261
|
+
// Obter o provider correto
|
|
262
|
+
const provider = params.provider
|
|
263
|
+
? index_js_1.globalProviderFactory.getProvider(params.provider)
|
|
264
|
+
: index_js_1.globalProviderFactory.getDefaultProvider();
|
|
265
|
+
if (!provider) {
|
|
266
|
+
throw new Error(`Provider '${params.provider}' não encontrado`);
|
|
267
|
+
}
|
|
268
|
+
switch (params.action) {
|
|
269
|
+
case 'create':
|
|
270
|
+
return await this.createRepository(params, provider);
|
|
271
|
+
case 'list':
|
|
272
|
+
return await this.listRepositories(params, provider);
|
|
273
|
+
case 'get':
|
|
274
|
+
return await this.getRepository(params, provider);
|
|
275
|
+
case 'update':
|
|
276
|
+
return await this.updateRepository(params, provider);
|
|
277
|
+
case 'delete':
|
|
278
|
+
return await this.deleteRepository(params, provider);
|
|
279
|
+
case 'fork':
|
|
280
|
+
return await this.forkRepository(params, provider);
|
|
281
|
+
case 'search':
|
|
282
|
+
return await this.searchRepositories(params, provider);
|
|
283
|
+
case 'clone':
|
|
284
|
+
return await this.cloneRepository(params, provider);
|
|
285
|
+
case 'archive':
|
|
286
|
+
return await this.archiveRepository(params, provider);
|
|
287
|
+
case 'transfer':
|
|
288
|
+
return await this.transferRepository(params, provider);
|
|
289
|
+
case 'template':
|
|
290
|
+
return await this.createFromTemplate(params, provider);
|
|
291
|
+
case 'mirror':
|
|
292
|
+
return await this.mirrorRepository(params, provider);
|
|
293
|
+
default:
|
|
294
|
+
throw new Error(`Ação não suportada: ${params.action}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
return {
|
|
299
|
+
success: false,
|
|
300
|
+
action: input.action,
|
|
301
|
+
message: 'Erro na operação de repositórios',
|
|
302
|
+
error: error instanceof Error ? error.message : String(error)
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
/**
|
|
307
|
+
* Cria um novo repositório
|
|
308
|
+
*
|
|
309
|
+
* FUNCIONALIDADE:
|
|
310
|
+
* - Valida parâmetros obrigatórios
|
|
311
|
+
* - Configura dados padrão
|
|
312
|
+
* - Chama API do provider para criação
|
|
313
|
+
* - Retorna resultado formatado
|
|
314
|
+
*
|
|
315
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
316
|
+
* - name: Nome do repositório
|
|
317
|
+
*
|
|
318
|
+
* PARÂMETROS OPCIONAIS:
|
|
319
|
+
* - description: Descrição do repositório
|
|
320
|
+
* - private: Visibilidade (padrão: false)
|
|
321
|
+
* - auto_init: Inicializar com README (padrão: false)
|
|
322
|
+
* - gitignores: Template de .gitignore
|
|
323
|
+
* - license: Template de licença
|
|
324
|
+
* - readme: Conteúdo do README
|
|
325
|
+
* - default_branch: Branch padrão (padrão: main)
|
|
326
|
+
*
|
|
327
|
+
* VALIDAÇÕES:
|
|
328
|
+
* - Nome obrigatório
|
|
329
|
+
* - Nome único no usuário/organização
|
|
330
|
+
* - Permissões adequadas
|
|
331
|
+
*
|
|
332
|
+
* RECOMENDAÇÕES:
|
|
333
|
+
* - Use nomes descritivos e únicos
|
|
334
|
+
* - Configure visibilidade adequada
|
|
335
|
+
* - Inicialize com README para projetos novos
|
|
336
|
+
* - Use templates para consistência
|
|
337
|
+
*/
|
|
338
|
+
async createRepository(params, provider) {
|
|
339
|
+
try {
|
|
340
|
+
if (!params.name) {
|
|
341
|
+
throw new Error('Nome do repositório é obrigatório');
|
|
342
|
+
}
|
|
343
|
+
const repository = await provider.createRepository(params.name, params.description, params.private || false);
|
|
344
|
+
return {
|
|
345
|
+
success: true,
|
|
346
|
+
action: 'create',
|
|
347
|
+
message: `Repositório '${params.name}' criado com sucesso`,
|
|
348
|
+
data: repository
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
catch (error) {
|
|
352
|
+
throw new Error(`Falha ao criar repositório: ${error instanceof Error ? error.message : String(error)}`);
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
async listRepositories(params, provider) {
|
|
356
|
+
try {
|
|
357
|
+
const page = params.page || 1;
|
|
358
|
+
const limit = params.limit || 30;
|
|
359
|
+
const repositories = await provider.listRepositories(params.username, page, limit);
|
|
360
|
+
return {
|
|
361
|
+
success: true,
|
|
362
|
+
action: 'list',
|
|
363
|
+
message: `${repositories.length} repositórios encontrados`,
|
|
364
|
+
data: {
|
|
365
|
+
repositories,
|
|
366
|
+
page,
|
|
367
|
+
limit,
|
|
368
|
+
total: repositories.length
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
throw new Error(`Falha ao listar repositórios: ${error instanceof Error ? error.message : String(error)}`);
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
async getRepository(params, provider) {
|
|
377
|
+
try {
|
|
378
|
+
if (!params.owner || !params.repo) {
|
|
379
|
+
throw new Error('Owner e nome do repositório são obrigatórios');
|
|
380
|
+
}
|
|
381
|
+
const repository = await provider.getRepository(params.owner, params.repo);
|
|
382
|
+
return {
|
|
383
|
+
success: true,
|
|
384
|
+
action: 'get',
|
|
385
|
+
message: `Repositório '${params.owner}/${params.repo}' obtido com sucesso`,
|
|
386
|
+
data: repository
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
throw new Error(`Falha ao obter repositório: ${error instanceof Error ? error.message : String(error)}`);
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
async updateRepository(params, provider) {
|
|
394
|
+
try {
|
|
395
|
+
if (!params.owner || !params.repo) {
|
|
396
|
+
throw new Error('Owner e nome do repositório são obrigatórios');
|
|
397
|
+
}
|
|
398
|
+
const updateData = {};
|
|
399
|
+
if (params.new_name)
|
|
400
|
+
updateData.name = params.new_name;
|
|
401
|
+
if (params.new_description !== undefined)
|
|
402
|
+
updateData.description = params.new_description;
|
|
403
|
+
if (params.new_private !== undefined)
|
|
404
|
+
updateData.private = params.new_private;
|
|
405
|
+
if (params.archived !== undefined)
|
|
406
|
+
updateData.archived = params.archived;
|
|
407
|
+
if (Object.keys(updateData).length === 0) {
|
|
408
|
+
throw new Error('Nenhum campo para atualizar foi fornecido');
|
|
409
|
+
}
|
|
410
|
+
const repository = await provider.updateRepository(params.owner, params.repo, updateData);
|
|
411
|
+
return {
|
|
412
|
+
success: true,
|
|
413
|
+
action: 'update',
|
|
414
|
+
message: `Repositório '${params.owner}/${params.repo}' atualizado com sucesso`,
|
|
415
|
+
data: repository
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
throw new Error(`Falha ao atualizar repositório: ${error instanceof Error ? error.message : String(error)}`);
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
async deleteRepository(params, provider) {
|
|
423
|
+
try {
|
|
424
|
+
if (!params.owner || !params.repo) {
|
|
425
|
+
throw new Error('Owner e nome do repositório são obrigatórios');
|
|
426
|
+
}
|
|
427
|
+
await provider.deleteRepository(params.owner, params.repo);
|
|
428
|
+
return {
|
|
429
|
+
success: true,
|
|
430
|
+
action: 'delete',
|
|
431
|
+
message: `Repositório '${params.owner}/${params.repo}' deletado com sucesso`,
|
|
432
|
+
data: { deleted: true }
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
catch (error) {
|
|
436
|
+
throw new Error(`Falha ao deletar repositório: ${error instanceof Error ? error.message : String(error)}`);
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
async forkRepository(params, provider) {
|
|
440
|
+
try {
|
|
441
|
+
if (!params.owner || !params.repo) {
|
|
442
|
+
throw new Error('Owner e nome do repositório são obrigatórios');
|
|
443
|
+
}
|
|
444
|
+
const repository = await provider.forkRepository(params.owner, params.repo, params.organization);
|
|
445
|
+
return {
|
|
446
|
+
success: true,
|
|
447
|
+
action: 'fork',
|
|
448
|
+
message: `Fork do repositório '${params.owner}/${params.repo}' criado com sucesso`,
|
|
449
|
+
data: repository
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
catch (error) {
|
|
453
|
+
throw new Error(`Falha ao fazer fork do repositório: ${error instanceof Error ? error.message : String(error)}`);
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
async searchRepositories(params, provider) {
|
|
457
|
+
try {
|
|
458
|
+
if (!params.query) {
|
|
459
|
+
throw new Error('Query de busca é obrigatória');
|
|
460
|
+
}
|
|
461
|
+
const page = params.page || 1;
|
|
462
|
+
const limit = params.limit || 30;
|
|
463
|
+
const repositories = await provider.searchRepositories(params.query, page, limit);
|
|
464
|
+
return {
|
|
465
|
+
success: true,
|
|
466
|
+
action: 'search',
|
|
467
|
+
message: `${repositories.length} repositórios encontrados para '${params.query}'`,
|
|
468
|
+
data: {
|
|
469
|
+
repositories,
|
|
470
|
+
query: params.query,
|
|
471
|
+
page,
|
|
472
|
+
limit,
|
|
473
|
+
total: repositories.length
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
throw new Error(`Falha ao buscar repositórios: ${error instanceof Error ? error.message : String(error)}`);
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
/**
|
|
482
|
+
* Clona repositório localmente
|
|
483
|
+
*/
|
|
484
|
+
async cloneRepository(params, provider) {
|
|
485
|
+
try {
|
|
486
|
+
if (!provider.cloneRepository) {
|
|
487
|
+
return {
|
|
488
|
+
success: false,
|
|
489
|
+
action: 'clone',
|
|
490
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
491
|
+
error: 'Provider não implementa cloneRepository'
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
const result = await provider.cloneRepository({
|
|
495
|
+
owner: params.owner,
|
|
496
|
+
repo: params.repo,
|
|
497
|
+
clone_url: params.clone_url,
|
|
498
|
+
local_path: params.local_path
|
|
499
|
+
});
|
|
500
|
+
return {
|
|
501
|
+
success: true,
|
|
502
|
+
action: 'clone',
|
|
503
|
+
message: `Repositório clonado com sucesso`,
|
|
504
|
+
data: result
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
catch (error) {
|
|
508
|
+
throw new Error(`Falha ao clonar repositório: ${error}`);
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
/**
|
|
512
|
+
* Arquiva/desarquiva repositório
|
|
513
|
+
*/
|
|
514
|
+
async archiveRepository(params, provider) {
|
|
515
|
+
try {
|
|
516
|
+
if (!provider.archiveRepository) {
|
|
517
|
+
return {
|
|
518
|
+
success: false,
|
|
519
|
+
action: 'archive',
|
|
520
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
521
|
+
error: 'Provider não implementa archiveRepository'
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
const result = await provider.archiveRepository({
|
|
525
|
+
owner: params.owner,
|
|
526
|
+
repo: params.repo,
|
|
527
|
+
archived: params.archive_status ?? true
|
|
528
|
+
});
|
|
529
|
+
return {
|
|
530
|
+
success: true,
|
|
531
|
+
action: 'archive',
|
|
532
|
+
message: `Repositório ${params.archive_status ? 'arquivado' : 'desarquivado'} com sucesso`,
|
|
533
|
+
data: result
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
catch (error) {
|
|
537
|
+
throw new Error(`Falha ao arquivar repositório: ${error}`);
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
/**
|
|
541
|
+
* Transfere repositório para outro owner
|
|
542
|
+
*/
|
|
543
|
+
async transferRepository(params, provider) {
|
|
544
|
+
try {
|
|
545
|
+
if (!provider.transferRepository) {
|
|
546
|
+
return {
|
|
547
|
+
success: false,
|
|
548
|
+
action: 'transfer',
|
|
549
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
550
|
+
error: 'Provider não implementa transferRepository'
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
const result = await provider.transferRepository({
|
|
554
|
+
owner: params.owner,
|
|
555
|
+
repo: params.repo,
|
|
556
|
+
new_owner: params.new_owner
|
|
557
|
+
});
|
|
558
|
+
return {
|
|
559
|
+
success: true,
|
|
560
|
+
action: 'transfer',
|
|
561
|
+
message: `Repositório transferido para ${params.new_owner} com sucesso`,
|
|
562
|
+
data: result
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
catch (error) {
|
|
566
|
+
throw new Error(`Falha ao transferir repositório: ${error}`);
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
/**
|
|
570
|
+
* Cria repositório a partir de template
|
|
571
|
+
*/
|
|
572
|
+
async createFromTemplate(params, provider) {
|
|
573
|
+
try {
|
|
574
|
+
if (!provider.createFromTemplate) {
|
|
575
|
+
return {
|
|
576
|
+
success: false,
|
|
577
|
+
action: 'template',
|
|
578
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
579
|
+
error: 'Provider não implementa createFromTemplate'
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
const result = await provider.createFromTemplate({
|
|
583
|
+
template_owner: params.template_owner,
|
|
584
|
+
template_repo: params.template_repo,
|
|
585
|
+
owner: params.owner,
|
|
586
|
+
name: params.name,
|
|
587
|
+
description: params.description,
|
|
588
|
+
private: params.private,
|
|
589
|
+
include_all_branches: params.include_all_branches
|
|
590
|
+
});
|
|
591
|
+
return {
|
|
592
|
+
success: true,
|
|
593
|
+
action: 'template',
|
|
594
|
+
message: `Repositório criado a partir do template com sucesso`,
|
|
595
|
+
data: result
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
catch (error) {
|
|
599
|
+
throw new Error(`Falha ao criar repositório a partir do template: ${error}`);
|
|
600
|
+
}
|
|
601
|
+
},
|
|
602
|
+
/**
|
|
603
|
+
* Configura espelhamento de repositório
|
|
604
|
+
*/
|
|
605
|
+
async mirrorRepository(params, provider) {
|
|
606
|
+
try {
|
|
607
|
+
if (!provider.mirrorRepository) {
|
|
608
|
+
return {
|
|
609
|
+
success: false,
|
|
610
|
+
action: 'mirror',
|
|
611
|
+
message: 'Funcionalidade não suportada por este provider',
|
|
612
|
+
error: 'Provider não implementa mirrorRepository'
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
const result = await provider.mirrorRepository({
|
|
616
|
+
owner: params.owner,
|
|
617
|
+
repo: params.repo,
|
|
618
|
+
mirror_url: params.mirror_url,
|
|
619
|
+
mirror_username: params.mirror_username,
|
|
620
|
+
mirror_password: params.mirror_password
|
|
621
|
+
});
|
|
622
|
+
return {
|
|
623
|
+
success: true,
|
|
624
|
+
action: 'mirror',
|
|
625
|
+
message: `Espelhamento configurado com sucesso`,
|
|
626
|
+
data: result
|
|
627
|
+
};
|
|
628
|
+
}
|
|
629
|
+
catch (error) {
|
|
630
|
+
throw new Error(`Falha ao configurar espelhamento: ${error}`);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
};
|
|
634
|
+
//# sourceMappingURL=repositories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../src/tools/repositories.ts"],"names":[],"mappings":"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"}
|