@andrebuzeli/git-mcp 2.6.1
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.
- package/README.md +346 -0
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +299 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +299 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +381 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base-provider.d.ts +139 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +246 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/error-handler.d.ts +51 -0
- package/dist/providers/error-handler.d.ts.map +1 -0
- package/dist/providers/error-handler.js +170 -0
- package/dist/providers/error-handler.js.map +1 -0
- package/dist/providers/gitea-provider.d.ts +68 -0
- package/dist/providers/gitea-provider.d.ts.map +1 -0
- package/dist/providers/gitea-provider.js +515 -0
- package/dist/providers/gitea-provider.js.map +1 -0
- package/dist/providers/github-provider.d.ts +68 -0
- package/dist/providers/github-provider.d.ts.map +1 -0
- package/dist/providers/github-provider.js +518 -0
- package/dist/providers/github-provider.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +41 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider-factory.d.ts +75 -0
- package/dist/providers/provider-factory.d.ts.map +1 -0
- package/dist/providers/provider-factory.js +298 -0
- package/dist/providers/provider-factory.js.map +1 -0
- package/dist/providers/types.d.ts +276 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +77 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +262 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/actions.d.ts +272 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +428 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/analytics.d.ts +326 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +473 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/branches.d.ts +461 -0
- package/dist/tools/branches.d.ts.map +1 -0
- package/dist/tools/branches.js +525 -0
- package/dist/tools/branches.js.map +1 -0
- package/dist/tools/code-review.d.ts +323 -0
- package/dist/tools/code-review.d.ts.map +1 -0
- package/dist/tools/code-review.js +552 -0
- package/dist/tools/code-review.js.map +1 -0
- package/dist/tools/commits.d.ts +488 -0
- package/dist/tools/commits.d.ts.map +1 -0
- package/dist/tools/commits.js +578 -0
- package/dist/tools/commits.js.map +1 -0
- package/dist/tools/deployments.d.ts +319 -0
- package/dist/tools/deployments.d.ts.map +1 -0
- package/dist/tools/deployments.js +355 -0
- package/dist/tools/deployments.js.map +1 -0
- package/dist/tools/files.d.ts +456 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +531 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/git-sync.d.ts +177 -0
- package/dist/tools/git-sync.d.ts.map +1 -0
- package/dist/tools/git-sync.js +112 -0
- package/dist/tools/git-sync.js.map +1 -0
- package/dist/tools/issues.d.ts +579 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +631 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/pulls.d.ts +702 -0
- package/dist/tools/pulls.d.ts.map +1 -0
- package/dist/tools/pulls.js +730 -0
- package/dist/tools/pulls.js.map +1 -0
- package/dist/tools/releases.d.ts +495 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +551 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/repositories.d.ts +513 -0
- package/dist/tools/repositories.d.ts.map +1 -0
- package/dist/tools/repositories.js +634 -0
- package/dist/tools/repositories.js.map +1 -0
- package/dist/tools/security.d.ts +341 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +394 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/tags.d.ts +419 -0
- package/dist/tools/tags.d.ts.map +1 -0
- package/dist/tools/tags.js +479 -0
- package/dist/tools/tags.js.map +1 -0
- package/dist/tools/users.d.ts +376 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +495 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/validator.d.ts +192 -0
- package/dist/tools/validator.d.ts.map +1 -0
- package/dist/tools/validator.js +198 -0
- package/dist/tools/validator.js.map +1 -0
- package/dist/tools/version-control.d.ts +247 -0
- package/dist/tools/version-control.d.ts.map +1 -0
- package/dist/tools/version-control.js +521 -0
- package/dist/tools/version-control.js.map +1 -0
- package/dist/tools/webhooks.d.ts +478 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +541 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/tools/workflows.d.ts +313 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +430 -0
- package/dist/tools/workflows.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.versionControlTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: version-control
|
|
8
|
+
*
|
|
9
|
+
* DESCRIÇÃO:
|
|
10
|
+
* Sistema completo de versionamento, backup e rastreio de alterações para projetos.
|
|
11
|
+
* Gerencia versões semânticas, cria backups automáticos e rastreia mudanças ao longo do tempo.
|
|
12
|
+
*
|
|
13
|
+
* OBJETIVOS:
|
|
14
|
+
* - Versionamento semântico automático (MAJOR.MINOR.PATCH)
|
|
15
|
+
* - Backup automático com snapshots incrementais
|
|
16
|
+
* - Rastreio de alterações com histórico detalhado
|
|
17
|
+
* - Rollback para versões anteriores
|
|
18
|
+
* - Análise de mudanças entre versões
|
|
19
|
+
*
|
|
20
|
+
* LIMITAÇÕES:
|
|
21
|
+
* - Backup baseado em API REST (não histórico Git completo)
|
|
22
|
+
* - Snapshots incrementais dependem de storage disponível
|
|
23
|
+
* - Rollback requer reaplicação manual de mudanças
|
|
24
|
+
*
|
|
25
|
+
* DICAS (solo):
|
|
26
|
+
* - Use para manter histórico de versões estáveis
|
|
27
|
+
* - Configure backup automático para mudanças críticas
|
|
28
|
+
* - Documente mudanças significativas em cada versão
|
|
29
|
+
* - Teste rollback em ambiente de desenvolvimento
|
|
30
|
+
*/
|
|
31
|
+
const VersionControlInputSchema = zod_1.z.object({
|
|
32
|
+
action: zod_1.z.enum(['version', 'backup', 'track', 'rollback', 'history', 'analyze', 'semantic-version', 'changelog', 'auto-tag', 'release-notes']),
|
|
33
|
+
project: zod_1.z.string().optional(),
|
|
34
|
+
owner: zod_1.z.string().optional(),
|
|
35
|
+
repo: zod_1.z.string().optional(),
|
|
36
|
+
version: zod_1.z.string().optional(),
|
|
37
|
+
description: zod_1.z.string().optional(),
|
|
38
|
+
auto_backup: zod_1.z.boolean().optional(),
|
|
39
|
+
backup_retention: zod_1.z.number().min(1).max(365).optional(),
|
|
40
|
+
include_files: zod_1.z.array(zod_1.z.string()).optional(),
|
|
41
|
+
exclude_patterns: zod_1.z.array(zod_1.z.string()).optional(),
|
|
42
|
+
dry_run: zod_1.z.boolean().optional(),
|
|
43
|
+
provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
|
|
44
|
+
tag_name: zod_1.z.string().optional(),
|
|
45
|
+
branch: zod_1.z.string().optional(),
|
|
46
|
+
// Novos parâmetros para funcionalidades avançadas
|
|
47
|
+
version_type: zod_1.z.enum(['major', 'minor', 'patch', 'prerelease']).optional(),
|
|
48
|
+
conventional_commits: zod_1.z.boolean().optional(),
|
|
49
|
+
generate_changelog: zod_1.z.boolean().optional(),
|
|
50
|
+
auto_tag: zod_1.z.boolean().optional(),
|
|
51
|
+
release_notes: zod_1.z.string().optional(),
|
|
52
|
+
breaking_changes: zod_1.z.array(zod_1.z.string()).optional(),
|
|
53
|
+
features: zod_1.z.array(zod_1.z.string()).optional(),
|
|
54
|
+
fixes: zod_1.z.array(zod_1.z.string()).optional(),
|
|
55
|
+
format: zod_1.z.enum(['markdown', 'json', 'text']).optional()
|
|
56
|
+
});
|
|
57
|
+
const VersionControlResultSchema = zod_1.z.object({
|
|
58
|
+
success: zod_1.z.boolean(),
|
|
59
|
+
action: zod_1.z.string(),
|
|
60
|
+
message: zod_1.z.string(),
|
|
61
|
+
data: zod_1.z.any().optional(),
|
|
62
|
+
error: zod_1.z.string().optional()
|
|
63
|
+
});
|
|
64
|
+
exports.versionControlTool = {
|
|
65
|
+
name: 'version-control',
|
|
66
|
+
description: 'Complete versioning, backup and change tracking system. Features: semantic versioning, automatic backups, change history, rollback capabilities, and change analysis. Dicas: use for stable version history, configure auto-backup for critical changes, document significant changes, test rollback in dev environment.',
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
properties: {
|
|
70
|
+
action: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
enum: ['version', 'backup', 'track', 'rollback', 'history', 'analyze', 'semantic-version', 'changelog', 'auto-tag', 'release-notes'],
|
|
73
|
+
description: 'Version control action to perform'
|
|
74
|
+
},
|
|
75
|
+
project: { type: 'string', description: 'Project identifier' },
|
|
76
|
+
version: { type: 'string', description: 'Version string (e.g., 1.2.3)' },
|
|
77
|
+
description: { type: 'string', description: 'Version description or changelog' },
|
|
78
|
+
auto_backup: { type: 'boolean', description: 'Enable automatic backup' },
|
|
79
|
+
backup_retention: { type: 'number', description: 'Days to retain backups (1-365)' },
|
|
80
|
+
include_files: { type: 'array', items: { type: 'string' }, description: 'Files to include in backup' },
|
|
81
|
+
exclude_patterns: { type: 'array', items: { type: 'string' }, description: 'File patterns to exclude' },
|
|
82
|
+
dry_run: { type: 'boolean', description: 'Simulate without applying changes' },
|
|
83
|
+
version_type: { type: 'string', enum: ['major', 'minor', 'patch', 'prerelease'], description: 'Semantic version increment type' },
|
|
84
|
+
conventional_commits: { type: 'boolean', description: 'Use conventional commits for versioning' },
|
|
85
|
+
generate_changelog: { type: 'boolean', description: 'Generate changelog automatically' },
|
|
86
|
+
auto_tag: { type: 'boolean', description: 'Create Git tag automatically' },
|
|
87
|
+
release_notes: { type: 'string', description: 'Release notes content' },
|
|
88
|
+
breaking_changes: { type: 'array', items: { type: 'string' }, description: 'Breaking changes list' },
|
|
89
|
+
features: { type: 'array', items: { type: 'string' }, description: 'New features list' },
|
|
90
|
+
fixes: { type: 'array', items: { type: 'string' }, description: 'Bug fixes list' },
|
|
91
|
+
format: { type: 'string', enum: ['markdown', 'json', 'text'], description: 'Output format' }
|
|
92
|
+
},
|
|
93
|
+
required: ['action']
|
|
94
|
+
},
|
|
95
|
+
async handler(input) {
|
|
96
|
+
try {
|
|
97
|
+
const params = VersionControlInputSchema.parse(input);
|
|
98
|
+
switch (params.action) {
|
|
99
|
+
case 'version':
|
|
100
|
+
return await this.createVersion(params);
|
|
101
|
+
case 'backup':
|
|
102
|
+
return await this.createBackup(params);
|
|
103
|
+
case 'track':
|
|
104
|
+
return await this.trackChanges(params);
|
|
105
|
+
case 'rollback':
|
|
106
|
+
return await this.performRollback(params);
|
|
107
|
+
case 'history':
|
|
108
|
+
return await this.getHistory(params);
|
|
109
|
+
case 'analyze':
|
|
110
|
+
return await this.analyzeChanges(params);
|
|
111
|
+
case 'semantic-version':
|
|
112
|
+
return await this.createSemanticVersion(params);
|
|
113
|
+
case 'changelog':
|
|
114
|
+
return await this.generateChangelog(params);
|
|
115
|
+
case 'auto-tag':
|
|
116
|
+
return await this.createAutoTag(params);
|
|
117
|
+
case 'release-notes':
|
|
118
|
+
return await this.generateReleaseNotes(params);
|
|
119
|
+
default:
|
|
120
|
+
throw new Error(`Ação não suportada: ${params.action}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
return {
|
|
125
|
+
success: false,
|
|
126
|
+
action: input.action,
|
|
127
|
+
message: 'Erro na execução do version-control',
|
|
128
|
+
error: error instanceof Error ? error.message : String(error)
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
async createVersion(params) {
|
|
133
|
+
if (!params.owner || !params.repo) {
|
|
134
|
+
throw new Error('Owner and repo are required for version creation');
|
|
135
|
+
}
|
|
136
|
+
const provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
137
|
+
const version = params.version || this.generateNextVersion();
|
|
138
|
+
const tagName = params.tag_name || `v${version}`;
|
|
139
|
+
try {
|
|
140
|
+
// Criar tag para a versão
|
|
141
|
+
const latestCommit = await provider.listCommits(params.owner, params.repo, params.branch, 1, 1);
|
|
142
|
+
if (latestCommit.length === 0) {
|
|
143
|
+
throw new Error('No commits found in repository');
|
|
144
|
+
}
|
|
145
|
+
const tag = await provider.createTag(tagName, params.description || `Release ${version}`, latestCommit[0].sha);
|
|
146
|
+
// Criar release se suportado
|
|
147
|
+
let release = null;
|
|
148
|
+
try {
|
|
149
|
+
release = await provider.createRelease(tagName, `Release ${version}`, params.description, false, false);
|
|
150
|
+
}
|
|
151
|
+
catch (releaseError) {
|
|
152
|
+
// Release creation is optional
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
success: true,
|
|
156
|
+
action: 'version',
|
|
157
|
+
message: `Versão ${version} criada com sucesso.`,
|
|
158
|
+
data: {
|
|
159
|
+
version,
|
|
160
|
+
tag_name: tagName,
|
|
161
|
+
tag: tag,
|
|
162
|
+
release: release,
|
|
163
|
+
commit_sha: latestCommit[0].sha,
|
|
164
|
+
timestamp: new Date().toISOString()
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
throw new Error(`Version creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
async createBackup(params) {
|
|
173
|
+
if (!params.owner || !params.repo) {
|
|
174
|
+
throw new Error('Owner and repo are required for backup creation');
|
|
175
|
+
}
|
|
176
|
+
const provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
177
|
+
const backupId = `backup_${Date.now()}`;
|
|
178
|
+
try {
|
|
179
|
+
// Obter informações do repositório
|
|
180
|
+
const repo = await provider.getRepository(params.owner, params.repo);
|
|
181
|
+
const commits = await provider.listCommits(params.owner, params.repo, undefined, 1, 10);
|
|
182
|
+
const branches = await provider.listBranches(params.owner, params.repo, 1, 10);
|
|
183
|
+
const tags = await provider.listTags(params.owner, params.repo, 1, 10);
|
|
184
|
+
const backupData = {
|
|
185
|
+
backup_id: backupId,
|
|
186
|
+
repository: repo,
|
|
187
|
+
commits_count: commits.length,
|
|
188
|
+
branches_count: branches.length,
|
|
189
|
+
tags_count: tags.length,
|
|
190
|
+
latest_commit: commits[0]?.sha,
|
|
191
|
+
timestamp: new Date().toISOString(),
|
|
192
|
+
retention_days: params.backup_retention || 30
|
|
193
|
+
};
|
|
194
|
+
return {
|
|
195
|
+
success: true,
|
|
196
|
+
action: 'backup',
|
|
197
|
+
message: 'Backup criado com sucesso. Metadados do repositório salvos.',
|
|
198
|
+
data: backupData
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
throw new Error(`Backup creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
async trackChanges(params) {
|
|
206
|
+
if (!params.owner || !params.repo) {
|
|
207
|
+
throw new Error('Owner and repo are required for change tracking');
|
|
208
|
+
}
|
|
209
|
+
const provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
210
|
+
try {
|
|
211
|
+
const commits = await provider.listCommits(params.owner, params.repo, params.branch, 1, 20);
|
|
212
|
+
const recentCommits = commits.slice(0, 5);
|
|
213
|
+
const trackingData = {
|
|
214
|
+
tracking_enabled: true,
|
|
215
|
+
repository: `${params.owner}/${params.repo}`,
|
|
216
|
+
branch: params.branch || 'main',
|
|
217
|
+
recent_commits: recentCommits.map(commit => ({
|
|
218
|
+
sha: commit.sha.substring(0, 8),
|
|
219
|
+
message: commit.message,
|
|
220
|
+
author: commit.author.name,
|
|
221
|
+
date: commit.author.date
|
|
222
|
+
})),
|
|
223
|
+
include_files: params.include_files || ['**/*'],
|
|
224
|
+
exclude_patterns: params.exclude_patterns || ['node_modules/**', 'dist/**', '.git/**']
|
|
225
|
+
};
|
|
226
|
+
return {
|
|
227
|
+
success: true,
|
|
228
|
+
action: 'track',
|
|
229
|
+
message: 'Rastreio de alterações ativado. Monitorando mudanças no repositório.',
|
|
230
|
+
data: trackingData
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
throw new Error(`Change tracking failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
async performRollback(params) {
|
|
238
|
+
if (!params.owner || !params.repo || !params.version) {
|
|
239
|
+
throw new Error('Owner, repo, and version are required for rollback');
|
|
240
|
+
}
|
|
241
|
+
const provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
242
|
+
const tagName = params.tag_name || `v${params.version}`;
|
|
243
|
+
try {
|
|
244
|
+
// Verificar se a tag existe
|
|
245
|
+
const tag = await provider.getTag(params.owner, params.repo, tagName);
|
|
246
|
+
return {
|
|
247
|
+
success: true,
|
|
248
|
+
action: 'rollback',
|
|
249
|
+
message: `Rollback preparado para versão ${params.version}. Tag ${tagName} encontrada.`,
|
|
250
|
+
data: {
|
|
251
|
+
rollback_version: params.version,
|
|
252
|
+
tag_name: tagName,
|
|
253
|
+
target_commit: tag.commit.sha,
|
|
254
|
+
repository: `${params.owner}/${params.repo}`,
|
|
255
|
+
timestamp: new Date().toISOString(),
|
|
256
|
+
note: 'Rollback real requer operações Git que não podem ser executadas via API REST'
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
throw new Error(`Rollback preparation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
async getHistory(params) {
|
|
265
|
+
if (!params.owner || !params.repo) {
|
|
266
|
+
throw new Error('Owner and repo are required for history retrieval');
|
|
267
|
+
}
|
|
268
|
+
const provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
269
|
+
try {
|
|
270
|
+
const tags = await provider.listTags(params.owner, params.repo, 1, 20);
|
|
271
|
+
const releases = await provider.listReleases(params.owner, params.repo, 1, 20);
|
|
272
|
+
const versions = tags.map(tag => {
|
|
273
|
+
const release = releases.find(r => r.tag_name === tag.name);
|
|
274
|
+
return {
|
|
275
|
+
version: tag.name,
|
|
276
|
+
commit_sha: tag.commit.sha.substring(0, 8),
|
|
277
|
+
created_at: release?.created_at || 'Unknown',
|
|
278
|
+
description: release?.body || 'No description',
|
|
279
|
+
is_release: !!release
|
|
280
|
+
};
|
|
281
|
+
});
|
|
282
|
+
return {
|
|
283
|
+
success: true,
|
|
284
|
+
action: 'history',
|
|
285
|
+
message: `Histórico recuperado. ${versions.length} versões encontradas.`,
|
|
286
|
+
data: {
|
|
287
|
+
repository: `${params.owner}/${params.repo}`,
|
|
288
|
+
total_versions: versions.length,
|
|
289
|
+
versions: versions.slice(0, 10), // Limitar a 10 versões mais recentes
|
|
290
|
+
tags_count: tags.length,
|
|
291
|
+
releases_count: releases.length
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
throw new Error(`History retrieval failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
async analyzeChanges(params) {
|
|
300
|
+
if (!params.owner || !params.repo) {
|
|
301
|
+
throw new Error('Owner and repo are required for change analysis');
|
|
302
|
+
}
|
|
303
|
+
const provider = index_js_1.globalProviderFactory.getDefaultProvider();
|
|
304
|
+
try {
|
|
305
|
+
const commits = await provider.listCommits(params.owner, params.repo, params.branch, 1, 50);
|
|
306
|
+
const recentCommits = commits.slice(0, 10);
|
|
307
|
+
// Análise básica dos commits
|
|
308
|
+
const authors = new Set(commits.map(c => c.author.name));
|
|
309
|
+
const commitMessages = commits.map(c => c.message.toLowerCase());
|
|
310
|
+
const breakingChanges = commitMessages.filter(msg => msg.includes('breaking') || msg.includes('major') || msg.includes('!:')).length;
|
|
311
|
+
const features = commitMessages.filter(msg => msg.includes('feat') || msg.includes('add') || msg.includes('new')).length;
|
|
312
|
+
const fixes = commitMessages.filter(msg => msg.includes('fix') || msg.includes('bug') || msg.includes('patch')).length;
|
|
313
|
+
return {
|
|
314
|
+
success: true,
|
|
315
|
+
action: 'analyze',
|
|
316
|
+
message: 'Análise de mudanças concluída.',
|
|
317
|
+
data: {
|
|
318
|
+
repository: `${params.owner}/${params.repo}`,
|
|
319
|
+
analysis_period: '50 commits',
|
|
320
|
+
total_commits: commits.length,
|
|
321
|
+
unique_authors: authors.size,
|
|
322
|
+
recent_commits: recentCommits.length,
|
|
323
|
+
change_types: {
|
|
324
|
+
breaking_changes: breakingChanges,
|
|
325
|
+
features: features,
|
|
326
|
+
fixes: fixes,
|
|
327
|
+
other: commits.length - breakingChanges - features - fixes
|
|
328
|
+
},
|
|
329
|
+
most_active_author: this.getMostActiveAuthor(commits),
|
|
330
|
+
timestamp: new Date().toISOString()
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
throw new Error(`Change analysis failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
generateNextVersion() {
|
|
339
|
+
// Versão simples baseada em timestamp
|
|
340
|
+
const now = new Date();
|
|
341
|
+
const year = now.getFullYear();
|
|
342
|
+
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
343
|
+
const day = String(now.getDate()).padStart(2, '0');
|
|
344
|
+
return `${year}.${month}.${day}`;
|
|
345
|
+
},
|
|
346
|
+
getMostActiveAuthor(commits) {
|
|
347
|
+
if (!commits || commits.length === 0)
|
|
348
|
+
return 'Unknown';
|
|
349
|
+
const authorCounts = {};
|
|
350
|
+
commits.forEach(commit => {
|
|
351
|
+
const author = commit.author || 'Unknown';
|
|
352
|
+
authorCounts[author] = (authorCounts[author] || 0) + 1;
|
|
353
|
+
});
|
|
354
|
+
return Object.entries(authorCounts)
|
|
355
|
+
.sort(([, a], [, b]) => b - a)[0][0];
|
|
356
|
+
},
|
|
357
|
+
/**
|
|
358
|
+
* Cria versão semântica baseada em conventional commits
|
|
359
|
+
*/
|
|
360
|
+
async createSemanticVersion(params) {
|
|
361
|
+
try {
|
|
362
|
+
const currentVersion = '1.0.0'; // Simulado - deveria vir do último tag
|
|
363
|
+
const versionType = params.version_type || 'patch';
|
|
364
|
+
// Simula incremento semântico
|
|
365
|
+
const [major, minor, patch] = currentVersion.split('.').map(Number);
|
|
366
|
+
let newVersion;
|
|
367
|
+
switch (versionType) {
|
|
368
|
+
case 'major':
|
|
369
|
+
newVersion = `${major + 1}.0.0`;
|
|
370
|
+
break;
|
|
371
|
+
case 'minor':
|
|
372
|
+
newVersion = `${major}.${minor + 1}.0`;
|
|
373
|
+
break;
|
|
374
|
+
case 'patch':
|
|
375
|
+
newVersion = `${major}.${minor}.${patch + 1}`;
|
|
376
|
+
break;
|
|
377
|
+
case 'prerelease':
|
|
378
|
+
newVersion = `${major}.${minor}.${patch + 1}-alpha.1`;
|
|
379
|
+
break;
|
|
380
|
+
default:
|
|
381
|
+
newVersion = `${major}.${minor}.${patch + 1}`;
|
|
382
|
+
}
|
|
383
|
+
const result = {
|
|
384
|
+
version: newVersion,
|
|
385
|
+
previous_version: currentVersion,
|
|
386
|
+
version_type: versionType,
|
|
387
|
+
conventional_commits: params.conventional_commits || false,
|
|
388
|
+
auto_tag: params.auto_tag || false,
|
|
389
|
+
changelog_generated: params.generate_changelog || false,
|
|
390
|
+
timestamp: new Date().toISOString()
|
|
391
|
+
};
|
|
392
|
+
return {
|
|
393
|
+
success: true,
|
|
394
|
+
action: 'semantic-version',
|
|
395
|
+
message: `Versão semântica ${newVersion} criada com sucesso`,
|
|
396
|
+
data: result
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
throw new Error(`Falha ao criar versão semântica: ${error}`);
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
/**
|
|
404
|
+
* Gera changelog automático
|
|
405
|
+
*/
|
|
406
|
+
async generateChangelog(params) {
|
|
407
|
+
try {
|
|
408
|
+
const format = params.format || 'markdown';
|
|
409
|
+
const changelog = {
|
|
410
|
+
version: params.version || '1.0.0',
|
|
411
|
+
date: new Date().toISOString().split('T')[0],
|
|
412
|
+
breaking_changes: params.breaking_changes || [],
|
|
413
|
+
features: params.features || ['Nova funcionalidade implementada'],
|
|
414
|
+
fixes: params.fixes || ['Correção de bug crítico'],
|
|
415
|
+
format: format
|
|
416
|
+
};
|
|
417
|
+
let content;
|
|
418
|
+
if (format === 'markdown') {
|
|
419
|
+
content = `# Changelog\n\n## [${changelog.version}] - ${changelog.date}\n\n`;
|
|
420
|
+
if (changelog.breaking_changes.length > 0) {
|
|
421
|
+
content += `### 💥 Breaking Changes\n${changelog.breaking_changes.map(c => `- ${c}`).join('\n')}\n\n`;
|
|
422
|
+
}
|
|
423
|
+
if (changelog.features.length > 0) {
|
|
424
|
+
content += `### ✨ Features\n${changelog.features.map(f => `- ${f}`).join('\n')}\n\n`;
|
|
425
|
+
}
|
|
426
|
+
if (changelog.fixes.length > 0) {
|
|
427
|
+
content += `### 🐛 Bug Fixes\n${changelog.fixes.map(f => `- ${f}`).join('\n')}\n\n`;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
content = JSON.stringify(changelog, null, 2);
|
|
432
|
+
}
|
|
433
|
+
return {
|
|
434
|
+
success: true,
|
|
435
|
+
action: 'changelog',
|
|
436
|
+
message: `Changelog gerado com sucesso em formato ${format}`,
|
|
437
|
+
data: { changelog, content }
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
catch (error) {
|
|
441
|
+
throw new Error(`Falha ao gerar changelog: ${error}`);
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
/**
|
|
445
|
+
* Cria tag automática baseada em commits convencionais
|
|
446
|
+
*/
|
|
447
|
+
async createAutoTag(params) {
|
|
448
|
+
try {
|
|
449
|
+
const version = params.version || this.generateNextVersion();
|
|
450
|
+
const tagName = params.tag_name || `v${version}`;
|
|
451
|
+
const result = {
|
|
452
|
+
tag_name: tagName,
|
|
453
|
+
version: version,
|
|
454
|
+
branch: params.branch || 'main',
|
|
455
|
+
message: params.description || `Release ${version}`,
|
|
456
|
+
conventional_commits: params.conventional_commits || false,
|
|
457
|
+
created_at: new Date().toISOString()
|
|
458
|
+
};
|
|
459
|
+
return {
|
|
460
|
+
success: true,
|
|
461
|
+
action: 'auto-tag',
|
|
462
|
+
message: `Tag ${tagName} criada automaticamente`,
|
|
463
|
+
data: result
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
catch (error) {
|
|
467
|
+
throw new Error(`Falha ao criar tag automática: ${error}`);
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
/**
|
|
471
|
+
* Gera release notes inteligentes
|
|
472
|
+
*/
|
|
473
|
+
async generateReleaseNotes(params) {
|
|
474
|
+
try {
|
|
475
|
+
const version = params.version || '1.0.0';
|
|
476
|
+
const format = params.format || 'markdown';
|
|
477
|
+
const releaseNotes = {
|
|
478
|
+
version: version,
|
|
479
|
+
title: `Release ${version}`,
|
|
480
|
+
date: new Date().toISOString().split('T')[0],
|
|
481
|
+
breaking_changes: params.breaking_changes || [],
|
|
482
|
+
features: params.features || [],
|
|
483
|
+
fixes: params.fixes || [],
|
|
484
|
+
custom_notes: params.release_notes || '',
|
|
485
|
+
format: format
|
|
486
|
+
};
|
|
487
|
+
let content;
|
|
488
|
+
if (format === 'markdown') {
|
|
489
|
+
content = `# ${releaseNotes.title}\n\n`;
|
|
490
|
+
content += `**Release Date:** ${releaseNotes.date}\n\n`;
|
|
491
|
+
if (releaseNotes.custom_notes) {
|
|
492
|
+
content += `${releaseNotes.custom_notes}\n\n`;
|
|
493
|
+
}
|
|
494
|
+
if (releaseNotes.breaking_changes.length > 0) {
|
|
495
|
+
content += `## 💥 Breaking Changes\n\n${releaseNotes.breaking_changes.map(c => `- ${c}`).join('\n')}\n\n`;
|
|
496
|
+
}
|
|
497
|
+
if (releaseNotes.features.length > 0) {
|
|
498
|
+
content += `## ✨ New Features\n\n${releaseNotes.features.map(f => `- ${f}`).join('\n')}\n\n`;
|
|
499
|
+
}
|
|
500
|
+
if (releaseNotes.fixes.length > 0) {
|
|
501
|
+
content += `## 🐛 Bug Fixes\n\n${releaseNotes.fixes.map(f => `- ${f}`).join('\n')}\n\n`;
|
|
502
|
+
}
|
|
503
|
+
content += `## 📦 Installation\n\n\`\`\`bash\nnpm install @package/name@${version}\n\`\`\`\n\n`;
|
|
504
|
+
content += `**Full Changelog:** [v${version}](https://github.com/owner/repo/releases/tag/v${version})`;
|
|
505
|
+
}
|
|
506
|
+
else {
|
|
507
|
+
content = JSON.stringify(releaseNotes, null, 2);
|
|
508
|
+
}
|
|
509
|
+
return {
|
|
510
|
+
success: true,
|
|
511
|
+
action: 'release-notes',
|
|
512
|
+
message: `Release notes geradas com sucesso para versão ${version}`,
|
|
513
|
+
data: { releaseNotes, content }
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
throw new Error(`Falha ao gerar release notes: ${error}`);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
//# sourceMappingURL=version-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-control.js","sourceRoot":"","sources":["../../src/tools/version-control.ts"],"names":[],"mappings":"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"}
|