@andrebuzeli/git-mcp 2.16.2 → 2.18.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 (186) hide show
  1. package/dist/tools/gh-actions.d.ts +0 -9
  2. package/dist/tools/gh-actions.d.ts.map +1 -1
  3. package/dist/tools/gh-actions.js +6 -10
  4. package/dist/tools/gh-actions.js.map +1 -1
  5. package/dist/tools/gh-analytics.d.ts +0 -4
  6. package/dist/tools/gh-analytics.d.ts.map +1 -1
  7. package/dist/tools/gh-analytics.js +6 -12
  8. package/dist/tools/gh-analytics.js.map +1 -1
  9. package/dist/tools/gh-code-review.d.ts +0 -4
  10. package/dist/tools/gh-code-review.d.ts.map +1 -1
  11. package/dist/tools/gh-code-review.js +11 -27
  12. package/dist/tools/gh-code-review.js.map +1 -1
  13. package/dist/tools/gh-codespaces.d.ts +0 -12
  14. package/dist/tools/gh-codespaces.d.ts.map +1 -1
  15. package/dist/tools/gh-codespaces.js +9 -11
  16. package/dist/tools/gh-codespaces.js.map +1 -1
  17. package/dist/tools/gh-deployments.d.ts +0 -8
  18. package/dist/tools/gh-deployments.d.ts.map +1 -1
  19. package/dist/tools/gh-deployments.js +6 -10
  20. package/dist/tools/gh-deployments.js.map +1 -1
  21. package/dist/tools/gh-gists.d.ts +0 -16
  22. package/dist/tools/gh-gists.d.ts.map +1 -1
  23. package/dist/tools/gh-gists.js +4 -9
  24. package/dist/tools/gh-gists.js.map +1 -1
  25. package/dist/tools/gh-projects.d.ts +0 -16
  26. package/dist/tools/gh-projects.d.ts.map +1 -1
  27. package/dist/tools/gh-projects.js +4 -9
  28. package/dist/tools/gh-projects.js.map +1 -1
  29. package/dist/tools/gh-security.d.ts +0 -4
  30. package/dist/tools/gh-security.d.ts.map +1 -1
  31. package/dist/tools/gh-security.js +6 -9
  32. package/dist/tools/gh-security.js.map +1 -1
  33. package/dist/tools/gh-sync.d.ts +0 -12
  34. package/dist/tools/gh-sync.d.ts.map +1 -1
  35. package/dist/tools/gh-sync.js +4 -8
  36. package/dist/tools/gh-sync.js.map +1 -1
  37. package/dist/tools/gh-workflows.d.ts +0 -4
  38. package/dist/tools/gh-workflows.d.ts.map +1 -1
  39. package/dist/tools/gh-workflows.js +6 -10
  40. package/dist/tools/gh-workflows.js.map +1 -1
  41. package/dist/tools/git-archive.d.ts +0 -3
  42. package/dist/tools/git-archive.d.ts.map +1 -1
  43. package/dist/tools/git-archive.js +2 -2
  44. package/dist/tools/git-archive.js.map +1 -1
  45. package/dist/tools/git-branches.d.ts +1 -1
  46. package/dist/tools/git-branches.js +5 -5
  47. package/dist/tools/git-branches.js.map +1 -1
  48. package/dist/tools/git-bundle.d.ts +0 -3
  49. package/dist/tools/git-bundle.d.ts.map +1 -1
  50. package/dist/tools/git-bundle.js +2 -2
  51. package/dist/tools/git-bundle.js.map +1 -1
  52. package/dist/tools/git-cherry-pick.d.ts +0 -3
  53. package/dist/tools/git-cherry-pick.d.ts.map +1 -1
  54. package/dist/tools/git-cherry-pick.js +2 -2
  55. package/dist/tools/git-cherry-pick.js.map +1 -1
  56. package/dist/tools/git-commits.d.ts +6 -9
  57. package/dist/tools/git-commits.d.ts.map +1 -1
  58. package/dist/tools/git-commits.js +31 -29
  59. package/dist/tools/git-commits.js.map +1 -1
  60. package/dist/tools/git-config.d.ts +0 -3
  61. package/dist/tools/git-config.d.ts.map +1 -1
  62. package/dist/tools/git-config.js +2 -2
  63. package/dist/tools/git-config.js.map +1 -1
  64. package/dist/tools/git-files.d.ts +8 -11
  65. package/dist/tools/git-files.d.ts.map +1 -1
  66. package/dist/tools/git-files.js +41 -39
  67. package/dist/tools/git-files.js.map +1 -1
  68. package/dist/tools/git-issues.d.ts +8 -15
  69. package/dist/tools/git-issues.d.ts.map +1 -1
  70. package/dist/tools/git-issues.js +38 -38
  71. package/dist/tools/git-issues.js.map +1 -1
  72. package/dist/tools/git-pulls.d.ts +9 -16
  73. package/dist/tools/git-pulls.d.ts.map +1 -1
  74. package/dist/tools/git-pulls.js +42 -42
  75. package/dist/tools/git-pulls.js.map +1 -1
  76. package/dist/tools/git-rebase.d.ts +0 -3
  77. package/dist/tools/git-rebase.d.ts.map +1 -1
  78. package/dist/tools/git-rebase.js +2 -2
  79. package/dist/tools/git-rebase.js.map +1 -1
  80. package/dist/tools/git-releases.d.ts +1 -8
  81. package/dist/tools/git-releases.d.ts.map +1 -1
  82. package/dist/tools/git-releases.js +16 -18
  83. package/dist/tools/git-releases.js.map +1 -1
  84. package/dist/tools/git-remote.d.ts +0 -3
  85. package/dist/tools/git-remote.d.ts.map +1 -1
  86. package/dist/tools/git-remote.js +2 -2
  87. package/dist/tools/git-remote.js.map +1 -1
  88. package/dist/tools/git-repositories.d.ts +6 -9
  89. package/dist/tools/git-repositories.d.ts.map +1 -1
  90. package/dist/tools/git-repositories.js +41 -30
  91. package/dist/tools/git-repositories.js.map +1 -1
  92. package/dist/tools/git-reset.d.ts +0 -3
  93. package/dist/tools/git-reset.d.ts.map +1 -1
  94. package/dist/tools/git-reset.js +2 -2
  95. package/dist/tools/git-reset.js.map +1 -1
  96. package/dist/tools/git-revert.d.ts +0 -3
  97. package/dist/tools/git-revert.d.ts.map +1 -1
  98. package/dist/tools/git-revert.js +2 -2
  99. package/dist/tools/git-revert.js.map +1 -1
  100. package/dist/tools/git-stash.d.ts +0 -3
  101. package/dist/tools/git-stash.d.ts.map +1 -1
  102. package/dist/tools/git-stash.js +2 -2
  103. package/dist/tools/git-stash.js.map +1 -1
  104. package/dist/tools/git-submodule.d.ts +0 -3
  105. package/dist/tools/git-submodule.d.ts.map +1 -1
  106. package/dist/tools/git-submodule.js +2 -2
  107. package/dist/tools/git-submodule.js.map +1 -1
  108. package/dist/tools/git-sync.d.ts +0 -10
  109. package/dist/tools/git-sync.d.ts.map +1 -1
  110. package/dist/tools/git-sync.js +8 -2
  111. package/dist/tools/git-sync.js.map +1 -1
  112. package/dist/tools/git-tags.d.ts +2 -2
  113. package/dist/tools/git-tags.js +6 -6
  114. package/dist/tools/git-tags.js.map +1 -1
  115. package/dist/tools/git-webhooks.d.ts +7 -14
  116. package/dist/tools/git-webhooks.d.ts.map +1 -1
  117. package/dist/tools/git-webhooks.js +34 -34
  118. package/dist/tools/git-webhooks.js.map +1 -1
  119. package/dist/tools/git-worktree.d.ts +0 -3
  120. package/dist/tools/git-worktree.d.ts.map +1 -1
  121. package/dist/tools/git-worktree.js +2 -2
  122. package/dist/tools/git-worktree.js.map +1 -1
  123. package/dist/tools/repositories.d.ts +9 -12
  124. package/dist/tools/repositories.d.ts.map +1 -1
  125. package/dist/tools/repositories.js +46 -44
  126. package/dist/tools/repositories.js.map +1 -1
  127. package/dist/utils/user-detection.d.ts.map +1 -1
  128. package/dist/utils/user-detection.js +2 -17
  129. package/dist/utils/user-detection.js.map +1 -1
  130. package/package.json +3 -3
  131. package/dist/tools/actions.d.ts +0 -272
  132. package/dist/tools/actions.d.ts.map +0 -1
  133. package/dist/tools/actions.js +0 -479
  134. package/dist/tools/actions.js.map +0 -1
  135. package/dist/tools/analytics.d.ts +0 -326
  136. package/dist/tools/analytics.d.ts.map +0 -1
  137. package/dist/tools/analytics.js +0 -524
  138. package/dist/tools/analytics.js.map +0 -1
  139. package/dist/tools/branches.d.ts +0 -438
  140. package/dist/tools/branches.d.ts.map +0 -1
  141. package/dist/tools/branches.js +0 -525
  142. package/dist/tools/branches.js.map +0 -1
  143. package/dist/tools/code-review.d.ts +0 -323
  144. package/dist/tools/code-review.d.ts.map +0 -1
  145. package/dist/tools/code-review.js +0 -577
  146. package/dist/tools/code-review.js.map +0 -1
  147. package/dist/tools/commits.d.ts +0 -497
  148. package/dist/tools/commits.d.ts.map +0 -1
  149. package/dist/tools/commits.js +0 -626
  150. package/dist/tools/commits.js.map +0 -1
  151. package/dist/tools/deployments.d.ts +0 -319
  152. package/dist/tools/deployments.d.ts.map +0 -1
  153. package/dist/tools/deployments.js +0 -384
  154. package/dist/tools/deployments.js.map +0 -1
  155. package/dist/tools/files.d.ts +0 -463
  156. package/dist/tools/files.d.ts.map +0 -1
  157. package/dist/tools/files.js +0 -555
  158. package/dist/tools/files.js.map +0 -1
  159. package/dist/tools/issues.d.ts +0 -579
  160. package/dist/tools/issues.d.ts.map +0 -1
  161. package/dist/tools/issues.js +0 -694
  162. package/dist/tools/issues.js.map +0 -1
  163. package/dist/tools/pulls.d.ts +0 -702
  164. package/dist/tools/pulls.d.ts.map +0 -1
  165. package/dist/tools/pulls.js +0 -733
  166. package/dist/tools/pulls.js.map +0 -1
  167. package/dist/tools/releases.d.ts +0 -495
  168. package/dist/tools/releases.d.ts.map +0 -1
  169. package/dist/tools/releases.js +0 -552
  170. package/dist/tools/releases.js.map +0 -1
  171. package/dist/tools/security.d.ts +0 -341
  172. package/dist/tools/security.d.ts.map +0 -1
  173. package/dist/tools/security.js +0 -427
  174. package/dist/tools/security.js.map +0 -1
  175. package/dist/tools/tags.d.ts +0 -419
  176. package/dist/tools/tags.d.ts.map +0 -1
  177. package/dist/tools/tags.js +0 -480
  178. package/dist/tools/tags.js.map +0 -1
  179. package/dist/tools/webhooks.d.ts +0 -490
  180. package/dist/tools/webhooks.d.ts.map +0 -1
  181. package/dist/tools/webhooks.js +0 -556
  182. package/dist/tools/webhooks.js.map +0 -1
  183. package/dist/tools/workflows.d.ts +0 -313
  184. package/dist/tools/workflows.d.ts.map +0 -1
  185. package/dist/tools/workflows.js +0 -462
  186. package/dist/tools/workflows.js.map +0 -1
@@ -1,577 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.codeReviewTool = 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 validator_js_1 = require("./validator.js");
8
- /**
9
- * Tool: code-review
10
- *
11
- * DESCRIÇÃO:
12
- * Ferramenta completa de revisão de código com análise automatizada,
13
- * sugestões de melhorias, detecção de problemas e geração de relatórios.
14
- *
15
- * FUNCIONALIDADES:
16
- * - Análise de qualidade de código
17
- * - Detecção de bugs e vulnerabilidades
18
- * - Sugestões de otimização
19
- * - Revisão de commits e arquivos
20
- * - Geração de relatórios de qualidade
21
- * - Aplicação automática de correções
22
- *
23
- * USO:
24
- * - Para revisão automatizada de pull requests
25
- * - Para análise de qualidade de código
26
- * - Para detecção de problemas de segurança
27
- * - Para sugestões de melhorias de performance
28
- *
29
- * RECOMENDAÇÕES:
30
- * - Execute regularmente em novos commits
31
- * - Configure regras específicas por linguagem
32
- * - Use em conjunto com CI/CD
33
- * - Revise sugestões antes de aplicar
34
- */
35
- /**
36
- * Schema de validação para entrada da tool code-review
37
- */
38
- const CodeReviewInputSchema = zod_1.z.object({
39
- action: zod_1.z.enum(['analyze', 'review-file', 'review-commit', 'review-pr', 'generate-report', 'apply-suggestions']),
40
- // Parâmetros comuns
41
- owner: zod_1.z.string(),
42
- repo: zod_1.z.string(),
43
- provider: validator_js_1.CommonSchemas.provider,
44
- // Para analyze
45
- code: zod_1.z.string().optional(),
46
- language: zod_1.z.string().optional(),
47
- file_path: zod_1.z.string().optional(),
48
- // Para review-file e review-commit
49
- path: zod_1.z.string().optional(),
50
- sha: zod_1.z.string().optional(),
51
- branch: zod_1.z.string().optional(),
52
- // Para review-pr
53
- pull_number: zod_1.z.number().optional(),
54
- // Para generate-report
55
- report_type: zod_1.z.enum(['summary', 'detailed', 'security', 'performance']).optional(),
56
- include_suggestions: zod_1.z.boolean().optional(),
57
- // Para apply-suggestions
58
- suggestions: zod_1.z.array(zod_1.z.object({
59
- file_path: zod_1.z.string(),
60
- line_number: zod_1.z.number(),
61
- suggestion: zod_1.z.string(),
62
- severity: zod_1.z.enum(['low', 'medium', 'high', 'critical'])
63
- })).optional(),
64
- // Configurações
65
- rules: zod_1.z.array(zod_1.z.string()).optional(), // Regras específicas para análise
66
- exclude_patterns: zod_1.z.array(zod_1.z.string()).optional() // Padrões para excluir da análise
67
- }).refine((data) => {
68
- // Validações específicas por ação
69
- if (['analyze'].includes(data.action)) {
70
- return data.code || (data.owner && data.repo && data.path);
71
- }
72
- if (['review-file', 'review-commit'].includes(data.action)) {
73
- return data.owner && data.repo && (data.path || data.sha);
74
- }
75
- if (['review-pr'].includes(data.action)) {
76
- return data.owner && data.repo && data.pull_number;
77
- }
78
- if (['apply-suggestions'].includes(data.action)) {
79
- return data.owner && data.repo && data.suggestions && data.suggestions.length > 0;
80
- }
81
- return data.owner && data.repo;
82
- }, {
83
- message: "Parâmetros obrigatórios não fornecidos para a ação especificada"
84
- });
85
- /**
86
- * Schema de validação para resultado da tool code-review
87
- */
88
- const CodeReviewResultSchema = zod_1.z.object({
89
- success: zod_1.z.boolean(),
90
- action: zod_1.z.string(),
91
- message: zod_1.z.string(),
92
- data: zod_1.z.any().optional(),
93
- error: zod_1.z.string().optional()
94
- });
95
- /**
96
- * Implementação da tool code-review
97
- */
98
- exports.codeReviewTool = {
99
- name: 'code-review',
100
- description: 'Análise completa de código com detecção de problemas, sugestões de melhoria e geração de relatórios: analyze (análise geral), review-file (revisão de arquivo), review-commit (revisão de commit), review-pr (revisão de PR), generate-report (relatório), apply-suggestions (aplicar correções). Suporte para múltiplas linguagens. Uso eficiente: revisão automatizada de qualidade, detecção de bugs, sugestões de otimização e relatórios de compliance.',
101
- inputSchema: {
102
- type: 'object',
103
- properties: {
104
- action: {
105
- type: 'string',
106
- enum: ['analyze', 'review-file', 'review-commit', 'review-pr', 'generate-report', 'apply-suggestions'],
107
- description: 'Ação a executar: analyze (análise), review-file (revisar arquivo), review-commit (revisar commit), review-pr (revisar PR), generate-report (gerar relatório), apply-suggestions (aplicar sugestões)'
108
- },
109
- owner: {
110
- type: 'string',
111
- description: 'Proprietário do repositório (OBRIGATÓRIO para ações que acessam repositório)'
112
- },
113
- repo: {
114
- type: 'string',
115
- description: 'Nome do repositório (OBRIGATÓRIO para ações que acessam repositório)'
116
- },
117
- provider: {
118
- type: 'string',
119
- description: 'Provider específico (github, gitea) ou usa padrão'
120
- },
121
- code: {
122
- type: 'string',
123
- description: 'Código para análise direta (OBRIGATÓRIO para analyze se não usar file_path)'
124
- },
125
- language: {
126
- type: 'string',
127
- description: 'Linguagem de programação (javascript, python, java, etc.)'
128
- },
129
- file_path: {
130
- type: 'string',
131
- description: 'Caminho do arquivo para análise (OBRIGATÓRIO para analyze se não usar code)'
132
- },
133
- path: {
134
- type: 'string',
135
- description: 'Caminho do arquivo (OBRIGATÓRIO para review-file)'
136
- },
137
- sha: {
138
- type: 'string',
139
- description: 'SHA do commit (OBRIGATÓRIO para review-commit)'
140
- },
141
- branch: {
142
- type: 'string',
143
- description: 'Branch específica para análise'
144
- },
145
- pull_number: {
146
- type: 'number',
147
- description: 'Número do Pull Request (OBRIGATÓRIO para review-pr)'
148
- },
149
- report_type: {
150
- type: 'string',
151
- enum: ['summary', 'detailed', 'security', 'performance'],
152
- description: 'Tipo de relatório (padrão: summary)'
153
- },
154
- include_suggestions: {
155
- type: 'boolean',
156
- description: 'Incluir sugestões no relatório (padrão: true)'
157
- },
158
- suggestions: {
159
- type: 'array',
160
- items: {
161
- type: 'object',
162
- properties: {
163
- file_path: { type: 'string' },
164
- line_number: { type: 'number' },
165
- suggestion: { type: 'string' },
166
- severity: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] }
167
- }
168
- },
169
- description: 'Lista de sugestões para aplicar (OBRIGATÓRIO para apply-suggestions)'
170
- },
171
- rules: {
172
- type: 'array',
173
- items: { type: 'string' },
174
- description: 'Regras específicas para análise (ex: ["no-console", "max-lines"])'
175
- },
176
- exclude_patterns: {
177
- type: 'array',
178
- items: { type: 'string' },
179
- description: 'Padrões para excluir da análise (ex: ["*.min.js", "dist/**"])'
180
- }
181
- },
182
- required: ['action', 'owner', 'repo', 'provider']
183
- },
184
- async handler(input) {
185
- try {
186
- const validatedInput = CodeReviewInputSchema.parse(input);
187
- // Aplicar auto-detecção de usuário
188
- const updatedParams = await (0, user_detection_js_1.applyAutoUserDetection)(validatedInput, validatedInput.provider);
189
- // Verificação específica para Gitea
190
- console.log('[CODE-REVIEW] Provider recebido:', validatedInput.provider);
191
- if (validatedInput.provider === 'gitea') {
192
- return {
193
- success: false,
194
- action: validatedInput.action,
195
- message: 'Code review automatizado não está disponível para o Gitea',
196
- error: 'GITEA: Code review automatizado não está disponível para o Gitea. Esta funcionalidade é específica do GitHub.'
197
- };
198
- }
199
- const provider = updatedParams.provider
200
- ? index_js_1.globalProviderFactory.getProvider(updatedParams.provider)
201
- : index_js_1.globalProviderFactory.getDefaultProvider();
202
- if (!provider) {
203
- throw new Error(`Provider '${updatedParams.provider}' não encontrado`);
204
- }
205
- switch (updatedParams.action) {
206
- case 'analyze':
207
- return await this.analyzeCode(validatedInput);
208
- case 'review-file':
209
- return await this.reviewCommit(updatedParams, provider);
210
- case 'review-commit':
211
- return await this.reviewPullRequest(updatedParams, provider);
212
- case 'review-pr':
213
- return await this.generateReport(updatedParams, provider);
214
- case 'generate-report':
215
- return await this.applySuggestions(updatedParams, provider);
216
- case 'apply-suggestions':
217
- return await this.applySuggestions(updatedParams, provider);
218
- default:
219
- throw new Error(`Ação não suportada: ${updatedParams.action}`);
220
- }
221
- }
222
- catch (error) {
223
- return {
224
- success: false,
225
- action: input.action || 'unknown',
226
- message: 'Erro na análise de código',
227
- error: error instanceof Error ? error.message : String(error)
228
- };
229
- }
230
- },
231
- /**
232
- * Análise geral de código
233
- */
234
- async analyzeCode(params) {
235
- try {
236
- // Verificar se é Gitea - code review automatizado não é suportado
237
- if (params.provider === 'gitea' || (!params.provider && index_js_1.globalProviderFactory.getDefaultProvider()?.config?.type === 'gitea')) {
238
- return {
239
- success: true,
240
- action: 'analyze',
241
- message: 'Code review automatizado não está disponível para o Gitea',
242
- data: {
243
- note: 'Esta funcionalidade é específica do GitHub',
244
- supported_providers: ['github'],
245
- current_provider: params.provider || 'gitea'
246
- }
247
- };
248
- }
249
- let codeToAnalyze = params.code;
250
- let fileName = 'code.txt';
251
- // Se não foi fornecido código direto, buscar do repositório
252
- if (!codeToAnalyze && params.owner && params.repo && params.file_path) {
253
- const provider = params.provider
254
- ? index_js_1.globalProviderFactory.getProvider(params.provider)
255
- : index_js_1.globalProviderFactory.getDefaultProvider();
256
- if (provider) {
257
- const file = await provider.getFile(params.owner, params.repo, params.file_path);
258
- codeToAnalyze = file.content || '';
259
- fileName = params.file_path;
260
- }
261
- }
262
- if (!codeToAnalyze) {
263
- throw new Error('Código não fornecido para análise');
264
- }
265
- // Análise básica de qualidade
266
- const analysis = this.performCodeAnalysis(codeToAnalyze, params.language || 'unknown', fileName, params.rules);
267
- return {
268
- success: true,
269
- action: 'analyze',
270
- message: `Análise de código concluída para ${fileName}`,
271
- data: analysis
272
- };
273
- }
274
- catch (error) {
275
- throw new Error(`Falha na análise de código: ${error}`);
276
- }
277
- },
278
- /**
279
- * Revisão de arquivo específico
280
- */
281
- async reviewFile(params, provider) {
282
- try {
283
- if (!params.owner || !params.repo || !params.path) {
284
- throw new Error('Owner, repo e path são obrigatórios');
285
- }
286
- const file = await provider.getFile(params.owner, params.repo, params.path, params.branch);
287
- if (!file.content) {
288
- throw new Error('Arquivo não possui conteúdo para análise');
289
- }
290
- const analysis = this.performCodeAnalysis(file.content, this.detectLanguage(params.path), params.path, params.rules);
291
- return {
292
- success: true,
293
- action: 'review-file',
294
- message: `Revisão de arquivo '${params.path}' concluída`,
295
- data: {
296
- file: params.path,
297
- analysis,
298
- branch: params.branch || 'default'
299
- }
300
- };
301
- }
302
- catch (error) {
303
- throw new Error(`Falha na revisão de arquivo: ${error}`);
304
- }
305
- },
306
- /**
307
- * Revisão de commit específico
308
- */
309
- async reviewCommit(params, provider) {
310
- try {
311
- if (!params.owner || !params.repo || !params.sha) {
312
- throw new Error('Owner, repo e sha são obrigatórios');
313
- }
314
- const commit = await provider.getCommit(params.owner, params.repo, params.sha);
315
- // Análise básica da mensagem do commit
316
- const messageAnalysis = this.analyzeCommitMessage(commit.message);
317
- return {
318
- success: true,
319
- action: 'review-commit',
320
- message: `Revisão de commit ${params.sha.substring(0, 7)} concluída`,
321
- data: {
322
- commit: params.sha,
323
- message_analysis: messageAnalysis,
324
- author: commit.author,
325
- committer: commit.committer
326
- }
327
- };
328
- }
329
- catch (error) {
330
- throw new Error(`Falha na revisão de commit: ${error}`);
331
- }
332
- },
333
- /**
334
- * Revisão de Pull Request
335
- */
336
- async reviewPullRequest(params, provider) {
337
- try {
338
- if (!params.owner || !params.repo || !(params.pull_number || 0)) {
339
- throw new Error('Owner, repo e pull_number são obrigatórios');
340
- }
341
- // Buscar informações do PR
342
- const pr = await provider.getPullRequest(params.owner, params.repo, (params.pull_number || 0));
343
- const review = {
344
- pr_number: (params.pull_number || 0),
345
- title: pr.title,
346
- body: pr.body,
347
- changes: {
348
- additions: 'Não disponível',
349
- deletions: 'Não disponível',
350
- files_changed: 'Não disponível'
351
- },
352
- quality_score: this.calculateQualityScore(pr),
353
- suggestions: [
354
- 'Verificar se todos os testes estão passando',
355
- 'Revisar documentação atualizada',
356
- 'Verificar impacto em performance'
357
- ]
358
- };
359
- return {
360
- success: true,
361
- action: 'review-pr',
362
- message: `Revisão de PR #${(params.pull_number || 0)} concluída`,
363
- data: review
364
- };
365
- }
366
- catch (error) {
367
- throw new Error(`Falha na revisão de PR: ${error}`);
368
- }
369
- },
370
- /**
371
- * Geração de relatório de qualidade
372
- */
373
- async generateReport(params, provider) {
374
- try {
375
- // Validação movida para schema - owner/repo serão auto-detectados se não fornecidos
376
- const reportType = params.report_type || 'summary';
377
- const includeSuggestions = params.include_suggestions !== false;
378
- const report = {
379
- repository: `${params.owner}/${params.repo}`,
380
- report_type: reportType,
381
- generated_at: new Date().toISOString(),
382
- summary: {
383
- total_files: 'Não disponível',
384
- quality_score: 'Não calculado',
385
- issues_found: 0,
386
- critical_issues: 0
387
- },
388
- recommendations: includeSuggestions ? [
389
- 'Implementar testes automatizados',
390
- 'Configurar linter específico da linguagem',
391
- 'Adicionar documentação técnica',
392
- 'Revisar dependências desatualizadas'
393
- ] : []
394
- };
395
- return {
396
- success: true,
397
- action: 'generate-report',
398
- message: `Relatório ${reportType} gerado com sucesso`,
399
- data: report
400
- };
401
- }
402
- catch (error) {
403
- throw new Error(`Falha na geração de relatório: ${error}`);
404
- }
405
- },
406
- /**
407
- * Aplicação de sugestões de correção
408
- */
409
- async applySuggestions(params, provider) {
410
- try {
411
- if (!params.owner || !params.repo || !params.suggestions) {
412
- throw new Error('Owner, repo e suggestions são obrigatórios');
413
- }
414
- const applied = [];
415
- const failed = [];
416
- for (const suggestion of params.suggestions) {
417
- try {
418
- // Para cada sugestão, buscar o arquivo atual
419
- const file = await provider.getFile(params.owner, params.repo, suggestion.file_path);
420
- if (file.content) {
421
- // Aplicar sugestão (simplificado - apenas marcar como aplicada)
422
- applied.push({
423
- file: suggestion.file_path,
424
- line: suggestion.line_number,
425
- suggestion: suggestion.suggestion,
426
- status: 'applied'
427
- });
428
- }
429
- }
430
- catch (error) {
431
- failed.push({
432
- file: suggestion.file_path,
433
- error: error instanceof Error ? error.message : String(error)
434
- });
435
- }
436
- }
437
- return {
438
- success: true,
439
- action: 'apply-suggestions',
440
- message: `Aplicadas ${applied.length} sugestões, ${failed.length} falharam`,
441
- data: {
442
- applied,
443
- failed,
444
- total: params.suggestions.length
445
- }
446
- };
447
- }
448
- catch (error) {
449
- throw new Error(`Falha na aplicação de sugestões: ${error}`);
450
- }
451
- },
452
- /**
453
- * Análise básica de código
454
- */
455
- performCodeAnalysis(code, language, fileName, rules) {
456
- const issues = [];
457
- const suggestions = [];
458
- const lines = code.split('\n');
459
- // Análise básica de complexidade
460
- if (lines.length > 300) {
461
- issues.push({
462
- type: 'complexity',
463
- severity: 'medium',
464
- message: 'Arquivo muito longo - considere dividir em módulos menores',
465
- line: 1
466
- });
467
- }
468
- // Detecção de código comentado
469
- let commentLines = 0;
470
- lines.forEach((line, index) => {
471
- if (line.trim().startsWith('//') || line.trim().startsWith('#') || line.trim().startsWith('/*')) {
472
- commentLines++;
473
- }
474
- // Detecção de console.log (comum em JS/TS)
475
- if (language === 'javascript' || language === 'typescript') {
476
- if (line.includes('console.log') && !rules?.includes('allow-console')) {
477
- issues.push({
478
- type: 'code-quality',
479
- severity: 'low',
480
- message: 'Uso de console.log detectado - considere remover para produção',
481
- line: index + 1
482
- });
483
- }
484
- }
485
- });
486
- // Análise de comentários
487
- const commentRatio = commentLines / lines.length;
488
- if (commentRatio < 0.1) {
489
- suggestions.push('Considere adicionar mais comentários explicativos');
490
- }
491
- return {
492
- file: fileName,
493
- language,
494
- lines_count: lines.length,
495
- comment_lines: commentLines,
496
- comment_ratio: Math.round(commentRatio * 100) / 100,
497
- issues,
498
- suggestions,
499
- quality_score: this.calculateQualityScore({ lines: lines.length, issues: issues.length })
500
- };
501
- },
502
- /**
503
- * Detecta linguagem baseada na extensão do arquivo
504
- */
505
- detectLanguage(filePath) {
506
- const ext = filePath.split('.').pop()?.toLowerCase();
507
- const languageMap = {
508
- 'js': 'javascript',
509
- 'ts': 'typescript',
510
- 'py': 'python',
511
- 'java': 'java',
512
- 'cpp': 'cpp',
513
- 'c': 'c',
514
- 'php': 'php',
515
- 'rb': 'ruby',
516
- 'go': 'go',
517
- 'rs': 'rust',
518
- 'swift': 'swift',
519
- 'kt': 'kotlin',
520
- 'scala': 'scala',
521
- 'html': 'html',
522
- 'css': 'css',
523
- 'scss': 'scss',
524
- 'md': 'markdown',
525
- 'json': 'json',
526
- 'xml': 'xml',
527
- 'yaml': 'yaml',
528
- 'yml': 'yaml'
529
- };
530
- return languageMap[ext || ''] || 'unknown';
531
- },
532
- /**
533
- * Análise de mensagem de commit
534
- */
535
- analyzeCommitMessage(message) {
536
- const analysis = {
537
- quality: 'good',
538
- suggestions: [],
539
- follows_conventions: false
540
- };
541
- // Verificar se segue convenção de commits
542
- const conventionalPattern = /^(feat|fix|docs|style|refactor|test|chore|perf|ci|build|revert)(\(.+\))?: .{1,50}/;
543
- analysis.follows_conventions = conventionalPattern.test(message);
544
- if (!analysis.follows_conventions) {
545
- analysis.suggestions.push('Considere usar conventional commits (feat:, fix:, docs:, etc.)');
546
- }
547
- if (message.length > 72) {
548
- analysis.quality = 'medium';
549
- analysis.suggestions.push('Mensagem muito longa - considere resumir na primeira linha');
550
- }
551
- if (message.length < 10) {
552
- analysis.quality = 'low';
553
- analysis.suggestions.push('Mensagem muito curta - seja mais descritivo');
554
- }
555
- return analysis;
556
- },
557
- /**
558
- * Calcula score de qualidade básico
559
- */
560
- calculateQualityScore(data) {
561
- let score = 100;
562
- // Penalizar por issues
563
- if (data.issues) {
564
- score -= data.issues * 10;
565
- }
566
- // Penalizar por complexidade
567
- if (data.lines && data.lines > 500) {
568
- score -= 20;
569
- }
570
- // Bonus por comentários adequados
571
- if (data.comment_ratio && data.comment_ratio > 0.2) {
572
- score += 10;
573
- }
574
- return Math.max(0, Math.min(100, score));
575
- }
576
- };
577
- //# sourceMappingURL=code-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-review.js","sourceRoot":"","sources":["../../src/tools/code-review.ts"],"names":[],"mappings":"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"}