@andrebuzeli/git-mcp 3.4.0 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/EXEMPLOS.md +861 -0
  2. package/INSTRUCOES.md +444 -0
  3. package/README.md +63 -283
  4. package/dist/providers/base-provider.d.ts.map +1 -1
  5. package/dist/providers/base-provider.js +3 -26
  6. package/dist/providers/base-provider.js.map +1 -1
  7. package/dist/providers/gitea-provider.d.ts +0 -2
  8. package/dist/providers/gitea-provider.d.ts.map +1 -1
  9. package/dist/providers/gitea-provider.js +0 -62
  10. package/dist/providers/gitea-provider.js.map +1 -1
  11. package/dist/providers/github-provider.d.ts +0 -2
  12. package/dist/providers/github-provider.d.ts.map +1 -1
  13. package/dist/providers/github-provider.js +48 -105
  14. package/dist/providers/github-provider.js.map +1 -1
  15. package/dist/server.d.ts +0 -27
  16. package/dist/server.d.ts.map +1 -1
  17. package/dist/server.js +130 -1215
  18. package/dist/server.js.map +1 -1
  19. package/dist/tools/{git-commits.d.ts → git-analytics.d.ts} +4 -10
  20. package/dist/tools/git-analytics.d.ts.map +1 -0
  21. package/dist/tools/git-analytics.js +18 -0
  22. package/dist/tools/git-analytics.js.map +1 -0
  23. package/dist/tools/git-archive.d.ts +3 -0
  24. package/dist/tools/git-archive.d.ts.map +1 -1
  25. package/dist/tools/git-archive.js +2 -2
  26. package/dist/tools/git-archive.js.map +1 -1
  27. package/dist/tools/git-backup.d.ts +216 -0
  28. package/dist/tools/git-backup.d.ts.map +1 -0
  29. package/dist/tools/git-backup.js +813 -0
  30. package/dist/tools/git-backup.js.map +1 -0
  31. package/dist/tools/git-branches.d.ts +159 -8
  32. package/dist/tools/git-branches.d.ts.map +1 -1
  33. package/dist/tools/git-branches.js +554 -2
  34. package/dist/tools/git-branches.js.map +1 -1
  35. package/dist/tools/git-config.d.ts +3 -0
  36. package/dist/tools/git-config.d.ts.map +1 -1
  37. package/dist/tools/git-config.js +2 -2
  38. package/dist/tools/git-config.js.map +1 -1
  39. package/dist/tools/git-files.d.ts +130 -8
  40. package/dist/tools/git-files.d.ts.map +1 -1
  41. package/dist/tools/git-files.js +426 -2
  42. package/dist/tools/git-files.js.map +1 -1
  43. package/dist/tools/git-issues.d.ts +137 -471
  44. package/dist/tools/git-issues.d.ts.map +1 -1
  45. package/dist/tools/git-issues.js +605 -613
  46. package/dist/tools/git-issues.js.map +1 -1
  47. package/dist/tools/git-monitor.d.ts +161 -0
  48. package/dist/tools/git-monitor.d.ts.map +1 -0
  49. package/dist/tools/git-monitor.js +746 -0
  50. package/dist/tools/git-monitor.js.map +1 -0
  51. package/dist/tools/git-packages.d.ts +5 -2
  52. package/dist/tools/git-packages.d.ts.map +1 -1
  53. package/dist/tools/git-packages.js +3 -3
  54. package/dist/tools/git-packages.js.map +1 -1
  55. package/dist/tools/git-pulls.d.ts +38 -646
  56. package/dist/tools/git-pulls.d.ts.map +1 -1
  57. package/dist/tools/git-pulls.js +64 -716
  58. package/dist/tools/git-pulls.js.map +1 -1
  59. package/dist/tools/git-release.d.ts +187 -0
  60. package/dist/tools/git-release.d.ts.map +1 -0
  61. package/dist/tools/git-release.js +619 -0
  62. package/dist/tools/git-release.js.map +1 -0
  63. package/dist/tools/git-remote.d.ts +112 -77
  64. package/dist/tools/git-remote.d.ts.map +1 -1
  65. package/dist/tools/git-remote.js +481 -183
  66. package/dist/tools/git-remote.js.map +1 -1
  67. package/dist/tools/git-repos.d.ts +19 -0
  68. package/dist/tools/git-repos.d.ts.map +1 -0
  69. package/dist/tools/git-repos.js +18 -0
  70. package/dist/tools/git-repos.js.map +1 -0
  71. package/dist/tools/git-reset.d.ts +121 -74
  72. package/dist/tools/git-reset.d.ts.map +1 -1
  73. package/dist/tools/git-reset.js +540 -159
  74. package/dist/tools/git-reset.js.map +1 -1
  75. package/dist/tools/git-stash.d.ts +119 -78
  76. package/dist/tools/git-stash.d.ts.map +1 -1
  77. package/dist/tools/git-stash.js +560 -209
  78. package/dist/tools/git-stash.js.map +1 -1
  79. package/dist/tools/git-sync.d.ts +3 -163
  80. package/dist/tools/git-sync.d.ts.map +1 -1
  81. package/dist/tools/git-sync.js +9 -326
  82. package/dist/tools/git-sync.js.map +1 -1
  83. package/dist/tools/git-tags.d.ts +105 -331
  84. package/dist/tools/git-tags.d.ts.map +1 -1
  85. package/dist/tools/git-tags.js +545 -416
  86. package/dist/tools/git-tags.js.map +1 -1
  87. package/dist/tools/git-workflow.d.ts +127 -0
  88. package/dist/tools/git-workflow.d.ts.map +1 -0
  89. package/dist/tools/git-workflow.js +359 -0
  90. package/dist/tools/git-workflow.js.map +1 -0
  91. package/dist/utils/auto-detection.d.ts +113 -0
  92. package/dist/utils/auto-detection.d.ts.map +1 -0
  93. package/dist/utils/auto-detection.js +235 -0
  94. package/dist/utils/auto-detection.js.map +1 -0
  95. package/dist/utils/error-handler.d.ts +107 -0
  96. package/dist/utils/error-handler.d.ts.map +1 -0
  97. package/dist/utils/error-handler.js +331 -0
  98. package/dist/utils/error-handler.js.map +1 -0
  99. package/dist/utils/git-operations.d.ts.map +1 -1
  100. package/dist/utils/git-operations.js +6 -51
  101. package/dist/utils/git-operations.js.map +1 -1
  102. package/dist/utils/user-detection.d.ts +1 -13
  103. package/dist/utils/user-detection.d.ts.map +1 -1
  104. package/dist/utils/user-detection.js +1 -26
  105. package/dist/utils/user-detection.js.map +1 -1
  106. package/package.json +62 -60
  107. package/dist/client.d.ts +0 -307
  108. package/dist/client.d.ts.map +0 -1
  109. package/dist/client.js +0 -299
  110. package/dist/client.js.map +0 -1
  111. package/dist/tools/git-branch-protection.d.ts +0 -97
  112. package/dist/tools/git-branch-protection.d.ts.map +0 -1
  113. package/dist/tools/git-branch-protection.js +0 -182
  114. package/dist/tools/git-branch-protection.js.map +0 -1
  115. package/dist/tools/git-commits.d.ts.map +0 -1
  116. package/dist/tools/git-commits.js +0 -5
  117. package/dist/tools/git-commits.js.map +0 -1
  118. package/dist/tools/git-initialize.d.ts +0 -208
  119. package/dist/tools/git-initialize.d.ts.map +0 -1
  120. package/dist/tools/git-initialize.js +0 -470
  121. package/dist/tools/git-initialize.js.map +0 -1
  122. package/dist/tools/git-projects.d.ts +0 -112
  123. package/dist/tools/git-projects.d.ts.map +0 -1
  124. package/dist/tools/git-projects.js +0 -319
  125. package/dist/tools/git-projects.js.map +0 -1
  126. package/dist/tools/git-releases.d.ts +0 -486
  127. package/dist/tools/git-releases.d.ts.map +0 -1
  128. package/dist/tools/git-releases.js +0 -561
  129. package/dist/tools/git-releases.js.map +0 -1
  130. package/dist/tools/git-repositories.d.ts +0 -469
  131. package/dist/tools/git-repositories.d.ts.map +0 -1
  132. package/dist/tools/git-repositories.js +0 -637
  133. package/dist/tools/git-repositories.js.map +0 -1
  134. package/dist/tools/git-revert.d.ts +0 -147
  135. package/dist/tools/git-revert.d.ts.map +0 -1
  136. package/dist/tools/git-revert.js +0 -199
  137. package/dist/tools/git-revert.js.map +0 -1
  138. package/dist/tools/git-update-project.d.ts +0 -309
  139. package/dist/tools/git-update-project.d.ts.map +0 -1
  140. package/dist/tools/git-update-project.js +0 -878
  141. package/dist/tools/git-update-project.js.map +0 -1
@@ -1,637 +0,0 @@
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 COMPLETA:
12
- * Gerenciamento completo de repositórios Git com suporte multi-provider (GitHub e Gitea).
13
- * Esta tool é 100% auto-suficiente e implementa TODAS as operações de repositório sem depender
14
- * de outras tools ou comandos externos.
15
- *
16
- * FUNCIONALIDADES IMPLEMENTADAS:
17
- *
18
- * 1. CRIAÇÃO E CONFIGURAÇÃO:
19
- * - create: Cria novos repositórios com configurações completas
20
- * - init: Inicializa repositórios Git locais
21
- * - clone: Clona repositórios remotos localmente
22
- * - update: Atualiza configurações de repositórios existentes
23
- *
24
- * 2. LISTAGEM E BUSCA:
25
- * - list: Lista repositórios do usuário ou organização
26
- * - get: Obtém detalhes específicos de um repositório
27
- * - search: Busca repositórios por critérios específicos
28
- *
29
- * 3. OPERAÇÕES AVANÇADAS:
30
- * - fork: Cria fork de repositórios existentes
31
- * - delete: Remove repositórios permanentemente
32
- * - archive: Arquivamento de repositórios
33
- * - transfer: Transferência de propriedade
34
- *
35
- * 4. CONFIGURAÇÕES E METADADOS:
36
- * - Visibilidade (público/privado)
37
- * - Descrições e documentação
38
- * - Configurações de branch padrão
39
- * - Templates e inicialização automática
40
- * - Licenças e arquivos de configuração
41
- *
42
- * PARÂMETROS OBRIGATÓRIOS:
43
- * - action: Ação a executar (create, list, get, update, delete, fork, search, init, clone)
44
- * - provider: Provedor a usar (gitea ou github)
45
- * - projectPath: Caminho do projeto local (OBRIGATÓRIO para TODAS as operações)
46
- * - repo: Nome do repositório (extraído automaticamente do projectPath)
47
- *
48
- * PARÂMETROS OPCIONAIS:
49
- * - name: Nome do repositório para criação
50
- * - description: Descrição do repositório
51
- * - private: Visibilidade do repositório
52
- * - auto_init: Inicialização automática com README
53
- * - gitignores: Template de .gitignore
54
- * - license: Template de licença
55
- * - readme: Conteúdo do README
56
- * - default_branch: Branch padrão
57
- * - username: Usuário para listagem
58
- * - page: Página para paginação
59
- * - new_name: Novo nome para atualização
60
- * - new_description: Nova descrição
61
- * - new_private: Nova visibilidade
62
- * - archived: Status de arquivamento
63
- * - organization: Organização para fork
64
- * - query: Termo de busca
65
- *
66
- * CASOS DE USO:
67
- * 1. Criação de repositórios para novos projetos
68
- * 2. Backup e migração de código
69
- * 3. Organização de projetos em equipe
70
- * 4. Automação de workflows de desenvolvimento
71
- * 5. Gerenciamento de repositórios em massa
72
- * 6. Configuração de templates de projeto
73
- * 7. Sincronização entre diferentes provedores
74
- *
75
- * EXEMPLOS DE USO:
76
- * - Criar repositório: action=create, name=meu-projeto, description=Projeto incrível
77
- * - Listar repositórios: action=list, username=usuario
78
- * - Buscar repositórios: action=search, query=react typescript
79
- * - Clonar repositório: action=clone (repo extraído do projectPath)
80
- * - Inicializar local: action=init, projectPath=/path/to/project
81
- *
82
- * RECOMENDAÇÕES:
83
- * - Use nomes descritivos e consistentes
84
- * - Configure visibilidade adequada para cada projeto
85
- * - Mantenha descrições atualizadas e informativas
86
- * - Use templates para padronização
87
- * - Configure branches padrão apropriadas
88
- * - Documente configurações importantes
89
- * - Use licenças adequadas para cada projeto
90
- *
91
- * LIMITAÇÕES:
92
- * - Operações de arquivamento dependem do provedor
93
- * - Transferência de propriedade requer permissões especiais
94
- * - Alguns provedores podem ter limitações de API
95
- *
96
- * SEGURANÇA:
97
- * - Tokens de acesso são obrigatórios para operações remotas
98
- * - Validação de permissões antes de operações destrutivas
99
- * - Logs detalhados de todas as operações
100
- * - Tratamento seguro de informações sensíveis
101
- */
102
- /**
103
- * Schema de validação para entrada da tool git-repositories
104
- *
105
- * VALIDAÇÕES:
106
- * - action: Ação obrigatória (create, list, get, update, delete, fork, search, init, clone)
107
- * - provider: Obrigatório (gitea ou github)
108
- * - Parâmetros específicos por ação
109
- * - Validação de tipos e formatos
110
- *
111
- * RECOMENDAÇÕES:
112
- * - Sempre valide entrada antes de usar
113
- * - Use parâmetros opcionais adequadamente
114
- * - Documente parâmetros obrigatórios
115
- */
116
- const GitRepositoriesInputSchema = zod_1.z.object({
117
- action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'init', 'clone']),
118
- // Parâmetros comuns
119
- provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'),
120
- projectPath: zod_1.z.string().describe('Local project path for git operations'),
121
- repo: zod_1.z.string().optional().describe('Repository name (extracted from projectPath)'),
122
- name: zod_1.z.string().optional(),
123
- description: zod_1.z.string().optional(),
124
- private: zod_1.z.boolean().optional(),
125
- auto_init: zod_1.z.boolean().optional(),
126
- gitignores: zod_1.z.string().optional(),
127
- license: zod_1.z.string().optional(),
128
- readme: zod_1.z.string().optional(),
129
- default_branch: zod_1.z.string().optional(),
130
- // Para list
131
- username: zod_1.z.string().optional(),
132
- page: zod_1.z.number().min(1).optional(),
133
- // Para update
134
- new_name: zod_1.z.string().optional(),
135
- new_description: zod_1.z.string().optional(),
136
- new_private: zod_1.z.boolean().optional(),
137
- archived: zod_1.z.boolean().optional(),
138
- // Para fork
139
- organization: zod_1.z.string().optional(),
140
- // Para search
141
- query: zod_1.z.string().optional(),
142
- });
143
- // Schema de saída
144
- const GitRepositoriesResultSchema = zod_1.z.object({
145
- success: zod_1.z.boolean(),
146
- action: zod_1.z.string(),
147
- message: zod_1.z.string(),
148
- data: zod_1.z.any().optional(),
149
- error: zod_1.z.string().optional()
150
- });
151
- /**
152
- * Tool: git-repositories
153
- *
154
- * DESCRIÇÃO:
155
- * Gerenciamento completo de repositórios Git (GitHub + Gitea) com múltiplas ações
156
- *
157
- * ACTIONS DISPONÍVEIS:
158
- *
159
- * 1. create - Criar novo repositório
160
- * Parâmetros:
161
- * - name (obrigatório): Nome do repositório
162
- * - description (opcional): Descrição do repositório
163
- * - private (opcional): Repositório privado (padrão: false)
164
- * - auto_init (opcional): Inicializar com README (padrão: false)
165
- * - gitignores (opcional): Template de .gitignore
166
- * - license (opcional): Template de licença
167
- * - readme (opcional): Conteúdo do README
168
- * - default_branch (opcional): Branch padrão
169
- *
170
- * 2. list - Listar repositórios
171
- * Parâmetros:
172
- * - username (opcional): Usuário específico (padrão: usuário atual)
173
- * - page (opcional): Página da listagem (padrão: 1)
174
- * - limit (opcional): Itens por página (padrão: 30)
175
- *
176
- * 3. get - Obter detalhes do repositório
177
- * Parâmetros:
178
- * - owner (obrigatório): Proprietário do repositório
179
- * - repo (obrigatório): Nome do repositório
180
- *
181
- * 4. update - Atualizar repositório
182
- * Parâmetros:
183
- * - owner (obrigatório): Proprietário do repositório
184
- * - repo (obrigatório): Nome do repositório
185
- * - new_name (opcional): Novo nome
186
- * - new_description (opcional): Nova descrição
187
- * - new_private (opcional): Nova visibilidade
188
- * - archived (opcional): Status de arquivamento
189
- *
190
- * 5. delete - Deletar repositório
191
- * Parâmetros:
192
- * - owner (obrigatório): Proprietário do repositório
193
- * - repo (obrigatório): Nome do repositório
194
- *
195
- * 6. fork - Fazer fork do repositório
196
- * Parâmetros:
197
- * - owner (obrigatório): Proprietário do repositório original
198
- * - repo (obrigatório): Nome do repositório original
199
- * - organization (opcional): Organização de destino
200
- *
201
- * 7. search - Buscar repositórios
202
- * Parâmetros:
203
- * - query (obrigatório): Termo de busca
204
- * - page (opcional): Página da busca (padrão: 1)
205
- * - limit (opcional): Itens por página (padrão: 30)
206
- *
207
- * 8. init - Inicializar repositório Git local
208
- * Parâmetros:
209
- * - projectPath (obrigatório): Caminho do projeto local
210
- * - owner/repo (opcional): Para configurar remote
211
- *
212
- * 9. clone - Clonar repositório para local
213
- * Parâmetros:
214
- * - owner (obrigatório): Proprietário do repositório
215
- * - repo (obrigatório): Nome do repositório
216
- * - projectPath (obrigatório): Caminho local de destino
217
- *
218
- * RECOMENDAÇÕES DE USO:
219
- * - Use nomes descritivos para repositórios
220
- * - Configure visibilidade adequada para o projeto
221
- * - Mantenha descrições atualizadas
222
- * - Use templates para projetos similares
223
- * - Configure branch padrão adequada
224
- * - Use paginação para listas grandes
225
- */
226
- exports.gitRepositoriesTool = {
227
- name: 'git-repositories',
228
- description: 'tool: Gerencia repositórios Git completos, criação, configuração, busca e operações avançadas\n──────────────\naction create: cria repositório novo\naction create requires: name, description, private, auto_init, gitignores, license, readme, default_branch, provider\n───────────────\naction list: lista repositórios do usuário\naction list requires: page, username, provider\n───────────────\naction get: obtém detalhes específicos\naction get requires: provider\n───────────────\naction update: atualiza configurações\naction update requires: new_name, new_description, new_private, archived, provider\n───────────────\naction delete: remove repositório\naction delete requires: provider\n───────────────\naction fork: cria fork\naction fork requires: organization, provider\n───────────────\naction search: busca repositórios\naction search requires: query, provider\n───────────────\naction init: inicializa repositório local\naction init requires: provider\n───────────────\naction clone: clona repositório\naction clone requires: provider',
229
- inputSchema: {
230
- type: 'object',
231
- properties: {
232
- action: {
233
- type: 'string',
234
- enum: ['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'init', 'clone'],
235
- description: 'Action to perform on repositories'
236
- },
237
- provider: { type: 'string', enum: ['gitea', 'github'], description: 'Provider to use (gitea or github)' },
238
- projectPath: { type: 'string', description: 'Local project path for git operations' },
239
- name: { type: 'string', description: 'Repository name for creation' },
240
- description: { type: 'string', description: 'Repository description' },
241
- private: { type: 'boolean', description: 'Private repository' },
242
- auto_init: { type: 'boolean', description: 'Auto initialize with README' },
243
- gitignores: { type: 'string', description: 'Gitignore template' },
244
- license: { type: 'string', description: 'License template' },
245
- readme: { type: 'string', description: 'README content' },
246
- default_branch: { type: 'string', description: 'Default branch name' },
247
- username: { type: 'string', description: 'Username for listing repos' },
248
- page: { type: 'number', description: 'Page number', minimum: 1 },
249
- new_name: { type: 'string', description: 'New repository name' },
250
- new_description: { type: 'string', description: 'New repository description' },
251
- new_private: { type: 'boolean', description: 'New privacy setting' },
252
- archived: { type: 'boolean', description: 'Archive status' },
253
- organization: { type: 'string', description: 'Organization for fork' },
254
- query: { type: 'string', description: 'Search query' }
255
- },
256
- required: ['action', 'provider', 'projectPath']
257
- },
258
- /**
259
- * Handler principal da tool git-repositories
260
- *
261
- * FUNCIONALIDADE:
262
- * - Valida entrada usando Zod schema
263
- * - Roteia para método específico baseado na ação
264
- * - Trata erros de forma uniforme
265
- * - Retorna resultado padronizado
266
- *
267
- * FLUXO:
268
- * 1. Validação de entrada
269
- * 2. Roteamento por ação
270
- * 3. Execução do método específico
271
- * 4. Tratamento de erros
272
- * 5. Retorno de resultado
273
- *
274
- * TRATAMENTO DE ERROS:
275
- * - Validação: erro de schema
276
- * - Execução: erro da operação
277
- * - Roteamento: ação não suportada
278
- *
279
- * RECOMENDAÇÕES:
280
- * - Sempre valide entrada antes de processar
281
- * - Trate erros específicos adequadamente
282
- * - Log detalhes de erro para debug
283
- * - Retorne mensagens de erro úteis
284
- */
285
- async handler(input) {
286
- try {
287
- const validatedInput = GitRepositoriesInputSchema.parse(input);
288
- // Aplicar extração automática do nome do repositório
289
- const processedInput = (0, user_detection_js_1.applyAutoRepoExtraction)(validatedInput);
290
- // Aplicar auto-detecção apenas para owner/username dentro do provider especificado
291
- const finalInput = await (0, user_detection_js_1.applyAutoUserDetection)(processedInput, processedInput.provider);
292
- // Usar o provider especificado pelo usuário (obrigatório)
293
- if (!finalInput.provider) {
294
- throw new Error("Parâmetro 'provider' é obrigatório e não pode ser omitido");
295
- }
296
- const provider = index_js_1.globalProviderFactory.getProvider(finalInput.provider);
297
- if (!provider) {
298
- throw new Error(`Provider '${finalInput.provider}' não encontrado`);
299
- }
300
- switch (finalInput.action) {
301
- case 'create':
302
- return await this.createRepository(finalInput, provider);
303
- case 'list':
304
- return await this.listRepositories(finalInput, provider);
305
- case 'get':
306
- return await this.getRepository(finalInput, provider);
307
- case 'update':
308
- return await this.updateRepository(finalInput, provider);
309
- case 'delete':
310
- return await this.deleteRepository(finalInput, provider);
311
- case 'fork':
312
- return await this.forkRepository(finalInput, provider);
313
- case 'search':
314
- return await this.searchRepositories(finalInput, provider);
315
- case 'init':
316
- return await this.initRepository(finalInput, provider);
317
- case 'clone':
318
- return await this.cloneRepository(finalInput, provider);
319
- default:
320
- throw new Error(`Ação não suportada: ${finalInput.action}`);
321
- }
322
- }
323
- catch (error) {
324
- return {
325
- success: false,
326
- action: input.action,
327
- message: 'Erro na operação de repositórios',
328
- error: error instanceof Error ? error.message : String(error)
329
- };
330
- }
331
- },
332
- /**
333
- * Cria um novo repositório
334
- *
335
- * FUNCIONALIDADE:
336
- * - Valida parâmetros obrigatórios
337
- * - Configura dados padrão
338
- * - Chama API do provider para criação
339
- * - Retorna resultado formatado
340
- *
341
- * PARÂMETROS OBRIGATÓRIOS:
342
- * - name: Nome do repositório
343
- *
344
- * PARÂMETROS OPCIONAIS:
345
- * - description: Descrição do repositório
346
- * - private: Visibilidade (padrão: false)
347
- * - auto_init: Inicializar com README (padrão: false)
348
- * - gitignores: Template de .gitignore
349
- * - license: Template de licença
350
- * - readme: Conteúdo do README
351
- * - default_branch: Branch padrão (padrão: main)
352
- *
353
- * VALIDAÇÕES:
354
- * - Nome obrigatório
355
- * - Nome único no usuário/organização
356
- * - Permissões adequadas
357
- *
358
- * RECOMENDAÇÕES:
359
- * - Use nomes descritivos e únicos
360
- * - Configure visibilidade adequada
361
- * - Inicialize com README para projetos novos
362
- * - Use templates para consistência
363
- */
364
- async createRepository(params, provider) {
365
- try {
366
- if (!params.name) {
367
- throw new Error('Nome do repositório é obrigatório');
368
- }
369
- const repository = await provider.createRepository(params.name, params.description, params.private || false);
370
- return {
371
- success: true,
372
- action: 'create',
373
- message: `Repositório '${params.name}' criado com sucesso`,
374
- data: repository
375
- };
376
- }
377
- catch (error) {
378
- throw new Error(`Falha ao criar repositório: ${error instanceof Error ? error.message : String(error)}`);
379
- }
380
- },
381
- async listRepositories(params, provider) {
382
- try {
383
- const page = params.page || 1;
384
- const repositories = await provider.listRepositories(params.username, page);
385
- return {
386
- success: true,
387
- action: 'list',
388
- message: `${repositories.length} repositórios encontrados`,
389
- data: {
390
- repositories,
391
- page,
392
- total: repositories.length
393
- }
394
- };
395
- }
396
- catch (error) {
397
- throw new Error(`Falha ao listar repositórios: ${error instanceof Error ? error.message : String(error)}`);
398
- }
399
- },
400
- async getRepository(params, provider) {
401
- try {
402
- if (!params.repo) {
403
- throw new Error('Nome do repositório é obrigatório');
404
- }
405
- const currentUser = await provider.getCurrentUser();
406
- const owner = currentUser.login;
407
- const repository = await provider.getRepository((await provider.getCurrentUser()).login, params.repo);
408
- return {
409
- success: true,
410
- action: 'get',
411
- message: `Repositório '${owner}/${params.repo}' obtido com sucesso`,
412
- data: repository
413
- };
414
- }
415
- catch (error) {
416
- throw new Error(`Falha ao obter repositório: ${error instanceof Error ? error.message : String(error)}`);
417
- }
418
- },
419
- async updateRepository(params, provider) {
420
- try {
421
- if (!params.repo) {
422
- throw new Error('Nome do repositório é obrigatório');
423
- }
424
- const currentUser = await provider.getCurrentUser();
425
- const owner = currentUser.login;
426
- const updateData = {};
427
- if (params.new_name)
428
- updateData.name = params.new_name;
429
- if (params.new_description !== undefined)
430
- updateData.description = params.new_description;
431
- if (params.new_private !== undefined)
432
- updateData.private = params.new_private;
433
- if (params.archived !== undefined)
434
- updateData.archived = params.archived;
435
- if (Object.keys(updateData).length === 0) {
436
- throw new Error('Nenhum campo para atualizar foi fornecido');
437
- }
438
- const repository = await provider.updateRepository((await provider.getCurrentUser()).login, params.repo, updateData);
439
- return {
440
- success: true,
441
- action: 'update',
442
- message: `Repositório '${owner}/${params.repo}' atualizado com sucesso`,
443
- data: repository
444
- };
445
- }
446
- catch (error) {
447
- throw new Error(`Falha ao atualizar repositório: ${error instanceof Error ? error.message : String(error)}`);
448
- }
449
- },
450
- async deleteRepository(params, provider) {
451
- try {
452
- if (!params.repo) {
453
- throw new Error('Nome do repositório é obrigatório');
454
- }
455
- const currentUser = await provider.getCurrentUser();
456
- const owner = currentUser.login;
457
- await provider.deleteRepository((await provider.getCurrentUser()).login, params.repo);
458
- return {
459
- success: true,
460
- action: 'delete',
461
- message: `Repositório '${owner}/${params.repo}' deletado com sucesso`,
462
- data: { deleted: true }
463
- };
464
- }
465
- catch (error) {
466
- throw new Error(`Falha ao deletar repositório: ${error instanceof Error ? error.message : String(error)}`);
467
- }
468
- },
469
- async forkRepository(params, provider) {
470
- try {
471
- if (!params.repo) {
472
- throw new Error('Nome do repositório é obrigatório');
473
- }
474
- const currentUser = await provider.getCurrentUser();
475
- const owner = currentUser.login;
476
- const repository = await provider.forkRepository((await provider.getCurrentUser()).login, params.repo, params.organization);
477
- return {
478
- success: true,
479
- action: 'fork',
480
- message: `Fork do repositório '${owner}/${params.repo}' criado com sucesso`,
481
- data: repository
482
- };
483
- }
484
- catch (error) {
485
- throw new Error(`Falha ao fazer fork do repositório: ${error instanceof Error ? error.message : String(error)}`);
486
- }
487
- },
488
- async searchRepositories(params, provider) {
489
- try {
490
- if (!params.query) {
491
- throw new Error('Query de busca é obrigatória');
492
- }
493
- const page = params.page || 1;
494
- const repositories = await provider.searchRepositories(params.query, page);
495
- return {
496
- success: true,
497
- action: 'search',
498
- message: `${repositories.length} repositórios encontrados para '${params.query}'`,
499
- data: {
500
- repositories,
501
- query: params.query,
502
- page,
503
- total: repositories.length
504
- }
505
- };
506
- }
507
- catch (error) {
508
- throw new Error(`Falha ao buscar repositórios: ${error instanceof Error ? error.message : String(error)}`);
509
- }
510
- },
511
- /**
512
- * Inicializa um repositório Git local
513
- *
514
- * FUNCIONALIDADE:
515
- * - Executa 'git init' no diretório especificado
516
- * - Cria estrutura básica do Git
517
- * - Adiciona remote se especificado
518
- *
519
- * PARÂMETROS OBRIGATÓRIOS:
520
- * - projectPath: Caminho do projeto local
521
- *
522
- * PARÂMETROS OPCIONAIS:
523
- * - owner/repo: Para configurar remote
524
- * - provider: Para determinar URL do remote
525
- *
526
- * RECOMENDAÇÕES:
527
- * - Verifique se diretório existe
528
- * - Use caminhos absolutos
529
- * - Configure remote após inicialização
530
- */
531
- async initRepository(params, provider) {
532
- try {
533
- if (!params.projectPath) {
534
- throw new Error('projectPath é obrigatório para inicialização do repositório');
535
- }
536
- // Executa git init no diretório especificado
537
- const initResult = await (0, terminal_controller_js_1.runTerminalCmd)({
538
- command: `git init`,
539
- is_background: false,
540
- explanation: 'Inicializando repositório Git local'
541
- });
542
- if (initResult.exitCode !== 0) {
543
- throw new Error(`Falha ao inicializar repositório: ${initResult.output}`);
544
- }
545
- // Se owner/repo foram especificados, configura remote
546
- if (params.repo && provider) {
547
- const currentUser = await provider.getCurrentUser();
548
- const owner = currentUser.login;
549
- // Obtém URL base do provider
550
- const providerConfig = provider.getConfig ? provider.getConfig() : null;
551
- const baseUrl = providerConfig?.apiUrl || (params.provider === 'gitea' ? 'http://nas-ubuntu:3000' : 'https://github.com');
552
- const remoteUrl = params.provider === 'gitea'
553
- ? `${baseUrl.replace('/api/v1', '')}/${owner}/${params.repo}.git`
554
- : `https://github.com/${owner}/${params.repo}.git`;
555
- const remoteResult = await (0, terminal_controller_js_1.runTerminalCmd)({
556
- command: `cd "${params.projectPath}" && git remote add origin "${remoteUrl}"`,
557
- is_background: false,
558
- explanation: 'Configurando remote origin'
559
- });
560
- if (remoteResult.exitCode !== 0) {
561
- // Não foi possível configurar remote, mas continua a execução
562
- }
563
- }
564
- return {
565
- success: true,
566
- action: 'init',
567
- message: `Repositório Git inicializado com sucesso em '${params.projectPath}'`,
568
- data: {
569
- path: params.projectPath,
570
- initialized: true,
571
- remoteConfigured: !!(params.repo && provider)
572
- }
573
- };
574
- }
575
- catch (error) {
576
- throw new Error(`Falha ao inicializar repositório: ${error instanceof Error ? error.message : String(error)}`);
577
- }
578
- },
579
- /**
580
- * Clona um repositório para o diretório local
581
- *
582
- * FUNCIONALIDADE:
583
- * - Clona repositório remoto para diretório local
584
- * - Suporta diferentes protocolos (HTTPS, SSH)
585
- * - Mantém estrutura de diretórios
586
- *
587
- * PARÂMETROS OBRIGATÓRIOS:
588
- * - owner: Proprietário do repositório
589
- * - repo: Nome do repositório
590
- * - projectPath: Caminho local de destino
591
- * - provider: Provider a ser usado
592
- *
593
- * RECOMENDAÇÕES:
594
- * - Verifique espaço em disco disponível
595
- * - Use caminhos absolutos
596
- * - Considere profundidade de clone para repositórios grandes
597
- */
598
- async cloneRepository(params, provider) {
599
- try {
600
- if (!params.repo || !params.projectPath) {
601
- throw new Error('repo e projectPath são obrigatórios para clonagem');
602
- }
603
- const currentUser = await provider.getCurrentUser();
604
- const owner = currentUser.login;
605
- // Obtém URL do repositório
606
- const providerConfig = provider.getConfig ? provider.getConfig() : null;
607
- const baseUrl = providerConfig?.apiUrl || (params.provider === 'gitea' ? 'http://nas-ubuntu:3000' : 'https://github.com');
608
- const repoUrl = params.provider === 'gitea'
609
- ? `${baseUrl.replace('/api/v1', '')}/${owner}/${params.repo}.git`
610
- : `https://github.com/${owner}/${params.repo}.git`;
611
- // Executa git clone
612
- const cloneResult = await (0, terminal_controller_js_1.runTerminalCmd)({
613
- command: `git clone "${repoUrl}"`,
614
- is_background: false,
615
- explanation: 'Clonando repositório remoto'
616
- });
617
- if (cloneResult.exitCode !== 0) {
618
- throw new Error(`Falha ao clonar repositório: ${cloneResult.output}`);
619
- }
620
- return {
621
- success: true,
622
- action: 'clone',
623
- message: `Repositório '${owner}/${params.repo}' clonado com sucesso para '${params.projectPath}'`,
624
- data: {
625
- source: `${owner}/${params.repo}`,
626
- destination: params.projectPath,
627
- cloned: true,
628
- url: repoUrl
629
- }
630
- };
631
- }
632
- catch (error) {
633
- throw new Error(`Falha ao clonar repositório: ${error instanceof Error ? error.message : String(error)}`);
634
- }
635
- }
636
- };
637
- //# sourceMappingURL=git-repositories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-repositories.js","sourceRoot":"","sources":["../../src/tools/git-repositories.ts"],"names":[],"mappings":"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"}