@andrebuzeli/git-mcp 2.47.3 → 3.0.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.
@@ -0,0 +1,483 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gitVersioningTool = 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 git_operations_js_1 = require("../utils/git-operations.js");
8
+ /**
9
+ * Tool: git-versioning
10
+ *
11
+ * FERRAMENTA UNIFICADA PARA VERSIONAMENTO
12
+ * Combina as funcionalidades de:
13
+ * - git-branches (gerenciamento de branches)
14
+ * - git-releases (releases e tags)
15
+ * - git-tags (versionamento)
16
+ *
17
+ * DESIGNED FOR: Programador individual autônomo
18
+ * PHILOSOPHY: Versionamento simplificado e inteligente
19
+ */
20
+ const GitVersioningInputSchema = zod_1.z.discriminatedUnion('action', [
21
+ // BRANCHES
22
+ zod_1.z.object({
23
+ action: zod_1.z.literal('create-branch'),
24
+ projectPath: zod_1.z.string(),
25
+ name: zod_1.z.string(),
26
+ from: zod_1.z.string().optional().default('main')
27
+ }),
28
+ zod_1.z.object({
29
+ action: zod_1.z.literal('list-branches'),
30
+ projectPath: zod_1.z.string()
31
+ }),
32
+ zod_1.z.object({
33
+ action: zod_1.z.literal('switch-branch'),
34
+ projectPath: zod_1.z.string(),
35
+ name: zod_1.z.string()
36
+ }),
37
+ zod_1.z.object({
38
+ action: zod_1.z.literal('delete-branch'),
39
+ projectPath: zod_1.z.string(),
40
+ name: zod_1.z.string(),
41
+ force: zod_1.z.boolean().optional().default(false)
42
+ }),
43
+ // RELEASES E TAGS
44
+ zod_1.z.object({
45
+ action: zod_1.z.literal('create-release'),
46
+ repo: zod_1.z.string(),
47
+ provider: zod_1.z.enum(['gitea', 'github']),
48
+ tag: zod_1.z.string(),
49
+ name: zod_1.z.string(),
50
+ description: zod_1.z.string().optional(),
51
+ draft: zod_1.z.boolean().optional().default(false)
52
+ }),
53
+ zod_1.z.object({
54
+ action: zod_1.z.literal('list-releases'),
55
+ repo: zod_1.z.string(),
56
+ provider: zod_1.z.enum(['gitea', 'github']),
57
+ limit: zod_1.z.number().optional().default(10)
58
+ }),
59
+ zod_1.z.object({
60
+ action: zod_1.z.literal('create-tag'),
61
+ projectPath: zod_1.z.string(),
62
+ name: zod_1.z.string(),
63
+ message: zod_1.z.string().optional()
64
+ }),
65
+ zod_1.z.object({
66
+ action: zod_1.z.literal('list-tags'),
67
+ projectPath: zod_1.z.string()
68
+ }),
69
+ // VERSIONAMENTO INTELIGENTE
70
+ zod_1.z.object({
71
+ action: zod_1.z.literal('bump-version'),
72
+ projectPath: zod_1.z.string(),
73
+ type: zod_1.z.enum(['patch', 'minor', 'major']).default('patch'),
74
+ createTag: zod_1.z.boolean().optional().default(true),
75
+ createRelease: zod_1.z.boolean().optional().default(false),
76
+ provider: zod_1.z.enum(['gitea', 'github']).optional()
77
+ })
78
+ ]);
79
+ const GitVersioningResultSchema = zod_1.z.object({
80
+ success: zod_1.z.boolean(),
81
+ action: zod_1.z.string(),
82
+ message: zod_1.z.string(),
83
+ data: zod_1.z.any().optional(),
84
+ error: zod_1.z.string().optional(),
85
+ recoverable: zod_1.z.boolean().optional(),
86
+ suggestion: zod_1.z.string().optional()
87
+ });
88
+ /**
89
+ * Version Manager - Gerencia versionamento semântico
90
+ */
91
+ class VersionManager {
92
+ static parseVersion(version) {
93
+ const match = version.match(/^v?(\d+)\.(\d+)\.(\d+)$/);
94
+ if (!match)
95
+ return null;
96
+ return {
97
+ major: parseInt(match[1]),
98
+ minor: parseInt(match[2]),
99
+ patch: parseInt(match[3])
100
+ };
101
+ }
102
+ static bumpVersion(currentVersion, type) {
103
+ const parsed = this.parseVersion(currentVersion);
104
+ if (!parsed)
105
+ return 'v1.0.0';
106
+ switch (type) {
107
+ case 'major':
108
+ return `v${parsed.major + 1}.0.0`;
109
+ case 'minor':
110
+ return `v${parsed.major}.${parsed.minor + 1}.0`;
111
+ case 'patch':
112
+ return `v${parsed.major}.${parsed.minor}.${parsed.patch + 1}`;
113
+ }
114
+ }
115
+ static async getCurrentVersion(projectPath) {
116
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
117
+ try {
118
+ // Try to get version from package.json
119
+ const packageRead = await gitOps.readFile('package.json');
120
+ if (packageRead.success) {
121
+ const packageJson = JSON.parse(packageRead.data.content);
122
+ if (packageJson.version) {
123
+ return `v${packageJson.version}`;
124
+ }
125
+ }
126
+ // Try to get latest tag
127
+ const tagResult = await gitOps.tag(undefined, { list: true });
128
+ if (tagResult.success && tagResult.output.trim()) {
129
+ const tags = tagResult.output.trim().split('\n').filter(tag => tag.match(/^v?\d+\.\d+\.\d+$/));
130
+ if (tags.length > 0) {
131
+ return tags[0].startsWith('v') ? tags[0] : `v${tags[0]}`;
132
+ }
133
+ }
134
+ return 'v0.1.0'; // Default starting version
135
+ }
136
+ catch (error) {
137
+ return 'v0.1.0';
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Enhanced Error Handler for Versioning
143
+ */
144
+ class VersioningErrorHandler {
145
+ static handleError(error, context) {
146
+ const errorMessage = error instanceof Error ? error.message : String(error);
147
+ const errorPatterns = [
148
+ {
149
+ pattern: /branch.*already exists/i,
150
+ suggestion: "Choose a different branch name",
151
+ recoverable: true
152
+ },
153
+ {
154
+ pattern: /tag.*already exists/i,
155
+ suggestion: "Use a different tag name or bump version",
156
+ recoverable: true
157
+ },
158
+ {
159
+ pattern: /branch.*not found/i,
160
+ suggestion: "Check branch name or create it first",
161
+ recoverable: true
162
+ },
163
+ {
164
+ pattern: /cannot delete branch/i,
165
+ suggestion: "Switch to another branch before deleting",
166
+ recoverable: true
167
+ },
168
+ {
169
+ pattern: /release.*already exists/i,
170
+ suggestion: "Use a different release name",
171
+ recoverable: true
172
+ }
173
+ ];
174
+ const matchedPattern = errorPatterns.find(p => p.pattern.test(errorMessage));
175
+ return {
176
+ success: false,
177
+ action: context,
178
+ message: `Error in ${context}: ${errorMessage}`,
179
+ error: errorMessage,
180
+ recoverable: matchedPattern?.recoverable || false,
181
+ suggestion: matchedPattern?.suggestion
182
+ };
183
+ }
184
+ }
185
+ exports.gitVersioningTool = {
186
+ name: 'git-versioning',
187
+ description: `🏷️ VERSIONAMENTO INTELIGENTE
188
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
189
+ 🌿 BRANCHES:
190
+ • create-branch: Criar nova branch
191
+ • list-branches: Listar branches
192
+ • switch-branch: Trocar de branch
193
+ • delete-branch: Remover branch
194
+
195
+ 📦 RELEASES & TAGS:
196
+ • create-release: Criar release
197
+ • list-releases: Listar releases
198
+ • create-tag: Criar tag
199
+ • list-tags: Listar tags
200
+
201
+ 🚀 VERSIONAMENTO AUTOMÁTICO:
202
+ • bump-version: Bump automático (patch/minor/major)
203
+
204
+ ✨ DIFERENCIAIS:
205
+ • Versionamento semântico automático
206
+ • Sugestões inteligentes de nomes
207
+ • Error handling com recovery
208
+ • Integração completa Git + Remote`,
209
+ inputSchema: {
210
+ type: 'object',
211
+ properties: {
212
+ action: {
213
+ type: 'string',
214
+ enum: ['create-branch', 'list-branches', 'switch-branch', 'delete-branch', 'create-release', 'list-releases', 'create-tag', 'list-tags', 'bump-version'],
215
+ description: 'Versioning action to perform'
216
+ },
217
+ projectPath: { type: 'string', description: 'Local project path' },
218
+ repo: { type: 'string', description: 'Repository name' },
219
+ provider: { type: 'string', enum: ['gitea', 'github'], description: 'Git provider' },
220
+ name: { type: 'string', description: 'Branch/tag name' },
221
+ from: { type: 'string', description: 'Source branch', default: 'main' },
222
+ tag: { type: 'string', description: 'Release tag' },
223
+ message: { type: 'string', description: 'Tag/release message' },
224
+ description: { type: 'string', description: 'Release description' },
225
+ type: { type: 'string', enum: ['patch', 'minor', 'major'], description: 'Version bump type', default: 'patch' },
226
+ draft: { type: 'boolean', description: 'Draft release', default: false },
227
+ force: { type: 'boolean', description: 'Force operation', default: false },
228
+ createTag: { type: 'boolean', description: 'Create tag during bump', default: true },
229
+ createRelease: { type: 'boolean', description: 'Create release during bump', default: false },
230
+ limit: { type: 'number', description: 'Result limit', default: 10 }
231
+ },
232
+ required: ['action']
233
+ },
234
+ async handler(input) {
235
+ try {
236
+ const validatedInput = GitVersioningInputSchema.parse(input);
237
+ switch (validatedInput.action) {
238
+ case 'create-branch':
239
+ return await this.handleCreateBranch(validatedInput);
240
+ case 'list-branches':
241
+ return await this.handleListBranches(validatedInput);
242
+ case 'switch-branch':
243
+ return await this.handleSwitchBranch(validatedInput);
244
+ case 'delete-branch':
245
+ return await this.handleDeleteBranch(validatedInput);
246
+ case 'create-release':
247
+ return await this.handleCreateRelease(validatedInput);
248
+ case 'list-releases':
249
+ return await this.handleListReleases(validatedInput);
250
+ case 'create-tag':
251
+ return await this.handleCreateTag(validatedInput);
252
+ case 'list-tags':
253
+ return await this.handleListTags(validatedInput);
254
+ case 'bump-version':
255
+ return await this.handleBumpVersion(validatedInput);
256
+ default:
257
+ throw new Error(`Action '${validatedInput.action}' not supported`);
258
+ }
259
+ }
260
+ catch (error) {
261
+ return VersioningErrorHandler.handleError(error, `versioning.${input.action}`);
262
+ }
263
+ },
264
+ async handleCreateBranch(params) {
265
+ const { projectPath, name, from } = params;
266
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
267
+ try {
268
+ const branchResult = await gitOps.createBranch(name, from);
269
+ if (!branchResult.success) {
270
+ throw new Error(`Failed to create branch: ${branchResult.error}`);
271
+ }
272
+ return {
273
+ success: true,
274
+ action: 'create-branch',
275
+ message: 'Branch created successfully',
276
+ data: { name, from }
277
+ };
278
+ }
279
+ catch (error) {
280
+ return VersioningErrorHandler.handleError(error, 'create-branch');
281
+ }
282
+ },
283
+ async handleListBranches(params) {
284
+ const { projectPath } = params;
285
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
286
+ try {
287
+ const branchesResult = await gitOps.listBranches({ all: true });
288
+ if (!branchesResult.success) {
289
+ throw new Error(`Failed to list branches: ${branchesResult.error}`);
290
+ }
291
+ const branches = branchesResult.output.trim().split('\n').filter(b => b.trim());
292
+ return {
293
+ success: true,
294
+ action: 'list-branches',
295
+ message: `Found ${branches.length} branches`,
296
+ data: { branches, count: branches.length }
297
+ };
298
+ }
299
+ catch (error) {
300
+ return VersioningErrorHandler.handleError(error, 'list-branches');
301
+ }
302
+ },
303
+ async handleSwitchBranch(params) {
304
+ const { projectPath, name } = params;
305
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
306
+ try {
307
+ const switchResult = await gitOps.checkout(name);
308
+ if (!switchResult.success) {
309
+ throw new Error(`Failed to switch branch: ${switchResult.error}`);
310
+ }
311
+ return {
312
+ success: true,
313
+ action: 'switch-branch',
314
+ message: 'Switched branch successfully',
315
+ data: { branch: name }
316
+ };
317
+ }
318
+ catch (error) {
319
+ return VersioningErrorHandler.handleError(error, 'switch-branch');
320
+ }
321
+ },
322
+ async handleDeleteBranch(params) {
323
+ const { projectPath, name, force } = params;
324
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
325
+ try {
326
+ const deleteResult = await gitOps.deleteBranch(name, { force });
327
+ if (!deleteResult.success) {
328
+ throw new Error(`Failed to delete branch: ${deleteResult.error}`);
329
+ }
330
+ return {
331
+ success: true,
332
+ action: 'delete-branch',
333
+ message: 'Branch deleted successfully',
334
+ data: { branch: name, force }
335
+ };
336
+ }
337
+ catch (error) {
338
+ return VersioningErrorHandler.handleError(error, 'delete-branch');
339
+ }
340
+ },
341
+ async handleCreateRelease(params) {
342
+ const { repo, provider, tag, name, description, draft } = params;
343
+ try {
344
+ const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)({ provider }, provider);
345
+ const providerInstance = index_js_1.globalProviderFactory.getProvider(provider);
346
+ if (!providerInstance) {
347
+ throw new Error(`Provider ${provider} not configured`);
348
+ }
349
+ const releaseData = {
350
+ tag_name: tag,
351
+ name: name || tag,
352
+ body: description || `Release ${tag}`,
353
+ draft: draft || false,
354
+ prerelease: tag.includes('beta') || tag.includes('alpha')
355
+ };
356
+ const release = await providerInstance.createRelease(processedInput.owner, repo, releaseData);
357
+ return {
358
+ success: true,
359
+ action: 'create-release',
360
+ message: 'Release created successfully',
361
+ data: {
362
+ tag: release.tag_name,
363
+ name: release.name,
364
+ url: release.html_url,
365
+ draft: release.draft
366
+ }
367
+ };
368
+ }
369
+ catch (error) {
370
+ return VersioningErrorHandler.handleError(error, 'create-release');
371
+ }
372
+ },
373
+ async handleListReleases(params) {
374
+ const { repo, provider, limit } = params;
375
+ try {
376
+ const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)({ provider }, provider);
377
+ const providerInstance = index_js_1.globalProviderFactory.getProvider(provider);
378
+ if (!providerInstance) {
379
+ throw new Error(`Provider ${provider} not configured`);
380
+ }
381
+ const releases = await providerInstance.listReleases(processedInput.owner, repo, undefined, limit);
382
+ return {
383
+ success: true,
384
+ action: 'list-releases',
385
+ message: `Found ${releases.length} releases`,
386
+ data: {
387
+ releases: releases.map(r => ({
388
+ tag: r.tag_name,
389
+ name: r.name,
390
+ published: r.published_at,
391
+ url: r.html_url
392
+ })),
393
+ count: releases.length
394
+ }
395
+ };
396
+ }
397
+ catch (error) {
398
+ return VersioningErrorHandler.handleError(error, 'list-releases');
399
+ }
400
+ },
401
+ async handleCreateTag(params) {
402
+ const { projectPath, name, message } = params;
403
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
404
+ try {
405
+ const tagResult = await gitOps.tag(name, {
406
+ annotate: true,
407
+ message: message || `Tag ${name}`
408
+ });
409
+ if (!tagResult.success) {
410
+ throw new Error(`Failed to create tag: ${tagResult.error}`);
411
+ }
412
+ return {
413
+ success: true,
414
+ action: 'create-tag',
415
+ message: 'Tag created successfully',
416
+ data: { tag: name, message: message || `Tag ${name}` }
417
+ };
418
+ }
419
+ catch (error) {
420
+ return VersioningErrorHandler.handleError(error, 'create-tag');
421
+ }
422
+ },
423
+ async handleListTags(params) {
424
+ const { projectPath } = params;
425
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
426
+ try {
427
+ const tagsResult = await gitOps.tag(undefined, { list: true });
428
+ if (!tagsResult.success) {
429
+ throw new Error(`Failed to list tags: ${tagsResult.error}`);
430
+ }
431
+ const tags = tagsResult.output.trim().split('\n').filter(t => t.trim());
432
+ return {
433
+ success: true,
434
+ action: 'list-tags',
435
+ message: `Found ${tags.length} tags`,
436
+ data: { tags, count: tags.length }
437
+ };
438
+ }
439
+ catch (error) {
440
+ return VersioningErrorHandler.handleError(error, 'list-tags');
441
+ }
442
+ },
443
+ async handleBumpVersion(params) {
444
+ const { projectPath, type, createTag, createRelease, provider } = params;
445
+ try {
446
+ const currentVersion = await VersionManager.getCurrentVersion(projectPath);
447
+ const newVersion = VersionManager.bumpVersion(currentVersion, type);
448
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
449
+ // Create tag
450
+ if (createTag) {
451
+ const tagResult = await gitOps.tag(newVersion, {
452
+ annotate: true,
453
+ message: `Release ${newVersion}`
454
+ });
455
+ if (!tagResult.success) {
456
+ throw new Error(`Failed to create tag: ${tagResult.error}`);
457
+ }
458
+ }
459
+ // Create release if requested and provider configured
460
+ if (createRelease && provider) {
461
+ // This would require getting repo name from git config
462
+ // For now, skip this part in the bump
463
+ console.log('Release creation skipped - repo name needed');
464
+ }
465
+ return {
466
+ success: true,
467
+ action: 'bump-version',
468
+ message: `Version bumped successfully`,
469
+ data: {
470
+ from: currentVersion,
471
+ to: newVersion,
472
+ type,
473
+ tagCreated: createTag,
474
+ releaseCreated: false
475
+ }
476
+ };
477
+ }
478
+ catch (error) {
479
+ return VersioningErrorHandler.handleError(error, 'bump-version');
480
+ }
481
+ }
482
+ };
483
+ //# sourceMappingURL=git-versioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-versioning.js","sourceRoot":"","sources":["../../src/tools/git-versioning.ts"],"names":[],"mappings":"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"}