@andrebuzeli/git-mcp 2.28.2 → 2.29.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 (83) hide show
  1. package/dist/providers/error-handler.d.ts +24 -0
  2. package/dist/providers/error-handler.d.ts.map +1 -1
  3. package/dist/providers/error-handler.js +59 -0
  4. package/dist/providers/error-handler.js.map +1 -1
  5. package/dist/server.js +2 -2
  6. package/dist/server.js.map +1 -1
  7. package/dist/tools/git-archive.d.ts +13 -9
  8. package/dist/tools/git-archive.d.ts.map +1 -1
  9. package/dist/tools/git-archive.js +34 -21
  10. package/dist/tools/git-archive.js.map +1 -1
  11. package/dist/tools/git-branches.d.ts +150 -146
  12. package/dist/tools/git-branches.d.ts.map +1 -1
  13. package/dist/tools/git-branches.js +184 -171
  14. package/dist/tools/git-branches.js.map +1 -1
  15. package/dist/tools/git-commits.d.ts +161 -157
  16. package/dist/tools/git-commits.d.ts.map +1 -1
  17. package/dist/tools/git-commits.js +200 -187
  18. package/dist/tools/git-commits.js.map +1 -1
  19. package/dist/tools/git-config.d.ts +18 -14
  20. package/dist/tools/git-config.d.ts.map +1 -1
  21. package/dist/tools/git-config.js +57 -44
  22. package/dist/tools/git-config.js.map +1 -1
  23. package/dist/tools/git-files.d.ts +204 -200
  24. package/dist/tools/git-files.d.ts.map +1 -1
  25. package/dist/tools/git-files.js +233 -220
  26. package/dist/tools/git-files.js.map +1 -1
  27. package/dist/tools/git-initialize.d.ts +46 -42
  28. package/dist/tools/git-initialize.d.ts.map +1 -1
  29. package/dist/tools/git-initialize.js +81 -68
  30. package/dist/tools/git-initialize.js.map +1 -1
  31. package/dist/tools/git-issues.d.ts +193 -189
  32. package/dist/tools/git-issues.d.ts.map +1 -1
  33. package/dist/tools/git-issues.js +238 -225
  34. package/dist/tools/git-issues.js.map +1 -1
  35. package/dist/tools/git-pulls.d.ts +212 -208
  36. package/dist/tools/git-pulls.d.ts.map +1 -1
  37. package/dist/tools/git-pulls.js +238 -225
  38. package/dist/tools/git-pulls.js.map +1 -1
  39. package/dist/tools/git-releases.d.ts +160 -156
  40. package/dist/tools/git-releases.d.ts.map +1 -1
  41. package/dist/tools/git-releases.js +183 -170
  42. package/dist/tools/git-releases.js.map +1 -1
  43. package/dist/tools/git-remote.d.ts +9 -5
  44. package/dist/tools/git-remote.d.ts.map +1 -1
  45. package/dist/tools/git-remote.js +26 -13
  46. package/dist/tools/git-remote.js.map +1 -1
  47. package/dist/tools/git-repositories.d.ts +179 -175
  48. package/dist/tools/git-repositories.d.ts.map +1 -1
  49. package/dist/tools/git-repositories.js +230 -217
  50. package/dist/tools/git-repositories.js.map +1 -1
  51. package/dist/tools/git-reset.d.ts +13 -9
  52. package/dist/tools/git-reset.d.ts.map +1 -1
  53. package/dist/tools/git-reset.js +27 -14
  54. package/dist/tools/git-reset.js.map +1 -1
  55. package/dist/tools/git-revert.d.ts +14 -10
  56. package/dist/tools/git-revert.d.ts.map +1 -1
  57. package/dist/tools/git-revert.js +30 -17
  58. package/dist/tools/git-revert.js.map +1 -1
  59. package/dist/tools/git-stash.d.ts +10 -6
  60. package/dist/tools/git-stash.d.ts.map +1 -1
  61. package/dist/tools/git-stash.js +23 -10
  62. package/dist/tools/git-stash.js.map +1 -1
  63. package/dist/tools/git-sync.d.ts +18 -14
  64. package/dist/tools/git-sync.d.ts.map +1 -1
  65. package/dist/tools/git-sync.js +46 -33
  66. package/dist/tools/git-sync.js.map +1 -1
  67. package/dist/tools/git-tags.d.ts +137 -133
  68. package/dist/tools/git-tags.d.ts.map +1 -1
  69. package/dist/tools/git-tags.js +164 -151
  70. package/dist/tools/git-tags.js.map +1 -1
  71. package/dist/tools/git-upload-project.d.ts +5 -1
  72. package/dist/tools/git-upload-project.d.ts.map +1 -1
  73. package/dist/tools/git-upload-project.js +21 -1
  74. package/dist/tools/git-upload-project.js.map +1 -1
  75. package/dist/tools/git-webhooks.d.ts +147 -143
  76. package/dist/tools/git-webhooks.d.ts.map +1 -1
  77. package/dist/tools/git-webhooks.js +174 -157
  78. package/dist/tools/git-webhooks.js.map +1 -1
  79. package/dist/utils/git-error-analyzer.d.ts +64 -0
  80. package/dist/utils/git-error-analyzer.d.ts.map +1 -0
  81. package/dist/utils/git-error-analyzer.js +286 -0
  82. package/dist/utils/git-error-analyzer.js.map +1 -0
  83. package/package.json +2 -2
@@ -8,116 +8,116 @@ const terminal_controller_js_1 = require("../utils/terminal-controller.js");
8
8
  /**
9
9
  * Tool: git-repositories
10
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
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
14
  * de outras tools ou comandos externos.
15
15
  *
16
16
  * FUNCIONALIDADES IMPLEMENTADAS:
17
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
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
23
  *
24
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
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
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
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
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
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
41
  *
42
- * PARÂMETROS OBRIGATÓRIOS:
43
- * - action: Ação a executar (create, list, get, update, delete, fork, search, init, clone)
42
+ * PARÂMETROS OBRIGATÓRIOS:
43
+ * - action: Ação a executar (create, list, get, update, delete, fork, search, init, clone)
44
44
  * - provider: Provedor a usar (gitea ou github)
45
- * - owner: Proprietário do repositório (obrigatório para operações remotas)
46
- * - repo: Nome do repositório (obrigatório para operações remotas)
47
- * - projectPath: Caminho do projeto local (obrigatório para operações locais)
45
+ * - owner: Proprietário do repositório (obrigatório para operações remotas)
46
+ * - repo: Nome do repositório (obrigatório para operações remotas)
47
+ * - projectPath: Caminho do projeto local (obrigatório para operações locais)
48
48
  *
49
- * PARÂMETROS OPCIONAIS:
50
- * - name: Nome do repositório para criação
51
- * - description: Descrição do repositório
52
- * - private: Visibilidade do repositório
53
- * - auto_init: Inicialização automática com README
49
+ * PARÂMETROS OPCIONAIS:
50
+ * - name: Nome do repositório para criação
51
+ * - description: Descrição do repositório
52
+ * - private: Visibilidade do repositório
53
+ * - auto_init: Inicialização automática com README
54
54
  * - gitignores: Template de .gitignore
55
- * - license: Template de licença
56
- * - readme: Conteúdo do README
57
- * - default_branch: Branch padrão
58
- * - username: Usuário para listagem
59
- * - page: Página para paginação
55
+ * - license: Template de licença
56
+ * - readme: Conteúdo do README
57
+ * - default_branch: Branch padrão
58
+ * - username: Usuário para listagem
59
+ * - page: Página para paginação
60
60
  * - limit: Limite de resultados
61
- * - new_name: Novo nome para atualização
62
- * - new_description: Nova descrição
61
+ * - new_name: Novo nome para atualização
62
+ * - new_description: Nova descrição
63
63
  * - new_private: Nova visibilidade
64
64
  * - archived: Status de arquivamento
65
- * - organization: Organização para fork
65
+ * - organization: Organização para fork
66
66
  * - query: Termo de busca
67
67
  *
68
68
  * CASOS DE USO:
69
- * 1. Criação de repositórios para novos projetos
70
- * 2. Backup e migração de código
71
- * 3. Organização de projetos em equipe
72
- * 4. Automação de workflows de desenvolvimento
73
- * 5. Gerenciamento de repositórios em massa
74
- * 6. Configuração de templates de projeto
75
- * 7. Sincronização entre diferentes provedores
69
+ * 1. Criação de repositórios para novos projetos
70
+ * 2. Backup e migração de código
71
+ * 3. Organização de projetos em equipe
72
+ * 4. Automação de workflows de desenvolvimento
73
+ * 5. Gerenciamento de repositórios em massa
74
+ * 6. Configuração de templates de projeto
75
+ * 7. Sincronização entre diferentes provedores
76
76
  *
77
77
  * EXEMPLOS DE USO:
78
- * - Criar repositório: action=create, name=meu-projeto, description=Projeto incrível
79
- * - Listar repositórios: action=list, username=usuario
80
- * - Buscar repositórios: action=search, query=react typescript
81
- * - Clonar repositório: action=clone, url=https://github.com/user/repo.git
78
+ * - Criar repositório: action=create, name=meu-projeto, description=Projeto incrível
79
+ * - Listar repositórios: action=list, username=usuario
80
+ * - Buscar repositórios: action=search, query=react typescript
81
+ * - Clonar repositório: action=clone, url=https://github.com/user/repo.git
82
82
  * - Inicializar local: action=init, projectPath=/path/to/project
83
83
  *
84
- * RECOMENDAÇÕES:
84
+ * RECOMENDAÇÕES:
85
85
  * - Use nomes descritivos e consistentes
86
86
  * - Configure visibilidade adequada para cada projeto
87
- * - Mantenha descrições atualizadas e informativas
88
- * - Use templates para padronização
89
- * - Configure branches padrão apropriadas
90
- * - Documente configurações importantes
91
- * - Use licenças adequadas para cada projeto
87
+ * - Mantenha descrições atualizadas e informativas
88
+ * - Use templates para padronização
89
+ * - Configure branches padrão apropriadas
90
+ * - Documente configurações importantes
91
+ * - Use licenças adequadas para cada projeto
92
92
  *
93
- * LIMITAÇÕES:
94
- * - Operações de arquivamento dependem do provedor
95
- * - Transferência de propriedade requer permissões especiais
96
- * - Alguns provedores podem ter limitações de API
93
+ * LIMITAÇÕES:
94
+ * - Operações de arquivamento dependem do provedor
95
+ * - Transferência de propriedade requer permissões especiais
96
+ * - Alguns provedores podem ter limitações de API
97
97
  *
98
- * SEGURANÇA:
99
- * - Tokens de acesso são obrigatórios para operações remotas
100
- * - Validação de permissões antes de operações destrutivas
101
- * - Logs detalhados de todas as operações
102
- * - Tratamento seguro de informações sensíveis
98
+ * SEGURANÇA:
99
+ * - Tokens de acesso são obrigatórios para operações remotas
100
+ * - Validação de permissões antes de operações destrutivas
101
+ * - Logs detalhados de todas as operações
102
+ * - Tratamento seguro de informações sensíveis
103
103
  */
104
104
  /**
105
- * Schema de validação para entrada da tool git-repositories
105
+ * Schema de validação para entrada da tool git-repositories
106
106
  *
107
- * VALIDAÇÕES:
108
- * - action: Ação obrigatória (create, list, get, update, delete, fork, search, init, clone)
109
- * - provider: Obrigatório (gitea ou github)
110
- * - Parâmetros específicos por ação
111
- * - Validação de tipos e formatos
107
+ * VALIDAÇÕES:
108
+ * - action: Ação obrigatória (create, list, get, update, delete, fork, search, init, clone)
109
+ * - provider: Obrigatório (gitea ou github)
110
+ * - Parâmetros específicos por ação
111
+ * - Validação de tipos e formatos
112
112
  *
113
- * RECOMENDAÇÕES:
113
+ * RECOMENDAÇÕES:
114
114
  * - Sempre valide entrada antes de usar
115
- * - Use parâmetros opcionais adequadamente
116
- * - Documente parâmetros obrigatórios
115
+ * - Use parâmetros opcionais adequadamente
116
+ * - Documente parâmetros obrigatórios
117
117
  */
118
118
  const GitRepositoriesInputSchema = zod_1.z.object({
119
119
  action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'fork', 'search', 'init', 'clone']),
120
- // Parâmetros comuns
120
+ // Parâmetros comuns
121
121
  repo: zod_1.z.string().optional(),
122
122
  provider: zod_1.z.enum(['gitea', 'github']).describe('Provider to use (gitea or github)'),
123
123
  projectPath: zod_1.z.string().describe('Local project path for git operations'),
@@ -143,7 +143,7 @@ const GitRepositoriesInputSchema = zod_1.z.object({
143
143
  // Para search
144
144
  query: zod_1.z.string().optional(),
145
145
  });
146
- // Schema de saída
146
+ // Schema de saída
147
147
  const GitRepositoriesResultSchema = zod_1.z.object({
148
148
  success: zod_1.z.boolean(),
149
149
  action: zod_1.z.string(),
@@ -154,81 +154,81 @@ const GitRepositoriesResultSchema = zod_1.z.object({
154
154
  /**
155
155
  * Tool: git-repositories
156
156
  *
157
- * DESCRIÇÃO:
158
- * Gerenciamento completo de repositórios Git (GitHub + Gitea) com múltiplas ações
157
+ * DESCRIÇÃO:
158
+ * Gerenciamento completo de repositórios Git (GitHub + Gitea) com múltiplas ações
159
159
  *
160
- * ACTIONS DISPONÍVEIS:
160
+ * ACTIONS DISPONÍVEIS:
161
161
  *
162
- * 1. create - Criar novo repositório
163
- * Parâmetros:
164
- * - name (obrigatório): Nome do repositório
165
- * - description (opcional): Descrição do repositório
166
- * - private (opcional): Repositório privado (padrão: false)
167
- * - auto_init (opcional): Inicializar com README (padrão: false)
162
+ * 1. create - Criar novo repositório
163
+ * Parâmetros:
164
+ * - name (obrigatório): Nome do repositório
165
+ * - description (opcional): Descrição do repositório
166
+ * - private (opcional): Repositório privado (padrão: false)
167
+ * - auto_init (opcional): Inicializar com README (padrão: false)
168
168
  * - gitignores (opcional): Template de .gitignore
169
- * - license (opcional): Template de licença
170
- * - readme (opcional): Conteúdo do README
171
- * - default_branch (opcional): Branch padrão
169
+ * - license (opcional): Template de licença
170
+ * - readme (opcional): Conteúdo do README
171
+ * - default_branch (opcional): Branch padrão
172
172
  *
173
- * 2. list - Listar repositórios
174
- * Parâmetros:
175
- * - username (opcional): Usuário específico (padrão: usuário atual)
176
- * - page (opcional): Página da listagem (padrão: 1)
177
- * - limit (opcional): Itens por página (padrão: 30)
173
+ * 2. list - Listar repositórios
174
+ * Parâmetros:
175
+ * - username (opcional): Usuário específico (padrão: usuário atual)
176
+ * - page (opcional): Página da listagem (padrão: 1)
177
+ * - limit (opcional): Itens por página (padrão: 30)
178
178
  *
179
- * 3. get - Obter detalhes do repositório
180
- * Parâmetros:
181
- * - owner (obrigatório): Proprietário do repositório
182
- * - repo (obrigatório): Nome do repositório
179
+ * 3. get - Obter detalhes do repositório
180
+ * Parâmetros:
181
+ * - owner (obrigatório): Proprietário do repositório
182
+ * - repo (obrigatório): Nome do repositório
183
183
  *
184
- * 4. update - Atualizar repositório
185
- * Parâmetros:
186
- * - owner (obrigatório): Proprietário do repositório
187
- * - repo (obrigatório): Nome do repositório
184
+ * 4. update - Atualizar repositório
185
+ * Parâmetros:
186
+ * - owner (obrigatório): Proprietário do repositório
187
+ * - repo (obrigatório): Nome do repositório
188
188
  * - new_name (opcional): Novo nome
189
- * - new_description (opcional): Nova descrição
189
+ * - new_description (opcional): Nova descrição
190
190
  * - new_private (opcional): Nova visibilidade
191
191
  * - archived (opcional): Status de arquivamento
192
192
  *
193
- * 5. delete - Deletar repositório
194
- * Parâmetros:
195
- * - owner (obrigatório): Proprietário do repositório
196
- * - repo (obrigatório): Nome do repositório
193
+ * 5. delete - Deletar repositório
194
+ * Parâmetros:
195
+ * - owner (obrigatório): Proprietário do repositório
196
+ * - repo (obrigatório): Nome do repositório
197
197
  *
198
- * 6. fork - Fazer fork do repositório
199
- * Parâmetros:
200
- * - owner (obrigatório): Proprietário do repositório original
201
- * - repo (obrigatório): Nome do repositório original
202
- * - organization (opcional): Organização de destino
198
+ * 6. fork - Fazer fork do repositório
199
+ * Parâmetros:
200
+ * - owner (obrigatório): Proprietário do repositório original
201
+ * - repo (obrigatório): Nome do repositório original
202
+ * - organization (opcional): Organização de destino
203
203
  *
204
- * 7. search - Buscar repositórios
205
- * Parâmetros:
206
- * - query (obrigatório): Termo de busca
207
- * - page (opcional): Página da busca (padrão: 1)
208
- * - limit (opcional): Itens por página (padrão: 30)
204
+ * 7. search - Buscar repositórios
205
+ * Parâmetros:
206
+ * - query (obrigatório): Termo de busca
207
+ * - page (opcional): Página da busca (padrão: 1)
208
+ * - limit (opcional): Itens por página (padrão: 30)
209
209
  *
210
- * 8. init - Inicializar repositório Git local
211
- * Parâmetros:
212
- * - projectPath (obrigatório): Caminho do projeto local
210
+ * 8. init - Inicializar repositório Git local
211
+ * Parâmetros:
212
+ * - projectPath (obrigatório): Caminho do projeto local
213
213
  * - owner/repo (opcional): Para configurar remote
214
214
  *
215
- * 9. clone - Clonar repositório para local
216
- * Parâmetros:
217
- * - owner (obrigatório): Proprietário do repositório
218
- * - repo (obrigatório): Nome do repositório
219
- * - projectPath (obrigatório): Caminho local de destino
215
+ * 9. clone - Clonar repositório para local
216
+ * Parâmetros:
217
+ * - owner (obrigatório): Proprietário do repositório
218
+ * - repo (obrigatório): Nome do repositório
219
+ * - projectPath (obrigatório): Caminho local de destino
220
220
  *
221
- * RECOMENDAÇÕES DE USO:
222
- * - Use nomes descritivos para repositórios
221
+ * RECOMENDAÇÕES DE USO:
222
+ * - Use nomes descritivos para repositórios
223
223
  * - Configure visibilidade adequada para o projeto
224
- * - Mantenha descrições atualizadas
224
+ * - Mantenha descrições atualizadas
225
225
  * - Use templates para projetos similares
226
- * - Configure branch padrão adequada
227
- * - Use paginação para listas grandes
226
+ * - Configure branch padrão adequada
227
+ * - Use paginação para listas grandes
228
228
  */
229
229
  exports.gitRepositoriesTool = {
230
230
  name: 'git-repositories',
231
- 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, limit, username, provider\n───────────────\naction get: obtém detalhes específicos\naction get requires: repo, provider\n───────────────\naction update: atualiza configurações\naction update requires: repo, new_name, new_description, new_private, archived, provider\n───────────────\naction delete: remove repositório\naction delete requires: repo, provider\n───────────────\naction fork: cria fork\naction fork requires: repo, organization, provider\n───────────────\naction search: busca repositórios\naction search requires: query, provider\n───────────────\naction init: inicializa repositório local\naction init requires: projectPath, provider\n───────────────\naction clone: clona repositório\naction clone requires: repo, projectPath, provider',
231
+ 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, limit, username, provider\n───────────────\naction get: obtém detalhes específicos\naction get requires: repo, provider\n───────────────\naction update: atualiza configurações\naction update requires: repo, new_name, new_description, new_private, archived, provider\n───────────────\naction delete: remove repositório\naction delete requires: repo, provider\n───────────────\naction fork: cria fork\naction fork requires: repo, organization, provider\n───────────────\naction search: busca repositórios\naction search requires: query, provider\n───────────────\naction init: inicializa repositório local\naction init requires: projectPath, provider\n───────────────\naction clone: clona repositório\naction clone requires: repo, projectPath, provider',
232
232
  inputSchema: {
233
233
  type: 'object',
234
234
  properties: {
@@ -265,37 +265,37 @@ exports.gitRepositoriesTool = {
265
265
  *
266
266
  * FUNCIONALIDADE:
267
267
  * - Valida entrada usando Zod schema
268
- * - Roteia para método específico baseado na ação
268
+ * - Roteia para método específico baseado na ação
269
269
  * - Trata erros de forma uniforme
270
270
  * - Retorna resultado padronizado
271
271
  *
272
272
  * FLUXO:
273
- * 1. Validação de entrada
274
- * 2. Roteamento por ação
275
- * 3. Execução do método específico
273
+ * 1. Validação de entrada
274
+ * 2. Roteamento por ação
275
+ * 3. Execução do método específico
276
276
  * 4. Tratamento de erros
277
277
  * 5. Retorno de resultado
278
278
  *
279
279
  * TRATAMENTO DE ERROS:
280
- * - Validação: erro de schema
281
- * - Execução: erro da operação
282
- * - Roteamento: ação não suportada
280
+ * - Validação: erro de schema
281
+ * - Execução: erro da operação
282
+ * - Roteamento: ação não suportada
283
283
  *
284
- * RECOMENDAÇÕES:
284
+ * RECOMENDAÇÕES:
285
285
  * - Sempre valide entrada antes de processar
286
- * - Trate erros específicos adequadamente
286
+ * - Trate erros específicos adequadamente
287
287
  * - Log detalhes de erro para debug
288
- * - Retorne mensagens de erro úteis
288
+ * - Retorne mensagens de erro úteis
289
289
  */
290
290
  async handler(input) {
291
291
  try {
292
292
  const validatedInput = GitRepositoriesInputSchema.parse(input);
293
- // Aplicar auto-detecção apenas para owner/username dentro do provider especificado
293
+ // Aplicar auto-detecção apenas para owner/username dentro do provider especificado
294
294
  const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
295
- // Usar o provider especificado pelo usuário
295
+ // Usar o provider especificado pelo usuário
296
296
  const provider = index_js_1.globalProviderFactory.getProvider(processedInput.provider);
297
297
  if (!provider) {
298
- throw new Error(`Provider '${processedInput.provider}' não encontrado`);
298
+ throw new Error(`Provider '${processedInput.provider}' não encontrado`);
299
299
  }
300
300
  switch (processedInput.action) {
301
301
  case 'create':
@@ -317,65 +317,65 @@ exports.gitRepositoriesTool = {
317
317
  case 'clone':
318
318
  return await this.cloneRepository(processedInput, provider);
319
319
  default:
320
- throw new Error(`Ação não suportada: ${processedInput.action}`);
320
+ throw new Error(`Ação não suportada: ${processedInput.action}`);
321
321
  }
322
322
  }
323
323
  catch (error) {
324
324
  return {
325
325
  success: false,
326
326
  action: input.action,
327
- message: 'Erro na operação de repositórios',
327
+ message: 'Erro na operação de repositórios',
328
328
  error: error instanceof Error ? error.message : String(error)
329
329
  };
330
330
  }
331
331
  },
332
332
  /**
333
- * Cria um novo repositório
333
+ * Cria um novo repositório
334
334
  *
335
335
  * FUNCIONALIDADE:
336
- * - Valida parâmetros obrigatórios
337
- * - Configura dados padrão
338
- * - Chama API do provider para criação
336
+ * - Valida parâmetros obrigatórios
337
+ * - Configura dados padrão
338
+ * - Chama API do provider para criação
339
339
  * - Retorna resultado formatado
340
340
  *
341
- * PARÂMETROS OBRIGATÓRIOS:
342
- * - name: Nome do repositório
341
+ * PARÂMETROS OBRIGATÓRIOS:
342
+ * - name: Nome do repositório
343
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)
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
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)
349
+ * - license: Template de licença
350
+ * - readme: Conteúdo do README
351
+ * - default_branch: Branch padrão (padrão: main)
352
352
  *
353
- * VALIDAÇÕES:
354
- * - Nome obrigatório
355
- * - Nome único no usuário/organização
356
- * - Permissões adequadas
353
+ * VALIDAÇÕES:
354
+ * - Nome obrigatório
355
+ * - Nome único no usuário/organização
356
+ * - Permissões adequadas
357
357
  *
358
- * RECOMENDAÇÕES:
359
- * - Use nomes descritivos e únicos
358
+ * RECOMENDAÇÕES:
359
+ * - Use nomes descritivos e únicos
360
360
  * - Configure visibilidade adequada
361
361
  * - Inicialize com README para projetos novos
362
- * - Use templates para consistência
362
+ * - Use templates para consistência
363
363
  */
364
364
  async createRepository(params, provider) {
365
365
  try {
366
366
  if (!params.name) {
367
- throw new Error('Nome do repositório é obrigatório');
367
+ throw new Error('Nome do repositório é obrigatório');
368
368
  }
369
369
  const repository = await provider.createRepository(params.name, params.description, params.private || false);
370
370
  return {
371
371
  success: true,
372
372
  action: 'create',
373
- message: `Repositório '${params.name}' criado com sucesso`,
373
+ message: `Repositório '${params.name}' criado com sucesso`,
374
374
  data: repository
375
375
  };
376
376
  }
377
377
  catch (error) {
378
- throw new Error(`Falha ao criar repositório: ${error instanceof Error ? error.message : String(error)}`);
378
+ throw new Error(`Falha ao criar repositório: ${error instanceof Error ? error.message : String(error)}`);
379
379
  }
380
380
  },
381
381
  async listRepositories(params, provider) {
@@ -386,7 +386,7 @@ exports.gitRepositoriesTool = {
386
386
  return {
387
387
  success: true,
388
388
  action: 'list',
389
- message: `${repositories.length} repositórios encontrados`,
389
+ message: `${repositories.length} repositórios encontrados`,
390
390
  data: {
391
391
  repositories,
392
392
  page,
@@ -396,13 +396,13 @@ exports.gitRepositoriesTool = {
396
396
  };
397
397
  }
398
398
  catch (error) {
399
- throw new Error(`Falha ao listar repositórios: ${error instanceof Error ? error.message : String(error)}`);
399
+ throw new Error(`Falha ao listar repositórios: ${error instanceof Error ? error.message : String(error)}`);
400
400
  }
401
401
  },
402
402
  async getRepository(params, provider) {
403
403
  try {
404
404
  if (!params.repo) {
405
- throw new Error('Nome do repositório é obrigatório');
405
+ throw new Error('Nome do repositório é obrigatório');
406
406
  }
407
407
  const currentUser = await provider.getCurrentUser();
408
408
  const owner = currentUser.login;
@@ -410,18 +410,18 @@ exports.gitRepositoriesTool = {
410
410
  return {
411
411
  success: true,
412
412
  action: 'get',
413
- message: `Repositório '${owner}/${params.repo}' obtido com sucesso`,
413
+ message: `Repositório '${owner}/${params.repo}' obtido com sucesso`,
414
414
  data: repository
415
415
  };
416
416
  }
417
417
  catch (error) {
418
- throw new Error(`Falha ao obter repositório: ${error instanceof Error ? error.message : String(error)}`);
418
+ throw new Error(`Falha ao obter repositório: ${error instanceof Error ? error.message : String(error)}`);
419
419
  }
420
420
  },
421
421
  async updateRepository(params, provider) {
422
422
  try {
423
423
  if (!params.repo) {
424
- throw new Error('Nome do repositório é obrigatório');
424
+ throw new Error('Nome do repositório é obrigatório');
425
425
  }
426
426
  const currentUser = await provider.getCurrentUser();
427
427
  const owner = currentUser.login;
@@ -441,18 +441,18 @@ exports.gitRepositoriesTool = {
441
441
  return {
442
442
  success: true,
443
443
  action: 'update',
444
- message: `Repositório '${owner}/${params.repo}' atualizado com sucesso`,
444
+ message: `Repositório '${owner}/${params.repo}' atualizado com sucesso`,
445
445
  data: repository
446
446
  };
447
447
  }
448
448
  catch (error) {
449
- throw new Error(`Falha ao atualizar repositório: ${error instanceof Error ? error.message : String(error)}`);
449
+ throw new Error(`Falha ao atualizar repositório: ${error instanceof Error ? error.message : String(error)}`);
450
450
  }
451
451
  },
452
452
  async deleteRepository(params, provider) {
453
453
  try {
454
454
  if (!params.repo) {
455
- throw new Error('Nome do repositório é obrigatório');
455
+ throw new Error('Nome do repositório é obrigatório');
456
456
  }
457
457
  const currentUser = await provider.getCurrentUser();
458
458
  const owner = currentUser.login;
@@ -460,18 +460,18 @@ exports.gitRepositoriesTool = {
460
460
  return {
461
461
  success: true,
462
462
  action: 'delete',
463
- message: `Repositório '${owner}/${params.repo}' deletado com sucesso`,
463
+ message: `Repositório '${owner}/${params.repo}' deletado com sucesso`,
464
464
  data: { deleted: true }
465
465
  };
466
466
  }
467
467
  catch (error) {
468
- throw new Error(`Falha ao deletar repositório: ${error instanceof Error ? error.message : String(error)}`);
468
+ throw new Error(`Falha ao deletar repositório: ${error instanceof Error ? error.message : String(error)}`);
469
469
  }
470
470
  },
471
471
  async forkRepository(params, provider) {
472
472
  try {
473
473
  if (!params.repo) {
474
- throw new Error('Nome do repositório é obrigatório');
474
+ throw new Error('Nome do repositório é obrigatório');
475
475
  }
476
476
  const currentUser = await provider.getCurrentUser();
477
477
  const owner = currentUser.login;
@@ -479,18 +479,18 @@ exports.gitRepositoriesTool = {
479
479
  return {
480
480
  success: true,
481
481
  action: 'fork',
482
- message: `Fork do repositório '${owner}/${params.repo}' criado com sucesso`,
482
+ message: `Fork do repositório '${owner}/${params.repo}' criado com sucesso`,
483
483
  data: repository
484
484
  };
485
485
  }
486
486
  catch (error) {
487
- throw new Error(`Falha ao fazer fork do repositório: ${error instanceof Error ? error.message : String(error)}`);
487
+ throw new Error(`Falha ao fazer fork do repositório: ${error instanceof Error ? error.message : String(error)}`);
488
488
  }
489
489
  },
490
490
  async searchRepositories(params, provider) {
491
491
  try {
492
492
  if (!params.query) {
493
- throw new Error('Query de busca é obrigatória');
493
+ throw new Error('Query de busca é obrigatória');
494
494
  }
495
495
  const page = params.page || 1;
496
496
  const limit = params.limit || 30;
@@ -498,7 +498,7 @@ exports.gitRepositoriesTool = {
498
498
  return {
499
499
  success: true,
500
500
  action: 'search',
501
- message: `${repositories.length} repositórios encontrados para '${params.query}'`,
501
+ message: `${repositories.length} repositórios encontrados para '${params.query}'`,
502
502
  data: {
503
503
  repositories,
504
504
  query: params.query,
@@ -509,48 +509,48 @@ exports.gitRepositoriesTool = {
509
509
  };
510
510
  }
511
511
  catch (error) {
512
- throw new Error(`Falha ao buscar repositórios: ${error instanceof Error ? error.message : String(error)}`);
512
+ throw new Error(`Falha ao buscar repositórios: ${error instanceof Error ? error.message : String(error)}`);
513
513
  }
514
514
  },
515
515
  /**
516
- * Inicializa um repositório Git local
516
+ * Inicializa um repositório Git local
517
517
  *
518
518
  * FUNCIONALIDADE:
519
- * - Executa 'git init' no diretório especificado
520
- * - Cria estrutura básica do Git
519
+ * - Executa 'git init' no diretório especificado
520
+ * - Cria estrutura básica do Git
521
521
  * - Adiciona remote se especificado
522
522
  *
523
- * PARÂMETROS OBRIGATÓRIOS:
523
+ * PARÂMETROS OBRIGATÓRIOS:
524
524
  * - projectPath: Caminho do projeto local
525
525
  *
526
- * PARÂMETROS OPCIONAIS:
526
+ * PARÂMETROS OPCIONAIS:
527
527
  * - owner/repo: Para configurar remote
528
528
  * - provider: Para determinar URL do remote
529
529
  *
530
- * RECOMENDAÇÕES:
531
- * - Verifique se diretório existe
530
+ * RECOMENDAÇÕES:
531
+ * - Verifique se diretório existe
532
532
  * - Use caminhos absolutos
533
- * - Configure remote após inicialização
533
+ * - Configure remote após inicialização
534
534
  */
535
535
  async initRepository(params, provider) {
536
536
  try {
537
537
  if (!params.projectPath) {
538
- throw new Error('projectPath é obrigatório para inicialização do repositório');
538
+ throw new Error('projectPath é obrigatório para inicialização do repositório');
539
539
  }
540
- // Executa git init no diretório especificado
540
+ // Executa git init no diretório especificado
541
541
  const initResult = await (0, terminal_controller_js_1.runTerminalCmd)({
542
542
  command: `git init "${params.projectPath}"`,
543
543
  is_background: false,
544
- explanation: 'Inicializando repositório Git local'
544
+ explanation: 'Inicializando repositório Git local'
545
545
  });
546
546
  if (initResult.exitCode !== 0) {
547
- throw new Error(`Falha ao inicializar repositório: ${initResult.output}`);
547
+ throw new Error(`Falha ao inicializar repositório: ${initResult.output}`);
548
548
  }
549
549
  // Se owner/repo foram especificados, configura remote
550
550
  if (params.repo && provider) {
551
551
  const currentUser = await provider.getCurrentUser();
552
552
  const owner = currentUser.login;
553
- // Obtém URL base do provider
553
+ // Obtém URL base do provider
554
554
  const providerConfig = provider.getConfig ? provider.getConfig() : null;
555
555
  const baseUrl = providerConfig?.apiUrl || (params.provider === 'gitea' ? 'http://nas-ubuntu:3000' : 'https://github.com');
556
556
  const remoteUrl = params.provider === 'gitea'
@@ -562,13 +562,13 @@ exports.gitRepositoriesTool = {
562
562
  explanation: 'Configurando remote origin'
563
563
  });
564
564
  if (remoteResult.exitCode !== 0) {
565
- console.warn(`Aviso: Não foi possível configurar remote: ${remoteResult.output}`);
565
+ console.warn(`Aviso: Não foi possível configurar remote: ${remoteResult.output}`);
566
566
  }
567
567
  }
568
568
  return {
569
569
  success: true,
570
570
  action: 'init',
571
- message: `Repositório Git inicializado com sucesso em '${params.projectPath}'`,
571
+ message: `Repositório Git inicializado com sucesso em '${params.projectPath}'`,
572
572
  data: {
573
573
  path: params.projectPath,
574
574
  initialized: true,
@@ -577,36 +577,36 @@ exports.gitRepositoriesTool = {
577
577
  };
578
578
  }
579
579
  catch (error) {
580
- throw new Error(`Falha ao inicializar repositório: ${error instanceof Error ? error.message : String(error)}`);
580
+ throw new Error(`Falha ao inicializar repositório: ${error instanceof Error ? error.message : String(error)}`);
581
581
  }
582
582
  },
583
583
  /**
584
- * Clona um repositório para o diretório local
584
+ * Clona um repositório para o diretório local
585
585
  *
586
586
  * FUNCIONALIDADE:
587
- * - Clona repositório remoto para diretório local
587
+ * - Clona repositório remoto para diretório local
588
588
  * - Suporta diferentes protocolos (HTTPS, SSH)
589
- * - Mantém estrutura de diretórios
589
+ * - Mantém estrutura de diretórios
590
590
  *
591
- * PARÂMETROS OBRIGATÓRIOS:
592
- * - owner: Proprietário do repositório
593
- * - repo: Nome do repositório
591
+ * PARÂMETROS OBRIGATÓRIOS:
592
+ * - owner: Proprietário do repositório
593
+ * - repo: Nome do repositório
594
594
  * - projectPath: Caminho local de destino
595
595
  * - provider: Provider a ser usado
596
596
  *
597
- * RECOMENDAÇÕES:
598
- * - Verifique espaço em disco disponível
597
+ * RECOMENDAÇÕES:
598
+ * - Verifique espaço em disco disponível
599
599
  * - Use caminhos absolutos
600
- * - Considere profundidade de clone para repositórios grandes
600
+ * - Considere profundidade de clone para repositórios grandes
601
601
  */
602
602
  async cloneRepository(params, provider) {
603
603
  try {
604
604
  if (!params.repo || !params.projectPath) {
605
- throw new Error('repo e projectPath são obrigatórios para clonagem');
605
+ throw new Error('repo e projectPath são obrigatórios para clonagem');
606
606
  }
607
607
  const currentUser = await provider.getCurrentUser();
608
608
  const owner = currentUser.login;
609
- // Obtém URL do repositório
609
+ // Obtém URL do repositório
610
610
  const providerConfig = provider.getConfig ? provider.getConfig() : null;
611
611
  const baseUrl = providerConfig?.apiUrl || (params.provider === 'gitea' ? 'http://nas-ubuntu:3000' : 'https://github.com');
612
612
  const repoUrl = params.provider === 'gitea'
@@ -616,15 +616,15 @@ exports.gitRepositoriesTool = {
616
616
  const cloneResult = await (0, terminal_controller_js_1.runTerminalCmd)({
617
617
  command: `git clone "${repoUrl}" "${params.projectPath}"`,
618
618
  is_background: false,
619
- explanation: 'Clonando repositório remoto'
619
+ explanation: 'Clonando repositório remoto'
620
620
  });
621
621
  if (cloneResult.exitCode !== 0) {
622
- throw new Error(`Falha ao clonar repositório: ${cloneResult.output}`);
622
+ throw new Error(`Falha ao clonar repositório: ${cloneResult.output}`);
623
623
  }
624
624
  return {
625
625
  success: true,
626
626
  action: 'clone',
627
- message: `Repositório '${owner}/${params.repo}' clonado com sucesso para '${params.projectPath}'`,
627
+ message: `Repositório '${owner}/${params.repo}' clonado com sucesso para '${params.projectPath}'`,
628
628
  data: {
629
629
  source: `${owner}/${params.repo}`,
630
630
  destination: params.projectPath,
@@ -634,8 +634,21 @@ exports.gitRepositoriesTool = {
634
634
  };
635
635
  }
636
636
  catch (error) {
637
- throw new Error(`Falha ao clonar repositório: ${error instanceof Error ? error.message : String(error)}`);
637
+ throw new Error(`Falha ao clonar repositório: ${error instanceof Error ? error.message : String(error)}`);
638
638
  }
639
+ },
640
+ /**
641
+ * Verifica se erro é relacionado a Git
642
+ */
643
+ isGitRelatedError(errorMessage) {
644
+ const gitKeywords = [
645
+ 'git', 'commit', 'push', 'pull', 'merge', 'conflict', 'branch',
646
+ 'remote', 'repository', 'authentication', 'permission', 'unauthorized',
647
+ 'divergent', 'non-fast-forward', 'fetch first', 'working tree',
648
+ 'uncommitted', 'stash', 'rebase', 'reset', 'checkout'
649
+ ];
650
+ const errorLower = errorMessage.toLowerCase();
651
+ return gitKeywords.some(keyword => errorLower.includes(keyword));
639
652
  }
640
653
  };
641
654
  //# sourceMappingURL=git-repositories.js.map