@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.
- package/LICENSE +21 -0
- package/README.md +143 -89
- package/dist/config.d.ts +72 -71
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +226 -139
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +15 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +133 -128
- package/dist/index.js.map +1 -1
- package/dist/providers/base-provider.d.ts +42 -153
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +42 -302
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/gitea-provider.d.ts +67 -118
- package/dist/providers/gitea-provider.d.ts.map +1 -1
- package/dist/providers/gitea-provider.js +484 -1161
- package/dist/providers/gitea-provider.js.map +1 -1
- package/dist/providers/github-provider.d.ts +70 -81
- package/dist/providers/github-provider.d.ts.map +1 -1
- package/dist/providers/github-provider.js +638 -278
- package/dist/providers/github-provider.js.map +1 -1
- package/dist/providers/index.d.ts +9 -9
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +13 -19
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/provider-factory.d.ts +29 -59
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +134 -265
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/provider-operation-handler.d.ts +93 -0
- package/dist/providers/provider-operation-handler.d.ts.map +1 -0
- package/dist/providers/provider-operation-handler.js +331 -0
- package/dist/providers/provider-operation-handler.js.map +1 -0
- package/dist/providers/types.d.ts +201 -355
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +3 -2
- package/dist/providers/types.js.map +1 -1
- package/dist/server.d.ts +34 -8
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +436 -494
- package/dist/server.js.map +1 -1
- package/dist/tools/git-analytics.d.ts +239 -16
- package/dist/tools/git-analytics.d.ts.map +1 -1
- package/dist/tools/git-analytics.js +737 -25
- package/dist/tools/git-analytics.js.map +1 -1
- package/dist/tools/git-archive.d.ts +109 -15
- package/dist/tools/git-archive.d.ts.map +1 -1
- package/dist/tools/git-archive.js +462 -10
- package/dist/tools/git-archive.js.map +1 -1
- package/dist/tools/git-backup.d.ts +101 -15
- package/dist/tools/git-backup.d.ts.map +1 -1
- package/dist/tools/git-backup.js +410 -10
- package/dist/tools/git-backup.js.map +1 -1
- package/dist/tools/git-branches.d.ts +141 -15
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +466 -11
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-config.d.ts +115 -15
- package/dist/tools/git-config.d.ts.map +1 -1
- package/dist/tools/git-config.js +446 -11
- package/dist/tools/git-config.js.map +1 -1
- package/dist/tools/git-files.d.ts +179 -59
- package/dist/tools/git-files.d.ts.map +1 -1
- package/dist/tools/git-files.js +699 -221
- package/dist/tools/git-files.js.map +1 -1
- package/dist/tools/git-issues.d.ts +158 -15
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +323 -11
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-monitor.d.ts +149 -14
- package/dist/tools/git-monitor.d.ts.map +1 -1
- package/dist/tools/git-monitor.js +528 -11
- package/dist/tools/git-monitor.js.map +1 -1
- package/dist/tools/git-packages.d.ts +163 -15
- package/dist/tools/git-packages.d.ts.map +1 -1
- package/dist/tools/git-packages.js +526 -11
- package/dist/tools/git-packages.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +174 -15
- package/dist/tools/git-pulls.d.ts.map +1 -1
- package/dist/tools/git-pulls.js +352 -11
- package/dist/tools/git-pulls.js.map +1 -1
- package/dist/tools/git-release.d.ts +167 -15
- package/dist/tools/git-release.d.ts.map +1 -1
- package/dist/tools/git-release.js +465 -11
- package/dist/tools/git-release.js.map +1 -1
- package/dist/tools/git-remote.d.ts +124 -15
- package/dist/tools/git-remote.d.ts.map +1 -1
- package/dist/tools/git-remote.js +539 -11
- package/dist/tools/git-remote.js.map +1 -1
- package/dist/tools/git-reset.d.ts +100 -15
- package/dist/tools/git-reset.d.ts.map +1 -1
- package/dist/tools/git-reset.js +409 -11
- package/dist/tools/git-reset.js.map +1 -1
- package/dist/tools/git-stash.d.ts +120 -15
- package/dist/tools/git-stash.d.ts.map +1 -1
- package/dist/tools/git-stash.js +503 -11
- package/dist/tools/git-stash.js.map +1 -1
- package/dist/tools/git-sync.d.ts +160 -16
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +462 -113
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +142 -15
- package/dist/tools/git-tags.d.ts.map +1 -1
- package/dist/tools/git-tags.js +471 -11
- package/dist/tools/git-tags.js.map +1 -1
- package/dist/tools/git-workflow.d.ts +151 -80
- package/dist/tools/git-workflow.d.ts.map +1 -1
- package/dist/tools/git-workflow.js +407 -912
- package/dist/tools/git-workflow.js.map +1 -1
- package/dist/utils/credential-manager.d.ts +119 -0
- package/dist/utils/credential-manager.d.ts.map +1 -0
- package/dist/utils/credential-manager.js +450 -0
- package/dist/utils/credential-manager.js.map +1 -0
- package/dist/utils/git-command-executor.d.ts +330 -0
- package/dist/utils/git-command-executor.d.ts.map +1 -0
- package/dist/utils/git-command-executor.js +889 -0
- package/dist/utils/git-command-executor.js.map +1 -0
- package/dist/utils/logger.d.ts +143 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +473 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/operation-error-handler.d.ts +54 -41
- package/dist/utils/operation-error-handler.d.ts.map +1 -1
- package/dist/utils/operation-error-handler.js +211 -227
- package/dist/utils/operation-error-handler.js.map +1 -1
- package/dist/utils/parameter-validator.d.ts +41 -0
- package/dist/utils/parameter-validator.d.ts.map +1 -0
- package/dist/utils/parameter-validator.js +465 -0
- package/dist/utils/parameter-validator.js.map +1 -0
- package/dist/utils/repository-detector.d.ts +128 -0
- package/dist/utils/repository-detector.d.ts.map +1 -0
- package/dist/utils/repository-detector.js +422 -0
- package/dist/utils/repository-detector.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +146 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +378 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/dist/utils/retry.d.ts +12 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +28 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/terminal-controller.d.ts +73 -139
- package/dist/utils/terminal-controller.d.ts.map +1 -1
- package/dist/utils/terminal-controller.js +272 -457
- package/dist/utils/terminal-controller.js.map +1 -1
- package/package.json +79 -60
- package/dist/providers/error-handler.d.ts +0 -51
- package/dist/providers/error-handler.d.ts.map +0 -1
- package/dist/providers/error-handler.js +0 -176
- package/dist/providers/error-handler.js.map +0 -1
- package/dist/providers/github-provider-backup.d.ts +0 -81
- package/dist/providers/github-provider-backup.d.ts.map +0 -1
- package/dist/providers/github-provider-backup.js +0 -1179
- package/dist/providers/github-provider-backup.js.map +0 -1
- package/dist/providers/github-provider-complete.d.ts +0 -1
- package/dist/providers/github-provider-complete.d.ts.map +0 -1
- package/dist/providers/github-provider-complete.js +0 -2
- package/dist/providers/github-provider-complete.js.map +0 -1
- package/dist/tools/git-init.d.ts +0 -50
- package/dist/tools/git-init.d.ts.map +0 -1
- package/dist/tools/git-init.js +0 -258
- package/dist/tools/git-init.js.map +0 -1
- package/dist/tools/git-log.d.ts +0 -67
- package/dist/tools/git-log.d.ts.map +0 -1
- package/dist/tools/git-log.js +0 -320
- package/dist/tools/git-log.js.map +0 -1
- package/dist/tools/git-status.d.ts +0 -29
- package/dist/tools/git-status.d.ts.map +0 -1
- package/dist/tools/git-status.js +0 -182
- package/dist/tools/git-status.js.map +0 -1
- package/dist/tools/git-update.d.ts +0 -34
- package/dist/tools/git-update.d.ts.map +0 -1
- package/dist/tools/git-update.js +0 -191
- package/dist/tools/git-update.js.map +0 -1
- package/dist/utils/auto-detection.d.ts +0 -120
- package/dist/utils/auto-detection.d.ts.map +0 -1
- package/dist/utils/auto-detection.js +0 -259
- package/dist/utils/auto-detection.js.map +0 -1
- package/dist/utils/configuration-error-generator.d.ts +0 -41
- package/dist/utils/configuration-error-generator.d.ts.map +0 -1
- package/dist/utils/configuration-error-generator.js +0 -168
- package/dist/utils/configuration-error-generator.js.map +0 -1
- package/dist/utils/configuration-validator.d.ts +0 -67
- package/dist/utils/configuration-validator.d.ts.map +0 -1
- package/dist/utils/configuration-validator.js +0 -257
- package/dist/utils/configuration-validator.js.map +0 -1
- package/dist/utils/error-handler.d.ts +0 -107
- package/dist/utils/error-handler.d.ts.map +0 -1
- package/dist/utils/error-handler.js +0 -331
- package/dist/utils/error-handler.js.map +0 -1
- package/dist/utils/git-operations.d.ts +0 -200
- package/dist/utils/git-operations.d.ts.map +0 -1
- package/dist/utils/git-operations.js +0 -836
- package/dist/utils/git-operations.js.map +0 -1
- package/dist/utils/multi-provider-error-handler.d.ts +0 -75
- package/dist/utils/multi-provider-error-handler.d.ts.map +0 -1
- package/dist/utils/multi-provider-error-handler.js +0 -276
- package/dist/utils/multi-provider-error-handler.js.map +0 -1
- package/dist/utils/multi-provider-operation-handler.d.ts +0 -113
- package/dist/utils/multi-provider-operation-handler.d.ts.map +0 -1
- package/dist/utils/multi-provider-operation-handler.js +0 -303
- package/dist/utils/multi-provider-operation-handler.js.map +0 -1
- package/dist/utils/provider-operation-handler.d.ts +0 -80
- package/dist/utils/provider-operation-handler.d.ts.map +0 -1
- package/dist/utils/provider-operation-handler.js +0 -201
- package/dist/utils/provider-operation-handler.js.map +0 -1
- package/dist/utils/response-helper.d.ts +0 -57
- package/dist/utils/response-helper.d.ts.map +0 -1
- package/dist/utils/response-helper.js +0 -54
- package/dist/utils/response-helper.js.map +0 -1
- package/dist/utils/user-detection.d.ts +0 -25
- package/dist/utils/user-detection.d.ts.map +0 -1
- package/dist/utils/user-detection.js +0 -54
- 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
|
|
7
|
-
*
|
|
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
|
-
*
|
|
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
|
|
34
|
-
const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateNetworkError(provider, endpoint);
|
|
14
|
+
static createErrorResponse(code, message, details, suggestions = []) {
|
|
35
15
|
return {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
*
|
|
25
|
+
* Creates a tool result with error information
|
|
53
26
|
*/
|
|
54
|
-
static
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
*
|
|
44
|
+
* Handles configuration errors with setup guidance
|
|
96
45
|
*/
|
|
97
|
-
static
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
*
|
|
62
|
+
* Handles validation errors with parameter guidance
|
|
115
63
|
*/
|
|
116
|
-
static
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
*
|
|
75
|
+
* Handles Git command errors
|
|
134
76
|
*/
|
|
135
|
-
static
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
*
|
|
116
|
+
* Handles provider API errors
|
|
153
117
|
*/
|
|
154
|
-
static
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
*
|
|
157
|
+
* Handles network and connectivity errors
|
|
172
158
|
*/
|
|
173
|
-
static
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
*
|
|
184
|
+
* Handles file system errors
|
|
191
185
|
*/
|
|
192
|
-
static
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
226
|
-
|
|
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
|
-
|
|
231
|
-
|
|
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
|
-
|
|
238
|
-
return this.handleGenericError(error, provider);
|
|
224
|
+
return envVars;
|
|
239
225
|
}
|
|
240
226
|
/**
|
|
241
|
-
*
|
|
227
|
+
* Gets example configuration for a provider
|
|
242
228
|
*/
|
|
243
|
-
static
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
''
|
|
247
|
-
|
|
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 (
|
|
257
|
-
|
|
258
|
-
|
|
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
|
|
240
|
+
return config;
|
|
261
241
|
}
|
|
262
242
|
/**
|
|
263
|
-
*
|
|
243
|
+
* Gets setup instructions for a provider
|
|
264
244
|
*/
|
|
265
|
-
static
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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":"
|
|
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"}
|