@andrebuzeli/git-mcp 2.12.7 → 2.13.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 (116) hide show
  1. package/dist/server.d.ts.map +1 -1
  2. package/dist/server.js +86 -28
  3. package/dist/server.js.map +1 -1
  4. package/dist/tools/actions.d.ts +5 -5
  5. package/dist/tools/actions.js +1 -1
  6. package/dist/tools/actions.js.map +1 -1
  7. package/dist/tools/analytics.d.ts +5 -5
  8. package/dist/tools/analytics.js +1 -1
  9. package/dist/tools/analytics.js.map +1 -1
  10. package/dist/tools/branches.d.ts +5 -5
  11. package/dist/tools/branches.js +2 -2
  12. package/dist/tools/branches.js.map +1 -1
  13. package/dist/tools/code-review.d.ts +9 -9
  14. package/dist/tools/code-review.js +1 -1
  15. package/dist/tools/code-review.js.map +1 -1
  16. package/dist/tools/commits.d.ts +5 -5
  17. package/dist/tools/commits.js +2 -2
  18. package/dist/tools/commits.js.map +1 -1
  19. package/dist/tools/deployments.d.ts +9 -9
  20. package/dist/tools/deployments.js +1 -1
  21. package/dist/tools/deployments.js.map +1 -1
  22. package/dist/tools/files.d.ts +3 -3
  23. package/dist/tools/files.js +2 -2
  24. package/dist/tools/files.js.map +1 -1
  25. package/dist/tools/gh-codespaces.d.ts +154 -0
  26. package/dist/tools/gh-codespaces.d.ts.map +1 -0
  27. package/dist/tools/gh-codespaces.js +286 -0
  28. package/dist/tools/gh-codespaces.js.map +1 -0
  29. package/dist/tools/gh-gists.d.ts +194 -0
  30. package/dist/tools/gh-gists.d.ts.map +1 -0
  31. package/dist/tools/gh-gists.js +328 -0
  32. package/dist/tools/gh-gists.js.map +1 -0
  33. package/dist/tools/gh-projects.d.ts +225 -0
  34. package/dist/tools/gh-projects.d.ts.map +1 -0
  35. package/dist/tools/gh-projects.js +365 -0
  36. package/dist/tools/gh-projects.js.map +1 -0
  37. package/dist/tools/gh-sync.d.ts +229 -0
  38. package/dist/tools/gh-sync.d.ts.map +1 -0
  39. package/dist/tools/gh-sync.js +384 -0
  40. package/dist/tools/gh-sync.js.map +1 -0
  41. package/dist/tools/git-archive.d.ts +169 -0
  42. package/dist/tools/git-archive.d.ts.map +1 -0
  43. package/dist/tools/git-archive.js +235 -0
  44. package/dist/tools/git-archive.js.map +1 -0
  45. package/dist/tools/git-bundle.d.ts +175 -0
  46. package/dist/tools/git-bundle.d.ts.map +1 -0
  47. package/dist/tools/git-bundle.js +258 -0
  48. package/dist/tools/git-bundle.js.map +1 -0
  49. package/dist/tools/git-cherry-pick.d.ts +162 -0
  50. package/dist/tools/git-cherry-pick.d.ts.map +1 -0
  51. package/dist/tools/git-cherry-pick.js +241 -0
  52. package/dist/tools/git-cherry-pick.js.map +1 -0
  53. package/dist/tools/git-config.d.ts +144 -0
  54. package/dist/tools/git-config.d.ts.map +1 -0
  55. package/dist/tools/git-config.js +293 -0
  56. package/dist/tools/git-config.js.map +1 -0
  57. package/dist/tools/git-rebase.d.ts +141 -0
  58. package/dist/tools/git-rebase.d.ts.map +1 -0
  59. package/dist/tools/git-rebase.js +234 -0
  60. package/dist/tools/git-rebase.js.map +1 -0
  61. package/dist/tools/git-remote.d.ts +142 -0
  62. package/dist/tools/git-remote.d.ts.map +1 -0
  63. package/dist/tools/git-remote.js +303 -0
  64. package/dist/tools/git-remote.js.map +1 -0
  65. package/dist/tools/git-repositories.d.ts +422 -0
  66. package/dist/tools/git-repositories.d.ts.map +1 -0
  67. package/dist/tools/git-repositories.js +557 -0
  68. package/dist/tools/git-repositories.js.map +1 -0
  69. package/dist/tools/git-reset.d.ts +134 -0
  70. package/dist/tools/git-reset.d.ts.map +1 -0
  71. package/dist/tools/git-reset.js +236 -0
  72. package/dist/tools/git-reset.js.map +1 -0
  73. package/dist/tools/git-revert.d.ts +153 -0
  74. package/dist/tools/git-revert.d.ts.map +1 -0
  75. package/dist/tools/git-revert.js +211 -0
  76. package/dist/tools/git-revert.js.map +1 -0
  77. package/dist/tools/git-stash.d.ts +144 -0
  78. package/dist/tools/git-stash.d.ts.map +1 -0
  79. package/dist/tools/git-stash.js +298 -0
  80. package/dist/tools/git-stash.js.map +1 -0
  81. package/dist/tools/git-submodule.d.ts +156 -0
  82. package/dist/tools/git-submodule.d.ts.map +1 -0
  83. package/dist/tools/git-submodule.js +314 -0
  84. package/dist/tools/git-submodule.js.map +1 -0
  85. package/dist/tools/git-sync.d.ts +16 -16
  86. package/dist/tools/git-sync.js +3 -3
  87. package/dist/tools/git-sync.js.map +1 -1
  88. package/dist/tools/git-worktree.d.ts +163 -0
  89. package/dist/tools/git-worktree.d.ts.map +1 -0
  90. package/dist/tools/git-worktree.js +294 -0
  91. package/dist/tools/git-worktree.js.map +1 -0
  92. package/dist/tools/issues.d.ts +3 -3
  93. package/dist/tools/issues.js +2 -2
  94. package/dist/tools/issues.js.map +1 -1
  95. package/dist/tools/pulls.d.ts +5 -5
  96. package/dist/tools/pulls.js +2 -2
  97. package/dist/tools/pulls.js.map +1 -1
  98. package/dist/tools/repositories.d.ts +3 -3
  99. package/dist/tools/repositories.js +2 -2
  100. package/dist/tools/repositories.js.map +1 -1
  101. package/dist/tools/security.d.ts +5 -5
  102. package/dist/tools/security.js +1 -1
  103. package/dist/tools/security.js.map +1 -1
  104. package/dist/tools/users.d.ts +5 -5
  105. package/dist/tools/users.js +2 -2
  106. package/dist/tools/users.js.map +1 -1
  107. package/dist/tools/validator.d.ts +16 -16
  108. package/dist/tools/validator.js +1 -1
  109. package/dist/tools/validator.js.map +1 -1
  110. package/dist/tools/version-control.d.ts +7 -7
  111. package/dist/tools/version-control.js +2 -2
  112. package/dist/tools/version-control.js.map +1 -1
  113. package/dist/tools/workflows.d.ts +5 -5
  114. package/dist/tools/workflows.js +1 -1
  115. package/dist/tools/workflows.js.map +1 -1
  116. package/package.json +2 -2
@@ -0,0 +1,557 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gitRepositoriesTool = 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
+ const terminal_controller_js_1 = require("../utils/terminal-controller.js");
8
+ /**
9
+ * Tool: git-repositories
10
+ *
11
+ * DESCRIÇÃO:
12
+ * Gerenciamento completo de repositórios Git (GitHub + Gitea) com múltiplas ações
13
+ *
14
+ * FUNCIONALIDADES:
15
+ * - Criação de repositórios
16
+ * - Listagem e busca
17
+ * - Atualização e configuração
18
+ * - Fork e clonagem
19
+ * - Exclusão e arquivamento
20
+ * - Inicialização local
21
+ * - Clonagem local
22
+ *
23
+ * USO:
24
+ * - Para gerenciar repositórios de projetos
25
+ * - Para automatizar criação de repositórios
26
+ * - Para backup e migração
27
+ * - Para organização de código
28
+ *
29
+ * RECOMENDAÇÕES:
30
+ * - Use nomes descritivos para repositórios
31
+ * - Configure visibilidade adequada
32
+ * - Mantenha descrições atualizadas
33
+ * - Use templates quando possível
34
+ */
35
+ /**
36
+ * Schema de validação para entrada da tool git-repositories
37
+ *
38
+ * VALIDAÇÕES:
39
+ * - action: Ação obrigatória (create, list, get, update, delete, fork, search, init, clone)
40
+ * - provider: Obrigatório (gitea ou github)
41
+ * - Parâmetros específicos por ação
42
+ * - Validação de tipos e formatos
43
+ *
44
+ * RECOMENDAÇÕES:
45
+ * - Sempre valide entrada antes de usar
46
+ * - Use parâmetros opcionais adequadamente
47
+ * - Documente parâmetros obrigatórios
48
+ */
49
+ const GitRepositoriesInputSchema = zod_1.z.object({
50
+ action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'init', 'clone']),
51
+ // Parâmetros comuns
52
+ owner: zod_1.z.string(),
53
+ repo: zod_1.z.string(),
54
+ provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'),
55
+ projectPath: zod_1.z.string().describe('Local project path for git operations'),
56
+ name: zod_1.z.string().optional(),
57
+ description: zod_1.z.string().optional(),
58
+ private: zod_1.z.boolean().optional(),
59
+ auto_init: zod_1.z.boolean().optional(),
60
+ gitignores: zod_1.z.string().optional(),
61
+ license: zod_1.z.string().optional(),
62
+ readme: zod_1.z.string().optional(),
63
+ default_branch: zod_1.z.string().optional(),
64
+ // Para list
65
+ username: zod_1.z.string().optional(),
66
+ page: zod_1.z.number().min(1).optional(),
67
+ limit: zod_1.z.number().min(1).max(100).optional(),
68
+ // Para update
69
+ new_name: zod_1.z.string().optional(),
70
+ new_description: zod_1.z.string().optional(),
71
+ new_private: zod_1.z.boolean().optional(),
72
+ archived: zod_1.z.boolean().optional(),
73
+ // Para fork
74
+ organization: zod_1.z.string().optional(),
75
+ // Para search
76
+ query: zod_1.z.string().optional(),
77
+ });
78
+ // Schema de saída
79
+ const GitRepositoriesResultSchema = zod_1.z.object({
80
+ success: zod_1.z.boolean(),
81
+ action: zod_1.z.string(),
82
+ message: zod_1.z.string(),
83
+ data: zod_1.z.any().optional(),
84
+ error: zod_1.z.string().optional()
85
+ });
86
+ /**
87
+ * Tool: git-repositories
88
+ *
89
+ * DESCRIÇÃO:
90
+ * Gerenciamento completo de repositórios Git (GitHub + Gitea) com múltiplas ações
91
+ *
92
+ * ACTIONS DISPONÍVEIS:
93
+ *
94
+ * 1. create - Criar novo repositório
95
+ * Parâmetros:
96
+ * - name (obrigatório): Nome do repositório
97
+ * - description (opcional): Descrição do repositório
98
+ * - private (opcional): Repositório privado (padrão: false)
99
+ * - auto_init (opcional): Inicializar com README (padrão: false)
100
+ * - gitignores (opcional): Template de .gitignore
101
+ * - license (opcional): Template de licença
102
+ * - readme (opcional): Conteúdo do README
103
+ * - default_branch (opcional): Branch padrão
104
+ *
105
+ * 2. list - Listar repositórios
106
+ * Parâmetros:
107
+ * - username (opcional): Usuário específico (padrão: usuário atual)
108
+ * - page (opcional): Página da listagem (padrão: 1)
109
+ * - limit (opcional): Itens por página (padrão: 30)
110
+ *
111
+ * 3. get - Obter detalhes do repositório
112
+ * Parâmetros:
113
+ * - owner (obrigatório): Proprietário do repositório
114
+ * - repo (obrigatório): Nome do repositório
115
+ *
116
+ * 4. update - Atualizar repositório
117
+ * Parâmetros:
118
+ * - owner (obrigatório): Proprietário do repositório
119
+ * - repo (obrigatório): Nome do repositório
120
+ * - new_name (opcional): Novo nome
121
+ * - new_description (opcional): Nova descrição
122
+ * - new_private (opcional): Nova visibilidade
123
+ * - archived (opcional): Status de arquivamento
124
+ *
125
+ * 5. delete - Deletar repositório
126
+ * Parâmetros:
127
+ * - owner (obrigatório): Proprietário do repositório
128
+ * - repo (obrigatório): Nome do repositório
129
+ *
130
+ * 6. fork - Fazer fork do repositório
131
+ * Parâmetros:
132
+ * - owner (obrigatório): Proprietário do repositório original
133
+ * - repo (obrigatório): Nome do repositório original
134
+ * - organization (opcional): Organização de destino
135
+ *
136
+ * 7. search - Buscar repositórios
137
+ * Parâmetros:
138
+ * - query (obrigatório): Termo de busca
139
+ * - page (opcional): Página da busca (padrão: 1)
140
+ * - limit (opcional): Itens por página (padrão: 30)
141
+ *
142
+ * 8. init - Inicializar repositório Git local
143
+ * Parâmetros:
144
+ * - projectPath (obrigatório): Caminho do projeto local
145
+ * - owner/repo (opcional): Para configurar remote
146
+ *
147
+ * 9. clone - Clonar repositório para local
148
+ * Parâmetros:
149
+ * - owner (obrigatório): Proprietário do repositório
150
+ * - repo (obrigatório): Nome do repositório
151
+ * - projectPath (obrigatório): Caminho local de destino
152
+ *
153
+ * RECOMENDAÇÕES DE USO:
154
+ * - Use nomes descritivos para repositórios
155
+ * - Configure visibilidade adequada para o projeto
156
+ * - Mantenha descrições atualizadas
157
+ * - Use templates para projetos similares
158
+ * - Configure branch padrão adequada
159
+ * - Use paginação para listas grandes
160
+ */
161
+ exports.gitRepositoriesTool = {
162
+ name: 'git-repositories',
163
+ description: 'Manage Git repositories (GitHub + Gitea) with multiple actions: create, list, get, update, delete, fork, search, init, clone. Suporte completo a GitHub e Gitea simultaneamente. Boas práticas (solo): use para iniciar projetos, ajustar descrição/privacidade e manter organização; inicialize com README/LICENSE/.gitignore e defina a branch padrão. Crie tags e releases para pontos estáveis e rollback mais simples.',
164
+ inputSchema: {
165
+ type: 'object',
166
+ properties: {
167
+ action: {
168
+ type: 'string',
169
+ enum: ['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'init', 'clone'],
170
+ description: 'Action to perform on repositories'
171
+ },
172
+ owner: { type: 'string', description: 'Repository owner' },
173
+ repo: { type: 'string', description: 'Repository name' },
174
+ provider: { type: 'string', enum: ['gitea', 'github'], description: 'Provider to use (gitea or github)' },
175
+ projectPath: { type: 'string', description: 'Local project path for git operations' },
176
+ name: { type: 'string', description: 'Repository name for creation' },
177
+ description: { type: 'string', description: 'Repository description' },
178
+ private: { type: 'boolean', description: 'Private repository' },
179
+ auto_init: { type: 'boolean', description: 'Auto initialize with README' },
180
+ gitignores: { type: 'string', description: 'Gitignore template' },
181
+ license: { type: 'string', description: 'License template' },
182
+ readme: { type: 'string', description: 'README content' },
183
+ default_branch: { type: 'string', description: 'Default branch name' },
184
+ username: { type: 'string', description: 'Username for listing repos' },
185
+ page: { type: 'number', description: 'Page number', minimum: 1 },
186
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
187
+ new_name: { type: 'string', description: 'New repository name' },
188
+ new_description: { type: 'string', description: 'New repository description' },
189
+ new_private: { type: 'boolean', description: 'New privacy setting' },
190
+ archived: { type: 'boolean', description: 'Archive status' },
191
+ organization: { type: 'string', description: 'Organization for fork' },
192
+ query: { type: 'string', description: 'Search query' }
193
+ },
194
+ required: ['action', 'owner', 'repo', 'provider', 'projectPath']
195
+ },
196
+ /**
197
+ * Handler principal da tool git-repositories
198
+ *
199
+ * FUNCIONALIDADE:
200
+ * - Valida entrada usando Zod schema
201
+ * - Roteia para método específico baseado na ação
202
+ * - Trata erros de forma uniforme
203
+ * - Retorna resultado padronizado
204
+ *
205
+ * FLUXO:
206
+ * 1. Validação de entrada
207
+ * 2. Roteamento por ação
208
+ * 3. Execução do método específico
209
+ * 4. Tratamento de erros
210
+ * 5. Retorno de resultado
211
+ *
212
+ * TRATAMENTO DE ERROS:
213
+ * - Validação: erro de schema
214
+ * - Execução: erro da operação
215
+ * - Roteamento: ação não suportada
216
+ *
217
+ * RECOMENDAÇÕES:
218
+ * - Sempre valide entrada antes de processar
219
+ * - Trate erros específicos adequadamente
220
+ * - Log detalhes de erro para debug
221
+ * - Retorne mensagens de erro úteis
222
+ */
223
+ async handler(input) {
224
+ try {
225
+ const validatedInput = GitRepositoriesInputSchema.parse(input);
226
+ // Aplicar auto-detecção apenas para owner/username dentro do provider especificado
227
+ const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
228
+ // Usar o provider especificado pelo usuário
229
+ const provider = index_js_1.globalProviderFactory.getProvider(processedInput.provider);
230
+ if (!provider) {
231
+ throw new Error(`Provider '${processedInput.provider}' não encontrado`);
232
+ }
233
+ switch (processedInput.action) {
234
+ case 'create':
235
+ return await this.createRepository(processedInput, provider);
236
+ case 'list':
237
+ return await this.listRepositories(processedInput, provider);
238
+ case 'get':
239
+ return await this.getRepository(processedInput, provider);
240
+ case 'update':
241
+ return await this.updateRepository(processedInput, provider);
242
+ case 'delete':
243
+ return await this.deleteRepository(processedInput, provider);
244
+ case 'fork':
245
+ return await this.forkRepository(processedInput, provider);
246
+ case 'search':
247
+ return await this.searchRepositories(processedInput, provider);
248
+ case 'init':
249
+ return await this.initRepository(processedInput, provider);
250
+ case 'clone':
251
+ return await this.cloneRepository(processedInput, provider);
252
+ default:
253
+ throw new Error(`Ação não suportada: ${processedInput.action}`);
254
+ }
255
+ }
256
+ catch (error) {
257
+ return {
258
+ success: false,
259
+ action: input.action,
260
+ message: 'Erro na operação de repositórios',
261
+ error: error instanceof Error ? error.message : String(error)
262
+ };
263
+ }
264
+ },
265
+ /**
266
+ * Cria um novo repositório
267
+ *
268
+ * FUNCIONALIDADE:
269
+ * - Valida parâmetros obrigatórios
270
+ * - Configura dados padrão
271
+ * - Chama API do provider para criação
272
+ * - Retorna resultado formatado
273
+ *
274
+ * PARÂMETROS OBRIGATÓRIOS:
275
+ * - name: Nome do repositório
276
+ *
277
+ * PARÂMETROS OPCIONAIS:
278
+ * - description: Descrição do repositório
279
+ * - private: Visibilidade (padrão: false)
280
+ * - auto_init: Inicializar com README (padrão: false)
281
+ * - gitignores: Template de .gitignore
282
+ * - license: Template de licença
283
+ * - readme: Conteúdo do README
284
+ * - default_branch: Branch padrão (padrão: main)
285
+ *
286
+ * VALIDAÇÕES:
287
+ * - Nome obrigatório
288
+ * - Nome único no usuário/organização
289
+ * - Permissões adequadas
290
+ *
291
+ * RECOMENDAÇÕES:
292
+ * - Use nomes descritivos e únicos
293
+ * - Configure visibilidade adequada
294
+ * - Inicialize com README para projetos novos
295
+ * - Use templates para consistência
296
+ */
297
+ async createRepository(params, provider) {
298
+ try {
299
+ if (!params.name) {
300
+ throw new Error('Nome do repositório é obrigatório');
301
+ }
302
+ const repository = await provider.createRepository(params.name, params.description, params.private || false);
303
+ return {
304
+ success: true,
305
+ action: 'create',
306
+ message: `Repositório '${params.name}' criado com sucesso`,
307
+ data: repository
308
+ };
309
+ }
310
+ catch (error) {
311
+ throw new Error(`Falha ao criar repositório: ${error instanceof Error ? error.message : String(error)}`);
312
+ }
313
+ },
314
+ async listRepositories(params, provider) {
315
+ try {
316
+ const page = params.page || 1;
317
+ const limit = params.limit || 30;
318
+ const repositories = await provider.listRepositories(params.username, page, limit);
319
+ return {
320
+ success: true,
321
+ action: 'list',
322
+ message: `${repositories.length} repositórios encontrados`,
323
+ data: {
324
+ repositories,
325
+ page,
326
+ limit,
327
+ total: repositories.length
328
+ }
329
+ };
330
+ }
331
+ catch (error) {
332
+ throw new Error(`Falha ao listar repositórios: ${error instanceof Error ? error.message : String(error)}`);
333
+ }
334
+ },
335
+ async getRepository(params, provider) {
336
+ try {
337
+ if (!params.owner || !params.repo) {
338
+ throw new Error('Owner e nome do repositório são obrigatórios');
339
+ }
340
+ const repository = await provider.getRepository(params.owner, params.repo);
341
+ return {
342
+ success: true,
343
+ action: 'get',
344
+ message: `Repositório '${params.owner}/${params.repo}' obtido com sucesso`,
345
+ data: repository
346
+ };
347
+ }
348
+ catch (error) {
349
+ throw new Error(`Falha ao obter repositório: ${error instanceof Error ? error.message : String(error)}`);
350
+ }
351
+ },
352
+ async updateRepository(params, provider) {
353
+ try {
354
+ if (!params.owner || !params.repo) {
355
+ throw new Error('Owner e nome do repositório são obrigatórios');
356
+ }
357
+ const updateData = {};
358
+ if (params.new_name)
359
+ updateData.name = params.new_name;
360
+ if (params.new_description !== undefined)
361
+ updateData.description = params.new_description;
362
+ if (params.new_private !== undefined)
363
+ updateData.private = params.new_private;
364
+ if (params.archived !== undefined)
365
+ updateData.archived = params.archived;
366
+ if (Object.keys(updateData).length === 0) {
367
+ throw new Error('Nenhum campo para atualizar foi fornecido');
368
+ }
369
+ const repository = await provider.updateRepository(params.owner, params.repo, updateData);
370
+ return {
371
+ success: true,
372
+ action: 'update',
373
+ message: `Repositório '${params.owner}/${params.repo}' atualizado com sucesso`,
374
+ data: repository
375
+ };
376
+ }
377
+ catch (error) {
378
+ throw new Error(`Falha ao atualizar repositório: ${error instanceof Error ? error.message : String(error)}`);
379
+ }
380
+ },
381
+ async deleteRepository(params, provider) {
382
+ try {
383
+ if (!params.owner || !params.repo) {
384
+ throw new Error('Owner e nome do repositório são obrigatórios');
385
+ }
386
+ await provider.deleteRepository(params.owner, params.repo);
387
+ return {
388
+ success: true,
389
+ action: 'delete',
390
+ message: `Repositório '${params.owner}/${params.repo}' deletado com sucesso`,
391
+ data: { deleted: true }
392
+ };
393
+ }
394
+ catch (error) {
395
+ throw new Error(`Falha ao deletar repositório: ${error instanceof Error ? error.message : String(error)}`);
396
+ }
397
+ },
398
+ async forkRepository(params, provider) {
399
+ try {
400
+ if (!params.owner || !params.repo) {
401
+ throw new Error('Owner e nome do repositório são obrigatórios');
402
+ }
403
+ const repository = await provider.forkRepository(params.owner, params.repo, params.organization);
404
+ return {
405
+ success: true,
406
+ action: 'fork',
407
+ message: `Fork do repositório '${params.owner}/${params.repo}' criado com sucesso`,
408
+ data: repository
409
+ };
410
+ }
411
+ catch (error) {
412
+ throw new Error(`Falha ao fazer fork do repositório: ${error instanceof Error ? error.message : String(error)}`);
413
+ }
414
+ },
415
+ async searchRepositories(params, provider) {
416
+ try {
417
+ if (!params.query) {
418
+ throw new Error('Query de busca é obrigatória');
419
+ }
420
+ const page = params.page || 1;
421
+ const limit = params.limit || 30;
422
+ const repositories = await provider.searchRepositories(params.query, page, limit);
423
+ return {
424
+ success: true,
425
+ action: 'search',
426
+ message: `${repositories.length} repositórios encontrados para '${params.query}'`,
427
+ data: {
428
+ repositories,
429
+ query: params.query,
430
+ page,
431
+ limit,
432
+ total: repositories.length
433
+ }
434
+ };
435
+ }
436
+ catch (error) {
437
+ throw new Error(`Falha ao buscar repositórios: ${error instanceof Error ? error.message : String(error)}`);
438
+ }
439
+ },
440
+ /**
441
+ * Inicializa um repositório Git local
442
+ *
443
+ * FUNCIONALIDADE:
444
+ * - Executa 'git init' no diretório especificado
445
+ * - Cria estrutura básica do Git
446
+ * - Adiciona remote se especificado
447
+ *
448
+ * PARÂMETROS OBRIGATÓRIOS:
449
+ * - projectPath: Caminho do projeto local
450
+ *
451
+ * PARÂMETROS OPCIONAIS:
452
+ * - owner/repo: Para configurar remote
453
+ * - provider: Para determinar URL do remote
454
+ *
455
+ * RECOMENDAÇÕES:
456
+ * - Verifique se diretório existe
457
+ * - Use caminhos absolutos
458
+ * - Configure remote após inicialização
459
+ */
460
+ async initRepository(params, provider) {
461
+ try {
462
+ if (!params.projectPath) {
463
+ throw new Error('projectPath é obrigatório para inicialização do repositório');
464
+ }
465
+ // Executa git init no diretório especificado
466
+ const initResult = await (0, terminal_controller_js_1.runTerminalCmd)({
467
+ command: `git init "${params.projectPath}"`,
468
+ is_background: false,
469
+ explanation: 'Inicializando repositório Git local'
470
+ });
471
+ if (initResult.exitCode !== 0) {
472
+ throw new Error(`Falha ao inicializar repositório: ${initResult.output}`);
473
+ }
474
+ // Se owner/repo foram especificados, configura remote
475
+ if (params.owner && params.repo) {
476
+ const remoteUrl = params.provider === 'gitea'
477
+ ? `http://nas-ubuntu:3000/${params.owner}/${params.repo}.git`
478
+ : `https://github.com/${params.owner}/${params.repo}.git`;
479
+ const remoteResult = await (0, terminal_controller_js_1.runTerminalCmd)({
480
+ command: `cd "${params.projectPath}" && git remote add origin "${remoteUrl}"`,
481
+ is_background: false,
482
+ explanation: 'Configurando remote origin'
483
+ });
484
+ if (remoteResult.exitCode !== 0) {
485
+ console.warn(`Aviso: Não foi possível configurar remote: ${remoteResult.output}`);
486
+ }
487
+ }
488
+ return {
489
+ success: true,
490
+ action: 'init',
491
+ message: `Repositório Git inicializado com sucesso em '${params.projectPath}'`,
492
+ data: {
493
+ path: params.projectPath,
494
+ initialized: true,
495
+ remoteConfigured: !!(params.owner && params.repo && provider)
496
+ }
497
+ };
498
+ }
499
+ catch (error) {
500
+ throw new Error(`Falha ao inicializar repositório: ${error instanceof Error ? error.message : String(error)}`);
501
+ }
502
+ },
503
+ /**
504
+ * Clona um repositório para o diretório local
505
+ *
506
+ * FUNCIONALIDADE:
507
+ * - Clona repositório remoto para diretório local
508
+ * - Suporta diferentes protocolos (HTTPS, SSH)
509
+ * - Mantém estrutura de diretórios
510
+ *
511
+ * PARÂMETROS OBRIGATÓRIOS:
512
+ * - owner: Proprietário do repositório
513
+ * - repo: Nome do repositório
514
+ * - projectPath: Caminho local de destino
515
+ * - provider: Provider a ser usado
516
+ *
517
+ * RECOMENDAÇÕES:
518
+ * - Verifique espaço em disco disponível
519
+ * - Use caminhos absolutos
520
+ * - Considere profundidade de clone para repositórios grandes
521
+ */
522
+ async cloneRepository(params, provider) {
523
+ try {
524
+ if (!params.owner || !params.repo || !params.projectPath) {
525
+ throw new Error('owner, repo e projectPath são obrigatórios para clonagem');
526
+ }
527
+ // Obtém URL do repositório
528
+ const repoUrl = params.provider === 'gitea'
529
+ ? `http://nas-ubuntu:3000/${params.owner}/${params.repo}.git`
530
+ : `https://github.com/${params.owner}/${params.repo}.git`;
531
+ // Executa git clone
532
+ const cloneResult = await (0, terminal_controller_js_1.runTerminalCmd)({
533
+ command: `git clone "${repoUrl}" "${params.projectPath}"`,
534
+ is_background: false,
535
+ explanation: 'Clonando repositório remoto'
536
+ });
537
+ if (cloneResult.exitCode !== 0) {
538
+ throw new Error(`Falha ao clonar repositório: ${cloneResult.output}`);
539
+ }
540
+ return {
541
+ success: true,
542
+ action: 'clone',
543
+ message: `Repositório '${params.owner}/${params.repo}' clonado com sucesso para '${params.projectPath}'`,
544
+ data: {
545
+ source: `${params.owner}/${params.repo}`,
546
+ destination: params.projectPath,
547
+ cloned: true,
548
+ url: repoUrl
549
+ }
550
+ };
551
+ }
552
+ catch (error) {
553
+ throw new Error(`Falha ao clonar repositório: ${error instanceof Error ? error.message : String(error)}`);
554
+ }
555
+ }
556
+ };
557
+ //# sourceMappingURL=git-repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-repositories.js","sourceRoot":"","sources":["../../src/tools/git-repositories.ts"],"names":[],"mappings":"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"}