@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.
Files changed (122) hide show
  1. package/README.md +346 -0
  2. package/dist/client.d.ts +307 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +299 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +299 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +381 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/index.d.ts +22 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +53 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/providers/base-provider.d.ts +139 -0
  15. package/dist/providers/base-provider.d.ts.map +1 -0
  16. package/dist/providers/base-provider.js +246 -0
  17. package/dist/providers/base-provider.js.map +1 -0
  18. package/dist/providers/error-handler.d.ts +51 -0
  19. package/dist/providers/error-handler.d.ts.map +1 -0
  20. package/dist/providers/error-handler.js +170 -0
  21. package/dist/providers/error-handler.js.map +1 -0
  22. package/dist/providers/gitea-provider.d.ts +68 -0
  23. package/dist/providers/gitea-provider.d.ts.map +1 -0
  24. package/dist/providers/gitea-provider.js +515 -0
  25. package/dist/providers/gitea-provider.js.map +1 -0
  26. package/dist/providers/github-provider.d.ts +68 -0
  27. package/dist/providers/github-provider.d.ts.map +1 -0
  28. package/dist/providers/github-provider.js +518 -0
  29. package/dist/providers/github-provider.js.map +1 -0
  30. package/dist/providers/index.d.ts +13 -0
  31. package/dist/providers/index.d.ts.map +1 -0
  32. package/dist/providers/index.js +41 -0
  33. package/dist/providers/index.js.map +1 -0
  34. package/dist/providers/provider-factory.d.ts +75 -0
  35. package/dist/providers/provider-factory.d.ts.map +1 -0
  36. package/dist/providers/provider-factory.js +298 -0
  37. package/dist/providers/provider-factory.js.map +1 -0
  38. package/dist/providers/types.d.ts +276 -0
  39. package/dist/providers/types.d.ts.map +1 -0
  40. package/dist/providers/types.js +7 -0
  41. package/dist/providers/types.js.map +1 -0
  42. package/dist/server.d.ts +77 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +262 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools/actions.d.ts +272 -0
  47. package/dist/tools/actions.d.ts.map +1 -0
  48. package/dist/tools/actions.js +428 -0
  49. package/dist/tools/actions.js.map +1 -0
  50. package/dist/tools/analytics.d.ts +326 -0
  51. package/dist/tools/analytics.d.ts.map +1 -0
  52. package/dist/tools/analytics.js +473 -0
  53. package/dist/tools/analytics.js.map +1 -0
  54. package/dist/tools/branches.d.ts +461 -0
  55. package/dist/tools/branches.d.ts.map +1 -0
  56. package/dist/tools/branches.js +525 -0
  57. package/dist/tools/branches.js.map +1 -0
  58. package/dist/tools/code-review.d.ts +323 -0
  59. package/dist/tools/code-review.d.ts.map +1 -0
  60. package/dist/tools/code-review.js +552 -0
  61. package/dist/tools/code-review.js.map +1 -0
  62. package/dist/tools/commits.d.ts +488 -0
  63. package/dist/tools/commits.d.ts.map +1 -0
  64. package/dist/tools/commits.js +578 -0
  65. package/dist/tools/commits.js.map +1 -0
  66. package/dist/tools/deployments.d.ts +319 -0
  67. package/dist/tools/deployments.d.ts.map +1 -0
  68. package/dist/tools/deployments.js +355 -0
  69. package/dist/tools/deployments.js.map +1 -0
  70. package/dist/tools/files.d.ts +456 -0
  71. package/dist/tools/files.d.ts.map +1 -0
  72. package/dist/tools/files.js +531 -0
  73. package/dist/tools/files.js.map +1 -0
  74. package/dist/tools/git-sync.d.ts +177 -0
  75. package/dist/tools/git-sync.d.ts.map +1 -0
  76. package/dist/tools/git-sync.js +112 -0
  77. package/dist/tools/git-sync.js.map +1 -0
  78. package/dist/tools/issues.d.ts +579 -0
  79. package/dist/tools/issues.d.ts.map +1 -0
  80. package/dist/tools/issues.js +631 -0
  81. package/dist/tools/issues.js.map +1 -0
  82. package/dist/tools/pulls.d.ts +702 -0
  83. package/dist/tools/pulls.d.ts.map +1 -0
  84. package/dist/tools/pulls.js +730 -0
  85. package/dist/tools/pulls.js.map +1 -0
  86. package/dist/tools/releases.d.ts +495 -0
  87. package/dist/tools/releases.d.ts.map +1 -0
  88. package/dist/tools/releases.js +551 -0
  89. package/dist/tools/releases.js.map +1 -0
  90. package/dist/tools/repositories.d.ts +513 -0
  91. package/dist/tools/repositories.d.ts.map +1 -0
  92. package/dist/tools/repositories.js +634 -0
  93. package/dist/tools/repositories.js.map +1 -0
  94. package/dist/tools/security.d.ts +341 -0
  95. package/dist/tools/security.d.ts.map +1 -0
  96. package/dist/tools/security.js +394 -0
  97. package/dist/tools/security.js.map +1 -0
  98. package/dist/tools/tags.d.ts +419 -0
  99. package/dist/tools/tags.d.ts.map +1 -0
  100. package/dist/tools/tags.js +479 -0
  101. package/dist/tools/tags.js.map +1 -0
  102. package/dist/tools/users.d.ts +376 -0
  103. package/dist/tools/users.d.ts.map +1 -0
  104. package/dist/tools/users.js +495 -0
  105. package/dist/tools/users.js.map +1 -0
  106. package/dist/tools/validator.d.ts +192 -0
  107. package/dist/tools/validator.d.ts.map +1 -0
  108. package/dist/tools/validator.js +198 -0
  109. package/dist/tools/validator.js.map +1 -0
  110. package/dist/tools/version-control.d.ts +247 -0
  111. package/dist/tools/version-control.d.ts.map +1 -0
  112. package/dist/tools/version-control.js +521 -0
  113. package/dist/tools/version-control.js.map +1 -0
  114. package/dist/tools/webhooks.d.ts +478 -0
  115. package/dist/tools/webhooks.d.ts.map +1 -0
  116. package/dist/tools/webhooks.js +541 -0
  117. package/dist/tools/webhooks.js.map +1 -0
  118. package/dist/tools/workflows.d.ts +313 -0
  119. package/dist/tools/workflows.d.ts.map +1 -0
  120. package/dist/tools/workflows.js +430 -0
  121. package/dist/tools/workflows.js.map +1 -0
  122. 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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"}