@andrebuzeli/git-mcp 5.0.4 → 5.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +487 -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 +641 -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 +280 -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 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +439 -262
- 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 +682 -222
- 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 +326 -0
- package/dist/utils/git-command-executor.d.ts.map +1 -0
- package/dist/utils/git-command-executor.js +877 -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 +464 -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 +234 -459
- 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
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Response Formatter
|
|
4
|
+
*
|
|
5
|
+
* Utility for formatting consistent responses across all Git MCP tools.
|
|
6
|
+
* Provides standardized success/error response formats with metadata.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.responseFormatter = exports.ResponseFormatter = void 0;
|
|
10
|
+
class ResponseFormatter {
|
|
11
|
+
defaultOptions = {
|
|
12
|
+
includeMetadata: true,
|
|
13
|
+
includeTimestamp: true,
|
|
14
|
+
includeExecutionTime: true,
|
|
15
|
+
maxDataSize: 10000, // 10KB
|
|
16
|
+
truncateData: true
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Format successful response
|
|
20
|
+
*/
|
|
21
|
+
success(data, metadata, options = {}) {
|
|
22
|
+
const mergedOptions = { ...this.defaultOptions, ...options };
|
|
23
|
+
// Process data size if needed
|
|
24
|
+
let processedData = data;
|
|
25
|
+
if (mergedOptions.truncateData && mergedOptions.maxDataSize) {
|
|
26
|
+
processedData = this.truncateDataIfNeeded(data, mergedOptions.maxDataSize);
|
|
27
|
+
}
|
|
28
|
+
const result = {
|
|
29
|
+
success: true,
|
|
30
|
+
data: processedData
|
|
31
|
+
};
|
|
32
|
+
if (mergedOptions.includeMetadata) {
|
|
33
|
+
result.metadata = {
|
|
34
|
+
operation: metadata.operation,
|
|
35
|
+
timestamp: mergedOptions.includeTimestamp ? new Date().toISOString() : '',
|
|
36
|
+
executionTime: mergedOptions.includeExecutionTime ? (metadata.executionTime || 0) : 0
|
|
37
|
+
};
|
|
38
|
+
if (metadata.provider)
|
|
39
|
+
result.metadata.provider = metadata.provider;
|
|
40
|
+
if (metadata.toolName)
|
|
41
|
+
result.metadata.toolName = metadata.toolName;
|
|
42
|
+
if (metadata.projectPath)
|
|
43
|
+
result.metadata.projectPath = metadata.projectPath;
|
|
44
|
+
if (metadata.repositoryName)
|
|
45
|
+
result.metadata.repositoryName = metadata.repositoryName;
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Format error response
|
|
51
|
+
*/
|
|
52
|
+
error(code, message, details, metadata, options = {}) {
|
|
53
|
+
const mergedOptions = { ...this.defaultOptions, ...options };
|
|
54
|
+
const result = {
|
|
55
|
+
success: false,
|
|
56
|
+
error: {
|
|
57
|
+
code,
|
|
58
|
+
message,
|
|
59
|
+
details,
|
|
60
|
+
suggestions: this.generateSuggestions(code, message, details)
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
// Add configuration guide for specific error types
|
|
64
|
+
const configGuide = this.generateConfigurationGuide(code, details);
|
|
65
|
+
if (configGuide) {
|
|
66
|
+
result.error.configurationGuide = configGuide;
|
|
67
|
+
}
|
|
68
|
+
if (mergedOptions.includeMetadata && metadata) {
|
|
69
|
+
result.metadata = {
|
|
70
|
+
operation: metadata.operation,
|
|
71
|
+
timestamp: mergedOptions.includeTimestamp ? new Date().toISOString() : '',
|
|
72
|
+
executionTime: mergedOptions.includeExecutionTime ? (metadata.executionTime || 0) : 0
|
|
73
|
+
};
|
|
74
|
+
if (metadata.provider)
|
|
75
|
+
result.metadata.provider = metadata.provider;
|
|
76
|
+
if (metadata.toolName)
|
|
77
|
+
result.metadata.toolName = metadata.toolName;
|
|
78
|
+
if (metadata.projectPath)
|
|
79
|
+
result.metadata.projectPath = metadata.projectPath;
|
|
80
|
+
if (metadata.repositoryName)
|
|
81
|
+
result.metadata.repositoryName = metadata.repositoryName;
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Format validation error response
|
|
87
|
+
*/
|
|
88
|
+
validationError(parameter, expectedFormat, actualValue, metadata) {
|
|
89
|
+
return this.error('VALIDATION_ERROR', `Invalid parameter: ${parameter}`, {
|
|
90
|
+
parameter,
|
|
91
|
+
expectedFormat,
|
|
92
|
+
actualValue,
|
|
93
|
+
example: this.generateParameterExample(parameter, expectedFormat)
|
|
94
|
+
}, metadata);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Format configuration error response
|
|
98
|
+
*/
|
|
99
|
+
configurationError(missingConfig, provider, metadata) {
|
|
100
|
+
const providerText = provider ? ` for ${provider}` : '';
|
|
101
|
+
return this.error('CONFIGURATION_ERROR', `Missing required configuration${providerText}`, {
|
|
102
|
+
missingConfig,
|
|
103
|
+
provider
|
|
104
|
+
}, metadata);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Format Git error response
|
|
108
|
+
*/
|
|
109
|
+
gitError(gitErrorType, gitMessage, command, metadata) {
|
|
110
|
+
return this.error(`GIT_${gitErrorType.toUpperCase()}`, `Git error: ${gitMessage}`, {
|
|
111
|
+
gitErrorType,
|
|
112
|
+
command,
|
|
113
|
+
workingDirectory: metadata?.projectPath
|
|
114
|
+
}, metadata);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Format provider error response
|
|
118
|
+
*/
|
|
119
|
+
providerError(provider, apiError, statusCode, metadata) {
|
|
120
|
+
return this.error('PROVIDER_ERROR', `${provider} API error: ${apiError}`, {
|
|
121
|
+
provider,
|
|
122
|
+
statusCode,
|
|
123
|
+
apiError
|
|
124
|
+
}, metadata);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Format operation not supported error
|
|
128
|
+
*/
|
|
129
|
+
operationNotSupported(operation, supportedOperations, toolName) {
|
|
130
|
+
return this.error('OPERATION_NOT_SUPPORTED', `Operation '${operation}' is not supported`, {
|
|
131
|
+
operation,
|
|
132
|
+
supportedOperations,
|
|
133
|
+
toolName
|
|
134
|
+
}, {
|
|
135
|
+
operation: 'validate_operation',
|
|
136
|
+
toolName
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Format partial success response (for multi-provider operations)
|
|
141
|
+
*/
|
|
142
|
+
partialSuccess(successResults, failedResults, metadata) {
|
|
143
|
+
const totalProviders = metadata.providers.length;
|
|
144
|
+
const successCount = successResults.length;
|
|
145
|
+
const failureCount = failedResults.length;
|
|
146
|
+
return {
|
|
147
|
+
success: successCount > 0, // Partial success if at least one succeeded
|
|
148
|
+
data: {
|
|
149
|
+
results: successResults,
|
|
150
|
+
summary: {
|
|
151
|
+
total: totalProviders,
|
|
152
|
+
successful: successCount,
|
|
153
|
+
failed: failureCount,
|
|
154
|
+
successRate: Math.round((successCount / totalProviders) * 100)
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
error: failureCount > 0 ? {
|
|
158
|
+
code: 'PARTIAL_FAILURE',
|
|
159
|
+
message: `${failureCount} out of ${totalProviders} providers failed`,
|
|
160
|
+
details: {
|
|
161
|
+
failedResults,
|
|
162
|
+
failedProviders: failedResults.map((r) => r.provider)
|
|
163
|
+
},
|
|
164
|
+
suggestions: [
|
|
165
|
+
'Check failed provider configurations',
|
|
166
|
+
'Verify network connectivity',
|
|
167
|
+
'Review provider-specific error messages'
|
|
168
|
+
]
|
|
169
|
+
} : undefined,
|
|
170
|
+
metadata: {
|
|
171
|
+
operation: metadata.operation,
|
|
172
|
+
timestamp: new Date().toISOString(),
|
|
173
|
+
executionTime: metadata.executionTime || 0,
|
|
174
|
+
toolName: metadata.toolName,
|
|
175
|
+
provider: metadata.providers.join(', ')
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Format list response with pagination info
|
|
181
|
+
*/
|
|
182
|
+
listResponse(items, pagination, metadata) {
|
|
183
|
+
const data = {
|
|
184
|
+
items,
|
|
185
|
+
count: items.length
|
|
186
|
+
};
|
|
187
|
+
if (pagination) {
|
|
188
|
+
data.pagination = pagination;
|
|
189
|
+
}
|
|
190
|
+
return this.success(data, metadata || { operation: 'list' });
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Format status response
|
|
194
|
+
*/
|
|
195
|
+
statusResponse(status, details, metadata) {
|
|
196
|
+
return this.success({
|
|
197
|
+
status,
|
|
198
|
+
details,
|
|
199
|
+
timestamp: new Date().toISOString()
|
|
200
|
+
}, metadata || { operation: 'status' });
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Generate suggestions based on error code and message
|
|
204
|
+
*/
|
|
205
|
+
generateSuggestions(code, message, details) {
|
|
206
|
+
const suggestions = [];
|
|
207
|
+
switch (code) {
|
|
208
|
+
case 'VALIDATION_ERROR':
|
|
209
|
+
suggestions.push('Check parameter format and try again');
|
|
210
|
+
suggestions.push('Refer to tool documentation for parameter examples');
|
|
211
|
+
break;
|
|
212
|
+
case 'CONFIGURATION_ERROR':
|
|
213
|
+
suggestions.push('Set required environment variables');
|
|
214
|
+
suggestions.push('Check configuration guide in error details');
|
|
215
|
+
break;
|
|
216
|
+
case 'GIT_NOT_A_REPOSITORY':
|
|
217
|
+
suggestions.push('Initialize Git repository with: git init');
|
|
218
|
+
suggestions.push('Ensure you are in the correct directory');
|
|
219
|
+
break;
|
|
220
|
+
case 'GIT_COMMAND_NOT_FOUND':
|
|
221
|
+
suggestions.push('Install Git from https://git-scm.com/');
|
|
222
|
+
suggestions.push('Ensure Git is in your system PATH');
|
|
223
|
+
break;
|
|
224
|
+
case 'PROVIDER_ERROR':
|
|
225
|
+
suggestions.push('Check API credentials and permissions');
|
|
226
|
+
suggestions.push('Verify network connectivity');
|
|
227
|
+
if (details?.statusCode === 401) {
|
|
228
|
+
suggestions.push('Verify authentication token is valid');
|
|
229
|
+
}
|
|
230
|
+
if (details?.statusCode === 403) {
|
|
231
|
+
suggestions.push('Check repository permissions');
|
|
232
|
+
}
|
|
233
|
+
if (details?.statusCode === 404) {
|
|
234
|
+
suggestions.push('Verify repository exists and is accessible');
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
case 'OPERATION_NOT_SUPPORTED':
|
|
238
|
+
suggestions.push('Use one of the supported operations listed in details');
|
|
239
|
+
suggestions.push('Check tool documentation for available operations');
|
|
240
|
+
break;
|
|
241
|
+
default:
|
|
242
|
+
suggestions.push('Check error details for more information');
|
|
243
|
+
suggestions.push('Retry the operation after addressing the issue');
|
|
244
|
+
}
|
|
245
|
+
return suggestions;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Generate configuration guide for specific errors
|
|
249
|
+
*/
|
|
250
|
+
generateConfigurationGuide(code, details) {
|
|
251
|
+
if (code === 'CONFIGURATION_ERROR') {
|
|
252
|
+
const provider = details?.provider;
|
|
253
|
+
if (provider === 'github') {
|
|
254
|
+
return {
|
|
255
|
+
requiredEnvVars: ['GITHUB_TOKEN', 'GITHUB_USERNAME'],
|
|
256
|
+
exampleConfig: {
|
|
257
|
+
GITHUB_TOKEN: 'ghp_xxxxxxxxxxxxxxxxxxxx',
|
|
258
|
+
GITHUB_USERNAME: 'your-github-username'
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
if (provider === 'gitea') {
|
|
263
|
+
return {
|
|
264
|
+
requiredEnvVars: ['GITEA_URL', 'GITEA_TOKEN', 'GITEA_USERNAME'],
|
|
265
|
+
exampleConfig: {
|
|
266
|
+
GITEA_URL: 'https://gitea.example.com',
|
|
267
|
+
GITEA_TOKEN: 'your-gitea-token',
|
|
268
|
+
GITEA_USERNAME: 'your-gitea-username'
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
// Multi-provider configuration
|
|
273
|
+
return {
|
|
274
|
+
requiredEnvVars: [
|
|
275
|
+
'GITHUB_TOKEN', 'GITHUB_USERNAME',
|
|
276
|
+
'GITEA_URL', 'GITEA_TOKEN', 'GITEA_USERNAME'
|
|
277
|
+
],
|
|
278
|
+
exampleConfig: {
|
|
279
|
+
github: {
|
|
280
|
+
GITHUB_TOKEN: 'ghp_xxxxxxxxxxxxxxxxxxxx',
|
|
281
|
+
GITHUB_USERNAME: 'your-github-username'
|
|
282
|
+
},
|
|
283
|
+
gitea: {
|
|
284
|
+
GITEA_URL: 'https://gitea.example.com',
|
|
285
|
+
GITEA_TOKEN: 'your-gitea-token',
|
|
286
|
+
GITEA_USERNAME: 'your-gitea-username'
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Generate parameter example based on parameter name and expected format
|
|
295
|
+
*/
|
|
296
|
+
generateParameterExample(parameter, expectedFormat) {
|
|
297
|
+
const examples = {
|
|
298
|
+
projectPath: '/path/to/your/project',
|
|
299
|
+
provider: 'github | gitea | both',
|
|
300
|
+
action: 'create | list | get | update | delete',
|
|
301
|
+
repositoryName: 'my-repository',
|
|
302
|
+
branchName: 'feature/new-feature',
|
|
303
|
+
commitMessage: 'Add new feature',
|
|
304
|
+
tagName: 'v1.0.0',
|
|
305
|
+
issueNumber: 123,
|
|
306
|
+
pullRequestNumber: 456,
|
|
307
|
+
fileName: 'src/index.ts',
|
|
308
|
+
content: 'file content here',
|
|
309
|
+
title: 'Issue or PR title',
|
|
310
|
+
description: 'Detailed description',
|
|
311
|
+
labels: ['bug', 'enhancement'],
|
|
312
|
+
assignees: ['username1', 'username2']
|
|
313
|
+
};
|
|
314
|
+
return examples[parameter] || `<${expectedFormat}>`;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Truncate data if it exceeds maximum size
|
|
318
|
+
*/
|
|
319
|
+
truncateDataIfNeeded(data, maxSize) {
|
|
320
|
+
const dataString = JSON.stringify(data);
|
|
321
|
+
if (dataString.length <= maxSize) {
|
|
322
|
+
return data;
|
|
323
|
+
}
|
|
324
|
+
// If data is too large, truncate and add indicator
|
|
325
|
+
const truncatedString = dataString.substring(0, maxSize - 100);
|
|
326
|
+
try {
|
|
327
|
+
// Try to parse truncated JSON (might be invalid)
|
|
328
|
+
return JSON.parse(truncatedString);
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
// If truncated JSON is invalid, return summary
|
|
332
|
+
return {
|
|
333
|
+
_truncated: true,
|
|
334
|
+
_originalSize: dataString.length,
|
|
335
|
+
_maxSize: maxSize,
|
|
336
|
+
_summary: this.generateDataSummary(data),
|
|
337
|
+
_note: 'Data was truncated due to size limits'
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Generate summary of data structure
|
|
343
|
+
*/
|
|
344
|
+
generateDataSummary(data) {
|
|
345
|
+
if (Array.isArray(data)) {
|
|
346
|
+
return {
|
|
347
|
+
type: 'array',
|
|
348
|
+
length: data.length,
|
|
349
|
+
sampleItems: data.slice(0, 3),
|
|
350
|
+
hasMore: data.length > 3
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
if (typeof data === 'object' && data !== null) {
|
|
354
|
+
const keys = Object.keys(data);
|
|
355
|
+
const summary = {
|
|
356
|
+
type: 'object',
|
|
357
|
+
keys: keys.slice(0, 10),
|
|
358
|
+
hasMoreKeys: keys.length > 10
|
|
359
|
+
};
|
|
360
|
+
// Include sample values for first few keys
|
|
361
|
+
for (let i = 0; i < Math.min(3, keys.length); i++) {
|
|
362
|
+
const key = keys[i];
|
|
363
|
+
summary[key] = typeof data[key] === 'object'
|
|
364
|
+
? `[${typeof data[key]}]`
|
|
365
|
+
: data[key];
|
|
366
|
+
}
|
|
367
|
+
return summary;
|
|
368
|
+
}
|
|
369
|
+
return {
|
|
370
|
+
type: typeof data,
|
|
371
|
+
value: String(data).substring(0, 100)
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
exports.ResponseFormatter = ResponseFormatter;
|
|
376
|
+
// Export singleton instance
|
|
377
|
+
exports.responseFormatter = new ResponseFormatter();
|
|
378
|
+
//# sourceMappingURL=response-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../src/utils/response-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple retry helper with exponential backoff.
|
|
3
|
+
*/
|
|
4
|
+
export interface RetryOptions {
|
|
5
|
+
retries?: number;
|
|
6
|
+
factor?: number;
|
|
7
|
+
minTimeout?: number;
|
|
8
|
+
maxTimeout?: number;
|
|
9
|
+
retryOn?: (err: any) => boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function retry<T>(fn: () => Promise<T>, opts?: RetryOptions): Promise<T>;
|
|
12
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACjC;AAED,wBAAsB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CA0BxF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.retry = retry;
|
|
4
|
+
async function retry(fn, opts = {}) {
|
|
5
|
+
const retries = typeof opts.retries === 'number' ? opts.retries : 3;
|
|
6
|
+
const factor = opts.factor || 2;
|
|
7
|
+
const minTimeout = opts.minTimeout || 200;
|
|
8
|
+
const maxTimeout = opts.maxTimeout || 5000;
|
|
9
|
+
const retryOn = opts.retryOn || ((err) => true);
|
|
10
|
+
let attempt = 0;
|
|
11
|
+
let lastError = null;
|
|
12
|
+
while (attempt <= retries) {
|
|
13
|
+
try {
|
|
14
|
+
return await fn();
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
lastError = err;
|
|
18
|
+
if (attempt === retries || !retryOn(err)) {
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
const wait = Math.min(maxTimeout, Math.round(minTimeout * Math.pow(factor, attempt)));
|
|
22
|
+
await new Promise((resolve) => setTimeout(resolve, wait));
|
|
23
|
+
attempt += 1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
throw lastError;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;AAWA,sBA0BC;AA1BM,KAAK,UAAU,KAAK,CAAI,EAAoB,EAAE,OAAqB,EAAE;IAC1E,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAErD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAQ,IAAI,CAAC;IAE1B,OAAO,OAAO,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAChB,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACtF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -1,145 +1,79 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Controller
|
|
3
|
-
*
|
|
2
|
+
* Terminal Controller
|
|
3
|
+
*
|
|
4
|
+
* Handles terminal command execution with proper error handling,
|
|
5
|
+
* timeout management, and cross-platform compatibility.
|
|
4
6
|
*/
|
|
5
|
-
export interface
|
|
7
|
+
export interface CommandResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
stdout: string;
|
|
10
|
+
stderr: string;
|
|
11
|
+
exitCode: number;
|
|
12
|
+
executionTime: number;
|
|
6
13
|
command: string;
|
|
7
|
-
is_background: boolean;
|
|
8
|
-
explanation: string;
|
|
9
14
|
}
|
|
10
|
-
export interface
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
export interface CommandOptions {
|
|
16
|
+
cwd?: string;
|
|
17
|
+
timeout?: number;
|
|
18
|
+
env?: Record<string, string>;
|
|
19
|
+
shell?: boolean;
|
|
20
|
+
encoding?: BufferEncoding;
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
export declare
|
|
72
|
-
/**
|
|
73
|
-
* Faz pull do repositório remoto - 100% auto-suficiente
|
|
74
|
-
*
|
|
75
|
-
* @param projectPath Caminho do projeto
|
|
76
|
-
* @param branch Branch para fazer pull
|
|
77
|
-
* @param remote Remote (padrão: origin)
|
|
78
|
-
* @returns Promise<TerminalResult>
|
|
79
|
-
*/
|
|
80
|
-
export declare function gitPull(projectPath: string, branch?: string, remote?: string): Promise<TerminalResult>;
|
|
81
|
-
/**
|
|
82
|
-
* Inicializa um repositório Git
|
|
83
|
-
*
|
|
84
|
-
* @param projectPath Caminho do projeto
|
|
85
|
-
* @param branch Branch inicial (padrão: main)
|
|
86
|
-
* @returns Promise<TerminalResult>
|
|
87
|
-
*/
|
|
88
|
-
export declare function gitInit(projectPath: string, branch?: string): Promise<TerminalResult>;
|
|
89
|
-
/**
|
|
90
|
-
* Obtém o branch atual
|
|
91
|
-
*
|
|
92
|
-
* @param projectPath Caminho do projeto
|
|
93
|
-
* @returns Promise<string>
|
|
94
|
-
*/
|
|
95
|
-
export declare function getCurrentBranch(projectPath: string): Promise<string>;
|
|
96
|
-
/**
|
|
97
|
-
* Obtém os remotes configurados
|
|
98
|
-
*
|
|
99
|
-
* @param projectPath Caminho do projeto
|
|
100
|
-
* @returns Promise<string>
|
|
101
|
-
*/
|
|
102
|
-
export declare function getRemotes(projectPath: string): Promise<string>;
|
|
103
|
-
/**
|
|
104
|
-
* Obtém o último commit
|
|
105
|
-
*
|
|
106
|
-
* @param projectPath Caminho do projeto
|
|
107
|
-
* @returns Promise<string>
|
|
108
|
-
*/
|
|
109
|
-
export declare function getLastCommit(projectPath: string): Promise<string>;
|
|
110
|
-
/**
|
|
111
|
-
* Obtém o log do Git
|
|
112
|
-
*
|
|
113
|
-
* @param projectPath Caminho do projeto
|
|
114
|
-
* @param options Opções do git log
|
|
115
|
-
* @returns Promise<string>
|
|
116
|
-
*/
|
|
117
|
-
export declare function getGitLog(projectPath: string, options?: string[]): Promise<string>;
|
|
118
|
-
/**
|
|
119
|
-
* Obtém o histórico de um arquivo específico
|
|
120
|
-
*
|
|
121
|
-
* @param projectPath Caminho do projeto
|
|
122
|
-
* @param filePath Caminho do arquivo
|
|
123
|
-
* @param options Opções do git log
|
|
124
|
-
* @returns Promise<string>
|
|
125
|
-
*/
|
|
126
|
-
export declare function getFileHistory(projectPath: string, filePath: string, options?: string[]): Promise<string>;
|
|
127
|
-
/**
|
|
128
|
-
* Obtém o histórico de uma branch
|
|
129
|
-
*
|
|
130
|
-
* @param projectPath Caminho do projeto
|
|
131
|
-
* @param branch Branch para análise
|
|
132
|
-
* @param options Opções do git log
|
|
133
|
-
* @returns Promise<string>
|
|
134
|
-
*/
|
|
135
|
-
export declare function getBranchHistory(projectPath: string, branch: string, options?: string[]): Promise<string>;
|
|
136
|
-
/**
|
|
137
|
-
* Adiciona um remote
|
|
138
|
-
*
|
|
139
|
-
* @param projectPath Caminho do projeto
|
|
140
|
-
* @param name Nome do remote
|
|
141
|
-
* @param url URL do remote
|
|
142
|
-
* @returns Promise<TerminalResult>
|
|
143
|
-
*/
|
|
144
|
-
export declare function addRemote(projectPath: string, name: string, url: string): Promise<TerminalResult>;
|
|
22
|
+
export declare class TerminalController {
|
|
23
|
+
private defaultTimeout;
|
|
24
|
+
private defaultOptions;
|
|
25
|
+
/**
|
|
26
|
+
* Execute command with promise-based interface
|
|
27
|
+
*/
|
|
28
|
+
executeCommand(command: string, args?: string[], options?: CommandOptions): Promise<CommandResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Execute command in specific directory
|
|
31
|
+
*/
|
|
32
|
+
executeInDirectory(directory: string, command: string, args?: string[], options?: CommandOptions): Promise<CommandResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if command exists in system PATH
|
|
35
|
+
*/
|
|
36
|
+
commandExists(command: string): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Get current working directory
|
|
39
|
+
*/
|
|
40
|
+
getCurrentDirectory(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Change working directory for subsequent commands
|
|
43
|
+
*/
|
|
44
|
+
setWorkingDirectory(directory: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Execute multiple commands in sequence
|
|
47
|
+
*/
|
|
48
|
+
executeSequence(commands: Array<{
|
|
49
|
+
command: string;
|
|
50
|
+
args?: string[];
|
|
51
|
+
options?: CommandOptions;
|
|
52
|
+
}>, stopOnError?: boolean): Promise<CommandResult[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Execute command with real-time output streaming
|
|
55
|
+
*/
|
|
56
|
+
executeWithStreaming(command: string, args?: string[], options?: CommandOptions & {
|
|
57
|
+
onStdout?: (data: string) => void;
|
|
58
|
+
onStderr?: (data: string) => void;
|
|
59
|
+
}): Promise<CommandResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Search for text in files using grep or findstr
|
|
62
|
+
*/
|
|
63
|
+
searchInFiles(directory: string, query: string, options?: {
|
|
64
|
+
caseSensitive?: boolean;
|
|
65
|
+
filePattern?: string;
|
|
66
|
+
maxResults?: number;
|
|
67
|
+
}): Promise<CommandResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Validate directory exists and is accessible
|
|
70
|
+
*/
|
|
71
|
+
validateDirectory(directory: string): Promise<{
|
|
72
|
+
exists: boolean;
|
|
73
|
+
accessible: boolean;
|
|
74
|
+
isDirectory: boolean;
|
|
75
|
+
error?: string;
|
|
76
|
+
}>;
|
|
77
|
+
}
|
|
78
|
+
export declare const terminalController: TerminalController;
|
|
145
79
|
//# sourceMappingURL=terminal-controller.d.ts.map
|