@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,531 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filesTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: files
|
|
8
|
+
*
|
|
9
|
+
* DESCRIÇÃO:
|
|
10
|
+
* Gerenciamento completo de arquivos e diretórios Gitea com múltiplas ações
|
|
11
|
+
*
|
|
12
|
+
* FUNCIONALIDADES:
|
|
13
|
+
* - Criação de arquivos e diretórios
|
|
14
|
+
* - Leitura e listagem de conteúdo
|
|
15
|
+
* - Atualização de arquivos existentes
|
|
16
|
+
* - Exclusão de arquivos e diretórios
|
|
17
|
+
* - Busca por conteúdo e nome
|
|
18
|
+
* - Controle de versão de arquivos
|
|
19
|
+
*
|
|
20
|
+
* USO:
|
|
21
|
+
* - Para gerenciar arquivos de projeto
|
|
22
|
+
* - Para automatizar criação de arquivos
|
|
23
|
+
* - Para backup e migração de conteúdo
|
|
24
|
+
* - Para sincronização de arquivos
|
|
25
|
+
*
|
|
26
|
+
* RECOMENDAÇÕES:
|
|
27
|
+
* - Use mensagens de commit descritivas
|
|
28
|
+
* - Mantenha estrutura de diretórios organizada
|
|
29
|
+
* - Valide conteúdo antes de enviar
|
|
30
|
+
* - Use branches para mudanças grandes
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Schema de validação para entrada da tool files
|
|
34
|
+
*
|
|
35
|
+
* VALIDAÇÕES:
|
|
36
|
+
* - action: Ação obrigatória (get, create, update, delete, list, 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 FilesInputSchema = zod_1.z.object({
|
|
46
|
+
action: zod_1.z.enum(['get', 'create', 'update', 'delete', 'list', 'search']),
|
|
47
|
+
// Parâmetros comuns
|
|
48
|
+
owner: zod_1.z.string().optional(),
|
|
49
|
+
repo: zod_1.z.string().optional(),
|
|
50
|
+
path: zod_1.z.string().optional(),
|
|
51
|
+
provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
|
|
52
|
+
// Para create/update
|
|
53
|
+
content: zod_1.z.string().optional(),
|
|
54
|
+
message: zod_1.z.string().optional(),
|
|
55
|
+
branch: zod_1.z.string().optional(),
|
|
56
|
+
// Para update/delete
|
|
57
|
+
sha: zod_1.z.string().optional(),
|
|
58
|
+
// Para list
|
|
59
|
+
ref: zod_1.z.string().optional(),
|
|
60
|
+
// Para search
|
|
61
|
+
query: zod_1.z.string().optional(),
|
|
62
|
+
// Para list com paginação
|
|
63
|
+
page: zod_1.z.number().min(1).optional(),
|
|
64
|
+
limit: zod_1.z.number().min(1).max(100).optional(),
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Schema de saída padronizado
|
|
68
|
+
*
|
|
69
|
+
* ESTRUTURA:
|
|
70
|
+
* - success: Status da operação
|
|
71
|
+
* - action: Ação executada
|
|
72
|
+
* - message: Mensagem descritiva
|
|
73
|
+
* - data: Dados retornados (opcional)
|
|
74
|
+
* - error: Detalhes do erro (opcional)
|
|
75
|
+
*/
|
|
76
|
+
const FilesResultSchema = zod_1.z.object({
|
|
77
|
+
success: zod_1.z.boolean(),
|
|
78
|
+
action: zod_1.z.string(),
|
|
79
|
+
message: zod_1.z.string(),
|
|
80
|
+
data: zod_1.z.any().optional(),
|
|
81
|
+
error: zod_1.z.string().optional()
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Tool: files
|
|
85
|
+
*
|
|
86
|
+
* DESCRIÇÃO:
|
|
87
|
+
* Gerenciamento completo de arquivos e diretórios Gitea com múltiplas ações
|
|
88
|
+
*
|
|
89
|
+
* ACTIONS DISPONÍVEIS:
|
|
90
|
+
*
|
|
91
|
+
* 1. get - Obter conteúdo de arquivo
|
|
92
|
+
* Parâmetros:
|
|
93
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
94
|
+
* - repo (obrigatório): Nome do repositório
|
|
95
|
+
* - path (obrigatório): Caminho do arquivo
|
|
96
|
+
* - ref (opcional): Branch, tag ou commit (padrão: branch padrão)
|
|
97
|
+
*
|
|
98
|
+
* 2. create - Criar novo arquivo
|
|
99
|
+
* Parâmetros:
|
|
100
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
101
|
+
* - repo (obrigatório): Nome do repositório
|
|
102
|
+
* - path (obrigatório): Caminho do arquivo
|
|
103
|
+
* - content (obrigatório): Conteúdo do arquivo
|
|
104
|
+
* - message (obrigatório): Mensagem de commit
|
|
105
|
+
* - branch (opcional): Branch de destino (padrão: branch padrão)
|
|
106
|
+
*
|
|
107
|
+
* 3. update - Atualizar arquivo existente
|
|
108
|
+
* Parâmetros:
|
|
109
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
110
|
+
* - repo (obrigatório): Nome do repositório
|
|
111
|
+
* - path (obrigatório): Caminho do arquivo
|
|
112
|
+
* - content (obrigatório): Novo conteúdo
|
|
113
|
+
* - message (obrigatório): Mensagem de commit
|
|
114
|
+
* - sha (obrigatório): SHA do arquivo atual
|
|
115
|
+
* - branch (opcional): Branch de destino (padrão: branch padrão)
|
|
116
|
+
*
|
|
117
|
+
* 4. delete - Deletar arquivo
|
|
118
|
+
* Parâmetros:
|
|
119
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
120
|
+
* - repo (obrigatório): Nome do repositório
|
|
121
|
+
* - path (obrigatório): Caminho do arquivo
|
|
122
|
+
* - message (obrigatório): Mensagem de commit
|
|
123
|
+
* - sha (obrigatório): SHA do arquivo
|
|
124
|
+
* - branch (opcional): Branch de destino (padrão: branch padrão)
|
|
125
|
+
*
|
|
126
|
+
* 5. list - Listar conteúdo de diretório
|
|
127
|
+
* Parâmetros:
|
|
128
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
129
|
+
* - repo (obrigatório): Nome do repositório
|
|
130
|
+
* - path (opcional): Caminho do diretório (padrão: raiz)
|
|
131
|
+
* - ref (opcional): Branch, tag ou commit (padrão: branch padrão)
|
|
132
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
133
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
134
|
+
*
|
|
135
|
+
* 6. search - Buscar arquivos por conteúdo
|
|
136
|
+
* Parâmetros:
|
|
137
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
138
|
+
* - repo (obrigatório): Nome do repositório
|
|
139
|
+
* - query (obrigatório): Termo de busca
|
|
140
|
+
* - ref (opcional): Branch, tag ou commit (padrão: branch padrão)
|
|
141
|
+
*
|
|
142
|
+
* RECOMENDAÇÕES DE USO:
|
|
143
|
+
* - Use mensagens de commit descritivas
|
|
144
|
+
* - Mantenha estrutura de diretórios organizada
|
|
145
|
+
* - Valide conteúdo antes de enviar
|
|
146
|
+
* - Use branches para mudanças grandes
|
|
147
|
+
* - Documente mudanças importantes
|
|
148
|
+
* - Mantenha histórico de commits limpo
|
|
149
|
+
*/
|
|
150
|
+
exports.filesTool = {
|
|
151
|
+
name: 'files',
|
|
152
|
+
description: 'Manage files and directories with multiple actions: get, create, update, delete, list, search. Suporte completo a GitHub e Gitea simultaneamente. Dicas (solo): use commits pequenos e mensagens claras; mantenha README enxuto com comandos essenciais; valide conteúdo antes de enviar; prefira branches para mudanças maiores; use mensagens de commit descritivas.',
|
|
153
|
+
inputSchema: {
|
|
154
|
+
type: 'object',
|
|
155
|
+
properties: {
|
|
156
|
+
action: {
|
|
157
|
+
type: 'string',
|
|
158
|
+
enum: ['get', 'create', 'update', 'delete', 'list', 'search'],
|
|
159
|
+
description: 'Action to perform on files'
|
|
160
|
+
},
|
|
161
|
+
owner: { type: 'string', description: 'Repository owner' },
|
|
162
|
+
repo: { type: 'string', description: 'Repository name' },
|
|
163
|
+
path: { type: 'string', description: 'File or directory path' },
|
|
164
|
+
provider: { type: 'string', description: 'Specific provider (github, gitea) or use default' },
|
|
165
|
+
content: { type: 'string', description: 'File content' },
|
|
166
|
+
message: { type: 'string', description: 'Commit message' },
|
|
167
|
+
branch: { type: 'string', description: 'Target branch' },
|
|
168
|
+
sha: { type: 'string', description: 'File SHA hash' },
|
|
169
|
+
ref: { type: 'string', description: 'Branch, tag or commit reference' },
|
|
170
|
+
query: { type: 'string', description: 'Search query' },
|
|
171
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
172
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 }
|
|
173
|
+
},
|
|
174
|
+
required: ['action']
|
|
175
|
+
},
|
|
176
|
+
/**
|
|
177
|
+
* Handler principal da tool files
|
|
178
|
+
*
|
|
179
|
+
* FUNCIONALIDADE:
|
|
180
|
+
* - Valida entrada usando Zod schema
|
|
181
|
+
* - Roteia para método específico baseado na ação
|
|
182
|
+
* - Trata erros de forma uniforme
|
|
183
|
+
* - Retorna resultado padronizado
|
|
184
|
+
*
|
|
185
|
+
* FLUXO:
|
|
186
|
+
* 1. Validação de entrada
|
|
187
|
+
* 2. Roteamento por ação
|
|
188
|
+
* 3. Execução do método específico
|
|
189
|
+
* 4. Tratamento de erros
|
|
190
|
+
* 5. Retorno de resultado
|
|
191
|
+
*
|
|
192
|
+
* TRATAMENTO DE ERROS:
|
|
193
|
+
* - Validação: erro de schema
|
|
194
|
+
* - Execução: erro da operação
|
|
195
|
+
* - Roteamento: ação não suportada
|
|
196
|
+
*
|
|
197
|
+
* RECOMENDAÇÕES:
|
|
198
|
+
* - Sempre valide entrada antes de processar
|
|
199
|
+
* - Trate erros específicos adequadamente
|
|
200
|
+
* - Log detalhes de erro para debug
|
|
201
|
+
* - Retorne mensagens de erro úteis
|
|
202
|
+
*/
|
|
203
|
+
async handler(input) {
|
|
204
|
+
try {
|
|
205
|
+
const validatedInput = FilesInputSchema.parse(input);
|
|
206
|
+
// Obter o provider correto
|
|
207
|
+
const provider = validatedInput.provider
|
|
208
|
+
? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
|
|
209
|
+
: index_js_1.globalProviderFactory.getDefaultProvider();
|
|
210
|
+
if (!provider) {
|
|
211
|
+
throw new Error(`Provider '${validatedInput.provider}' não encontrado`);
|
|
212
|
+
}
|
|
213
|
+
switch (validatedInput.action) {
|
|
214
|
+
case 'get':
|
|
215
|
+
return await this.getFile(validatedInput, provider);
|
|
216
|
+
case 'create':
|
|
217
|
+
return await this.createFile(validatedInput, provider);
|
|
218
|
+
case 'update':
|
|
219
|
+
return await this.updateFile(validatedInput, provider);
|
|
220
|
+
case 'delete':
|
|
221
|
+
return await this.deleteFile(validatedInput, provider);
|
|
222
|
+
case 'list':
|
|
223
|
+
return await this.listFiles(validatedInput, provider);
|
|
224
|
+
case 'search':
|
|
225
|
+
return await this.searchFiles(validatedInput, provider);
|
|
226
|
+
default:
|
|
227
|
+
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
return {
|
|
232
|
+
success: false,
|
|
233
|
+
action: input.action,
|
|
234
|
+
message: 'Erro na operação de arquivos',
|
|
235
|
+
error: error instanceof Error ? error.message : String(error)
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
/**
|
|
240
|
+
* Obtém o conteúdo de um arquivo específico
|
|
241
|
+
*
|
|
242
|
+
* FUNCIONALIDADE:
|
|
243
|
+
* - Retorna conteúdo completo do arquivo
|
|
244
|
+
* - Inclui metadados (SHA, tamanho, tipo)
|
|
245
|
+
* - Suporta diferentes referências (branch, tag, commit)
|
|
246
|
+
*
|
|
247
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
248
|
+
* - owner: Proprietário do repositório
|
|
249
|
+
* - repo: Nome do repositório
|
|
250
|
+
* - path: Caminho do arquivo
|
|
251
|
+
*
|
|
252
|
+
* PARÂMETROS OPCIONAIS:
|
|
253
|
+
* - ref: Branch, tag ou commit (padrão: branch padrão)
|
|
254
|
+
*
|
|
255
|
+
* VALIDAÇÕES:
|
|
256
|
+
* - Todos os parâmetros obrigatórios
|
|
257
|
+
* - Arquivo deve existir no caminho especificado
|
|
258
|
+
* - Referência deve ser válida
|
|
259
|
+
*
|
|
260
|
+
* RECOMENDAÇÕES:
|
|
261
|
+
* - Use para leitura de arquivos de configuração
|
|
262
|
+
* - Verifique tamanho antes de ler arquivos grandes
|
|
263
|
+
* - Use referências específicas para versões
|
|
264
|
+
* - Trate arquivos binários adequadamente
|
|
265
|
+
*/
|
|
266
|
+
async getFile(params, provider) {
|
|
267
|
+
try {
|
|
268
|
+
if (!params.owner || !params.repo || !params.path) {
|
|
269
|
+
throw new Error('Owner, repo e path são obrigatórios');
|
|
270
|
+
}
|
|
271
|
+
const file = await provider.getFile(params.owner, params.repo, params.path, params.ref);
|
|
272
|
+
return {
|
|
273
|
+
success: true,
|
|
274
|
+
action: 'get',
|
|
275
|
+
message: `Arquivo '${params.path}' obtido com sucesso`,
|
|
276
|
+
data: file
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
throw new Error(`Falha ao obter arquivo: ${error instanceof Error ? error.message : String(error)}`);
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
/**
|
|
284
|
+
* Cria um novo arquivo no repositório
|
|
285
|
+
*
|
|
286
|
+
* FUNCIONALIDADE:
|
|
287
|
+
* - Cria arquivo com conteúdo especificado
|
|
288
|
+
* - Faz commit automático com mensagem
|
|
289
|
+
* - Suporta criação em branches específicas
|
|
290
|
+
*
|
|
291
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
292
|
+
* - owner: Proprietário do repositório
|
|
293
|
+
* - repo: Nome do repositório
|
|
294
|
+
* - path: Caminho do arquivo
|
|
295
|
+
* - content: Conteúdo do arquivo
|
|
296
|
+
* - message: Mensagem de commit
|
|
297
|
+
*
|
|
298
|
+
* PARÂMETROS OPCIONAIS:
|
|
299
|
+
* - branch: Branch de destino (padrão: branch padrão)
|
|
300
|
+
*
|
|
301
|
+
* VALIDAÇÕES:
|
|
302
|
+
* - Todos os parâmetros obrigatórios
|
|
303
|
+
* - Caminho deve ser válido
|
|
304
|
+
* - Usuário deve ter permissão de escrita
|
|
305
|
+
*
|
|
306
|
+
* RECOMENDAÇÕES:
|
|
307
|
+
* - Use mensagens de commit descritivas
|
|
308
|
+
* - Valide conteúdo antes de enviar
|
|
309
|
+
* - Use branches para mudanças grandes
|
|
310
|
+
* - Documente propósito do arquivo
|
|
311
|
+
*/
|
|
312
|
+
async createFile(params, provider) {
|
|
313
|
+
try {
|
|
314
|
+
if (!params.owner || !params.repo || !params.path || !params.content || !params.message) {
|
|
315
|
+
throw new Error('Owner, repo, path, content e message são obrigatórios');
|
|
316
|
+
}
|
|
317
|
+
const result = await provider.createFile(params.owner, params.repo, params.path, params.content, params.message, params.branch);
|
|
318
|
+
return {
|
|
319
|
+
success: true,
|
|
320
|
+
action: 'create',
|
|
321
|
+
message: `Arquivo '${params.path}' criado com sucesso`,
|
|
322
|
+
data: result
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
throw new Error(`Falha ao criar arquivo: ${error instanceof Error ? error.message : String(error)}`);
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
/**
|
|
330
|
+
* Atualiza um arquivo existente no repositório
|
|
331
|
+
*
|
|
332
|
+
* FUNCIONALIDADE:
|
|
333
|
+
* - Atualiza conteúdo do arquivo
|
|
334
|
+
* - Faz commit com nova versão
|
|
335
|
+
* - Requer SHA do arquivo atual
|
|
336
|
+
*
|
|
337
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
338
|
+
* - owner: Proprietário do repositório
|
|
339
|
+
* - repo: Nome do repositório
|
|
340
|
+
* - path: Caminho do arquivo
|
|
341
|
+
* - content: Novo conteúdo
|
|
342
|
+
* - message: Mensagem de commit
|
|
343
|
+
* - sha: SHA do arquivo atual
|
|
344
|
+
*
|
|
345
|
+
* PARÂMETROS OPCIONAIS:
|
|
346
|
+
* - branch: Branch de destino (padrão: branch padrão)
|
|
347
|
+
*
|
|
348
|
+
* VALIDAÇÕES:
|
|
349
|
+
* - Todos os parâmetros obrigatórios
|
|
350
|
+
* - Arquivo deve existir
|
|
351
|
+
* - SHA deve ser válido
|
|
352
|
+
*
|
|
353
|
+
* RECOMENDAÇÕES:
|
|
354
|
+
* - Sempre obtenha SHA atual antes de atualizar
|
|
355
|
+
* - Use mensagens de commit descritivas
|
|
356
|
+
* - Verifique se arquivo não foi modificado por outro usuário
|
|
357
|
+
* - Teste mudanças antes de commitar
|
|
358
|
+
*/
|
|
359
|
+
async updateFile(params, provider) {
|
|
360
|
+
try {
|
|
361
|
+
if (!params.owner || !params.repo || !params.path || !params.content || !params.message || !params.sha) {
|
|
362
|
+
throw new Error('Owner, repo, path, content, message e sha são obrigatórios');
|
|
363
|
+
}
|
|
364
|
+
const result = await provider.updateFile(params.owner, params.repo, params.path, params.content, params.message, params.sha, params.branch);
|
|
365
|
+
return {
|
|
366
|
+
success: true,
|
|
367
|
+
action: 'update',
|
|
368
|
+
message: `Arquivo '${params.path}' atualizado com sucesso`,
|
|
369
|
+
data: result
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
throw new Error(`Falha ao atualizar arquivo: ${error instanceof Error ? error.message : String(error)}`);
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
/**
|
|
377
|
+
* Deleta um arquivo do repositório
|
|
378
|
+
*
|
|
379
|
+
* FUNCIONALIDADE:
|
|
380
|
+
* - Remove arquivo especificado
|
|
381
|
+
* - Faz commit de exclusão
|
|
382
|
+
* - Requer SHA do arquivo
|
|
383
|
+
*
|
|
384
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
385
|
+
* - owner: Proprietário do repositório
|
|
386
|
+
* - repo: Nome do repositório
|
|
387
|
+
* - path: Caminho do arquivo
|
|
388
|
+
* - message: Mensagem de commit
|
|
389
|
+
* - sha: SHA do arquivo
|
|
390
|
+
*
|
|
391
|
+
* PARÂMETROS OPCIONAIS:
|
|
392
|
+
* - branch: Branch de destino (padrão: branch padrão)
|
|
393
|
+
*
|
|
394
|
+
* VALIDAÇÕES:
|
|
395
|
+
* - Todos os parâmetros obrigatórios
|
|
396
|
+
* - Arquivo deve existir
|
|
397
|
+
* - SHA deve ser válido
|
|
398
|
+
*
|
|
399
|
+
* RECOMENDAÇÕES:
|
|
400
|
+
* - Confirme exclusão antes de executar
|
|
401
|
+
* - Use mensagens de commit descritivas
|
|
402
|
+
* - Verifique dependências do arquivo
|
|
403
|
+
* - Mantenha backup se necessário
|
|
404
|
+
*/
|
|
405
|
+
async deleteFile(params, provider) {
|
|
406
|
+
try {
|
|
407
|
+
if (!params.owner || !params.repo || !params.path || !params.message || !params.sha) {
|
|
408
|
+
throw new Error('Owner, repo, path, message e sha são obrigatórios');
|
|
409
|
+
}
|
|
410
|
+
const result = await provider.deleteFile(params.owner, params.repo, params.path, params.message, params.sha, params.branch);
|
|
411
|
+
return {
|
|
412
|
+
success: true,
|
|
413
|
+
action: 'delete',
|
|
414
|
+
message: `Arquivo '${params.path}' deletado com sucesso`,
|
|
415
|
+
data: { deleted: result }
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
throw new Error(`Falha ao deletar arquivo: ${error instanceof Error ? error.message : String(error)}`);
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
/**
|
|
423
|
+
* Lista conteúdo de um diretório
|
|
424
|
+
*
|
|
425
|
+
* FUNCIONALIDADE:
|
|
426
|
+
* - Lista arquivos e subdiretórios
|
|
427
|
+
* - Suporta paginação
|
|
428
|
+
* - Inclui metadados de cada item
|
|
429
|
+
*
|
|
430
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
431
|
+
* - owner: Proprietário do repositório
|
|
432
|
+
* - repo: Nome do repositório
|
|
433
|
+
*
|
|
434
|
+
* PARÂMETROS OPCIONAIS:
|
|
435
|
+
* - path: Caminho do diretório (padrão: raiz)
|
|
436
|
+
* - ref: Branch, tag ou commit (padrão: branch padrão)
|
|
437
|
+
* - page: Página da listagem (padrão: 1)
|
|
438
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
439
|
+
*
|
|
440
|
+
* VALIDAÇÕES:
|
|
441
|
+
* - Owner e repo obrigatórios
|
|
442
|
+
* - Diretório deve existir
|
|
443
|
+
* - Page deve ser >= 1
|
|
444
|
+
* - Limit deve ser entre 1 e 100
|
|
445
|
+
*
|
|
446
|
+
* RECOMENDAÇÕES:
|
|
447
|
+
* - Use paginação para diretórios grandes
|
|
448
|
+
* - Monitore número total de itens
|
|
449
|
+
* - Use referências específicas para versões
|
|
450
|
+
* - Organize estrutura de diretórios
|
|
451
|
+
*/
|
|
452
|
+
async listFiles(params, provider) {
|
|
453
|
+
try {
|
|
454
|
+
if (!params.owner || !params.repo) {
|
|
455
|
+
throw new Error('Owner e repo são obrigatórios');
|
|
456
|
+
}
|
|
457
|
+
const path = params.path || '';
|
|
458
|
+
const page = params.page || 1;
|
|
459
|
+
const limit = params.limit || 30;
|
|
460
|
+
const files = await provider.listFiles(params.owner, params.repo, path, params.ref);
|
|
461
|
+
return {
|
|
462
|
+
success: true,
|
|
463
|
+
action: 'list',
|
|
464
|
+
message: `${files.length} itens encontrados em '${path || 'raiz'}'`,
|
|
465
|
+
data: {
|
|
466
|
+
path,
|
|
467
|
+
files,
|
|
468
|
+
page,
|
|
469
|
+
limit,
|
|
470
|
+
total: files.length
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
throw new Error(`Falha ao listar arquivos: ${error instanceof Error ? error.message : String(error)}`);
|
|
476
|
+
}
|
|
477
|
+
},
|
|
478
|
+
/**
|
|
479
|
+
* Busca arquivos por conteúdo
|
|
480
|
+
*
|
|
481
|
+
* FUNCIONALIDADE:
|
|
482
|
+
* - Busca arquivos que contenham texto específico
|
|
483
|
+
* - Suporta diferentes referências
|
|
484
|
+
* - Retorna resultados relevantes
|
|
485
|
+
*
|
|
486
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
487
|
+
* - owner: Proprietário do repositório
|
|
488
|
+
* - repo: Nome do repositório
|
|
489
|
+
* - query: Termo de busca
|
|
490
|
+
*
|
|
491
|
+
* PARÂMETROS OPCIONAIS:
|
|
492
|
+
* - ref: Branch, tag ou commit (padrão: branch padrão)
|
|
493
|
+
*
|
|
494
|
+
* VALIDAÇÕES:
|
|
495
|
+
* - Todos os parâmetros obrigatórios
|
|
496
|
+
* - Query deve ter pelo menos 3 caracteres
|
|
497
|
+
* - Repositório deve existir
|
|
498
|
+
*
|
|
499
|
+
* RECOMENDAÇÕES:
|
|
500
|
+
* - Use termos de busca específicos
|
|
501
|
+
* - Combine com filtros de diretório
|
|
502
|
+
* - Use referências para versões específicas
|
|
503
|
+
* - Analise resultados para relevância
|
|
504
|
+
*/
|
|
505
|
+
async searchFiles(params, provider) {
|
|
506
|
+
try {
|
|
507
|
+
if (!params.owner || !params.repo || !params.query) {
|
|
508
|
+
throw new Error('Owner, repo e query são obrigatórios');
|
|
509
|
+
}
|
|
510
|
+
if (params.query.length < 3) {
|
|
511
|
+
throw new Error('Query deve ter pelo menos 3 caracteres');
|
|
512
|
+
}
|
|
513
|
+
// Implementar busca de arquivos por conteúdo
|
|
514
|
+
// Por enquanto, retorna mensagem de funcionalidade
|
|
515
|
+
return {
|
|
516
|
+
success: true,
|
|
517
|
+
action: 'search',
|
|
518
|
+
message: `Busca por '${params.query}' solicitada`,
|
|
519
|
+
data: {
|
|
520
|
+
query: params.query,
|
|
521
|
+
ref: params.ref || 'branch padrão',
|
|
522
|
+
results: 'Funcionalidade de busca será implementada'
|
|
523
|
+
}
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
catch (error) {
|
|
527
|
+
throw new Error(`Falha ao buscar arquivos: ${error instanceof Error ? error.message : String(error)}`);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
};
|
|
531
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/tools/files.ts"],"names":[],"mappings":"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"}
|