@andrebuzeli/git-mcp 5.0.9 → 5.2.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 (82) hide show
  1. package/README.md +239 -80
  2. package/dist/__tests__/setup.d.ts +10 -0
  3. package/dist/__tests__/setup.d.ts.map +1 -0
  4. package/dist/__tests__/setup.js +105 -0
  5. package/dist/__tests__/setup.js.map +1 -0
  6. package/dist/config.d.ts +43 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +168 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/providers/gitea-provider.d.ts.map +1 -1
  12. package/dist/providers/gitea-provider.js +3 -18
  13. package/dist/providers/gitea-provider.js.map +1 -1
  14. package/dist/providers/github-provider.d.ts.map +1 -1
  15. package/dist/providers/github-provider.js +3 -27
  16. package/dist/providers/github-provider.js.map +1 -1
  17. package/dist/server.d.ts +8 -1
  18. package/dist/server.d.ts.map +1 -1
  19. package/dist/server.js +102 -6
  20. package/dist/server.js.map +1 -1
  21. package/dist/tools/git-archive.d.ts.map +1 -1
  22. package/dist/tools/git-archive.js +1 -3
  23. package/dist/tools/git-archive.js.map +1 -1
  24. package/dist/tools/git-automations.d.ts +257 -0
  25. package/dist/tools/git-automations.d.ts.map +1 -0
  26. package/dist/tools/git-automations.js +878 -0
  27. package/dist/tools/git-automations.js.map +1 -0
  28. package/dist/tools/git-bisect.d.ts +158 -0
  29. package/dist/tools/git-bisect.d.ts.map +1 -0
  30. package/dist/tools/git-bisect.js +571 -0
  31. package/dist/tools/git-bisect.js.map +1 -0
  32. package/dist/tools/git-branches.d.ts +48 -0
  33. package/dist/tools/git-branches.d.ts.map +1 -1
  34. package/dist/tools/git-branches.js +46 -4
  35. package/dist/tools/git-branches.js.map +1 -1
  36. package/dist/tools/git-changelog.d.ts +253 -0
  37. package/dist/tools/git-changelog.d.ts.map +1 -0
  38. package/dist/tools/git-changelog.js +728 -0
  39. package/dist/tools/git-changelog.js.map +1 -0
  40. package/dist/tools/git-cherry-pick.d.ts +150 -0
  41. package/dist/tools/git-cherry-pick.d.ts.map +1 -0
  42. package/dist/tools/git-cherry-pick.js +455 -0
  43. package/dist/tools/git-cherry-pick.js.map +1 -0
  44. package/dist/tools/git-dependencies.d.ts +233 -0
  45. package/dist/tools/git-dependencies.d.ts.map +1 -0
  46. package/dist/tools/git-dependencies.js +761 -0
  47. package/dist/tools/git-dependencies.js.map +1 -0
  48. package/dist/tools/git-files.d.ts +3 -26
  49. package/dist/tools/git-files.d.ts.map +1 -1
  50. package/dist/tools/git-files.js +26 -201
  51. package/dist/tools/git-files.js.map +1 -1
  52. package/dist/tools/git-hooks.d.ts +146 -0
  53. package/dist/tools/git-hooks.d.ts.map +1 -0
  54. package/dist/tools/git-hooks.js +634 -0
  55. package/dist/tools/git-hooks.js.map +1 -0
  56. package/dist/tools/git-reset.d.ts +17 -1
  57. package/dist/tools/git-reset.d.ts.map +1 -1
  58. package/dist/tools/git-reset.js +69 -2
  59. package/dist/tools/git-reset.js.map +1 -1
  60. package/dist/tools/git-stats-personal.d.ts +210 -0
  61. package/dist/tools/git-stats-personal.d.ts.map +1 -0
  62. package/dist/tools/git-stats-personal.js +718 -0
  63. package/dist/tools/git-stats-personal.js.map +1 -0
  64. package/dist/tools/git-tags.d.ts.map +1 -1
  65. package/dist/tools/git-tags.js +11 -3
  66. package/dist/tools/git-tags.js.map +1 -1
  67. package/dist/tools/git-workflow.d.ts +45 -0
  68. package/dist/tools/git-workflow.d.ts.map +1 -1
  69. package/dist/tools/git-workflow.js +43 -4
  70. package/dist/tools/git-workflow.js.map +1 -1
  71. package/dist/utils/operation-error-handler.d.ts.map +1 -1
  72. package/dist/utils/operation-error-handler.js +55 -0
  73. package/dist/utils/operation-error-handler.js.map +1 -1
  74. package/dist/utils/parameter-validator.d.ts +9 -0
  75. package/dist/utils/parameter-validator.d.ts.map +1 -1
  76. package/dist/utils/parameter-validator.js +430 -7
  77. package/dist/utils/parameter-validator.js.map +1 -1
  78. package/dist/utils/safety-warnings.d.ts +56 -0
  79. package/dist/utils/safety-warnings.d.ts.map +1 -0
  80. package/dist/utils/safety-warnings.js +330 -0
  81. package/dist/utils/safety-warnings.js.map +1 -0
  82. package/package.json +81 -78
@@ -0,0 +1,571 @@
1
+ "use strict";
2
+ /**
3
+ * Git Bisect Tool
4
+ *
5
+ * Git bisect management tool providing comprehensive Git bisect operations.
6
+ * Supports automated bug finding, manual bisect operations, and visualization.
7
+ *
8
+ * Operations: start, good, bad, skip, reset, run, log, visualize
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.GitBisectTool = void 0;
12
+ const git_command_executor_js_1 = require("../utils/git-command-executor.js");
13
+ const parameter_validator_js_1 = require("../utils/parameter-validator.js");
14
+ const operation_error_handler_js_1 = require("../utils/operation-error-handler.js");
15
+ class GitBisectTool {
16
+ gitExecutor;
17
+ constructor() {
18
+ this.gitExecutor = new git_command_executor_js_1.GitCommandExecutor();
19
+ }
20
+ /**
21
+ * Execute git-bisect operation
22
+ */
23
+ async execute(params) {
24
+ const startTime = Date.now();
25
+ try {
26
+ // Validate basic parameters
27
+ const validation = parameter_validator_js_1.ParameterValidator.validateToolParams('git-bisect', params);
28
+ if (!validation.isValid) {
29
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('VALIDATION_ERROR', `Parameter validation failed: ${validation.errors.join(', ')}`, params.action, { validationErrors: validation.errors }, validation.suggestions);
30
+ }
31
+ // Validate operation-specific parameters
32
+ const operationValidation = parameter_validator_js_1.ParameterValidator.validateOperationParams('git-bisect', params.action, params);
33
+ if (!operationValidation.isValid) {
34
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('VALIDATION_ERROR', `Operation validation failed: ${operationValidation.errors.join(', ')}`, params.action, { validationErrors: operationValidation.errors }, operationValidation.suggestions);
35
+ }
36
+ // Route to appropriate handler
37
+ switch (params.action) {
38
+ case 'start':
39
+ return await this.handleStart(params, startTime);
40
+ case 'good':
41
+ return await this.handleGood(params, startTime);
42
+ case 'bad':
43
+ return await this.handleBad(params, startTime);
44
+ case 'skip':
45
+ return await this.handleSkip(params, startTime);
46
+ case 'reset':
47
+ return await this.handleReset(params, startTime);
48
+ case 'run':
49
+ return await this.handleRun(params, startTime);
50
+ case 'log':
51
+ return await this.handleLog(params, startTime);
52
+ case 'visualize':
53
+ return await this.handleVisualize(params, startTime);
54
+ default:
55
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('INVALID_ACTION', `Unknown action: ${params.action}`, params.action, { supportedActions: ['start', 'good', 'bad', 'skip', 'reset', 'run', 'log', 'visualize'] }, ['Use one of the supported actions']);
56
+ }
57
+ }
58
+ catch (error) {
59
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
60
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('EXECUTION_ERROR', `Failed to execute ${params.action}: ${errorMessage}`, params.action, { error: errorMessage }, ['Check the error details and try again']);
61
+ }
62
+ }
63
+ /**
64
+ * Start bisect session
65
+ */
66
+ async handleStart(params, startTime) {
67
+ try {
68
+ let command = 'git bisect start';
69
+ // Add good and bad commits if provided
70
+ if (params.goodCommit && params.badCommit) {
71
+ command += ` ${params.badCommit} ${params.goodCommit}`;
72
+ }
73
+ else if (params.badCommit) {
74
+ command += ` ${params.badCommit}`;
75
+ }
76
+ const result = await this.gitExecutor.executeGitCommand(command, [], params.projectPath);
77
+ if (result.success) {
78
+ const executionTime = Date.now() - startTime;
79
+ return {
80
+ success: true,
81
+ data: {
82
+ bisect: {
83
+ status: 'started',
84
+ goodCommit: params.goodCommit,
85
+ badCommit: params.badCommit,
86
+ session: true
87
+ },
88
+ message: 'Bisect session started successfully',
89
+ executionTime
90
+ }
91
+ };
92
+ }
93
+ else {
94
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('START_ERROR', `Failed to start bisect: ${result.stderr}`, params.action, { output: result.stdout, error: result.stderr }, ['Check commit hashes are valid', 'Ensure repository is clean', 'Check if bisect is already running']);
95
+ }
96
+ }
97
+ catch (error) {
98
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
99
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('START_ERROR', `Failed to start bisect: ${errorMessage}`, params.action, { error: errorMessage }, ['Check commit hashes are valid', 'Ensure repository is clean']);
100
+ }
101
+ }
102
+ /**
103
+ * Mark commit as good
104
+ */
105
+ async handleGood(params, startTime) {
106
+ try {
107
+ let command = 'git bisect good';
108
+ if (params.commit) {
109
+ command += ` ${params.commit}`;
110
+ }
111
+ const result = await this.gitExecutor.executeGitCommand(command, [], params.projectPath);
112
+ if (result.success) {
113
+ const executionTime = Date.now() - startTime;
114
+ return {
115
+ success: true,
116
+ data: {
117
+ bisect: {
118
+ status: 'good-marked',
119
+ commit: params.commit || 'HEAD',
120
+ session: true
121
+ },
122
+ message: `Commit marked as good: ${params.commit || 'HEAD'}`,
123
+ executionTime
124
+ }
125
+ };
126
+ }
127
+ else {
128
+ return this.handleBisectResult(result, params, startTime);
129
+ }
130
+ }
131
+ catch (error) {
132
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
133
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('GOOD_ERROR', `Failed to mark commit as good: ${errorMessage}`, params.action, { commit: params.commit, error: errorMessage }, ['Check if bisect session is active', 'Verify commit hash is valid']);
134
+ }
135
+ }
136
+ /**
137
+ * Mark commit as bad
138
+ */
139
+ async handleBad(params, startTime) {
140
+ try {
141
+ let command = 'git bisect bad';
142
+ if (params.commit) {
143
+ command += ` ${params.commit}`;
144
+ }
145
+ const result = await this.gitExecutor.executeGitCommand(command, [], params.projectPath);
146
+ if (result.success) {
147
+ const executionTime = Date.now() - startTime;
148
+ return {
149
+ success: true,
150
+ data: {
151
+ bisect: {
152
+ status: 'bad-marked',
153
+ commit: params.commit || 'HEAD',
154
+ session: true
155
+ },
156
+ message: `Commit marked as bad: ${params.commit || 'HEAD'}`,
157
+ executionTime
158
+ }
159
+ };
160
+ }
161
+ else {
162
+ return this.handleBisectResult(result, params, startTime);
163
+ }
164
+ }
165
+ catch (error) {
166
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
167
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('BAD_ERROR', `Failed to mark commit as bad: ${errorMessage}`, params.action, { commit: params.commit, error: errorMessage }, ['Check if bisect session is active', 'Verify commit hash is valid']);
168
+ }
169
+ }
170
+ /**
171
+ * Skip commit
172
+ */
173
+ async handleSkip(params, startTime) {
174
+ try {
175
+ let command = 'git bisect skip';
176
+ if (params.commit) {
177
+ command += ` ${params.commit}`;
178
+ }
179
+ const result = await this.gitExecutor.executeGitCommand(command, [], params.projectPath);
180
+ if (result.success) {
181
+ const executionTime = Date.now() - startTime;
182
+ return {
183
+ success: true,
184
+ data: {
185
+ bisect: {
186
+ status: 'skipped',
187
+ commit: params.commit || 'HEAD',
188
+ session: true
189
+ },
190
+ message: `Commit skipped: ${params.commit || 'HEAD'}`,
191
+ executionTime
192
+ }
193
+ };
194
+ }
195
+ else {
196
+ return this.handleBisectResult(result, params, startTime);
197
+ }
198
+ }
199
+ catch (error) {
200
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
201
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('SKIP_ERROR', `Failed to skip commit: ${errorMessage}`, params.action, { commit: params.commit, error: errorMessage }, ['Check if bisect session is active', 'Verify commit hash is valid']);
202
+ }
203
+ }
204
+ /**
205
+ * Reset bisect session
206
+ */
207
+ async handleReset(params, startTime) {
208
+ try {
209
+ const result = await this.gitExecutor.executeGitCommand('git', ['bisect', 'reset'], params.projectPath);
210
+ if (result.success) {
211
+ const executionTime = Date.now() - startTime;
212
+ return {
213
+ success: true,
214
+ data: {
215
+ bisect: {
216
+ status: 'reset',
217
+ session: false
218
+ },
219
+ message: 'Bisect session reset successfully',
220
+ executionTime
221
+ }
222
+ };
223
+ }
224
+ else {
225
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('RESET_ERROR', `Failed to reset bisect: ${result.stderr}`, params.action, { output: result.stdout, error: result.stderr }, ['Check if bisect session is active']);
226
+ }
227
+ }
228
+ catch (error) {
229
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
230
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('RESET_ERROR', `Failed to reset bisect: ${errorMessage}`, params.action, { error: errorMessage }, ['Check if bisect session is active']);
231
+ }
232
+ }
233
+ /**
234
+ * Run automated bisect
235
+ */
236
+ async handleRun(params, startTime) {
237
+ try {
238
+ if (!params.testScript && !params.testCommand) {
239
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('MISSING_TEST', 'Either testScript or testCommand is required for automated bisect', params.action, { testScript: params.testScript, testCommand: params.testCommand }, ['Provide a test script or command to run']);
240
+ }
241
+ const testCommand = params.testCommand || params.testScript;
242
+ const result = await this.gitExecutor.executeGitCommand('git', ['bisect', 'run', testCommand], params.projectPath);
243
+ if (result.success) {
244
+ const executionTime = Date.now() - startTime;
245
+ return {
246
+ success: true,
247
+ data: {
248
+ bisect: {
249
+ status: 'completed',
250
+ testCommand,
251
+ session: false,
252
+ result: this.parseBisectResult(result.stdout)
253
+ },
254
+ message: 'Automated bisect completed successfully',
255
+ executionTime
256
+ }
257
+ };
258
+ }
259
+ else {
260
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('RUN_ERROR', `Automated bisect failed: ${result.stderr}`, params.action, { output: result.stdout, error: result.stderr, testCommand }, ['Check test command is valid', 'Ensure test command returns proper exit codes', 'Check if bisect session is active']);
261
+ }
262
+ }
263
+ catch (error) {
264
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
265
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('RUN_ERROR', `Failed to run automated bisect: ${errorMessage}`, params.action, { testCommand: params.testCommand || params.testScript, error: errorMessage }, ['Check test command is valid', 'Ensure test command returns proper exit codes']);
266
+ }
267
+ }
268
+ /**
269
+ * Get bisect log
270
+ */
271
+ async handleLog(params, startTime) {
272
+ try {
273
+ const result = await this.gitExecutor.executeGitCommand('git', ['bisect', 'log'], params.projectPath);
274
+ if (result.success) {
275
+ const executionTime = Date.now() - startTime;
276
+ return {
277
+ success: true,
278
+ data: {
279
+ bisect: {
280
+ log: result.stdout,
281
+ entries: this.parseBisectLog(result.stdout),
282
+ session: this.isBisectActive(result.stdout)
283
+ },
284
+ message: 'Bisect log retrieved successfully',
285
+ executionTime
286
+ }
287
+ };
288
+ }
289
+ else {
290
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('LOG_ERROR', `Failed to get bisect log: ${result.stderr}`, params.action, { output: result.stdout, error: result.stderr }, ['Check if repository is valid']);
291
+ }
292
+ }
293
+ catch (error) {
294
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
295
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('LOG_ERROR', `Failed to get bisect log: ${errorMessage}`, params.action, { error: errorMessage }, ['Check repository state']);
296
+ }
297
+ }
298
+ /**
299
+ * Visualize bisect progress
300
+ */
301
+ async handleVisualize(params, startTime) {
302
+ try {
303
+ let command = 'git log --oneline --graph --decorate';
304
+ if (params.format === 'graph') {
305
+ command = 'git log --graph --oneline --decorate --all';
306
+ }
307
+ else if (params.format === 'json') {
308
+ command = 'git log --pretty=format:"%H|%an|%ae|%ad|%s" --date=iso';
309
+ }
310
+ if (params.showAll) {
311
+ command += ' --all';
312
+ }
313
+ const result = await this.gitExecutor.executeGitCommand(command, [], params.projectPath);
314
+ if (result.success) {
315
+ const executionTime = Date.now() - startTime;
316
+ return {
317
+ success: true,
318
+ data: {
319
+ bisect: {
320
+ visualization: result.stdout,
321
+ format: params.format || 'text',
322
+ showAll: params.showAll || false,
323
+ session: await this.isBisectSessionActive(params.projectPath)
324
+ },
325
+ message: 'Bisect visualization generated successfully',
326
+ executionTime
327
+ }
328
+ };
329
+ }
330
+ else {
331
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('VISUALIZE_ERROR', `Failed to generate visualization: ${result.stderr}`, params.action, { output: result.stdout, error: result.stderr }, ['Check repository state', 'Verify Git is available']);
332
+ }
333
+ }
334
+ catch (error) {
335
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
336
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('VISUALIZE_ERROR', `Failed to generate visualization: ${errorMessage}`, params.action, { error: errorMessage }, ['Check repository state']);
337
+ }
338
+ }
339
+ /**
340
+ * Handle bisect result (found or continue)
341
+ */
342
+ handleBisectResult(result, params, startTime) {
343
+ const executionTime = Date.now() - startTime;
344
+ // Check if bisect found the first bad commit
345
+ if (result.stdout.includes('found first bad commit') || result.stdout.includes('is the first bad commit')) {
346
+ const firstBadCommit = this.extractFirstBadCommit(result.stdout);
347
+ return {
348
+ success: true,
349
+ data: {
350
+ bisect: {
351
+ status: 'found',
352
+ firstBadCommit,
353
+ session: false
354
+ },
355
+ message: `First bad commit found: ${firstBadCommit}`,
356
+ executionTime
357
+ }
358
+ };
359
+ }
360
+ // Check if bisect needs more information
361
+ if (result.stdout.includes('Bisecting:') || result.stdout.includes('testing commit')) {
362
+ return {
363
+ success: true,
364
+ data: {
365
+ bisect: {
366
+ status: 'testing',
367
+ session: true,
368
+ currentCommit: this.extractCurrentCommit(result.stdout),
369
+ remainingCommits: this.extractRemainingCommits(result.stdout)
370
+ },
371
+ message: 'Bisect in progress - test the current commit',
372
+ executionTime
373
+ }
374
+ };
375
+ }
376
+ // Handle other bisect states
377
+ return {
378
+ success: true,
379
+ data: {
380
+ bisect: {
381
+ status: 'updated',
382
+ session: true
383
+ },
384
+ message: 'Bisect state updated',
385
+ executionTime
386
+ }
387
+ };
388
+ }
389
+ /**
390
+ * Check if bisect session is active
391
+ */
392
+ async isBisectSessionActive(projectPath) {
393
+ try {
394
+ const result = await this.gitExecutor.executeGitCommand('git', ['bisect', 'log'], projectPath);
395
+ return result.success && this.isBisectActive(result.stdout);
396
+ }
397
+ catch {
398
+ return false;
399
+ }
400
+ }
401
+ /**
402
+ * Check if bisect is active from log output
403
+ */
404
+ isBisectActive(logOutput) {
405
+ return !logOutput.includes('git bisect reset');
406
+ }
407
+ /**
408
+ * Extract first bad commit from bisect output
409
+ */
410
+ extractFirstBadCommit(output) {
411
+ const match = output.match(/found first bad commit \[([a-f0-9]+)\]/);
412
+ return match ? match[1] : '';
413
+ }
414
+ /**
415
+ * Extract current commit from bisect output
416
+ */
417
+ extractCurrentCommit(output) {
418
+ const match = output.match(/testing commit ([a-f0-9]+)/);
419
+ return match ? match[1] : '';
420
+ }
421
+ /**
422
+ * Extract remaining commits from bisect output
423
+ */
424
+ extractRemainingCommits(output) {
425
+ const match = output.match(/Bisecting: (\d+) revisions left/);
426
+ return match ? parseInt(match[1]) : 0;
427
+ }
428
+ /**
429
+ * Parse bisect result from output
430
+ */
431
+ parseBisectResult(output) {
432
+ const lines = output.split('\n');
433
+ const result = {
434
+ firstBadCommit: null,
435
+ testedCommits: [],
436
+ totalCommits: 0
437
+ };
438
+ for (const line of lines) {
439
+ if (line.includes('found first bad commit')) {
440
+ const match = line.match(/found first bad commit \[([a-f0-9]+)\]/);
441
+ if (match) {
442
+ result.firstBadCommit = match[1];
443
+ }
444
+ }
445
+ else if (line.includes('Bisecting:')) {
446
+ const match = line.match(/Bisecting: (\d+) revisions left/);
447
+ if (match) {
448
+ result.totalCommits = parseInt(match[1]);
449
+ }
450
+ }
451
+ }
452
+ return result;
453
+ }
454
+ /**
455
+ * Parse bisect log entries
456
+ */
457
+ parseBisectLog(logOutput) {
458
+ const entries = [];
459
+ const lines = logOutput.split('\n');
460
+ for (const line of lines) {
461
+ if (line.startsWith('git bisect start')) {
462
+ entries.push({
463
+ type: 'start',
464
+ command: line,
465
+ timestamp: new Date().toISOString()
466
+ });
467
+ }
468
+ else if (line.startsWith('git bisect good')) {
469
+ entries.push({
470
+ type: 'good',
471
+ commit: line.replace('git bisect good', '').trim(),
472
+ command: line,
473
+ timestamp: new Date().toISOString()
474
+ });
475
+ }
476
+ else if (line.startsWith('git bisect bad')) {
477
+ entries.push({
478
+ type: 'bad',
479
+ commit: line.replace('git bisect bad', '').trim(),
480
+ command: line,
481
+ timestamp: new Date().toISOString()
482
+ });
483
+ }
484
+ else if (line.startsWith('git bisect skip')) {
485
+ entries.push({
486
+ type: 'skip',
487
+ commit: line.replace('git bisect skip', '').trim(),
488
+ command: line,
489
+ timestamp: new Date().toISOString()
490
+ });
491
+ }
492
+ }
493
+ return entries;
494
+ }
495
+ /**
496
+ * Get tool schema for MCP registration
497
+ */
498
+ static getToolSchema() {
499
+ return {
500
+ name: 'git-bisect',
501
+ description: 'Git bisect tool for automated bug finding. Supports manual and automated bisect operations to find the commit that introduced a bug.',
502
+ inputSchema: {
503
+ type: 'object',
504
+ properties: {
505
+ "action": {
506
+ "type": "string",
507
+ "enum": [
508
+ "start",
509
+ "good",
510
+ "bad",
511
+ "skip",
512
+ "reset",
513
+ "run",
514
+ "log",
515
+ "visualize"
516
+ ],
517
+ "description": "The operation to perform"
518
+ },
519
+ "projectPath": {
520
+ "type": "string",
521
+ "description": "Path to the Git repository"
522
+ },
523
+ "goodCommit": {
524
+ "type": "string",
525
+ "description": "goodCommit parameter"
526
+ },
527
+ "badCommit": {
528
+ "type": "string",
529
+ "description": "badCommit parameter"
530
+ },
531
+ "testScript": {
532
+ "type": "string",
533
+ "description": "testScript parameter"
534
+ },
535
+ "testCommand": {
536
+ "type": "string",
537
+ "description": "testCommand parameter"
538
+ },
539
+ "commit": {
540
+ "type": "string",
541
+ "description": "commit parameter"
542
+ },
543
+ "format": {
544
+ "type": "string",
545
+ "description": "format parameter"
546
+ },
547
+ "showAll": {
548
+ "type": "string",
549
+ "description": "showAll parameter"
550
+ },
551
+ "noCheckout": {
552
+ "type": "string",
553
+ "description": "noCheckout parameter"
554
+ },
555
+ "firstParent": {
556
+ "type": "string",
557
+ "description": "firstParent parameter"
558
+ }
559
+ },
560
+ required: ['action', 'projectPath'],
561
+ additionalProperties: false
562
+ },
563
+ errorCodes: {
564
+ 'VALIDATION_ERROR': 'Parameter validation failed',
565
+ 'EXECUTION_ERROR': 'Tool execution failed'
566
+ }
567
+ };
568
+ }
569
+ }
570
+ exports.GitBisectTool = GitBisectTool;
571
+ //# sourceMappingURL=git-bisect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-bisect.js","sourceRoot":"","sources":["../../src/tools/git-bisect.ts"],"names":[],"mappings":"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"}
@@ -139,7 +139,55 @@ export declare class GitBranchesTool {
139
139
  };
140
140
  };
141
141
  required: string[];
142
+ additionalProperties: boolean;
142
143
  };
144
+ errorCodes: {
145
+ VALIDATION_ERROR: string;
146
+ BRANCH_EXISTS: string;
147
+ BRANCH_NOT_FOUND: string;
148
+ MERGE_CONFLICT: string;
149
+ DIRTY_WORKING_TREE: string;
150
+ NOT_A_GIT_REPOSITORY: string;
151
+ PERMISSION_DENIED: string;
152
+ };
153
+ warnings: {
154
+ delete: string;
155
+ force: string;
156
+ };
157
+ examples: ({
158
+ description: string;
159
+ input: {
160
+ action: string;
161
+ projectPath: string;
162
+ branchName?: undefined;
163
+ sourceBranch?: undefined;
164
+ checkout?: undefined;
165
+ baseBranch?: undefined;
166
+ compareBranch?: undefined;
167
+ };
168
+ } | {
169
+ description: string;
170
+ input: {
171
+ action: string;
172
+ projectPath: string;
173
+ branchName: string;
174
+ sourceBranch: string;
175
+ checkout: boolean;
176
+ baseBranch?: undefined;
177
+ compareBranch?: undefined;
178
+ };
179
+ } | {
180
+ description: string;
181
+ input: {
182
+ action: string;
183
+ projectPath: string;
184
+ baseBranch: string;
185
+ compareBranch: string;
186
+ branchName?: undefined;
187
+ sourceBranch?: undefined;
188
+ checkout?: undefined;
189
+ };
190
+ })[];
143
191
  };
144
192
  }
145
193
  //# sourceMappingURL=git-branches.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-branches.d.ts","sourceRoot":"","sources":["../../src/tools/git-branches.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAsB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAyB,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IAGnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEvC,cAAc,CAAC,EAAE,cAAc;IAO3C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAiD7D;;OAEG;YACW,qBAAqB;IAyBnC;;OAEG;YACW,sBAAsB;IA4DpC;;OAEG;YACW,kBAAkB;IAuEhC;;OAEG;YACW,kBAAkB;IAyChC;;OAEG;YACW,eAAe;IAmD7B;;OAEG;YACW,kBAAkB;IA2DhC;;OAEG;YACW,iBAAiB;IAsE/B;;OAEG;YACW,qBAAqB;IAuDnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;IACH,MAAM,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkErB"}
1
+ {"version":3,"file":"git-branches.d.ts","sourceRoot":"","sources":["../../src/tools/git-branches.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAsB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAyB,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IAGnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEvC,cAAc,CAAC,EAAE,cAAc;IAO3C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAiD7D;;OAEG;YACW,qBAAqB;IAyBnC;;OAEG;YACW,sBAAsB;IA4DpC;;OAEG;YACW,kBAAkB;IAuEhC;;OAEG;YACW,kBAAkB;IAyChC;;OAEG;YACW,eAAe;IAmD7B;;OAEG;YACW,kBAAkB;IA2DhC;;OAEG;YACW,iBAAiB;IAsE/B;;OAEG;YACW,qBAAqB;IAuDnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;IACH,MAAM,CAAC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4GrB"}