@andrebuzeli/git-mcp 2.27.3 → 2.28.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 (112) hide show
  1. package/dist/client.d.ts +306 -306
  2. package/dist/client.js +298 -298
  3. package/dist/config.d.ts +310 -310
  4. package/dist/config.js +392 -392
  5. package/dist/index.d.ts +22 -22
  6. package/dist/index.js +89 -89
  7. package/dist/providers/base-provider.d.ts +160 -156
  8. package/dist/providers/base-provider.d.ts.map +1 -1
  9. package/dist/providers/base-provider.js +274 -260
  10. package/dist/providers/base-provider.js.map +1 -1
  11. package/dist/providers/error-handler.d.ts +50 -50
  12. package/dist/providers/error-handler.js +175 -175
  13. package/dist/providers/gitea-provider.d.ts +97 -97
  14. package/dist/providers/gitea-provider.js +1001 -1001
  15. package/dist/providers/github-provider.d.ts +104 -104
  16. package/dist/providers/github-provider.js +1234 -1234
  17. package/dist/providers/index.d.ts +12 -12
  18. package/dist/providers/index.js +40 -40
  19. package/dist/providers/provider-factory.d.ts +74 -74
  20. package/dist/providers/provider-factory.js +311 -311
  21. package/dist/providers/types.d.ts +318 -298
  22. package/dist/providers/types.d.ts.map +1 -1
  23. package/dist/providers/types.js +6 -6
  24. package/dist/server.d.ts +76 -76
  25. package/dist/server.d.ts.map +1 -1
  26. package/dist/server.js +306 -357
  27. package/dist/server.js.map +1 -1
  28. package/dist/tools/gh-actions.d.ts +252 -252
  29. package/dist/tools/gh-actions.js +389 -389
  30. package/dist/tools/gh-analytics.d.ts +263 -263
  31. package/dist/tools/gh-analytics.js +401 -401
  32. package/dist/tools/gh-code-review.d.ts +304 -304
  33. package/dist/tools/gh-code-review.js +512 -512
  34. package/dist/tools/gh-codespaces.d.ts +138 -138
  35. package/dist/tools/gh-codespaces.js +282 -282
  36. package/dist/tools/gh-deployments.d.ts +300 -300
  37. package/dist/tools/gh-deployments.js +367 -367
  38. package/dist/tools/gh-gists.d.ts +174 -174
  39. package/dist/tools/gh-gists.js +321 -321
  40. package/dist/tools/gh-projects.d.ts +205 -205
  41. package/dist/tools/gh-projects.js +358 -358
  42. package/dist/tools/gh-security.d.ts +274 -274
  43. package/dist/tools/gh-security.js +395 -395
  44. package/dist/tools/gh-sync.d.ts +213 -213
  45. package/dist/tools/gh-sync.js +378 -378
  46. package/dist/tools/gh-workflows.d.ts +290 -290
  47. package/dist/tools/gh-workflows.js +432 -432
  48. package/dist/tools/git-archive.d.ts +165 -165
  49. package/dist/tools/git-archive.js +233 -233
  50. package/dist/tools/git-branches.d.ts +430 -430
  51. package/dist/tools/git-branches.d.ts.map +1 -1
  52. package/dist/tools/git-branches.js +627 -530
  53. package/dist/tools/git-branches.js.map +1 -1
  54. package/dist/tools/git-bundle.d.ts +171 -171
  55. package/dist/tools/git-bundle.js +241 -241
  56. package/dist/tools/git-cherry-pick.d.ts +158 -158
  57. package/dist/tools/git-cherry-pick.js +224 -224
  58. package/dist/tools/git-commits.d.ts +485 -485
  59. package/dist/tools/git-commits.d.ts.map +1 -1
  60. package/dist/tools/git-commits.js +735 -625
  61. package/dist/tools/git-commits.js.map +1 -1
  62. package/dist/tools/git-config.d.ts +140 -140
  63. package/dist/tools/git-config.js +268 -268
  64. package/dist/tools/git-files.d.ts +486 -486
  65. package/dist/tools/git-files.js +607 -607
  66. package/dist/tools/git-issues.d.ts +571 -571
  67. package/dist/tools/git-issues.d.ts.map +1 -1
  68. package/dist/tools/git-issues.js +740 -693
  69. package/dist/tools/git-issues.js.map +1 -1
  70. package/dist/tools/git-pulls.d.ts +694 -694
  71. package/dist/tools/git-pulls.js +732 -732
  72. package/dist/tools/git-rebase.d.ts +137 -137
  73. package/dist/tools/git-rebase.js +213 -213
  74. package/dist/tools/git-releases.d.ts +487 -487
  75. package/dist/tools/git-releases.js +557 -557
  76. package/dist/tools/git-remote.d.ts +138 -138
  77. package/dist/tools/git-remote.js +274 -274
  78. package/dist/tools/git-repositories.d.ts +483 -483
  79. package/dist/tools/git-repositories.js +640 -640
  80. package/dist/tools/git-reset.d.ts +130 -130
  81. package/dist/tools/git-reset.js +223 -223
  82. package/dist/tools/git-revert.d.ts +149 -149
  83. package/dist/tools/git-revert.js +198 -198
  84. package/dist/tools/git-stash.d.ts +140 -140
  85. package/dist/tools/git-stash.js +269 -269
  86. package/dist/tools/git-submodule.d.ts +152 -152
  87. package/dist/tools/git-submodule.js +289 -289
  88. package/dist/tools/git-sync.d.ts +178 -166
  89. package/dist/tools/git-sync.d.ts.map +1 -1
  90. package/dist/tools/git-sync.js +312 -117
  91. package/dist/tools/git-sync.js.map +1 -1
  92. package/dist/tools/git-tags.d.ts +411 -411
  93. package/dist/tools/git-tags.js +485 -485
  94. package/dist/tools/git-webhooks.d.ts +470 -482
  95. package/dist/tools/git-webhooks.d.ts.map +1 -1
  96. package/dist/tools/git-webhooks.js +543 -555
  97. package/dist/tools/git-webhooks.js.map +1 -1
  98. package/dist/tools/git-worktree.d.ts +159 -159
  99. package/dist/tools/git-worktree.js +269 -269
  100. package/dist/tools/repositories.d.ts +405 -405
  101. package/dist/tools/repositories.js +569 -569
  102. package/dist/tools/users.d.ts +372 -372
  103. package/dist/tools/users.js +499 -499
  104. package/dist/tools/validator.d.ts +170 -170
  105. package/dist/tools/validator.js +194 -194
  106. package/dist/tools/version-control.d.ts +136 -136
  107. package/dist/tools/version-control.js +164 -164
  108. package/dist/utils/terminal-controller.d.ts +80 -80
  109. package/dist/utils/terminal-controller.js +345 -345
  110. package/dist/utils/user-detection.d.ts +24 -24
  111. package/dist/utils/user-detection.js +53 -53
  112. package/package.json +59 -59
package/dist/server.js CHANGED
@@ -1,358 +1,307 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GiteaMCPServer = void 0;
4
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
- const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
- const config_js_1 = require("./config.js");
8
- const index_js_2 = require("./providers/index.js");
9
- /**
10
- * Importação de todas as ferramentas MCP disponíveis (31 tools)
11
- *
12
- * GIT CORE (16 tools) - Funcionam com GitHub + Gitea:
13
- * - git-repositories: Gerenciamento de repositórios
14
- * - git-commits: Operações com commits
15
- * - git-branches: Operações com branches
16
- * - git-tags: Gerenciamento de tags
17
- * - git-files: Gerenciamento de arquivos
18
- * - git-upload-project: Upload completo de projeto
19
- * - git-initialize: Inicialização completa de repositório
20
- * - git-issues: Gerenciamento de issues
21
- * - git-pulls: Pull requests e merges
22
- * - git-releases: Gerenciamento de releases
23
- * - git-webhooks: Gerenciamento de webhooks
24
- * - git-rebase: Operações de rebase
25
- * - git-reset: Operações de reset
26
- * - git-revert: Operações de revert
27
- * - git-stash: Gerenciamento de stash
28
- * - git-config: Configuração do Git
29
- * - git-remote: Gerenciamento de remotes
30
- *
31
- * GIT AVANÇADO (5 tools) - Funcionam com GitHub + Gitea:
32
- * - git-cherry-pick: Cherry-pick de commits
33
- * - git-submodule: Gerenciamento de submódulos
34
- * - git-worktree: Gerenciamento de worktrees
35
- * - git-archive: Criação de arquivos
36
- * - git-bundle: Transferência de repositórios
37
- *
38
- * GITHUB EXCLUSIVO (10 tools) - Apenas GitHub:
39
- * - gh-workflows: GitHub Actions workflows
40
- * - gh-actions: GitHub Actions runs
41
- * - gh-deployments: GitHub Deployments
42
- * - gh-security: GitHub Security
43
- * - gh-analytics: GitHub Analytics
44
- * - gh-code-review: GitHub Code Review
45
- * - gh-gists: GitHub Gists
46
- * - gh-codespaces: GitHub Codespaces
47
- * - gh-projects: GitHub Projects
48
- * - gh-sync: GitHub Sync
49
- */
50
- // Git Core Tools (15)
51
- const git_repositories_js_1 = require("./tools/git-repositories.js");
52
- const git_commits_js_1 = require("./tools/git-commits.js");
53
- const git_branches_js_1 = require("./tools/git-branches.js");
54
- const git_tags_js_1 = require("./tools/git-tags.js");
55
- const git_files_js_1 = require("./tools/git-files.js");
56
- const git_upload_project_js_1 = require("./tools/git-upload-project.js");
57
- const git_initialize_js_1 = require("./tools/git-initialize.js");
58
- const git_issues_js_1 = require("./tools/git-issues.js");
59
- const git_pulls_js_1 = require("./tools/git-pulls.js");
60
- const git_releases_js_1 = require("./tools/git-releases.js");
61
- const git_webhooks_js_1 = require("./tools/git-webhooks.js");
62
- const git_rebase_js_1 = require("./tools/git-rebase.js");
63
- const git_reset_js_1 = require("./tools/git-reset.js");
64
- const git_revert_js_1 = require("./tools/git-revert.js");
65
- const git_stash_js_1 = require("./tools/git-stash.js");
66
- const git_config_js_1 = require("./tools/git-config.js");
67
- const git_remote_js_1 = require("./tools/git-remote.js");
68
- // Git Avançado Tools (5)
69
- const git_cherry_pick_js_1 = require("./tools/git-cherry-pick.js");
70
- const git_submodule_js_1 = require("./tools/git-submodule.js");
71
- const git_worktree_js_1 = require("./tools/git-worktree.js");
72
- const git_archive_js_1 = require("./tools/git-archive.js");
73
- const git_bundle_js_1 = require("./tools/git-bundle.js");
74
- // GitHub Exclusivo Tools (10)
75
- const gh_workflows_js_1 = require("./tools/gh-workflows.js");
76
- const gh_actions_js_1 = require("./tools/gh-actions.js");
77
- const gh_deployments_js_1 = require("./tools/gh-deployments.js");
78
- const gh_security_js_1 = require("./tools/gh-security.js");
79
- const gh_analytics_js_1 = require("./tools/gh-analytics.js");
80
- const gh_code_review_js_1 = require("./tools/gh-code-review.js");
81
- const gh_gists_js_1 = require("./tools/gh-gists.js");
82
- const gh_codespaces_js_1 = require("./tools/gh-codespaces.js");
83
- const gh_projects_js_1 = require("./tools/gh-projects.js");
84
- const gh_sync_js_1 = require("./tools/gh-sync.js");
85
- /**
86
- * Array de todas as ferramentas disponíveis (31 tools)
87
- *
88
- * ESTRUTURA:
89
- * - Cada tool deve implementar a interface Tool
90
- * - Nome, descrição e schema são obrigatórios
91
- * - Handler deve ser assíncrono e retornar resultado
92
- *
93
- * ORGANIZAÇÃO:
94
- * - Git Core (16): Funcionam com GitHub + Gitea
95
- * - Git Avançado (5): Funcionam com GitHub + Gitea
96
- * - GitHub Exclusivo (10): Apenas GitHub
97
- *
98
- * USO:
99
- * - Para listagem de tools disponíveis
100
- * - Para execução de tools específicas
101
- * - Para validação de parâmetros
102
- */
103
- const tools = [
104
- // Git Core Tools (16) - GitHub + Gitea
105
- git_repositories_js_1.gitRepositoriesTool,
106
- git_commits_js_1.commitsTool,
107
- git_branches_js_1.branchesTool,
108
- git_tags_js_1.tagsTool,
109
- git_files_js_1.filesTool,
110
- git_upload_project_js_1.uploadProjectTool,
111
- git_initialize_js_1.initializeTool,
112
- git_issues_js_1.issuesTool,
113
- git_pulls_js_1.pullsTool,
114
- git_releases_js_1.releasesTool,
115
- git_webhooks_js_1.webhooksTool,
116
- git_rebase_js_1.gitRebaseTool,
117
- git_reset_js_1.gitResetTool,
118
- git_revert_js_1.gitRevertTool,
119
- git_stash_js_1.gitStashTool,
120
- git_config_js_1.gitConfigTool,
121
- git_remote_js_1.gitRemoteTool,
122
- // Git Avançado Tools (5) - GitHub + Gitea
123
- git_cherry_pick_js_1.gitCherryPickTool,
124
- git_submodule_js_1.gitSubmoduleTool,
125
- git_worktree_js_1.gitWorktreeTool,
126
- git_archive_js_1.gitArchiveTool,
127
- git_bundle_js_1.gitBundleTool,
128
- // GitHub Exclusivo Tools (10) - Apenas GitHub
129
- gh_workflows_js_1.workflowsTool,
130
- gh_actions_js_1.actionsTool,
131
- gh_deployments_js_1.deploymentsTool,
132
- gh_security_js_1.securityTool,
133
- gh_analytics_js_1.analyticsTool,
134
- gh_code_review_js_1.codeReviewTool,
135
- gh_gists_js_1.ghGistsTool,
136
- gh_codespaces_js_1.ghCodespacesTool,
137
- gh_projects_js_1.ghProjectsTool,
138
- gh_sync_js_1.ghSyncTool
139
- ];
140
- /**
141
- * Servidor MCP principal para Gitea
142
- *
143
- * RESPONSABILIDADES:
144
- * - Inicializar servidor MCP
145
- * - Registrar handlers para requests
146
- * - Gerenciar ciclo de vida das tools
147
- * - Tratar erros e validações
148
- *
149
- * ARQUITETURA:
150
- * - Server MCP padrão com transport stdio
151
- * - Handlers para list e call de tools
152
- * - Tratamento centralizado de erros
153
- *
154
- * RECOMENDAÇÕES:
155
- * - Use apenas uma instância por processo
156
- * - Configure handlers antes de conectar
157
- * - Implemente graceful shutdown
158
- */
159
- class GiteaMCPServer {
160
- server;
161
- constructor() {
162
- this.server = new index_js_1.Server({
163
- name: 'git-mcp',
164
- version: '2.16.0',
165
- });
166
- this.setupHandlers();
167
- }
168
- /**
169
- * Configura os handlers para requests MCP
170
- *
171
- * HANDLERS IMPLEMENTADOS:
172
- * - ListTools: Lista todas as tools disponíveis
173
- * - CallTool: Executa uma tool específica
174
- *
175
- * FLUXO:
176
- * 1. Validação de parâmetros
177
- * 2. Busca da tool solicitada
178
- * 3. Execução com tratamento de erros
179
- * 4. Retorno de resultado ou erro
180
- *
181
- * TRATAMENTO DE ERROS:
182
- * - Tool não encontrada: erro específico
183
- * - Erro de execução: captura e formata
184
- * - Erro de validação: mensagem descritiva
185
- */
186
- setupHandlers() {
187
- // Handler para listar tools disponíveis
188
- this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
189
- return {
190
- tools: tools.map(tool => ({
191
- name: tool.name,
192
- description: tool.description,
193
- inputSchema: tool.inputSchema
194
- }))
195
- };
196
- });
197
- // Handler para executar tools específicas
198
- this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
199
- const { name, arguments: args } = request.params;
200
- // Busca a tool solicitada
201
- const tool = tools.find(t => t.name === name);
202
- if (!tool) {
203
- throw new Error(`Tool '${name}' not found`);
204
- }
205
- try {
206
- // Executa o handler da tool
207
- const result = await tool.handler(args || {});
208
- return {
209
- content: [
210
- {
211
- type: 'text',
212
- text: JSON.stringify(result, null, 2)
213
- }
214
- ]
215
- };
216
- }
217
- catch (error) {
218
- const errorMessage = error instanceof Error ? error.message : String(error);
219
- return {
220
- content: [
221
- {
222
- type: 'text',
223
- text: JSON.stringify({
224
- success: false,
225
- action: name,
226
- message: 'Erro na execução da tool',
227
- error: errorMessage
228
- }, null, 2)
229
- }
230
- ],
231
- isError: true
232
- };
233
- }
234
- });
235
- }
236
- /**
237
- * Inicializa e executa o servidor MCP
238
- *
239
- * FLUXO DE INICIALIZAÇÃO:
240
- * 1. Validação de configuração
241
- * 2. Verificação de token obrigatório
242
- * 3. Conexão com transport stdio
243
- * 4. Log de status e debug
244
- *
245
- * VALIDAÇÕES:
246
- * - Token de autenticação obrigatório
247
- * - URL do Gitea válida
248
- * - Configuração de debug opcional
249
- *
250
- * RECOMENDAÇÕES:
251
- * - Configure DEBUG=true para desenvolvimento
252
- * - Valide token antes de iniciar
253
- * - Configure timeout adequado
254
- */
255
- async run() {
256
- const cfg = config_js_1.config.getConfig();
257
- if (cfg.debug) {
258
- // Server starting - debug info removed for MCP protocol compliance
259
- }
260
- // Inicializar provider factory com configuração
261
- try {
262
- console.log('[SERVER] Inicializando provider factory...');
263
- const factory = (0, index_js_2.initializeFactoryFromEnv)();
264
- // Log detalhado dos providers configurados
265
- try {
266
- const providersInfo = factory.getProvidersInfo();
267
- console.log('[SERVER] Providers configurados:');
268
- providersInfo.forEach(p => {
269
- console.log(` - ${p.name} (${p.type}) ${p.isDefault ? '[PADRÃO]' : ''}`);
270
- });
271
- }
272
- catch (infoError) {
273
- console.log('[SERVER] Não foi possível obter informações detalhadas dos providers');
274
- }
275
- // Atualizar o globalProviderFactory com a configuração
276
- Object.assign(index_js_2.globalProviderFactory, factory);
277
- console.log('[SERVER] Provider factory inicializado com sucesso');
278
- }
279
- catch (error) {
280
- console.error('[SERVER] Erro ao inicializar providers:', error);
281
- // Tenta criar um provider fallback se houver falha completa
282
- try {
283
- console.log('[SERVER] Tentando criar provider fallback...');
284
- // Criar provider GitHub básico como fallback
285
- const fallbackConfig = {
286
- name: 'github-fallback',
287
- type: 'github',
288
- apiUrl: 'https://api.github.com',
289
- token: process.env.GITHUB_TOKEN || 'dummy_token',
290
- username: process.env.GITHUB_USERNAME
291
- };
292
- const fallbackProvider = index_js_2.globalProviderFactory.createProvider(fallbackConfig);
293
- index_js_2.globalProviderFactory.setDefaultProvider('github-fallback');
294
- console.log('[SERVER] Provider fallback criado com sucesso');
295
- }
296
- catch (fallbackError) {
297
- console.error('[SERVER] Falha ao criar provider fallback:', fallbackError);
298
- // Continua sem provider - algumas tools podem não funcionar
299
- }
300
- }
301
- const transport = new stdio_js_1.StdioServerTransport();
302
- await this.server.connect(transport);
303
- if (cfg.debug) {
304
- // Server connected and ready
305
- }
306
- }
307
- /**
308
- * Fecha o servidor MCP graciosamente
309
- *
310
- * USO:
311
- * - Durante shutdown da aplicação
312
- * - Para limpeza de recursos
313
- * - Para finalização controlada
314
- *
315
- * RECOMENDAÇÕES:
316
- * - Sempre chame antes de sair
317
- * - Aguarde a conclusão da operação
318
- * - Trate erros de fechamento
319
- */
320
- async close() {
321
- await this.server.close();
322
- }
323
- }
324
- exports.GiteaMCPServer = GiteaMCPServer;
325
- /**
326
- * Handlers para sinais do sistema
327
- *
328
- * SINAIS TRATADOS:
329
- * - SIGINT: Interrupção do usuário (Ctrl+C)
330
- * - unhandledRejection: Promises rejeitadas
331
- * - uncaughtException: Exceções não tratadas
332
- *
333
- * COMPORTAMENTO:
334
- * - SIGINT: Shutdown gracioso
335
- * - Erros não tratados: Exit com código 1
336
- * - Log de erro antes de sair
337
- *
338
- * RECOMENDAÇÕES:
339
- * - Implemente graceful shutdown
340
- * - Log todos os erros fatais
341
- * - Use códigos de saída apropriados
342
- */
343
- // Handler para interrupção do usuário (Ctrl+C)
344
- process.on('SIGINT', async () => {
345
- // Shutting down server
346
- process.exit(0);
347
- });
348
- // Handler para promises rejeitadas não tratadas
349
- process.on('unhandledRejection', (reason, promise) => {
350
- console.error('Unhandled Rejection at:', promise, 'reason:', reason);
351
- process.exit(1);
352
- });
353
- // Handler para exceções não tratadas
354
- process.on('uncaughtException', (error) => {
355
- console.error('Uncaught Exception:', error);
356
- process.exit(1);
357
- });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GiteaMCPServer = void 0;
4
+ const index_ts_1 = require("@modelcontextprotocol/sdk/server/index.ts");
5
+ const stdio_ts_1 = require("@modelcontextprotocol/sdk/server/stdio.ts");
6
+ const types_ts_1 = require("@modelcontextprotocol/sdk/types.ts");
7
+ const config_ts_1 = require("./config.ts");
8
+ const index_ts_2 = require("./providers/index.ts");
9
+ /**
10
+ * Importação de todas as ferramentas MCP disponíveis (18 tools)
11
+ *
12
+ * GIT CORE (18 tools) - Funcionam com GitHub + Gitea:
13
+ * - git-repositories: Gerenciamento de repositórios
14
+ * - git-commits: Operações com commits
15
+ * - git-branches: Operações com branches
16
+ * - git-tags: Gerenciamento de tags
17
+ * - git-files: Gerenciamento de arquivos
18
+ * - git-upload-project: Upload completo de projeto
19
+ * - git-initialize: Inicialização completa de repositório
20
+ * - git-issues: Gerenciamento de issues
21
+ * - git-pulls: Pull requests e merges
22
+ * - git-releases: Gerenciamento de releases
23
+ * - git-webhooks: Gerenciamento de webhooks
24
+ * - git-reset: Operações de reset
25
+ * - git-revert: Operações de revert
26
+ * - git-stash: Gerenciamento de stash
27
+ * - git-config: Configuração do Git
28
+ * - git-remote: Gerenciamento de remotes
29
+ * - git-archive: Criação de arquivos
30
+ * - git-sync: Sincronização de repositórios
31
+ */
32
+ // Git Core Tools (18)
33
+ const git_repositories_ts_1 = require("./tools/git-repositories.ts");
34
+ const git_commits_ts_1 = require("./tools/git-commits.ts");
35
+ const git_branches_ts_1 = require("./tools/git-branches.ts");
36
+ const git_tags_ts_1 = require("./tools/git-tags.ts");
37
+ const git_files_ts_1 = require("./tools/git-files.ts");
38
+ const git_upload_project_ts_1 = require("./tools/git-upload-project.ts");
39
+ const git_initialize_ts_1 = require("./tools/git-initialize.ts");
40
+ const git_issues_ts_1 = require("./tools/git-issues.ts");
41
+ const git_pulls_ts_1 = require("./tools/git-pulls.ts");
42
+ const git_releases_ts_1 = require("./tools/git-releases.ts");
43
+ const git_webhooks_ts_1 = require("./tools/git-webhooks.ts");
44
+ const git_reset_ts_1 = require("./tools/git-reset.ts");
45
+ const git_revert_ts_1 = require("./tools/git-revert.ts");
46
+ const git_stash_ts_1 = require("./tools/git-stash.ts");
47
+ const git_config_ts_1 = require("./tools/git-config.ts");
48
+ const git_remote_ts_1 = require("./tools/git-remote.ts");
49
+ const git_archive_ts_1 = require("./tools/git-archive.ts");
50
+ const git_sync_ts_1 = require("./tools/git-sync.ts");
51
+ /**
52
+ * Array de todas as ferramentas disponíveis (18 tools)
53
+ *
54
+ * ESTRUTURA:
55
+ * - Cada tool deve implementar a interface Tool
56
+ * - Nome, descrição e schema são obrigatórios
57
+ * - Handler deve ser assíncrono e retornar resultado
58
+ *
59
+ * ORGANIZAÇÃO:
60
+ * - Git Core (18): Funcionam com GitHub + Gitea
61
+ *
62
+ * USO:
63
+ * - Para listagem de tools disponíveis
64
+ * - Para execução de tools específicas
65
+ * - Para validação de parâmetros
66
+ */
67
+ const tools = [
68
+ // Git Core Tools (18) - GitHub + Gitea
69
+ git_repositories_ts_1.gitRepositoriesTool,
70
+ git_commits_ts_1.commitsTool,
71
+ git_branches_ts_1.branchesTool,
72
+ git_tags_ts_1.tagsTool,
73
+ git_files_ts_1.filesTool,
74
+ git_upload_project_ts_1.uploadProjectTool,
75
+ git_initialize_ts_1.initializeTool,
76
+ git_issues_ts_1.issuesTool,
77
+ git_pulls_ts_1.pullsTool,
78
+ git_releases_ts_1.releasesTool,
79
+ git_webhooks_ts_1.webhooksTool,
80
+ git_reset_ts_1.gitResetTool,
81
+ git_revert_ts_1.gitRevertTool,
82
+ git_stash_ts_1.gitStashTool,
83
+ git_config_ts_1.gitConfigTool,
84
+ git_remote_ts_1.gitRemoteTool,
85
+ git_archive_ts_1.gitArchiveTool,
86
+ git_sync_ts_1.gitSyncTool
87
+ ];
88
+ /**
89
+ * Servidor MCP principal para Gitea
90
+ *
91
+ * RESPONSABILIDADES:
92
+ * - Inicializar servidor MCP
93
+ * - Registrar handlers para requests
94
+ * - Gerenciar ciclo de vida das tools
95
+ * - Tratar erros e validações
96
+ *
97
+ * ARQUITETURA:
98
+ * - Server MCP padrão com transport stdio
99
+ * - Handlers para list e call de tools
100
+ * - Tratamento centralizado de erros
101
+ *
102
+ * RECOMENDAÇÕES:
103
+ * - Use apenas uma instância por processo
104
+ * - Configure handlers antes de conectar
105
+ * - Implemente graceful shutdown
106
+ */
107
+ class GiteaMCPServer {
108
+ server;
109
+ constructor() {
110
+ this.server = new index_ts_1.Server({
111
+ name: 'git-mcp',
112
+ version: '2.16.0',
113
+ });
114
+ this.setupHandlers();
115
+ }
116
+ /**
117
+ * Configura os handlers para requests MCP
118
+ *
119
+ * HANDLERS IMPLEMENTADOS:
120
+ * - ListTools: Lista todas as tools disponíveis
121
+ * - CallTool: Executa uma tool específica
122
+ *
123
+ * FLUXO:
124
+ * 1. Validação de parâmetros
125
+ * 2. Busca da tool solicitada
126
+ * 3. Execução com tratamento de erros
127
+ * 4. Retorno de resultado ou erro
128
+ *
129
+ * TRATAMENTO DE ERROS:
130
+ * - Tool não encontrada: erro específico
131
+ * - Erro de execução: captura e formata
132
+ * - Erro de validação: mensagem descritiva
133
+ */
134
+ setupHandlers() {
135
+ // Handler para listar tools disponíveis
136
+ this.server.setRequestHandler(types_ts_1.ListToolsRequestSchema, async () => {
137
+ return {
138
+ tools: tools.map(tool => ({
139
+ name: tool.name,
140
+ description: tool.description,
141
+ inputSchema: tool.inputSchema
142
+ }))
143
+ };
144
+ });
145
+ // Handler para executar tools específicas
146
+ this.server.setRequestHandler(types_ts_1.CallToolRequestSchema, async (request) => {
147
+ const { name, arguments: args } = request.params;
148
+ // Busca a tool solicitada
149
+ const tool = tools.find(t => t.name === name);
150
+ if (!tool) {
151
+ throw new Error(`Tool '${name}' not found`);
152
+ }
153
+ try {
154
+ // Executa o handler da tool
155
+ const result = await tool.handler(args || {});
156
+ return {
157
+ content: [
158
+ {
159
+ type: 'text',
160
+ text: JSON.stringify(result, null, 2)
161
+ }
162
+ ]
163
+ };
164
+ }
165
+ catch (error) {
166
+ const errorMessage = error instanceof Error ? error.message : String(error);
167
+ return {
168
+ content: [
169
+ {
170
+ type: 'text',
171
+ text: JSON.stringify({
172
+ success: false,
173
+ action: name,
174
+ message: 'Erro na execução da tool',
175
+ error: errorMessage
176
+ }, null, 2)
177
+ }
178
+ ],
179
+ isError: true
180
+ };
181
+ }
182
+ });
183
+ }
184
+ /**
185
+ * Inicializa e executa o servidor MCP
186
+ *
187
+ * FLUXO DE INICIALIZAÇÃO:
188
+ * 1. Validação de configuração
189
+ * 2. Verificação de token obrigatório
190
+ * 3. Conexão com transport stdio
191
+ * 4. Log de status e debug
192
+ *
193
+ * VALIDAÇÕES:
194
+ * - Token de autenticação obrigatório
195
+ * - URL do Gitea válida
196
+ * - Configuração de debug opcional
197
+ *
198
+ * RECOMENDAÇÕES:
199
+ * - Configure DEBUG=true para desenvolvimento
200
+ * - Valide token antes de iniciar
201
+ * - Configure timeout adequado
202
+ */
203
+ async run() {
204
+ const cfg = config_ts_1.config.getConfig();
205
+ if (cfg.debug) {
206
+ // Server starting - debug info removed for MCP protocol compliance
207
+ }
208
+ // Inicializar provider factory com configuração
209
+ try {
210
+ console.log('[SERVER] Inicializando provider factory...');
211
+ const factory = (0, index_ts_2.initializeFactoryFromEnv)();
212
+ // Log detalhado dos providers configurados
213
+ try {
214
+ const providersInfo = factory.getProvidersInfo();
215
+ console.log('[SERVER] Providers configurados:');
216
+ providersInfo.forEach(p => {
217
+ console.log(` - ${p.name} (${p.type}) ${p.isDefault ? '[PADRÃO]' : ''}`);
218
+ });
219
+ }
220
+ catch (infoError) {
221
+ console.log('[SERVER] Não foi possível obter informações detalhadas dos providers');
222
+ }
223
+ // Atualizar o globalProviderFactory com a configuração
224
+ Object.assign(index_ts_2.globalProviderFactory, factory);
225
+ console.log('[SERVER] Provider factory inicializado com sucesso');
226
+ }
227
+ catch (error) {
228
+ console.error('[SERVER] Erro ao inicializar providers:', error);
229
+ // Tenta criar um provider fallback se houver falha completa
230
+ try {
231
+ console.log('[SERVER] Tentando criar provider fallback...');
232
+ // Criar provider GitHub básico como fallback
233
+ const fallbackConfig = {
234
+ name: 'github-fallback',
235
+ type: 'github',
236
+ apiUrl: 'https://api.github.com',
237
+ baseUrl: 'https://github.com',
238
+ token: process.env.GITHUB_TOKEN || 'dummy_token',
239
+ username: process.env.GITHUB_USERNAME
240
+ };
241
+ const fallbackProvider = index_ts_2.globalProviderFactory.createProvider(fallbackConfig);
242
+ index_ts_2.globalProviderFactory.setDefaultProvider('github-fallback');
243
+ console.log('[SERVER] Provider fallback criado com sucesso');
244
+ }
245
+ catch (fallbackError) {
246
+ console.error('[SERVER] Falha ao criar provider fallback:', fallbackError);
247
+ // Continua sem provider - algumas tools podem não funcionar
248
+ }
249
+ }
250
+ const transport = new stdio_ts_1.StdioServerTransport();
251
+ await this.server.connect(transport);
252
+ if (cfg.debug) {
253
+ // Server connected and ready
254
+ }
255
+ }
256
+ /**
257
+ * Fecha o servidor MCP graciosamente
258
+ *
259
+ * USO:
260
+ * - Durante shutdown da aplicação
261
+ * - Para limpeza de recursos
262
+ * - Para finalização controlada
263
+ *
264
+ * RECOMENDAÇÕES:
265
+ * - Sempre chame antes de sair
266
+ * - Aguarde a conclusão da operação
267
+ * - Trate erros de fechamento
268
+ */
269
+ async close() {
270
+ await this.server.close();
271
+ }
272
+ }
273
+ exports.GiteaMCPServer = GiteaMCPServer;
274
+ /**
275
+ * Handlers para sinais do sistema
276
+ *
277
+ * SINAIS TRATADOS:
278
+ * - SIGINT: Interrupção do usuário (Ctrl+C)
279
+ * - unhandledRejection: Promises rejeitadas
280
+ * - uncaughtException: Exceções não tratadas
281
+ *
282
+ * COMPORTAMENTO:
283
+ * - SIGINT: Shutdown gracioso
284
+ * - Erros não tratados: Exit com código 1
285
+ * - Log de erro antes de sair
286
+ *
287
+ * RECOMENDAÇÕES:
288
+ * - Implemente graceful shutdown
289
+ * - Log todos os erros fatais
290
+ * - Use códigos de saída apropriados
291
+ */
292
+ // Handler para interrupção do usuário (Ctrl+C)
293
+ process.on('SIGINT', async () => {
294
+ // Shutting down server
295
+ process.exit(0);
296
+ });
297
+ // Handler para promises rejeitadas não tratadas
298
+ process.on('unhandledRejection', (reason, promise) => {
299
+ console.error('Unhandled Rejection at:', promise, 'reason:', reason);
300
+ process.exit(1);
301
+ });
302
+ // Handler para exceções não tratadas
303
+ process.on('uncaughtException', (error) => {
304
+ console.error('Uncaught Exception:', error);
305
+ process.exit(1);
306
+ });
358
307
  //# sourceMappingURL=server.js.map