@andrebuzeli/git-mcp 2.48.0 → 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.
Files changed (40) hide show
  1. package/README.md +356 -329
  2. package/dist/server.d.ts.map +1 -1
  3. package/dist/server.js +55 -78
  4. package/dist/server.js.map +1 -1
  5. package/dist/tools/git-commits.d.ts +2 -2
  6. package/dist/tools/git-config.d.ts +2 -2
  7. package/dist/tools/git-files.d.ts +2 -2
  8. package/dist/tools/git-issues.d.ts +6 -6
  9. package/dist/tools/git-packages.d.ts +2 -2
  10. package/dist/tools/git-projects.d.ts +142 -57
  11. package/dist/tools/git-projects.d.ts.map +1 -1
  12. package/dist/tools/git-projects.js +281 -283
  13. package/dist/tools/git-projects.js.map +1 -1
  14. package/dist/tools/git-pulls.d.ts +8 -8
  15. package/dist/tools/git-releases.d.ts +2 -2
  16. package/dist/tools/git-remote.d.ts +2 -2
  17. package/dist/tools/git-repositories.d.ts +4 -4
  18. package/dist/tools/git-sync.d.ts +4 -4
  19. package/dist/tools/git-tags.d.ts +2 -2
  20. package/dist/tools/git-undo.d.ts +268 -0
  21. package/dist/tools/git-undo.d.ts.map +1 -0
  22. package/dist/tools/git-undo.js +516 -0
  23. package/dist/tools/git-undo.js.map +1 -0
  24. package/dist/tools/git-update-project.d.ts +4 -159
  25. package/dist/tools/git-update-project.d.ts.map +1 -1
  26. package/dist/tools/git-update-project.js +7 -349
  27. package/dist/tools/git-update-project.js.map +1 -1
  28. package/dist/tools/git-versioning.d.ts +286 -0
  29. package/dist/tools/git-versioning.d.ts.map +1 -0
  30. package/dist/tools/git-versioning.js +483 -0
  31. package/dist/tools/git-versioning.js.map +1 -0
  32. package/dist/tools/git-workflow.d.ts +230 -252
  33. package/dist/tools/git-workflow.d.ts.map +1 -1
  34. package/dist/tools/git-workflow.js +452 -479
  35. package/dist/tools/git-workflow.js.map +1 -1
  36. package/package.json +4 -13
  37. package/dist/tools/git-publish.d.ts +0 -327
  38. package/dist/tools/git-publish.d.ts.map +0 -1
  39. package/dist/tools/git-publish.js +0 -632
  40. package/dist/tools/git-publish.js.map +0 -1
@@ -0,0 +1,516 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gitUndoTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const git_operations_js_1 = require("../utils/git-operations.js");
6
+ /**
7
+ * Tool: git-undo
8
+ *
9
+ * FERRAMENTA UNIFICADA PARA UNDO/REDO OPERATIONS
10
+ * Combina as funcionalidades de:
11
+ * - git-stash (save/apply changes)
12
+ * - git-reset (undo commits)
13
+ * - git-revert (safe undo)
14
+ *
15
+ * DESIGNED FOR: Programador individual autônomo
16
+ * PHILOSOPHY: Undo seguro e inteligente com confirmações
17
+ */
18
+ const GitUndoInputSchema = zod_1.z.discriminatedUnion('action', [
19
+ // STASH OPERATIONS
20
+ zod_1.z.object({
21
+ action: zod_1.z.literal('stash-save'),
22
+ projectPath: zod_1.z.string(),
23
+ message: zod_1.z.string().optional(),
24
+ includeUntracked: zod_1.z.boolean().optional().default(false)
25
+ }),
26
+ zod_1.z.object({
27
+ action: zod_1.z.literal('stash-list'),
28
+ projectPath: zod_1.z.string()
29
+ }),
30
+ zod_1.z.object({
31
+ action: zod_1.z.literal('stash-apply'),
32
+ projectPath: zod_1.z.string(),
33
+ index: zod_1.z.number().optional().default(0)
34
+ }),
35
+ zod_1.z.object({
36
+ action: zod_1.z.literal('stash-drop'),
37
+ projectPath: zod_1.z.string(),
38
+ index: zod_1.z.number().optional().default(0)
39
+ }),
40
+ zod_1.z.object({
41
+ action: zod_1.z.literal('stash-clear'),
42
+ projectPath: zod_1.z.string(),
43
+ confirm: zod_1.z.boolean().optional().default(false)
44
+ }),
45
+ // RESET OPERATIONS
46
+ zod_1.z.object({
47
+ action: zod_1.z.literal('reset-soft'),
48
+ projectPath: zod_1.z.string(),
49
+ to: zod_1.z.string().optional().default('HEAD~1'),
50
+ confirm: zod_1.z.boolean().optional().default(false)
51
+ }),
52
+ zod_1.z.object({
53
+ action: zod_1.z.literal('reset-mixed'),
54
+ projectPath: zod_1.z.string(),
55
+ to: zod_1.z.string().optional().default('HEAD~1'),
56
+ confirm: zod_1.z.boolean().optional().default(false)
57
+ }),
58
+ zod_1.z.object({
59
+ action: zod_1.z.literal('reset-hard'),
60
+ projectPath: zod_1.z.string(),
61
+ to: zod_1.z.string().optional().default('HEAD~1'),
62
+ confirm: zod_1.z.boolean().optional().default(false)
63
+ }),
64
+ // REVERT OPERATIONS
65
+ zod_1.z.object({
66
+ action: zod_1.z.literal('revert-commit'),
67
+ projectPath: zod_1.z.string(),
68
+ commit: zod_1.z.string(),
69
+ message: zod_1.z.string().optional()
70
+ }),
71
+ // SMART UNDO
72
+ zod_1.z.object({
73
+ action: zod_1.z.literal('undo-last'),
74
+ projectPath: zod_1.z.string(),
75
+ confirm: zod_1.z.boolean().optional().default(false)
76
+ }),
77
+ zod_1.z.object({
78
+ action: zod_1.z.literal('redo-last'),
79
+ projectPath: zod_1.z.string()
80
+ })
81
+ ]);
82
+ const GitUndoResultSchema = zod_1.z.object({
83
+ success: zod_1.z.boolean(),
84
+ action: zod_1.z.string(),
85
+ message: zod_1.z.string(),
86
+ data: zod_1.z.any().optional(),
87
+ error: zod_1.z.string().optional(),
88
+ recoverable: zod_1.z.boolean().optional(),
89
+ suggestion: zod_1.z.string().optional(),
90
+ warning: zod_1.z.string().optional()
91
+ });
92
+ /**
93
+ * Smart Undo Manager - Gerencia operações de undo inteligentes
94
+ */
95
+ class UndoManager {
96
+ static async getLastCommitInfo(projectPath) {
97
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
98
+ const logResult = await gitOps.log({ maxCount: 1, oneline: true });
99
+ if (!logResult.success || !logResult.output.trim()) {
100
+ return null;
101
+ }
102
+ const [hash, ...messageParts] = logResult.output.trim().split(' ');
103
+ const message = messageParts.join(' ');
104
+ return { hash, message };
105
+ }
106
+ static async canRedo(projectPath) {
107
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
108
+ const stashResult = await gitOps.stash('list');
109
+ return stashResult.success && stashResult.output.trim().length > 0;
110
+ }
111
+ static async getStashCount(projectPath) {
112
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
113
+ const stashResult = await gitOps.stash('list');
114
+ if (!stashResult.success)
115
+ return 0;
116
+ const lines = stashResult.output.trim().split('\n').filter(line => line.trim());
117
+ return lines.length;
118
+ }
119
+ }
120
+ /**
121
+ * Enhanced Error Handler for Undo Operations
122
+ */
123
+ class UndoErrorHandler {
124
+ static handleError(error, context) {
125
+ const errorMessage = error instanceof Error ? error.message : String(error);
126
+ const errorPatterns = [
127
+ {
128
+ pattern: /stash.*empty/i,
129
+ suggestion: "No stashes available to apply",
130
+ recoverable: true
131
+ },
132
+ {
133
+ pattern: /cannot reset/i,
134
+ suggestion: "Check if you have commits to reset",
135
+ recoverable: true
136
+ },
137
+ {
138
+ pattern: /commit.*not found/i,
139
+ suggestion: "Verify the commit hash exists",
140
+ recoverable: true
141
+ },
142
+ {
143
+ pattern: /cannot revert/i,
144
+ suggestion: "Some commits may not be revertable",
145
+ recoverable: false
146
+ },
147
+ {
148
+ pattern: /working tree.*clean/i,
149
+ suggestion: "No changes to stash",
150
+ recoverable: true
151
+ }
152
+ ];
153
+ const matchedPattern = errorPatterns.find(p => p.pattern.test(errorMessage));
154
+ return {
155
+ success: false,
156
+ action: context,
157
+ message: `Error in ${context}: ${errorMessage}`,
158
+ error: errorMessage,
159
+ recoverable: matchedPattern?.recoverable || false,
160
+ suggestion: matchedPattern?.suggestion
161
+ };
162
+ }
163
+ }
164
+ exports.gitUndoTool = {
165
+ name: 'git-undo',
166
+ description: `↩️ UNDO/REDO INTELIGENTE
167
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
168
+ 📦 STASH (Salvar temporariamente):
169
+ • stash-save: Salvar mudanças atuais
170
+ • stash-list: Listar stashes salvos
171
+ • stash-apply: Aplicar stash salvo
172
+ • stash-drop: Remover stash específico
173
+ • stash-clear: Limpar todos os stashes
174
+
175
+ 🔄 RESET (Desfazer commits):
176
+ • reset-soft: Desfazer commit mantendo mudanças
177
+ • reset-mixed: Desfazer commit removendo do stage
178
+ • reset-hard: Desfazer commit perdendo mudanças
179
+
180
+ 🔀 REVERT (Desfazer seguro):
181
+ • revert-commit: Reverter commit específico
182
+
183
+ 🧠 SMART OPERATIONS:
184
+ • undo-last: Desfazer última operação
185
+ • redo-last: Refazer última operação desfeita
186
+
187
+ ✨ DIFERENCIAIS:
188
+ • Confirmações para operações destrutivas
189
+ • Sugestões inteligentes de recovery
190
+ • Preview de operações perigosas
191
+ • Undo/Redo inteligente baseado em contexto`,
192
+ inputSchema: {
193
+ type: 'object',
194
+ properties: {
195
+ action: {
196
+ type: 'string',
197
+ enum: ['stash-save', 'stash-list', 'stash-apply', 'stash-drop', 'stash-clear', 'reset-soft', 'reset-mixed', 'reset-hard', 'revert-commit', 'undo-last', 'redo-last'],
198
+ description: 'Undo action to perform'
199
+ },
200
+ projectPath: { type: 'string', description: 'Local project path' },
201
+ message: { type: 'string', description: 'Stash or commit message' },
202
+ includeUntracked: { type: 'boolean', description: 'Include untracked files', default: false },
203
+ index: { type: 'number', description: 'Stash index', default: 0 },
204
+ to: { type: 'string', description: 'Reset target', default: 'HEAD~1' },
205
+ commit: { type: 'string', description: 'Commit to revert' },
206
+ confirm: { type: 'boolean', description: 'Confirm destructive operation', default: false }
207
+ },
208
+ required: ['action', 'projectPath']
209
+ },
210
+ async handler(input) {
211
+ try {
212
+ const validatedInput = GitUndoInputSchema.parse(input);
213
+ switch (validatedInput.action) {
214
+ case 'stash-save':
215
+ return await this.handleStashSave(validatedInput);
216
+ case 'stash-list':
217
+ return await this.handleStashList(validatedInput);
218
+ case 'stash-apply':
219
+ return await this.handleStashApply(validatedInput);
220
+ case 'stash-drop':
221
+ return await this.handleStashDrop(validatedInput);
222
+ case 'stash-clear':
223
+ return await this.handleStashClear(validatedInput);
224
+ case 'reset-soft':
225
+ return await this.handleResetSoft(validatedInput);
226
+ case 'reset-mixed':
227
+ return await this.handleResetMixed(validatedInput);
228
+ case 'reset-hard':
229
+ return await this.handleResetHard(validatedInput);
230
+ case 'revert-commit':
231
+ return await this.handleRevertCommit(validatedInput);
232
+ case 'undo-last':
233
+ return await this.handleUndoLast(validatedInput);
234
+ case 'redo-last':
235
+ return await this.handleRedoLast(validatedInput);
236
+ default:
237
+ throw new Error(`Action '${validatedInput.action}' not supported`);
238
+ }
239
+ }
240
+ catch (error) {
241
+ return UndoErrorHandler.handleError(error, `undo.${input.action}`);
242
+ }
243
+ },
244
+ async handleStashSave(params) {
245
+ const { projectPath, message, includeUntracked } = params;
246
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
247
+ try {
248
+ const stashOptions = {};
249
+ if (message)
250
+ stashOptions.message = message;
251
+ if (includeUntracked)
252
+ stashOptions.includeUntracked = true;
253
+ const stashResult = await gitOps.stash('push', stashOptions);
254
+ if (!stashResult.success) {
255
+ throw new Error(`Stash failed: ${stashResult.error}`);
256
+ }
257
+ return {
258
+ success: true,
259
+ action: 'stash-save',
260
+ message: 'Changes stashed successfully',
261
+ data: { message, includeUntracked }
262
+ };
263
+ }
264
+ catch (error) {
265
+ return UndoErrorHandler.handleError(error, 'stash-save');
266
+ }
267
+ },
268
+ async handleStashList(params) {
269
+ const { projectPath } = params;
270
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
271
+ try {
272
+ const stashResult = await gitOps.stash('list');
273
+ if (!stashResult.success) {
274
+ throw new Error(`Stash list failed: ${stashResult.error}`);
275
+ }
276
+ const stashes = stashResult.output.trim().split('\n').filter(line => line.trim());
277
+ return {
278
+ success: true,
279
+ action: 'stash-list',
280
+ message: `Found ${stashes.length} stashes`,
281
+ data: { stashes, count: stashes.length }
282
+ };
283
+ }
284
+ catch (error) {
285
+ return UndoErrorHandler.handleError(error, 'stash-list');
286
+ }
287
+ },
288
+ async handleStashApply(params) {
289
+ const { projectPath, index } = params;
290
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
291
+ try {
292
+ const stashResult = await gitOps.stash('apply', { index });
293
+ if (!stashResult.success) {
294
+ throw new Error(`Stash apply failed: ${stashResult.error}`);
295
+ }
296
+ return {
297
+ success: true,
298
+ action: 'stash-apply',
299
+ message: 'Stash applied successfully',
300
+ data: { index }
301
+ };
302
+ }
303
+ catch (error) {
304
+ return UndoErrorHandler.handleError(error, 'stash-apply');
305
+ }
306
+ },
307
+ async handleStashDrop(params) {
308
+ const { projectPath, index } = params;
309
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
310
+ try {
311
+ const stashResult = await gitOps.stash('drop', { index });
312
+ if (!stashResult.success) {
313
+ throw new Error(`Stash drop failed: ${stashResult.error}`);
314
+ }
315
+ return {
316
+ success: true,
317
+ action: 'stash-drop',
318
+ message: 'Stash dropped successfully',
319
+ data: { index }
320
+ };
321
+ }
322
+ catch (error) {
323
+ return UndoErrorHandler.handleError(error, 'stash-drop');
324
+ }
325
+ },
326
+ async handleStashClear(params) {
327
+ const { projectPath, confirm } = params;
328
+ if (!confirm) {
329
+ return {
330
+ success: false,
331
+ action: 'stash-clear',
332
+ message: 'Stash clear requires confirmation',
333
+ suggestion: 'Set confirm=true to clear all stashes',
334
+ recoverable: true
335
+ };
336
+ }
337
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
338
+ try {
339
+ const stashResult = await gitOps.stash('clear');
340
+ if (!stashResult.success) {
341
+ throw new Error(`Stash clear failed: ${stashResult.error}`);
342
+ }
343
+ return {
344
+ success: true,
345
+ action: 'stash-clear',
346
+ message: 'All stashes cleared successfully',
347
+ warning: 'This operation cannot be undone'
348
+ };
349
+ }
350
+ catch (error) {
351
+ return UndoErrorHandler.handleError(error, 'stash-clear');
352
+ }
353
+ },
354
+ async handleResetSoft(params) {
355
+ const { projectPath, to } = params;
356
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
357
+ try {
358
+ const resetResult = await gitOps.reset(to, { mode: 'soft' });
359
+ if (!resetResult.success) {
360
+ throw new Error(`Soft reset failed: ${resetResult.error}`);
361
+ }
362
+ return {
363
+ success: true,
364
+ action: 'reset-soft',
365
+ message: 'Soft reset completed successfully',
366
+ data: { target: to, mode: 'soft' },
367
+ warning: 'Changes are still in staging area'
368
+ };
369
+ }
370
+ catch (error) {
371
+ return UndoErrorHandler.handleError(error, 'reset-soft');
372
+ }
373
+ },
374
+ async handleResetMixed(params) {
375
+ const { projectPath, to, confirm } = params;
376
+ if (!confirm) {
377
+ return {
378
+ success: false,
379
+ action: 'reset-mixed',
380
+ message: 'Mixed reset requires confirmation',
381
+ suggestion: 'Set confirm=true to proceed with mixed reset',
382
+ recoverable: true
383
+ };
384
+ }
385
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
386
+ try {
387
+ const resetResult = await gitOps.reset(to, { mode: 'mixed' });
388
+ if (!resetResult.success) {
389
+ throw new Error(`Mixed reset failed: ${resetResult.error}`);
390
+ }
391
+ return {
392
+ success: true,
393
+ action: 'reset-mixed',
394
+ message: 'Mixed reset completed successfully',
395
+ data: { target: to, mode: 'mixed' },
396
+ warning: 'Staged changes have been unstaged'
397
+ };
398
+ }
399
+ catch (error) {
400
+ return UndoErrorHandler.handleError(error, 'reset-mixed');
401
+ }
402
+ },
403
+ async handleResetHard(params) {
404
+ const { projectPath, to, confirm } = params;
405
+ if (!confirm) {
406
+ return {
407
+ success: false,
408
+ action: 'reset-hard',
409
+ message: 'Hard reset requires confirmation - THIS WILL LOSE CHANGES',
410
+ suggestion: 'Set confirm=true to proceed with hard reset',
411
+ recoverable: false
412
+ };
413
+ }
414
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
415
+ try {
416
+ const resetResult = await gitOps.reset(to, { mode: 'hard' });
417
+ if (!resetResult.success) {
418
+ throw new Error(`Hard reset failed: ${resetResult.error}`);
419
+ }
420
+ return {
421
+ success: true,
422
+ action: 'reset-hard',
423
+ message: 'Hard reset completed successfully',
424
+ data: { target: to, mode: 'hard' },
425
+ warning: 'Changes have been permanently lost'
426
+ };
427
+ }
428
+ catch (error) {
429
+ return UndoErrorHandler.handleError(error, 'reset-hard');
430
+ }
431
+ },
432
+ async handleRevertCommit(params) {
433
+ const { projectPath, commit, message } = params;
434
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
435
+ try {
436
+ const revertOptions = {};
437
+ if (message)
438
+ revertOptions.message = message;
439
+ const revertResult = await gitOps.revert(commit, revertOptions);
440
+ if (!revertResult.success) {
441
+ throw new Error(`Revert failed: ${revertResult.error}`);
442
+ }
443
+ return {
444
+ success: true,
445
+ action: 'revert-commit',
446
+ message: 'Commit reverted successfully',
447
+ data: { commit, message }
448
+ };
449
+ }
450
+ catch (error) {
451
+ return UndoErrorHandler.handleError(error, 'revert-commit');
452
+ }
453
+ },
454
+ async handleUndoLast(params) {
455
+ const { projectPath, confirm } = params;
456
+ if (!confirm) {
457
+ const lastCommit = await UndoManager.getLastCommitInfo(projectPath);
458
+ return {
459
+ success: false,
460
+ action: 'undo-last',
461
+ message: 'Undo last requires confirmation',
462
+ data: { lastCommit },
463
+ suggestion: `Set confirm=true to undo commit: ${lastCommit?.message || 'unknown'}`,
464
+ recoverable: true
465
+ };
466
+ }
467
+ // Use mixed reset to undo last commit
468
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
469
+ try {
470
+ const resetResult = await gitOps.reset('HEAD~1', { mode: 'mixed' });
471
+ if (!resetResult.success) {
472
+ throw new Error(`Undo failed: ${resetResult.error}`);
473
+ }
474
+ return {
475
+ success: true,
476
+ action: 'undo-last',
477
+ message: 'Last commit undone successfully',
478
+ data: { mode: 'mixed', target: 'HEAD~1' },
479
+ warning: 'Changes from last commit are now unstaged'
480
+ };
481
+ }
482
+ catch (error) {
483
+ return UndoErrorHandler.handleError(error, 'undo-last');
484
+ }
485
+ },
486
+ async handleRedoLast(params) {
487
+ const { projectPath } = params;
488
+ const canRedo = await UndoManager.canRedo(projectPath);
489
+ if (!canRedo) {
490
+ return {
491
+ success: false,
492
+ action: 'redo-last',
493
+ message: 'No stashes available to redo',
494
+ suggestion: 'Save changes with stash-save first',
495
+ recoverable: true
496
+ };
497
+ }
498
+ const gitOps = new git_operations_js_1.GitOperations(projectPath);
499
+ try {
500
+ const stashResult = await gitOps.stash('pop');
501
+ if (!stashResult.success) {
502
+ throw new Error(`Redo failed: ${stashResult.error}`);
503
+ }
504
+ return {
505
+ success: true,
506
+ action: 'redo-last',
507
+ message: 'Last operation redone successfully',
508
+ data: { stashApplied: true }
509
+ };
510
+ }
511
+ catch (error) {
512
+ return UndoErrorHandler.handleError(error, 'redo-last');
513
+ }
514
+ }
515
+ };
516
+ //# sourceMappingURL=git-undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-undo.js","sourceRoot":"","sources":["../../src/tools/git-undo.ts"],"names":[],"mappings":"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"}