@andrebuzeli/git-mcp 5.0.5 → 5.0.7

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 +484 -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 +638 -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 +331 -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 -8
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +436 -494
  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 +699 -221
  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 +330 -0
  116. package/dist/utils/git-command-executor.d.ts.map +1 -0
  117. package/dist/utils/git-command-executor.js +889 -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 +465 -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 +272 -457
  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,276 +1,260 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperationErrorHandler = void 0;
4
- const configuration_error_generator_js_1 = require("./configuration-error-generator.js");
5
2
  /**
6
- * Operation error handler for Git MCP providers
7
- * Provides comprehensive error handling with configuration guidance
3
+ * Operation Error Handler
4
+ *
5
+ * Provides detailed error messages with configuration guidance.
6
+ * Handles different types of errors and provides actionable solutions.
8
7
  */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OperationErrorHandler = void 0;
9
10
  class OperationErrorHandler {
10
11
  /**
11
- * Handle authentication errors with configuration guidance
12
- */
13
- static handleAuthenticationError(error, provider) {
14
- const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateAuthenticationError(provider);
15
- return {
16
- code: 'AUTHENTICATION_FAILED',
17
- message: `Authentication failed for ${provider}`,
18
- provider,
19
- cause: 'Invalid or expired token, or insufficient permissions',
20
- solution: 'Update your token with proper permissions',
21
- configuration: configError,
22
- troubleshooting: [
23
- 'Verify your token is not expired',
24
- 'Check token permissions include repo, user, and admin:repo_hook',
25
- 'Test token manually with API call',
26
- 'Regenerate token if necessary'
27
- ]
28
- };
29
- }
30
- /**
31
- * Handle network errors with troubleshooting steps
12
+ * Creates a standardized error response
32
13
  */
33
- static handleNetworkError(error, provider, endpoint) {
34
- const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateNetworkError(provider, endpoint);
14
+ static createErrorResponse(code, message, details, suggestions = []) {
35
15
  return {
36
- code: 'NETWORK_ERROR',
37
- message: `Network error connecting to ${provider}`,
38
- provider,
39
- cause: 'Connection failed to provider API',
40
- solution: 'Check network connectivity and provider configuration',
41
- configuration: configError,
42
- troubleshooting: [
43
- 'Check internet connection',
44
- 'Verify provider API is accessible',
45
- 'Test DNS resolution for provider domain',
46
- 'Check firewall settings',
47
- 'Verify proxy settings if applicable'
48
- ]
16
+ error: {
17
+ code,
18
+ message,
19
+ details,
20
+ suggestions,
21
+ },
49
22
  };
50
23
  }
51
24
  /**
52
- * Handle permission errors with access instructions
25
+ * Creates a tool result with error information
53
26
  */
54
- static handlePermissionError(error, provider, operation) {
55
- const baseConfig = provider === 'github'
56
- ? configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGitHubError()
57
- : configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGiteaError();
58
- const configError = {
59
- ...baseConfig,
60
- instructions: [
61
- `Permission denied for ${operation || 'operation'} on ${provider}`,
62
- '',
63
- 'This usually means:',
64
- '• Token lacks required permissions for this operation',
65
- '• Repository/resource access is restricted',
66
- '• Organization policies prevent this action',
67
- '',
68
- 'To fix permission issues:',
69
- '1. Check token permissions include:',
70
- ' - repo (for repository operations)',
71
- ' - user (for user information)',
72
- ' - admin:repo_hook (for webhook management)',
73
- ' - delete_repo (for repository deletion)',
74
- '2. Verify you have access to the target repository/resource',
75
- '3. Check organization/team permissions if applicable',
76
- '4. Contact repository owner if you need additional access'
77
- ]
78
- };
27
+ static createToolError(code, message, operation, details, suggestions = []) {
79
28
  return {
80
- code: 'PERMISSION_DENIED',
81
- message: `Permission denied for ${operation || 'operation'} on ${provider}`,
82
- provider,
83
- cause: 'Insufficient permissions or access restrictions',
84
- solution: 'Update token permissions or request access',
85
- configuration: configError,
86
- troubleshooting: [
87
- 'Verify token has required scopes',
88
- 'Check repository/organization access',
89
- 'Confirm user permissions for the operation',
90
- 'Review organization security policies'
91
- ]
29
+ success: false,
30
+ error: {
31
+ code,
32
+ message,
33
+ details,
34
+ suggestions,
35
+ },
36
+ metadata: {
37
+ operation,
38
+ timestamp: new Date().toISOString(),
39
+ executionTime: 0,
40
+ },
92
41
  };
93
42
  }
94
43
  /**
95
- * Handle resource not found errors
44
+ * Handles configuration errors with setup guidance
96
45
  */
97
- static handleNotFoundError(error, provider, resource) {
98
- return {
99
- code: 'RESOURCE_NOT_FOUND',
100
- message: `${resource || 'Resource'} not found on ${provider}`,
101
- provider,
102
- cause: 'Requested resource does not exist or is not accessible',
103
- solution: 'Verify resource name and access permissions',
104
- troubleshooting: [
105
- 'Check spelling of repository/resource name',
106
- 'Verify the resource exists on the provider',
107
- 'Confirm you have read access to the resource',
108
- 'Check if resource was moved or renamed',
109
- 'Verify organization/user name is correct'
110
- ]
46
+ static handleConfigurationError(provider, operation) {
47
+ const response = this.createErrorResponse('CONFIGURATION_ERROR', 'Provider configuration is missing or invalid', { provider, operation });
48
+ if (provider === 'github' || provider === 'both') {
49
+ response.error.suggestions.push('Configure GitHub: Set GITHUB_TOKEN and GITHUB_USERNAME environment variables');
50
+ }
51
+ if (provider === 'gitea' || provider === 'both') {
52
+ response.error.suggestions.push('Configure Gitea: Set GITEA_URL, GITEA_TOKEN, and GITEA_USERNAME environment variables');
53
+ }
54
+ response.error.configurationGuide = {
55
+ requiredEnvVars: this.getRequiredEnvVars(provider),
56
+ exampleConfig: this.getExampleConfig(provider),
57
+ setupInstructions: this.getSetupInstructions(provider),
111
58
  };
59
+ return response;
112
60
  }
113
61
  /**
114
- * Handle rate limiting errors
62
+ * Handles validation errors with parameter guidance
115
63
  */
116
- static handleRateLimitError(error, provider) {
117
- return {
118
- code: 'RATE_LIMIT_EXCEEDED',
119
- message: `Rate limit exceeded for ${provider}`,
120
- provider,
121
- cause: 'Too many API requests in a short time period',
122
- solution: 'Wait before retrying or use authenticated requests',
123
- troubleshooting: [
124
- 'Wait for rate limit reset (usually 1 hour)',
125
- 'Use authenticated requests for higher limits',
126
- 'Implement request throttling in your application',
127
- 'Consider using multiple tokens for higher throughput',
128
- 'Check provider documentation for rate limit details'
129
- ]
130
- };
64
+ static handleValidationError(errors, suggestions = [], toolName, action) {
65
+ const response = this.createErrorResponse('VALIDATION_ERROR', `Parameter validation failed: ${errors.join(', ')}`, { toolName, action, validationErrors: errors }, suggestions);
66
+ // Add general parameter guidance
67
+ response.error.suggestions.push('Ensure all required parameters are provided');
68
+ response.error.suggestions.push('Check parameter formats and types');
69
+ if (toolName && action) {
70
+ response.error.suggestions.push(`See documentation for ${toolName} ${action} parameters`);
71
+ }
72
+ return response;
131
73
  }
132
74
  /**
133
- * Handle timeout errors
75
+ * Handles Git command errors
134
76
  */
135
- static handleTimeoutError(error, provider) {
136
- return {
137
- code: 'REQUEST_TIMEOUT',
138
- message: `Request timeout for ${provider}`,
139
- provider,
140
- cause: 'Request took too long to complete',
141
- solution: 'Retry the operation or check provider status',
142
- troubleshooting: [
143
- 'Check provider service status',
144
- 'Verify network connectivity is stable',
145
- 'Try the operation again after a short delay',
146
- 'Check if provider is experiencing high load',
147
- 'Consider breaking large operations into smaller chunks'
148
- ]
149
- };
77
+ static handleGitError(gitError, operation, projectPath) {
78
+ let code = 'GIT_ERROR';
79
+ let message = `Git operation failed: ${gitError}`;
80
+ const suggestions = [];
81
+ // Analyze common Git errors and provide specific guidance
82
+ if (gitError.includes('not a git repository')) {
83
+ code = 'NOT_GIT_REPOSITORY';
84
+ message = 'The specified directory is not a Git repository';
85
+ suggestions.push('Initialize a Git repository with: git init');
86
+ suggestions.push('Or navigate to an existing Git repository');
87
+ }
88
+ else if (gitError.includes('nothing to commit')) {
89
+ code = 'NOTHING_TO_COMMIT';
90
+ message = 'No changes to commit';
91
+ suggestions.push('Make changes to files before committing');
92
+ suggestions.push('Use git status to see current repository state');
93
+ }
94
+ else if (gitError.includes('merge conflict')) {
95
+ code = 'MERGE_CONFLICT';
96
+ message = 'Merge conflict detected';
97
+ suggestions.push('Resolve conflicts in the affected files');
98
+ suggestions.push('Use git status to see conflicted files');
99
+ suggestions.push('After resolving, use git add and git commit');
100
+ }
101
+ else if (gitError.includes('remote origin already exists')) {
102
+ code = 'REMOTE_EXISTS';
103
+ message = 'Remote origin already exists';
104
+ suggestions.push('Use git remote set-url origin <url> to change the remote URL');
105
+ suggestions.push('Or use git remote remove origin to remove the existing remote');
106
+ }
107
+ else if (gitError.includes('Permission denied')) {
108
+ code = 'PERMISSION_DENIED';
109
+ message = 'Permission denied for Git operation';
110
+ suggestions.push('Check your SSH keys or authentication credentials');
111
+ suggestions.push('Ensure you have write access to the repository');
112
+ }
113
+ return this.createToolError(code, message, operation, { gitError, projectPath }, suggestions);
150
114
  }
151
115
  /**
152
- * Handle validation errors
116
+ * Handles provider API errors
153
117
  */
154
- static handleValidationError(error, provider, field) {
155
- return {
156
- code: 'VALIDATION_ERROR',
157
- message: `Validation error for ${provider}${field ? ` (${field})` : ''}`,
158
- provider,
159
- cause: 'Invalid input data or parameters',
160
- solution: 'Check input parameters and format',
161
- troubleshooting: [
162
- 'Verify all required parameters are provided',
163
- 'Check parameter formats match provider requirements',
164
- 'Validate string lengths and character restrictions',
165
- 'Ensure boolean and numeric values are correct type',
166
- 'Review provider API documentation for parameter rules'
167
- ]
168
- };
118
+ static handleProviderError(provider, apiError, operation) {
119
+ let code = 'PROVIDER_ERROR';
120
+ let message = `${provider} API error`;
121
+ const suggestions = [];
122
+ // Handle common API errors
123
+ if (apiError.status === 401) {
124
+ code = 'AUTHENTICATION_ERROR';
125
+ message = `Authentication failed for ${provider}`;
126
+ suggestions.push(`Check your ${provider.toUpperCase()}_TOKEN environment variable`);
127
+ suggestions.push('Ensure the token has the required permissions');
128
+ suggestions.push('Verify the token is not expired');
129
+ }
130
+ else if (apiError.status === 403) {
131
+ code = 'PERMISSION_ERROR';
132
+ message = `Permission denied for ${provider} operation`;
133
+ suggestions.push('Check if you have the required permissions for this operation');
134
+ suggestions.push('Verify the repository exists and you have access to it');
135
+ }
136
+ else if (apiError.status === 404) {
137
+ code = 'NOT_FOUND';
138
+ message = `Resource not found on ${provider}`;
139
+ suggestions.push('Check if the repository, issue, or pull request exists');
140
+ suggestions.push('Verify the repository name and owner are correct');
141
+ }
142
+ else if (apiError.status === 422) {
143
+ code = 'VALIDATION_ERROR';
144
+ message = `${provider} validation error`;
145
+ suggestions.push('Check the request parameters');
146
+ suggestions.push('Ensure all required fields are provided');
147
+ }
148
+ else if (apiError.status >= 500) {
149
+ code = 'SERVER_ERROR';
150
+ message = `${provider} server error`;
151
+ suggestions.push('This is a temporary server issue, try again later');
152
+ suggestions.push('Check the provider status page for known issues');
153
+ }
154
+ return this.createToolError(code, message, operation, { provider, apiError: apiError.message || apiError }, suggestions);
169
155
  }
170
156
  /**
171
- * Handle generic API errors
157
+ * Handles network and connectivity errors
172
158
  */
173
- static handleGenericError(error, provider) {
174
- return {
175
- code: 'API_ERROR',
176
- message: `API error from ${provider}: ${error.message}`,
177
- provider,
178
- cause: 'Unexpected error from provider API',
179
- solution: 'Check error details and provider status',
180
- troubleshooting: [
181
- 'Review the specific error message for clues',
182
- 'Check provider status page for known issues',
183
- 'Verify your request format matches API documentation',
184
- 'Try the operation again after a short delay',
185
- 'Contact provider support if error persists'
186
- ]
187
- };
159
+ static handleNetworkError(networkError, operation, provider) {
160
+ let code = 'NETWORK_ERROR';
161
+ let message = 'Network connectivity error';
162
+ const suggestions = [];
163
+ if (networkError.code === 'ENOTFOUND') {
164
+ code = 'DNS_ERROR';
165
+ message = 'DNS resolution failed';
166
+ suggestions.push('Check your internet connection');
167
+ suggestions.push('Verify the server URL is correct');
168
+ }
169
+ else if (networkError.code === 'ECONNREFUSED') {
170
+ code = 'CONNECTION_REFUSED';
171
+ message = 'Connection refused by server';
172
+ suggestions.push('Check if the server is running');
173
+ suggestions.push('Verify the port and URL are correct');
174
+ }
175
+ else if (networkError.code === 'ETIMEDOUT') {
176
+ code = 'TIMEOUT_ERROR';
177
+ message = 'Request timed out';
178
+ suggestions.push('Check your internet connection');
179
+ suggestions.push('Try again later - the server may be overloaded');
180
+ }
181
+ return this.createToolError(code, message, operation, { networkError: networkError.message || networkError, provider }, suggestions);
188
182
  }
189
183
  /**
190
- * Analyze error and return appropriate error handler result
184
+ * Handles file system errors
191
185
  */
192
- static analyzeAndHandleError(error, provider, operation) {
193
- const errorMessage = error.message.toLowerCase();
194
- // Authentication errors
195
- if (errorMessage.includes('401') ||
196
- errorMessage.includes('unauthorized') ||
197
- errorMessage.includes('authentication') ||
198
- errorMessage.includes('invalid token')) {
199
- return this.handleAuthenticationError(error, provider);
200
- }
201
- // Permission errors
202
- if (errorMessage.includes('403') ||
203
- errorMessage.includes('forbidden') ||
204
- errorMessage.includes('permission denied')) {
205
- return this.handlePermissionError(error, provider, operation);
186
+ static handleFileSystemError(fsError, operation, filePath) {
187
+ let code = 'FILESYSTEM_ERROR';
188
+ let message = 'File system operation failed';
189
+ const suggestions = [];
190
+ if (fsError.code === 'ENOENT') {
191
+ code = 'FILE_NOT_FOUND';
192
+ message = 'File or directory not found';
193
+ suggestions.push('Check if the file path is correct');
194
+ suggestions.push('Ensure the file or directory exists');
206
195
  }
207
- // Not found errors
208
- if (errorMessage.includes('404') ||
209
- errorMessage.includes('not found')) {
210
- return this.handleNotFoundError(error, provider, operation);
196
+ else if (fsError.code === 'EACCES') {
197
+ code = 'PERMISSION_DENIED';
198
+ message = 'Permission denied for file operation';
199
+ suggestions.push('Check file permissions');
200
+ suggestions.push('Run with appropriate user permissions');
211
201
  }
212
- // Rate limiting errors
213
- if (errorMessage.includes('429') ||
214
- errorMessage.includes('rate limit') ||
215
- errorMessage.includes('too many requests')) {
216
- return this.handleRateLimitError(error, provider);
202
+ else if (fsError.code === 'EEXIST') {
203
+ code = 'FILE_EXISTS';
204
+ message = 'File or directory already exists';
205
+ suggestions.push('Use a different name or remove the existing file');
206
+ suggestions.push('Use update operation instead of create');
217
207
  }
218
- // Network errors
219
- if (errorMessage.includes('enotfound') ||
220
- errorMessage.includes('econnrefused') ||
221
- errorMessage.includes('network') ||
222
- errorMessage.includes('connection')) {
223
- return this.handleNetworkError(error, provider);
208
+ return this.createToolError(code, message, operation, { fsError: fsError.message || fsError, filePath }, suggestions);
209
+ }
210
+ /**
211
+ * Gets required environment variables for a provider
212
+ */
213
+ static getRequiredEnvVars(provider) {
214
+ const envVars = [];
215
+ if (provider === 'github' || provider === 'both') {
216
+ envVars.push('GITHUB_TOKEN', 'GITHUB_USERNAME');
224
217
  }
225
- // Timeout errors
226
- if (errorMessage.includes('timeout') ||
227
- errorMessage.includes('etimedout')) {
228
- return this.handleTimeoutError(error, provider);
218
+ if (provider === 'gitea' || provider === 'both') {
219
+ envVars.push('GITEA_URL', 'GITEA_TOKEN', 'GITEA_USERNAME');
229
220
  }
230
- // Validation errors
231
- if (errorMessage.includes('400') ||
232
- errorMessage.includes('bad request') ||
233
- errorMessage.includes('validation') ||
234
- errorMessage.includes('invalid')) {
235
- return this.handleValidationError(error, provider);
221
+ if (!provider) {
222
+ envVars.push('GITHUB_TOKEN', 'GITHUB_USERNAME', 'GITEA_URL', 'GITEA_TOKEN', 'GITEA_USERNAME');
236
223
  }
237
- // Generic error fallback
238
- return this.handleGenericError(error, provider);
224
+ return envVars;
239
225
  }
240
226
  /**
241
- * Format operation error as user-friendly message
227
+ * Gets example configuration for a provider
242
228
  */
243
- static formatErrorMessage(operationError) {
244
- const lines = [
245
- `❌ ${operationError.code}: ${operationError.message}`,
246
- '',
247
- `🔍 Cause: ${operationError.cause}`,
248
- `💡 Solution: ${operationError.solution}`,
249
- ''
250
- ];
251
- if (operationError.troubleshooting && operationError.troubleshooting.length > 0) {
252
- lines.push('🛠️ Troubleshooting Steps:');
253
- lines.push(...operationError.troubleshooting.map(step => ` • ${step}`));
254
- lines.push('');
229
+ static getExampleConfig(provider) {
230
+ const config = {};
231
+ if (provider === 'github' || provider === 'both' || !provider) {
232
+ config.GITHUB_TOKEN = 'ghp_xxxxxxxxxxxxxxxxxxxx';
233
+ config.GITHUB_USERNAME = 'your-github-username';
255
234
  }
256
- if (operationError.configuration) {
257
- lines.push('⚙️ Configuration Help:');
258
- lines.push(configuration_error_generator_js_1.ConfigurationErrorGenerator.formatErrorMessage(operationError.configuration));
235
+ if (provider === 'gitea' || provider === 'both' || !provider) {
236
+ config.GITEA_URL = 'https://gitea.example.com';
237
+ config.GITEA_TOKEN = 'your-gitea-token';
238
+ config.GITEA_USERNAME = 'your-gitea-username';
259
239
  }
260
- return lines.join('\n');
240
+ return config;
261
241
  }
262
242
  /**
263
- * Create a comprehensive error response for API operations
243
+ * Gets setup instructions for a provider
264
244
  */
265
- static createErrorResponse(error, provider, operation) {
266
- const operationError = this.analyzeAndHandleError(error, provider, operation);
267
- const formattedMessage = this.formatErrorMessage(operationError);
268
- return {
269
- success: false,
270
- error: operationError.message,
271
- details: operationError,
272
- formattedMessage
273
- };
245
+ static getSetupInstructions(provider) {
246
+ const instructions = [];
247
+ if (provider === 'github' || provider === 'both' || !provider) {
248
+ instructions.push('1. For GitHub: Create a personal access token at https://github.com/settings/tokens');
249
+ instructions.push('2. Set GITHUB_TOKEN and GITHUB_USERNAME environment variables');
250
+ }
251
+ if (provider === 'gitea' || provider === 'both' || !provider) {
252
+ instructions.push('3. For Gitea: Create an access token in your Gitea instance settings');
253
+ instructions.push('4. Set GITEA_URL, GITEA_TOKEN, and GITEA_USERNAME environment variables');
254
+ }
255
+ instructions.push('5. Restart the MCP server after setting environment variables');
256
+ instructions.push('6. At least one provider must be configured for remote operations');
257
+ return instructions;
274
258
  }
275
259
  }
276
260
  exports.OperationErrorHandler = OperationErrorHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"operation-error-handler.js","sourceRoot":"","sources":["../../src/utils/operation-error-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation-error-handler.js","sourceRoot":"","sources":["../../src/utils/operation-error-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Parameter Validation
3
+ *
4
+ * Provides robust input validation for all Git MCP operations.
5
+ * Validates required parameters, formats, and operation support.
6
+ */
7
+ export interface ValidationResult {
8
+ isValid: boolean;
9
+ errors: string[];
10
+ warnings: string[];
11
+ suggestions: string[];
12
+ }
13
+ export interface ToolParams {
14
+ action: string;
15
+ projectPath: string;
16
+ provider?: 'github' | 'gitea' | 'both';
17
+ [key: string]: any;
18
+ }
19
+ export declare class ParameterValidator {
20
+ private static readonly VALID_PROVIDERS;
21
+ private static readonly TOOL_OPERATIONS;
22
+ private static readonly REMOTE_OPERATIONS;
23
+ /**
24
+ * Validates basic tool parameters
25
+ */
26
+ static validateToolParams(toolName: string, params: ToolParams): ValidationResult;
27
+ /**
28
+ * Validates specific operation parameters
29
+ */
30
+ static validateOperationParams(toolName: string, action: string, params: ToolParams): ValidationResult;
31
+ private static validateWorkflowParams;
32
+ private static validateFilesParams;
33
+ private static validateBranchesParams;
34
+ private static validateIssuesParams;
35
+ private static validatePullsParams;
36
+ /**
37
+ * Provides usage examples for correct parameter format
38
+ */
39
+ static getUsageExamples(toolName: string, action?: string): string[];
40
+ }
41
+ //# sourceMappingURL=parameter-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-validator.d.ts","sourceRoot":"","sources":["../../src/utils/parameter-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAEtE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAkBrC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAmBvC;IAEF;;OAEG;WACW,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,gBAAgB;IAiExF;;OAEG;WACW,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,gBAAgB;IA0B7G,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA6DrC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA2DlC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAmCrC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAiDnC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA0DlC;;OAEG;WACW,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;CA6E5E"}