@andrebuzeli/git-mcp 2.12.8 → 2.14.0

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