@andrebuzeli/git-mcp 5.0.4 → 5.0.6

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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -89
  3. package/dist/config.d.ts +72 -71
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +226 -139
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.d.ts +15 -17
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +133 -128
  10. package/dist/index.js.map +1 -1
  11. package/dist/providers/base-provider.d.ts +42 -153
  12. package/dist/providers/base-provider.d.ts.map +1 -1
  13. package/dist/providers/base-provider.js +42 -302
  14. package/dist/providers/base-provider.js.map +1 -1
  15. package/dist/providers/gitea-provider.d.ts +67 -118
  16. package/dist/providers/gitea-provider.d.ts.map +1 -1
  17. package/dist/providers/gitea-provider.js +487 -1161
  18. package/dist/providers/gitea-provider.js.map +1 -1
  19. package/dist/providers/github-provider.d.ts +70 -81
  20. package/dist/providers/github-provider.d.ts.map +1 -1
  21. package/dist/providers/github-provider.js +641 -278
  22. package/dist/providers/github-provider.js.map +1 -1
  23. package/dist/providers/index.d.ts +9 -9
  24. package/dist/providers/index.d.ts.map +1 -1
  25. package/dist/providers/index.js +13 -19
  26. package/dist/providers/index.js.map +1 -1
  27. package/dist/providers/provider-factory.d.ts +29 -59
  28. package/dist/providers/provider-factory.d.ts.map +1 -1
  29. package/dist/providers/provider-factory.js +134 -265
  30. package/dist/providers/provider-factory.js.map +1 -1
  31. package/dist/providers/provider-operation-handler.d.ts +93 -0
  32. package/dist/providers/provider-operation-handler.d.ts.map +1 -0
  33. package/dist/providers/provider-operation-handler.js +280 -0
  34. package/dist/providers/provider-operation-handler.js.map +1 -0
  35. package/dist/providers/types.d.ts +201 -355
  36. package/dist/providers/types.d.ts.map +1 -1
  37. package/dist/providers/types.js +3 -2
  38. package/dist/providers/types.js.map +1 -1
  39. package/dist/server.d.ts +34 -4
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +439 -262
  42. package/dist/server.js.map +1 -1
  43. package/dist/tools/git-analytics.d.ts +239 -16
  44. package/dist/tools/git-analytics.d.ts.map +1 -1
  45. package/dist/tools/git-analytics.js +737 -25
  46. package/dist/tools/git-analytics.js.map +1 -1
  47. package/dist/tools/git-archive.d.ts +109 -15
  48. package/dist/tools/git-archive.d.ts.map +1 -1
  49. package/dist/tools/git-archive.js +462 -10
  50. package/dist/tools/git-archive.js.map +1 -1
  51. package/dist/tools/git-backup.d.ts +101 -15
  52. package/dist/tools/git-backup.d.ts.map +1 -1
  53. package/dist/tools/git-backup.js +410 -10
  54. package/dist/tools/git-backup.js.map +1 -1
  55. package/dist/tools/git-branches.d.ts +141 -15
  56. package/dist/tools/git-branches.d.ts.map +1 -1
  57. package/dist/tools/git-branches.js +466 -11
  58. package/dist/tools/git-branches.js.map +1 -1
  59. package/dist/tools/git-config.d.ts +115 -15
  60. package/dist/tools/git-config.d.ts.map +1 -1
  61. package/dist/tools/git-config.js +446 -11
  62. package/dist/tools/git-config.js.map +1 -1
  63. package/dist/tools/git-files.d.ts +179 -59
  64. package/dist/tools/git-files.d.ts.map +1 -1
  65. package/dist/tools/git-files.js +682 -222
  66. package/dist/tools/git-files.js.map +1 -1
  67. package/dist/tools/git-issues.d.ts +158 -15
  68. package/dist/tools/git-issues.d.ts.map +1 -1
  69. package/dist/tools/git-issues.js +323 -11
  70. package/dist/tools/git-issues.js.map +1 -1
  71. package/dist/tools/git-monitor.d.ts +149 -14
  72. package/dist/tools/git-monitor.d.ts.map +1 -1
  73. package/dist/tools/git-monitor.js +528 -11
  74. package/dist/tools/git-monitor.js.map +1 -1
  75. package/dist/tools/git-packages.d.ts +163 -15
  76. package/dist/tools/git-packages.d.ts.map +1 -1
  77. package/dist/tools/git-packages.js +526 -11
  78. package/dist/tools/git-packages.js.map +1 -1
  79. package/dist/tools/git-pulls.d.ts +174 -15
  80. package/dist/tools/git-pulls.d.ts.map +1 -1
  81. package/dist/tools/git-pulls.js +352 -11
  82. package/dist/tools/git-pulls.js.map +1 -1
  83. package/dist/tools/git-release.d.ts +167 -15
  84. package/dist/tools/git-release.d.ts.map +1 -1
  85. package/dist/tools/git-release.js +465 -11
  86. package/dist/tools/git-release.js.map +1 -1
  87. package/dist/tools/git-remote.d.ts +124 -15
  88. package/dist/tools/git-remote.d.ts.map +1 -1
  89. package/dist/tools/git-remote.js +539 -11
  90. package/dist/tools/git-remote.js.map +1 -1
  91. package/dist/tools/git-reset.d.ts +100 -15
  92. package/dist/tools/git-reset.d.ts.map +1 -1
  93. package/dist/tools/git-reset.js +409 -11
  94. package/dist/tools/git-reset.js.map +1 -1
  95. package/dist/tools/git-stash.d.ts +120 -15
  96. package/dist/tools/git-stash.d.ts.map +1 -1
  97. package/dist/tools/git-stash.js +503 -11
  98. package/dist/tools/git-stash.js.map +1 -1
  99. package/dist/tools/git-sync.d.ts +160 -16
  100. package/dist/tools/git-sync.d.ts.map +1 -1
  101. package/dist/tools/git-sync.js +462 -113
  102. package/dist/tools/git-sync.js.map +1 -1
  103. package/dist/tools/git-tags.d.ts +142 -15
  104. package/dist/tools/git-tags.d.ts.map +1 -1
  105. package/dist/tools/git-tags.js +471 -11
  106. package/dist/tools/git-tags.js.map +1 -1
  107. package/dist/tools/git-workflow.d.ts +151 -80
  108. package/dist/tools/git-workflow.d.ts.map +1 -1
  109. package/dist/tools/git-workflow.js +407 -912
  110. package/dist/tools/git-workflow.js.map +1 -1
  111. package/dist/utils/credential-manager.d.ts +119 -0
  112. package/dist/utils/credential-manager.d.ts.map +1 -0
  113. package/dist/utils/credential-manager.js +450 -0
  114. package/dist/utils/credential-manager.js.map +1 -0
  115. package/dist/utils/git-command-executor.d.ts +326 -0
  116. package/dist/utils/git-command-executor.d.ts.map +1 -0
  117. package/dist/utils/git-command-executor.js +877 -0
  118. package/dist/utils/git-command-executor.js.map +1 -0
  119. package/dist/utils/logger.d.ts +143 -0
  120. package/dist/utils/logger.d.ts.map +1 -0
  121. package/dist/utils/logger.js +473 -0
  122. package/dist/utils/logger.js.map +1 -0
  123. package/dist/utils/operation-error-handler.d.ts +54 -41
  124. package/dist/utils/operation-error-handler.d.ts.map +1 -1
  125. package/dist/utils/operation-error-handler.js +211 -227
  126. package/dist/utils/operation-error-handler.js.map +1 -1
  127. package/dist/utils/parameter-validator.d.ts +41 -0
  128. package/dist/utils/parameter-validator.d.ts.map +1 -0
  129. package/dist/utils/parameter-validator.js +464 -0
  130. package/dist/utils/parameter-validator.js.map +1 -0
  131. package/dist/utils/repository-detector.d.ts +128 -0
  132. package/dist/utils/repository-detector.d.ts.map +1 -0
  133. package/dist/utils/repository-detector.js +422 -0
  134. package/dist/utils/repository-detector.js.map +1 -0
  135. package/dist/utils/response-formatter.d.ts +146 -0
  136. package/dist/utils/response-formatter.d.ts.map +1 -0
  137. package/dist/utils/response-formatter.js +378 -0
  138. package/dist/utils/response-formatter.js.map +1 -0
  139. package/dist/utils/retry.d.ts +12 -0
  140. package/dist/utils/retry.d.ts.map +1 -0
  141. package/dist/utils/retry.js +28 -0
  142. package/dist/utils/retry.js.map +1 -0
  143. package/dist/utils/terminal-controller.d.ts +73 -139
  144. package/dist/utils/terminal-controller.d.ts.map +1 -1
  145. package/dist/utils/terminal-controller.js +234 -459
  146. package/dist/utils/terminal-controller.js.map +1 -1
  147. package/package.json +79 -60
  148. package/dist/providers/error-handler.d.ts +0 -51
  149. package/dist/providers/error-handler.d.ts.map +0 -1
  150. package/dist/providers/error-handler.js +0 -176
  151. package/dist/providers/error-handler.js.map +0 -1
  152. package/dist/providers/github-provider-backup.d.ts +0 -81
  153. package/dist/providers/github-provider-backup.d.ts.map +0 -1
  154. package/dist/providers/github-provider-backup.js +0 -1179
  155. package/dist/providers/github-provider-backup.js.map +0 -1
  156. package/dist/providers/github-provider-complete.d.ts +0 -1
  157. package/dist/providers/github-provider-complete.d.ts.map +0 -1
  158. package/dist/providers/github-provider-complete.js +0 -2
  159. package/dist/providers/github-provider-complete.js.map +0 -1
  160. package/dist/tools/git-init.d.ts +0 -50
  161. package/dist/tools/git-init.d.ts.map +0 -1
  162. package/dist/tools/git-init.js +0 -258
  163. package/dist/tools/git-init.js.map +0 -1
  164. package/dist/tools/git-log.d.ts +0 -67
  165. package/dist/tools/git-log.d.ts.map +0 -1
  166. package/dist/tools/git-log.js +0 -320
  167. package/dist/tools/git-log.js.map +0 -1
  168. package/dist/tools/git-status.d.ts +0 -29
  169. package/dist/tools/git-status.d.ts.map +0 -1
  170. package/dist/tools/git-status.js +0 -182
  171. package/dist/tools/git-status.js.map +0 -1
  172. package/dist/tools/git-update.d.ts +0 -34
  173. package/dist/tools/git-update.d.ts.map +0 -1
  174. package/dist/tools/git-update.js +0 -191
  175. package/dist/tools/git-update.js.map +0 -1
  176. package/dist/utils/auto-detection.d.ts +0 -120
  177. package/dist/utils/auto-detection.d.ts.map +0 -1
  178. package/dist/utils/auto-detection.js +0 -259
  179. package/dist/utils/auto-detection.js.map +0 -1
  180. package/dist/utils/configuration-error-generator.d.ts +0 -41
  181. package/dist/utils/configuration-error-generator.d.ts.map +0 -1
  182. package/dist/utils/configuration-error-generator.js +0 -168
  183. package/dist/utils/configuration-error-generator.js.map +0 -1
  184. package/dist/utils/configuration-validator.d.ts +0 -67
  185. package/dist/utils/configuration-validator.d.ts.map +0 -1
  186. package/dist/utils/configuration-validator.js +0 -257
  187. package/dist/utils/configuration-validator.js.map +0 -1
  188. package/dist/utils/error-handler.d.ts +0 -107
  189. package/dist/utils/error-handler.d.ts.map +0 -1
  190. package/dist/utils/error-handler.js +0 -331
  191. package/dist/utils/error-handler.js.map +0 -1
  192. package/dist/utils/git-operations.d.ts +0 -200
  193. package/dist/utils/git-operations.d.ts.map +0 -1
  194. package/dist/utils/git-operations.js +0 -836
  195. package/dist/utils/git-operations.js.map +0 -1
  196. package/dist/utils/multi-provider-error-handler.d.ts +0 -75
  197. package/dist/utils/multi-provider-error-handler.d.ts.map +0 -1
  198. package/dist/utils/multi-provider-error-handler.js +0 -276
  199. package/dist/utils/multi-provider-error-handler.js.map +0 -1
  200. package/dist/utils/multi-provider-operation-handler.d.ts +0 -113
  201. package/dist/utils/multi-provider-operation-handler.d.ts.map +0 -1
  202. package/dist/utils/multi-provider-operation-handler.js +0 -303
  203. package/dist/utils/multi-provider-operation-handler.js.map +0 -1
  204. package/dist/utils/provider-operation-handler.d.ts +0 -80
  205. package/dist/utils/provider-operation-handler.d.ts.map +0 -1
  206. package/dist/utils/provider-operation-handler.js +0 -201
  207. package/dist/utils/provider-operation-handler.js.map +0 -1
  208. package/dist/utils/response-helper.d.ts +0 -57
  209. package/dist/utils/response-helper.d.ts.map +0 -1
  210. package/dist/utils/response-helper.js +0 -54
  211. package/dist/utils/response-helper.js.map +0 -1
  212. package/dist/utils/user-detection.d.ts +0 -25
  213. package/dist/utils/user-detection.d.ts.map +0 -1
  214. package/dist/utils/user-detection.js +0 -54
  215. package/dist/utils/user-detection.js.map +0 -1
@@ -1,14 +1,531 @@
1
1
  "use strict";
2
+ /**
3
+ * Git Monitor Tool
4
+ *
5
+ * Git monitoring and logging tool providing comprehensive repository monitoring.
6
+ * Supports log, status, commits, and contributors operations for repository analysis.
7
+ *
8
+ * Operations: log, status, commits, contributors
9
+ */
2
10
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gitMonitorTool = void 0;
4
- const auto_detection_js_1 = require("../utils/auto-detection.js");
5
- exports.gitMonitorTool = {
6
- name: 'git-monitor',
7
- description: '📊 MONITORAMENTO - Logs e monitoramento',
8
- inputSchema: { type: 'object', properties: { action: { type: 'string' }, projectPath: { type: 'string' } }, required: ['action', 'projectPath'] },
9
- async handler(input) {
10
- const detection = (0, auto_detection_js_1.autoDetect)(input.projectPath);
11
- return (0, auto_detection_js_1.createUniversalResponse)(true, input.action, 'Monitoramento ativo', detection, 'git-monitor', { monitoring: true });
12
- }
13
- };
11
+ exports.GitMonitorTool = 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 GitMonitorTool {
16
+ gitExecutor;
17
+ constructor() {
18
+ this.gitExecutor = new git_command_executor_js_1.GitCommandExecutor();
19
+ }
20
+ /**
21
+ * Execute git-monitor 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-monitor', 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 = this.validateOperationParams(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 'log':
39
+ return await this.handleLog(params, startTime);
40
+ case 'status':
41
+ return await this.handleStatus(params, startTime);
42
+ case 'commits':
43
+ return await this.handleCommits(params, startTime);
44
+ case 'contributors':
45
+ return await this.handleContributors(params, startTime);
46
+ default:
47
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('UNSUPPORTED_OPERATION', `Operation '${params.action}' is not supported`, params.action, {}, ['Use one of: log, status, commits, contributors']);
48
+ }
49
+ }
50
+ catch (error) {
51
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
52
+ 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']);
53
+ }
54
+ }
55
+ /**
56
+ * Validate operation-specific parameters
57
+ */
58
+ validateOperationParams(params) {
59
+ const errors = [];
60
+ const suggestions = [];
61
+ // Validate limit parameter
62
+ if (params.limit !== undefined && (params.limit < 1 || params.limit > 1000)) {
63
+ errors.push('Limit must be between 1 and 1000');
64
+ suggestions.push('Use a reasonable limit (e.g., 10, 50, 100)');
65
+ }
66
+ // Validate format parameter
67
+ if (params.format && !['short', 'full', 'oneline', 'raw'].includes(params.format)) {
68
+ errors.push('Invalid format specified');
69
+ suggestions.push('Use one of: short, full, oneline, raw');
70
+ }
71
+ // Validate sortBy parameter
72
+ if (params.sortBy && !['commits', 'lines', 'name'].includes(params.sortBy)) {
73
+ errors.push('Invalid sortBy specified');
74
+ suggestions.push('Use one of: commits, lines, name');
75
+ }
76
+ // Validate date formats
77
+ if (params.since && !this.isValidDateFormat(params.since)) {
78
+ errors.push('Invalid since date format');
79
+ suggestions.push('Use formats like: "2024-01-01", "1 week ago", "2024-01-01 10:00"');
80
+ }
81
+ if (params.until && !this.isValidDateFormat(params.until)) {
82
+ errors.push('Invalid until date format');
83
+ suggestions.push('Use formats like: "2024-01-01", "1 week ago", "2024-01-01 10:00"');
84
+ }
85
+ return {
86
+ isValid: errors.length === 0,
87
+ errors,
88
+ suggestions
89
+ };
90
+ }
91
+ /**
92
+ * Validate date format
93
+ */
94
+ isValidDateFormat(dateStr) {
95
+ // Accept various Git date formats
96
+ const patterns = [
97
+ /^\d{4}-\d{2}-\d{2}$/, // 2024-01-01
98
+ /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/, // 2024-01-01 10:00
99
+ /^\d+ (second|minute|hour|day|week|month|year)s? ago$/, // 1 week ago
100
+ /^yesterday$/,
101
+ /^today$/
102
+ ];
103
+ return patterns.some(pattern => pattern.test(dateStr));
104
+ }
105
+ /**
106
+ * Handle log operation
107
+ */
108
+ async handleLog(params, startTime) {
109
+ try {
110
+ const args = ['log'];
111
+ // Add limit
112
+ const limit = params.limit || 10;
113
+ args.push('-n', limit.toString());
114
+ // Add format
115
+ args.push('--format=%H|%h|%s|%an|%ae|%ad');
116
+ args.push('--date=iso');
117
+ // Add branch if specified
118
+ if (params.branch) {
119
+ args.push(params.branch);
120
+ }
121
+ // Add date filters
122
+ if (params.since) {
123
+ args.push(`--since=${params.since}`);
124
+ }
125
+ if (params.until) {
126
+ args.push(`--until=${params.until}`);
127
+ }
128
+ // Add author filter
129
+ if (params.author) {
130
+ args.push(`--author=${params.author}`);
131
+ }
132
+ // Add grep filter
133
+ if (params.grep) {
134
+ args.push(`--grep=${params.grep}`);
135
+ }
136
+ const result = await this.gitExecutor.executeGitCommand('log', args.slice(1), params.projectPath);
137
+ if (!result.success) {
138
+ return operation_error_handler_js_1.OperationErrorHandler.handleGitError(result.stderr, 'get log', params.projectPath);
139
+ }
140
+ const commits = this.parseLogOutput(result.stdout);
141
+ return {
142
+ success: true,
143
+ data: {
144
+ message: `Retrieved ${commits.length} commits from log`,
145
+ totalCommits: commits.length,
146
+ commits: commits,
147
+ filters: {
148
+ branch: params.branch,
149
+ since: params.since,
150
+ until: params.until,
151
+ author: params.author,
152
+ grep: params.grep,
153
+ limit: limit
154
+ },
155
+ raw: result.stdout
156
+ },
157
+ metadata: {
158
+ operation: 'log',
159
+ timestamp: new Date().toISOString(),
160
+ executionTime: Date.now() - startTime
161
+ }
162
+ };
163
+ }
164
+ catch (error) {
165
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
166
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('LOG_ERROR', `Failed to get repository log: ${errorMessage}`, 'log', { error: errorMessage });
167
+ }
168
+ }
169
+ /**
170
+ * Handle status operation
171
+ */
172
+ async handleStatus(params, startTime) {
173
+ try {
174
+ // Get basic status
175
+ const statusResult = await this.gitExecutor.getStatus(params.projectPath);
176
+ if (!statusResult.success) {
177
+ return operation_error_handler_js_1.OperationErrorHandler.handleGitError(statusResult.stderr, 'get status', params.projectPath);
178
+ }
179
+ let additionalInfo = {};
180
+ if (params.detailed) {
181
+ // Get additional detailed information
182
+ const branchResult = await this.gitExecutor.getCurrentBranch(params.projectPath);
183
+ const remoteResult = await this.gitExecutor.getRemoteUrl(params.projectPath);
184
+ // Get last commit info
185
+ const lastCommitResult = await this.gitExecutor.executeGitCommand('log', ['-1', '--format=%H|%h|%s|%an|%ad', '--date=iso'], params.projectPath);
186
+ // Get stash count
187
+ const stashResult = await this.gitExecutor.executeGitCommand('stash', ['list'], params.projectPath);
188
+ const stashCount = stashResult.success
189
+ ? stashResult.stdout.split('\n').filter(line => line.trim()).length
190
+ : 0;
191
+ additionalInfo = {
192
+ currentBranch: branchResult.branch,
193
+ remoteUrl: remoteResult.url,
194
+ lastCommit: lastCommitResult.success ? this.parseLogOutput(lastCommitResult.stdout)[0] : null,
195
+ stashCount: stashCount,
196
+ isGitRepository: statusResult.isGitRepository
197
+ };
198
+ }
199
+ return {
200
+ success: true,
201
+ data: {
202
+ message: 'Repository status retrieved successfully',
203
+ status: statusResult.parsedStatus,
204
+ detailed: params.detailed,
205
+ ...additionalInfo,
206
+ raw: statusResult.stdout
207
+ },
208
+ metadata: {
209
+ operation: 'status',
210
+ timestamp: new Date().toISOString(),
211
+ executionTime: Date.now() - startTime
212
+ }
213
+ };
214
+ }
215
+ catch (error) {
216
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
217
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('STATUS_ERROR', `Failed to get repository status: ${errorMessage}`, 'status', { error: errorMessage });
218
+ }
219
+ }
220
+ /**
221
+ * Handle commits operation
222
+ */
223
+ async handleCommits(params, startTime) {
224
+ try {
225
+ const args = ['log'];
226
+ // Add limit
227
+ const limit = params.limit || 50;
228
+ args.push('-n', limit.toString());
229
+ // Add format based on requested format
230
+ let formatString = '%H|%h|%s|%an|%ae|%ad';
231
+ if (params.format === 'full') {
232
+ formatString = '%H|%h|%s|%an|%ae|%ad|%B';
233
+ }
234
+ else if (params.format === 'oneline') {
235
+ formatString = '%h %s';
236
+ }
237
+ else if (params.format === 'raw') {
238
+ formatString = 'raw';
239
+ }
240
+ if (params.format !== 'raw') {
241
+ args.push(`--format=${formatString}`);
242
+ args.push('--date=iso');
243
+ }
244
+ // Add graph if requested
245
+ if (params.graph) {
246
+ args.push('--graph');
247
+ }
248
+ // Add branch if specified
249
+ if (params.branch) {
250
+ args.push(params.branch);
251
+ }
252
+ // Add date filters
253
+ if (params.since) {
254
+ args.push(`--since=${params.since}`);
255
+ }
256
+ if (params.until) {
257
+ args.push(`--until=${params.until}`);
258
+ }
259
+ // Add author filter
260
+ if (params.author) {
261
+ args.push(`--author=${params.author}`);
262
+ }
263
+ const result = await this.gitExecutor.executeGitCommand('log', args.slice(1), params.projectPath);
264
+ if (!result.success) {
265
+ return operation_error_handler_js_1.OperationErrorHandler.handleGitError(result.stderr, 'get commits', params.projectPath);
266
+ }
267
+ let commits = [];
268
+ let formattedOutput = result.stdout;
269
+ if (params.format !== 'raw' && params.format !== 'oneline') {
270
+ commits = this.parseLogOutput(result.stdout);
271
+ // Get commit stats if requested
272
+ if (params.includeStats) {
273
+ commits = await this.enrichCommitsWithStats(commits, params.projectPath);
274
+ }
275
+ }
276
+ return {
277
+ success: true,
278
+ data: {
279
+ message: `Retrieved ${commits.length || 'commits'} from repository`,
280
+ totalCommits: commits.length,
281
+ commits: commits.length > 0 ? commits : undefined,
282
+ format: params.format || 'short',
283
+ graph: params.graph,
284
+ filters: {
285
+ branch: params.branch,
286
+ since: params.since,
287
+ until: params.until,
288
+ author: params.author,
289
+ limit: limit
290
+ },
291
+ raw: formattedOutput
292
+ },
293
+ metadata: {
294
+ operation: 'commits',
295
+ timestamp: new Date().toISOString(),
296
+ executionTime: Date.now() - startTime
297
+ }
298
+ };
299
+ }
300
+ catch (error) {
301
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
302
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('COMMITS_ERROR', `Failed to get repository commits: ${errorMessage}`, 'commits', { error: errorMessage });
303
+ }
304
+ }
305
+ /**
306
+ * Handle contributors operation
307
+ */
308
+ async handleContributors(params, startTime) {
309
+ try {
310
+ // Get contributors with commit counts
311
+ const shortlogResult = await this.gitExecutor.executeGitCommand('shortlog', ['-sn', '--all'], params.projectPath);
312
+ if (!shortlogResult.success) {
313
+ return operation_error_handler_js_1.OperationErrorHandler.handleGitError(shortlogResult.stderr, 'get contributors', params.projectPath);
314
+ }
315
+ const contributors = [];
316
+ const lines = shortlogResult.stdout.split('\n').filter(line => line.trim());
317
+ for (const line of lines) {
318
+ const match = line.match(/^\s*(\d+)\s+(.+)$/);
319
+ if (match) {
320
+ const commits = parseInt(match[1]);
321
+ const name = match[2];
322
+ // Get email for this contributor
323
+ const emailResult = await this.gitExecutor.executeGitCommand('log', ['--format=%ae', `--author=${name}`, '-1'], params.projectPath);
324
+ const email = emailResult.success ? emailResult.stdout.trim() : '';
325
+ let insertions = 0;
326
+ let deletions = 0;
327
+ let firstCommit = '';
328
+ let lastCommit = '';
329
+ if (params.includeStats) {
330
+ // Get detailed stats for this contributor
331
+ const statsResult = await this.gitExecutor.executeGitCommand('log', ['--author=' + name, '--numstat', '--format=%ad', '--date=iso'], params.projectPath);
332
+ if (statsResult.success) {
333
+ const statsLines = statsResult.stdout.split('\n');
334
+ for (const statsLine of statsLines) {
335
+ const statMatch = statsLine.match(/^(\d+)\s+(\d+)\s+/);
336
+ if (statMatch) {
337
+ insertions += parseInt(statMatch[1]) || 0;
338
+ deletions += parseInt(statMatch[2]) || 0;
339
+ }
340
+ }
341
+ }
342
+ // Get first and last commit dates
343
+ const firstCommitResult = await this.gitExecutor.executeGitCommand('log', ['--author=' + name, '--format=%ad', '--date=iso', '--reverse'], params.projectPath);
344
+ const lastCommitResult = await this.gitExecutor.executeGitCommand('log', ['--author=' + name, '--format=%ad', '--date=iso', '-1'], params.projectPath);
345
+ if (firstCommitResult.success) {
346
+ const firstLine = firstCommitResult.stdout.split('\n')[0];
347
+ firstCommit = firstLine ? firstLine.trim() : '';
348
+ }
349
+ if (lastCommitResult.success) {
350
+ lastCommit = lastCommitResult.stdout.trim();
351
+ }
352
+ }
353
+ contributors.push({
354
+ name,
355
+ email,
356
+ commits,
357
+ insertions,
358
+ deletions,
359
+ firstCommit,
360
+ lastCommit
361
+ });
362
+ }
363
+ }
364
+ // Sort contributors
365
+ const sortBy = params.sortBy || 'commits';
366
+ contributors.sort((a, b) => {
367
+ switch (sortBy) {
368
+ case 'commits':
369
+ return b.commits - a.commits;
370
+ case 'lines':
371
+ return (b.insertions + b.deletions) - (a.insertions + a.deletions);
372
+ case 'name':
373
+ return a.name.localeCompare(b.name);
374
+ default:
375
+ return b.commits - a.commits;
376
+ }
377
+ });
378
+ const totalCommits = contributors.reduce((sum, c) => sum + c.commits, 0);
379
+ const totalInsertions = contributors.reduce((sum, c) => sum + c.insertions, 0);
380
+ const totalDeletions = contributors.reduce((sum, c) => sum + c.deletions, 0);
381
+ return {
382
+ success: true,
383
+ data: {
384
+ message: `Found ${contributors.length} contributors`,
385
+ totalContributors: contributors.length,
386
+ contributors: contributors,
387
+ summary: {
388
+ totalCommits,
389
+ totalInsertions,
390
+ totalDeletions,
391
+ totalLines: totalInsertions + totalDeletions
392
+ },
393
+ sortBy: sortBy,
394
+ includeStats: params.includeStats,
395
+ raw: shortlogResult.stdout
396
+ },
397
+ metadata: {
398
+ operation: 'contributors',
399
+ timestamp: new Date().toISOString(),
400
+ executionTime: Date.now() - startTime
401
+ }
402
+ };
403
+ }
404
+ catch (error) {
405
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
406
+ return operation_error_handler_js_1.OperationErrorHandler.createToolError('CONTRIBUTORS_ERROR', `Failed to get repository contributors: ${errorMessage}`, 'contributors', { error: errorMessage });
407
+ }
408
+ }
409
+ /**
410
+ * Parse log output into structured commit information
411
+ */
412
+ parseLogOutput(logOutput) {
413
+ const commits = [];
414
+ const lines = logOutput.split('\n').filter(line => line.trim());
415
+ for (const line of lines) {
416
+ const parts = line.split('|');
417
+ if (parts.length >= 6) {
418
+ commits.push({
419
+ hash: parts[0],
420
+ shortHash: parts[1],
421
+ message: parts[2],
422
+ author: parts[3],
423
+ authorEmail: parts[4],
424
+ date: parts[5]
425
+ });
426
+ }
427
+ }
428
+ return commits;
429
+ }
430
+ /**
431
+ * Enrich commits with statistics (insertions/deletions)
432
+ */
433
+ async enrichCommitsWithStats(commits, projectPath) {
434
+ const enrichedCommits = [];
435
+ for (const commit of commits) {
436
+ const statsResult = await this.gitExecutor.executeGitCommand('show', ['--numstat', '--format=', commit.hash], projectPath);
437
+ let insertions = 0;
438
+ let deletions = 0;
439
+ if (statsResult.success) {
440
+ const lines = statsResult.stdout.split('\n').filter(line => line.trim());
441
+ for (const line of lines) {
442
+ const match = line.match(/^(\d+)\s+(\d+)\s+/);
443
+ if (match) {
444
+ insertions += parseInt(match[1]) || 0;
445
+ deletions += parseInt(match[2]) || 0;
446
+ }
447
+ }
448
+ }
449
+ enrichedCommits.push({
450
+ ...commit,
451
+ insertions,
452
+ deletions
453
+ });
454
+ }
455
+ return enrichedCommits;
456
+ }
457
+ /**
458
+ * Get tool schema for MCP registration
459
+ */
460
+ static getToolSchema() {
461
+ return {
462
+ name: 'git-monitor',
463
+ description: 'Git monitoring and logging tool for log, status, commits, and contributors operations. Provides comprehensive repository analysis and monitoring capabilities.',
464
+ inputSchema: {
465
+ type: 'object',
466
+ properties: {
467
+ action: {
468
+ type: 'string',
469
+ enum: ['log', 'status', 'commits', 'contributors'],
470
+ description: 'The Git monitoring operation to perform'
471
+ },
472
+ projectPath: {
473
+ type: 'string',
474
+ description: 'Absolute path to the project directory'
475
+ },
476
+ limit: {
477
+ type: 'number',
478
+ description: 'Number of commits to show (1-1000, default: 10 for log, 50 for commits)',
479
+ minimum: 1,
480
+ maximum: 1000
481
+ },
482
+ branch: {
483
+ type: 'string',
484
+ description: 'Branch to analyze (default: current branch)'
485
+ },
486
+ since: {
487
+ type: 'string',
488
+ description: 'Date since when to show logs (e.g., "2024-01-01", "1 week ago")'
489
+ },
490
+ until: {
491
+ type: 'string',
492
+ description: 'Date until when to show logs (e.g., "2024-01-01", "1 week ago")'
493
+ },
494
+ author: {
495
+ type: 'string',
496
+ description: 'Filter by author name or email'
497
+ },
498
+ grep: {
499
+ type: 'string',
500
+ description: 'Filter by commit message pattern'
501
+ },
502
+ detailed: {
503
+ type: 'boolean',
504
+ description: 'Show detailed status information (for status operation)'
505
+ },
506
+ format: {
507
+ type: 'string',
508
+ enum: ['short', 'full', 'oneline', 'raw'],
509
+ description: 'Commit format (for commits operation)'
510
+ },
511
+ graph: {
512
+ type: 'boolean',
513
+ description: 'Show commit graph (for commits operation)'
514
+ },
515
+ sortBy: {
516
+ type: 'string',
517
+ enum: ['commits', 'lines', 'name'],
518
+ description: 'Sort contributors by (for contributors operation)'
519
+ },
520
+ includeStats: {
521
+ type: 'boolean',
522
+ description: 'Include detailed statistics (insertions/deletions)'
523
+ }
524
+ },
525
+ required: ['action', 'projectPath']
526
+ }
527
+ };
528
+ }
529
+ }
530
+ exports.GitMonitorTool = GitMonitorTool;
14
531
  //# sourceMappingURL=git-monitor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-monitor.js","sourceRoot":"","sources":["../../src/tools/git-monitor.ts"],"names":[],"mappings":";;;AAAA,kEAAoG;AAEvF,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,yCAAyC;IACtD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;IACjJ,KAAK,CAAC,OAAO,CAAC,KAAU;QACtB,MAAM,SAAS,GAAG,IAAA,8BAAU,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,OAAO,IAAA,2CAAuB,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5H,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"git-monitor.js","sourceRoot":"","sources":["../../src/tools/git-monitor.ts"],"names":[],"mappings":"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"}