@andrebuzeli/git-mcp 4.0.21 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +59 -32
  2. package/dist/config.d.ts +0 -2
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +0 -27
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +54 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/providers/gitea-provider.d.ts +5 -5
  11. package/dist/providers/gitea-provider.d.ts.map +1 -1
  12. package/dist/providers/gitea-provider.js +75 -220
  13. package/dist/providers/gitea-provider.js.map +1 -1
  14. package/dist/providers/github-provider.d.ts +0 -48
  15. package/dist/providers/github-provider.d.ts.map +1 -1
  16. package/dist/providers/github-provider.js +805 -849
  17. package/dist/providers/github-provider.js.map +1 -1
  18. package/dist/providers/provider-factory.d.ts +1 -1
  19. package/dist/providers/provider-factory.d.ts.map +1 -1
  20. package/dist/providers/provider-factory.js +4 -14
  21. package/dist/providers/provider-factory.js.map +1 -1
  22. package/dist/providers/types.d.ts +1 -1
  23. package/dist/providers/types.d.ts.map +1 -1
  24. package/dist/server.d.ts.map +1 -1
  25. package/dist/server.js +91 -37
  26. package/dist/server.js.map +1 -1
  27. package/dist/tools/git-files.d.ts.map +1 -1
  28. package/dist/tools/git-files.js +103 -5
  29. package/dist/tools/git-files.js.map +1 -1
  30. package/dist/tools/git-sync.d.ts.map +1 -1
  31. package/dist/tools/git-sync.js +104 -6
  32. package/dist/tools/git-sync.js.map +1 -1
  33. package/dist/tools/git-workflow.d.ts +55 -0
  34. package/dist/tools/git-workflow.d.ts.map +1 -1
  35. package/dist/tools/git-workflow.js +660 -7
  36. package/dist/tools/git-workflow.js.map +1 -1
  37. package/dist/utils/auto-detection.js +1 -1
  38. package/dist/utils/auto-detection.js.map +1 -1
  39. package/dist/utils/configuration-error-generator.d.ts +41 -0
  40. package/dist/utils/configuration-error-generator.d.ts.map +1 -0
  41. package/dist/utils/configuration-error-generator.js +168 -0
  42. package/dist/utils/configuration-error-generator.js.map +1 -0
  43. package/dist/utils/configuration-validator.d.ts +67 -0
  44. package/dist/utils/configuration-validator.d.ts.map +1 -0
  45. package/dist/utils/configuration-validator.js +257 -0
  46. package/dist/utils/configuration-validator.js.map +1 -0
  47. package/dist/utils/multi-provider-error-handler.d.ts +75 -0
  48. package/dist/utils/multi-provider-error-handler.d.ts.map +1 -0
  49. package/dist/utils/multi-provider-error-handler.js +276 -0
  50. package/dist/utils/multi-provider-error-handler.js.map +1 -0
  51. package/dist/utils/multi-provider-operation-handler.d.ts +113 -0
  52. package/dist/utils/multi-provider-operation-handler.d.ts.map +1 -0
  53. package/dist/utils/multi-provider-operation-handler.js +303 -0
  54. package/dist/utils/multi-provider-operation-handler.js.map +1 -0
  55. package/dist/utils/operation-error-handler.d.ts +69 -0
  56. package/dist/utils/operation-error-handler.d.ts.map +1 -0
  57. package/dist/utils/operation-error-handler.js +277 -0
  58. package/dist/utils/operation-error-handler.js.map +1 -0
  59. package/dist/utils/provider-operation-handler.d.ts +80 -0
  60. package/dist/utils/provider-operation-handler.d.ts.map +1 -0
  61. package/dist/utils/provider-operation-handler.js +201 -0
  62. package/dist/utils/provider-operation-handler.js.map +1 -0
  63. package/dist/utils/response-helper.js +1 -1
  64. package/dist/utils/response-helper.js.map +1 -1
  65. package/package.json +60 -60
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigurationValidator = void 0;
4
+ const config_js_1 = require("../config.js");
5
+ const configuration_error_generator_js_1 = require("./configuration-error-generator.js");
6
+ /**
7
+ * Configuration validator for Git MCP providers
8
+ * Validates provider parameters and configurations
9
+ */
10
+ class ConfigurationValidator {
11
+ static VALID_PROVIDERS = ['github', 'gitea', 'both'];
12
+ /**
13
+ * Validate provider parameter value
14
+ */
15
+ static validateProvider(provider) {
16
+ if (!this.VALID_PROVIDERS.includes(provider)) {
17
+ return {
18
+ valid: false,
19
+ error: {
20
+ code: 'INVALID_PROVIDER',
21
+ message: `Provider '${provider}' is not valid`,
22
+ suggestion: 'Use one of: github, gitea, both',
23
+ availableProviders: [...this.VALID_PROVIDERS]
24
+ }
25
+ };
26
+ }
27
+ return { valid: true };
28
+ }
29
+ /**
30
+ * Validate GitHub provider configuration
31
+ */
32
+ static validateGitHubConfiguration() {
33
+ const githubToken = config_js_1.config.getGitHubToken();
34
+ if (!githubToken) {
35
+ const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGitHubError();
36
+ return {
37
+ valid: false,
38
+ error: {
39
+ code: 'GITHUB_NOT_CONFIGURED',
40
+ message: 'GitHub provider is not configured',
41
+ provider: 'github',
42
+ configuration: configError,
43
+ suggestion: 'Configure GITHUB_TOKEN environment variable to use GitHub provider'
44
+ }
45
+ };
46
+ }
47
+ // Validate token format (GitHub tokens start with specific prefixes)
48
+ if (!this.isValidGitHubTokenFormat(githubToken)) {
49
+ const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateAuthenticationError('github');
50
+ return {
51
+ valid: false,
52
+ error: {
53
+ code: 'INVALID_GITHUB_TOKEN_FORMAT',
54
+ message: 'GitHub token format is invalid',
55
+ provider: 'github',
56
+ configuration: configError,
57
+ suggestion: 'GitHub tokens should start with ghp_, gho_, ghu_, ghs_, or ghr_'
58
+ }
59
+ };
60
+ }
61
+ return { valid: true };
62
+ }
63
+ /**
64
+ * Validate Gitea provider configuration
65
+ */
66
+ static validateGiteaConfiguration() {
67
+ const giteaUrl = config_js_1.config.getGiteaUrl();
68
+ const giteaToken = config_js_1.config.getGiteaToken();
69
+ const missing = [];
70
+ if (!giteaUrl)
71
+ missing.push('GITEA_URL');
72
+ if (!giteaToken)
73
+ missing.push('GITEA_TOKEN');
74
+ if (missing.length > 0) {
75
+ const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateMissingVariablesError('gitea', missing);
76
+ return {
77
+ valid: false,
78
+ error: {
79
+ code: 'GITEA_NOT_CONFIGURED',
80
+ message: 'Gitea provider is not configured',
81
+ provider: 'gitea',
82
+ configuration: configError,
83
+ suggestion: `Configure ${missing.join(' and ')} environment variable${missing.length > 1 ? 's' : ''} to use Gitea provider`
84
+ }
85
+ };
86
+ }
87
+ // Validate URL format
88
+ if (!this.isValidUrl(giteaUrl)) {
89
+ const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGiteaError();
90
+ return {
91
+ valid: false,
92
+ error: {
93
+ code: 'INVALID_GITEA_URL',
94
+ message: 'Gitea URL format is invalid',
95
+ provider: 'gitea',
96
+ configuration: configError,
97
+ suggestion: 'GITEA_URL should be a valid URL ending with /api/v1 (e.g., https://your-gitea.com/api/v1)'
98
+ }
99
+ };
100
+ }
101
+ return { valid: true };
102
+ }
103
+ /**
104
+ * Validate provider configuration based on provider parameter
105
+ */
106
+ static validateProviderConfiguration(provider) {
107
+ switch (provider) {
108
+ case 'github':
109
+ return this.validateGitHubConfiguration();
110
+ case 'gitea':
111
+ return this.validateGiteaConfiguration();
112
+ case 'both':
113
+ return this.validateBothProvidersConfiguration();
114
+ default:
115
+ return {
116
+ valid: false,
117
+ error: {
118
+ code: 'UNKNOWN_PROVIDER',
119
+ message: `Unknown provider: ${provider}`,
120
+ suggestion: 'This should not happen - please report this as a bug'
121
+ }
122
+ };
123
+ }
124
+ }
125
+ /**
126
+ * Validate both providers configuration
127
+ */
128
+ static validateBothProvidersConfiguration() {
129
+ const githubValidation = this.validateGitHubConfiguration();
130
+ const giteaValidation = this.validateGiteaConfiguration();
131
+ // If both are invalid, return combined error
132
+ if (!githubValidation.valid && !giteaValidation.valid) {
133
+ const configError = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateBothProvidersError();
134
+ return {
135
+ valid: false,
136
+ error: {
137
+ code: 'BOTH_PROVIDERS_NOT_CONFIGURED',
138
+ message: 'Neither GitHub nor Gitea providers are configured',
139
+ provider: 'both',
140
+ configuration: configError,
141
+ suggestion: 'Configure both GITHUB_TOKEN and GITEA_URL/GITEA_TOKEN to use both providers'
142
+ }
143
+ };
144
+ }
145
+ // If only one is invalid, return warning but allow operation
146
+ if (!githubValidation.valid) {
147
+ return {
148
+ valid: true, // Allow operation but with warning
149
+ error: {
150
+ code: 'GITHUB_NOT_CONFIGURED_WARNING',
151
+ message: 'GitHub provider not configured - operations will only run on Gitea',
152
+ provider: 'github',
153
+ configuration: githubValidation.error?.configuration,
154
+ suggestion: 'Configure GITHUB_TOKEN to enable GitHub operations'
155
+ }
156
+ };
157
+ }
158
+ if (!giteaValidation.valid) {
159
+ return {
160
+ valid: true, // Allow operation but with warning
161
+ error: {
162
+ code: 'GITEA_NOT_CONFIGURED_WARNING',
163
+ message: 'Gitea provider not configured - operations will only run on GitHub',
164
+ provider: 'gitea',
165
+ configuration: giteaValidation.error?.configuration,
166
+ suggestion: 'Configure GITEA_URL and GITEA_TOKEN to enable Gitea operations'
167
+ }
168
+ };
169
+ }
170
+ return { valid: true };
171
+ }
172
+ /**
173
+ * Get missing configuration for a provider
174
+ */
175
+ static getMissingConfiguration(provider) {
176
+ const missing = [];
177
+ if (provider === 'github') {
178
+ if (!config_js_1.config.getGitHubToken())
179
+ missing.push('GITHUB_TOKEN');
180
+ }
181
+ else if (provider === 'gitea') {
182
+ if (!config_js_1.config.getGiteaUrl())
183
+ missing.push('GITEA_URL');
184
+ if (!config_js_1.config.getGiteaToken())
185
+ missing.push('GITEA_TOKEN');
186
+ }
187
+ return missing;
188
+ }
189
+ /**
190
+ * Check if any provider is configured
191
+ */
192
+ static hasAnyProviderConfigured() {
193
+ const githubConfigured = !!config_js_1.config.getGitHubToken();
194
+ const giteaConfigured = !!(config_js_1.config.getGiteaUrl() && config_js_1.config.getGiteaToken());
195
+ return githubConfigured || giteaConfigured;
196
+ }
197
+ /**
198
+ * Get list of configured providers
199
+ */
200
+ static getConfiguredProviders() {
201
+ const configured = [];
202
+ if (config_js_1.config.getGitHubToken()) {
203
+ configured.push('github');
204
+ }
205
+ if (config_js_1.config.getGiteaUrl() && config_js_1.config.getGiteaToken()) {
206
+ configured.push('gitea');
207
+ }
208
+ return configured;
209
+ }
210
+ /**
211
+ * Validate GitHub token format
212
+ */
213
+ static isValidGitHubTokenFormat(token) {
214
+ // GitHub token prefixes: ghp_ (personal), gho_ (OAuth), ghu_ (user), ghs_ (server), ghr_ (refresh)
215
+ const validPrefixes = ['ghp_', 'gho_', 'ghu_', 'ghs_', 'ghr_'];
216
+ return validPrefixes.some(prefix => token.startsWith(prefix));
217
+ }
218
+ /**
219
+ * Validate URL format
220
+ */
221
+ static isValidUrl(url) {
222
+ try {
223
+ new URL(url);
224
+ return true;
225
+ }
226
+ catch {
227
+ return false;
228
+ }
229
+ }
230
+ /**
231
+ * Generate helpful error message for validation failure
232
+ */
233
+ static formatValidationError(validationResult) {
234
+ if (validationResult.valid || !validationResult.error) {
235
+ return '';
236
+ }
237
+ const error = validationResult.error;
238
+ const lines = [
239
+ `❌ ${error.code}: ${error.message}`,
240
+ ''
241
+ ];
242
+ if (error.configuration) {
243
+ lines.push(configuration_error_generator_js_1.ConfigurationErrorGenerator.formatErrorMessage(error.configuration));
244
+ }
245
+ else {
246
+ lines.push(`💡 Suggestion: ${error.suggestion}`);
247
+ if (error.availableProviders) {
248
+ lines.push('');
249
+ lines.push('Available providers:');
250
+ lines.push(...error.availableProviders.map(provider => ` • ${provider}`));
251
+ }
252
+ }
253
+ return lines.join('\n');
254
+ }
255
+ }
256
+ exports.ConfigurationValidator = ConfigurationValidator;
257
+ //# sourceMappingURL=configuration-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-validator.js","sourceRoot":"","sources":["../../src/utils/configuration-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { MultiProviderConfiguration, ProviderOperationResult } from './multi-provider-operation-handler.js';
2
+ /**
3
+ * Error response for multi-provider operations
4
+ */
5
+ export interface MultiProviderErrorResponse {
6
+ success: false;
7
+ error: {
8
+ code: string;
9
+ message: string;
10
+ type: 'configuration' | 'operation' | 'partial_failure';
11
+ providers: {
12
+ github?: {
13
+ configured: boolean;
14
+ error?: string;
15
+ configurationHelp?: any;
16
+ };
17
+ gitea?: {
18
+ configured: boolean;
19
+ error?: string;
20
+ configurationHelp?: any;
21
+ };
22
+ };
23
+ suggestions: string[];
24
+ warnings: string[];
25
+ };
26
+ }
27
+ /**
28
+ * Multi-Provider Error Handler
29
+ * Handles error scenarios specific to multi-provider operations
30
+ */
31
+ export declare class MultiProviderErrorHandler {
32
+ /**
33
+ * Handle scenarios where only one provider is configured
34
+ */
35
+ static handleSingleProviderScenario(configuredProvider: 'github' | 'gitea', config: MultiProviderConfiguration): {
36
+ warnings: string[];
37
+ suggestions: string[];
38
+ };
39
+ /**
40
+ * Handle scenarios where no providers are configured
41
+ */
42
+ static handleNoProvidersConfigured(): MultiProviderErrorResponse;
43
+ /**
44
+ * Handle partial failure scenarios
45
+ */
46
+ static handlePartialFailure<T>(githubResult?: ProviderOperationResult<T>, giteaResult?: ProviderOperationResult<T>): {
47
+ warnings: string[];
48
+ suggestions: string[];
49
+ errorDetails: {
50
+ github?: string;
51
+ gitea?: string;
52
+ };
53
+ };
54
+ /**
55
+ * Create comprehensive error response for multi-provider operations
56
+ */
57
+ static createMultiProviderErrorResponse<T>(config: MultiProviderConfiguration, githubResult?: ProviderOperationResult<T>, giteaResult?: ProviderOperationResult<T>): MultiProviderErrorResponse;
58
+ /**
59
+ * Generate warnings for missing provider configurations
60
+ */
61
+ static generateMissingProviderWarnings(config: MultiProviderConfiguration): string[];
62
+ /**
63
+ * Provide configuration guidance for specific provider
64
+ */
65
+ static getProviderConfigurationGuidance(provider: 'github' | 'gitea'): {
66
+ steps: string[];
67
+ environmentVariables: Record<string, string>;
68
+ troubleshooting: string[];
69
+ };
70
+ /**
71
+ * Format error message for display
72
+ */
73
+ static formatMultiProviderError(error: MultiProviderErrorResponse): string;
74
+ }
75
+ //# sourceMappingURL=multi-provider-error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-provider-error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/multi-provider-error-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAE5G;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,iBAAiB,CAAC;QACxD,SAAS,EAAE;YACT,MAAM,CAAC,EAAE;gBACP,UAAU,EAAE,OAAO,CAAC;gBACpB,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;aACzB,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,UAAU,EAAE,OAAO,CAAC;gBACpB,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;aACzB,CAAC;SACH,CAAC;QACF,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,qBAAa,yBAAyB;IAEpC;;OAEG;IACH,MAAM,CAAC,4BAA4B,CACjC,kBAAkB,EAAE,QAAQ,GAAG,OAAO,EACtC,MAAM,EAAE,0BAA0B,GACjC;QACD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IAqBD;;OAEG;IACH,MAAM,CAAC,2BAA2B,IAAI,0BAA0B;IAoChE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAC3B,YAAY,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACzC,WAAW,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACvC;QACD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,YAAY,EAAE;YACZ,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;KACH;IAiDD;;OAEG;IACH,MAAM,CAAC,gCAAgC,CAAC,CAAC,EACvC,MAAM,EAAE,0BAA0B,EAClC,YAAY,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,EACzC,WAAW,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACvC,0BAA0B;IA4D7B;;OAEG;IACH,MAAM,CAAC,+BAA+B,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,EAAE;IAoBpF;;OAEG;IACH,MAAM,CAAC,gCAAgC,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG;QACrE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B;IA6CD;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM;CAqC3E"}
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiProviderErrorHandler = void 0;
4
+ const configuration_error_generator_js_1 = require("./configuration-error-generator.js");
5
+ /**
6
+ * Multi-Provider Error Handler
7
+ * Handles error scenarios specific to multi-provider operations
8
+ */
9
+ class MultiProviderErrorHandler {
10
+ /**
11
+ * Handle scenarios where only one provider is configured
12
+ */
13
+ static handleSingleProviderScenario(configuredProvider, config) {
14
+ const warnings = [];
15
+ const suggestions = [];
16
+ const unconfiguredProvider = configuredProvider === 'github' ? 'gitea' : 'github';
17
+ warnings.push(`Only ${configuredProvider} is configured. Multi-provider operation will execute on ${configuredProvider} only.`);
18
+ if (unconfiguredProvider === 'github') {
19
+ suggestions.push('Configure GitHub by setting GITHUB_TOKEN environment variable to enable GitHub operations.');
20
+ suggestions.push('Visit https://github.com/settings/tokens to generate a personal access token.');
21
+ }
22
+ else {
23
+ suggestions.push('Configure Gitea by setting GITEA_URL and GITEA_TOKEN environment variables to enable Gitea operations.');
24
+ suggestions.push('Contact your Gitea administrator for API access token generation instructions.');
25
+ }
26
+ return { warnings, suggestions };
27
+ }
28
+ /**
29
+ * Handle scenarios where no providers are configured
30
+ */
31
+ static handleNoProvidersConfigured() {
32
+ const githubConfig = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGitHubError();
33
+ const giteaConfig = configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGiteaError();
34
+ return {
35
+ success: false,
36
+ error: {
37
+ code: 'NO_PROVIDERS_CONFIGURED',
38
+ message: 'No providers are configured for multi-provider operation',
39
+ type: 'configuration',
40
+ providers: {
41
+ github: {
42
+ configured: false,
43
+ error: 'GitHub provider is not configured',
44
+ configurationHelp: githubConfig
45
+ },
46
+ gitea: {
47
+ configured: false,
48
+ error: 'Gitea provider is not configured',
49
+ configurationHelp: giteaConfig
50
+ }
51
+ },
52
+ suggestions: [
53
+ 'Configure at least one provider (GitHub or Gitea) to use multi-provider operations',
54
+ 'For GitHub: Set GITHUB_TOKEN environment variable',
55
+ 'For Gitea: Set GITEA_URL and GITEA_TOKEN environment variables',
56
+ 'You can configure both providers to enable true multi-provider functionality'
57
+ ],
58
+ warnings: [
59
+ 'Multi-provider operations require at least one configured provider',
60
+ 'Consider configuring both providers for maximum flexibility'
61
+ ]
62
+ }
63
+ };
64
+ }
65
+ /**
66
+ * Handle partial failure scenarios
67
+ */
68
+ static handlePartialFailure(githubResult, giteaResult) {
69
+ const warnings = [];
70
+ const suggestions = [];
71
+ const errorDetails = {};
72
+ const githubSuccess = githubResult?.success ?? false;
73
+ const giteaSuccess = giteaResult?.success ?? false;
74
+ if (!githubSuccess && githubResult) {
75
+ errorDetails.github = githubResult.error || 'Unknown GitHub error';
76
+ warnings.push(`GitHub operation failed: ${githubResult.error}`);
77
+ // Provide specific suggestions based on error type
78
+ if (githubResult.error?.includes('401') || githubResult.error?.includes('authentication')) {
79
+ suggestions.push('Check your GitHub token permissions and expiration date');
80
+ suggestions.push('Regenerate GitHub token if necessary');
81
+ }
82
+ else if (githubResult.error?.includes('404')) {
83
+ suggestions.push('Verify the repository exists on GitHub and you have access');
84
+ }
85
+ else if (githubResult.error?.includes('403')) {
86
+ suggestions.push('Check GitHub API rate limits and token permissions');
87
+ }
88
+ }
89
+ if (!giteaSuccess && giteaResult) {
90
+ errorDetails.gitea = giteaResult.error || 'Unknown Gitea error';
91
+ warnings.push(`Gitea operation failed: ${giteaResult.error}`);
92
+ // Provide specific suggestions based on error type
93
+ if (giteaResult.error?.includes('401') || giteaResult.error?.includes('authentication')) {
94
+ suggestions.push('Check your Gitea token permissions and validity');
95
+ suggestions.push('Verify GITEA_URL is correct and accessible');
96
+ }
97
+ else if (giteaResult.error?.includes('404')) {
98
+ suggestions.push('Verify the repository exists on Gitea and you have access');
99
+ }
100
+ else if (giteaResult.error?.includes('connection')) {
101
+ suggestions.push('Check network connectivity to your Gitea instance');
102
+ suggestions.push('Verify GITEA_URL is correct and the server is running');
103
+ }
104
+ }
105
+ // General suggestions for partial failures
106
+ if (githubSuccess && !giteaSuccess) {
107
+ suggestions.push('Consider using provider="github" for this operation if Gitea issues persist');
108
+ }
109
+ else if (!githubSuccess && giteaSuccess) {
110
+ suggestions.push('Consider using provider="gitea" for this operation if GitHub issues persist');
111
+ }
112
+ return { warnings, suggestions, errorDetails };
113
+ }
114
+ /**
115
+ * Create comprehensive error response for multi-provider operations
116
+ */
117
+ static createMultiProviderErrorResponse(config, githubResult, giteaResult) {
118
+ const githubSuccess = githubResult?.success ?? false;
119
+ const giteaSuccess = giteaResult?.success ?? false;
120
+ // Handle complete failure (both providers failed)
121
+ if (!githubSuccess && !giteaSuccess) {
122
+ const partialFailure = this.handlePartialFailure(githubResult, giteaResult);
123
+ return {
124
+ success: false,
125
+ error: {
126
+ code: 'MULTI_PROVIDER_COMPLETE_FAILURE',
127
+ message: 'Operation failed on all configured providers',
128
+ type: 'operation',
129
+ providers: {
130
+ github: config.github.configured ? {
131
+ configured: true,
132
+ error: githubResult?.error || 'Unknown error'
133
+ } : {
134
+ configured: false,
135
+ error: 'GitHub provider is not configured',
136
+ configurationHelp: configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGitHubError()
137
+ },
138
+ gitea: config.gitea.configured ? {
139
+ configured: true,
140
+ error: giteaResult?.error || 'Unknown error'
141
+ } : {
142
+ configured: false,
143
+ error: 'Gitea provider is not configured',
144
+ configurationHelp: configuration_error_generator_js_1.ConfigurationErrorGenerator.generateGiteaError()
145
+ }
146
+ },
147
+ suggestions: [
148
+ 'Check provider configurations and network connectivity',
149
+ 'Verify API tokens are valid and have necessary permissions',
150
+ 'Try executing operations on individual providers to isolate issues',
151
+ ...partialFailure.suggestions
152
+ ],
153
+ warnings: partialFailure.warnings
154
+ }
155
+ };
156
+ }
157
+ // This shouldn't be called for successful operations, but handle gracefully
158
+ return {
159
+ success: false,
160
+ error: {
161
+ code: 'UNEXPECTED_ERROR_STATE',
162
+ message: 'Unexpected error state in multi-provider operation',
163
+ type: 'operation',
164
+ providers: {
165
+ github: { configured: config.github.configured },
166
+ gitea: { configured: config.gitea.configured }
167
+ },
168
+ suggestions: ['This appears to be an internal error. Please report this issue.'],
169
+ warnings: []
170
+ }
171
+ };
172
+ }
173
+ /**
174
+ * Generate warnings for missing provider configurations
175
+ */
176
+ static generateMissingProviderWarnings(config) {
177
+ const warnings = [];
178
+ if (!config.github.configured && !config.gitea.configured) {
179
+ warnings.push('No providers are configured. Multi-provider operations will fail.');
180
+ }
181
+ else if (config.totalConfigured === 1) {
182
+ const configuredProvider = config.github.configured ? 'GitHub' : 'Gitea';
183
+ const missingProvider = config.github.configured ? 'Gitea' : 'GitHub';
184
+ warnings.push(`Only ${configuredProvider} is configured. Multi-provider operations will execute on ${configuredProvider} only.`);
185
+ warnings.push(`Configure ${missingProvider} to enable true multi-provider functionality.`);
186
+ }
187
+ return warnings;
188
+ }
189
+ /**
190
+ * Provide configuration guidance for specific provider
191
+ */
192
+ static getProviderConfigurationGuidance(provider) {
193
+ if (provider === 'github') {
194
+ return {
195
+ steps: [
196
+ '1. Go to GitHub Settings > Developer settings > Personal access tokens',
197
+ '2. Click "Generate new token (classic)"',
198
+ '3. Select appropriate scopes (repo, user, etc.)',
199
+ '4. Copy the generated token',
200
+ '5. Set environment variable: GITHUB_TOKEN=your_token'
201
+ ],
202
+ environmentVariables: {
203
+ 'GITHUB_TOKEN': 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
204
+ 'GITHUB_USERNAME': 'your-username (optional)'
205
+ },
206
+ troubleshooting: [
207
+ 'Ensure token has not expired',
208
+ 'Verify token has necessary permissions (repo scope for repository operations)',
209
+ 'Check if your organization has SSO requirements',
210
+ 'Test token with: curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user'
211
+ ]
212
+ };
213
+ }
214
+ else {
215
+ return {
216
+ steps: [
217
+ '1. Log in to your Gitea instance',
218
+ '2. Go to Settings > Applications',
219
+ '3. Generate new access token',
220
+ '4. Copy the generated token',
221
+ '5. Set environment variables: GITEA_URL and GITEA_TOKEN'
222
+ ],
223
+ environmentVariables: {
224
+ 'GITEA_URL': 'https://your-gitea.com/api/v1',
225
+ 'GITEA_TOKEN': 'your_gitea_token_here',
226
+ 'GITEA_USERNAME': 'your-username (optional)'
227
+ },
228
+ troubleshooting: [
229
+ 'Ensure GITEA_URL includes the full API path (/api/v1)',
230
+ 'Verify your Gitea instance is accessible',
231
+ 'Check if token has necessary permissions',
232
+ 'Test connection with: curl -H "Authorization: token YOUR_TOKEN" YOUR_GITEA_URL/user'
233
+ ]
234
+ };
235
+ }
236
+ }
237
+ /**
238
+ * Format error message for display
239
+ */
240
+ static formatMultiProviderError(error) {
241
+ let message = `${error.error.message}\n\n`;
242
+ // Add provider status
243
+ message += 'Provider Status:\n';
244
+ if (error.error.providers.github) {
245
+ const github = error.error.providers.github;
246
+ message += ` GitHub: ${github.configured ? 'Configured' : 'Not Configured'}`;
247
+ if (github.error)
248
+ message += ` (${github.error})`;
249
+ message += '\n';
250
+ }
251
+ if (error.error.providers.gitea) {
252
+ const gitea = error.error.providers.gitea;
253
+ message += ` Gitea: ${gitea.configured ? 'Configured' : 'Not Configured'}`;
254
+ if (gitea.error)
255
+ message += ` (${gitea.error})`;
256
+ message += '\n';
257
+ }
258
+ // Add suggestions
259
+ if (error.error.suggestions.length > 0) {
260
+ message += '\nSuggestions:\n';
261
+ error.error.suggestions.forEach((suggestion, index) => {
262
+ message += ` ${index + 1}. ${suggestion}\n`;
263
+ });
264
+ }
265
+ // Add warnings
266
+ if (error.error.warnings.length > 0) {
267
+ message += '\nWarnings:\n';
268
+ error.error.warnings.forEach(warning => {
269
+ message += ` ⚠️ ${warning}\n`;
270
+ });
271
+ }
272
+ return message.trim();
273
+ }
274
+ }
275
+ exports.MultiProviderErrorHandler = MultiProviderErrorHandler;
276
+ //# sourceMappingURL=multi-provider-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-provider-error-handler.js","sourceRoot":"","sources":["../../src/utils/multi-provider-error-handler.ts"],"names":[],"mappings":"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"}