@andrebuzeli/git-mcp 4.0.20 → 4.0.21
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/dist/config.d.ts +7 -239
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -221
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +11 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -16
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +1 -69
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +150 -711
- package/dist/server.js.map +1 -1
- package/dist/tools/git-analytics.d.ts +1 -0
- package/dist/tools/git-analytics.d.ts.map +1 -1
- package/dist/tools/git-analytics.js +18 -7
- package/dist/tools/git-analytics.js.map +1 -1
- package/dist/tools/git-archive.d.ts +2 -149
- package/dist/tools/git-archive.d.ts.map +1 -1
- package/dist/tools/git-archive.js +5 -222
- package/dist/tools/git-archive.js.map +1 -1
- package/dist/tools/git-backup.d.ts +1 -198
- package/dist/tools/git-backup.d.ts.map +1 -1
- package/dist/tools/git-backup.js +4 -805
- package/dist/tools/git-backup.js.map +1 -1
- package/dist/tools/git-branches.d.ts +1 -158
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +4 -539
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-config.d.ts +2 -124
- package/dist/tools/git-config.d.ts.map +1 -1
- package/dist/tools/git-config.js +5 -263
- package/dist/tools/git-config.js.map +1 -1
- package/dist/tools/git-files.d.ts +2 -115
- package/dist/tools/git-files.d.ts.map +1 -1
- package/dist/tools/git-files.js +161 -407
- package/dist/tools/git-files.js.map +1 -1
- package/dist/tools/git-issues.d.ts +1 -214
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +4 -678
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-monitor.d.ts +1 -143
- package/dist/tools/git-monitor.d.ts.map +1 -1
- package/dist/tools/git-monitor.js +4 -738
- package/dist/tools/git-monitor.js.map +1 -1
- package/dist/tools/git-packages.d.ts +2 -91
- package/dist/tools/git-packages.d.ts.map +1 -1
- package/dist/tools/git-packages.js +5 -258
- package/dist/tools/git-packages.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +1 -63
- package/dist/tools/git-pulls.d.ts.map +1 -1
- package/dist/tools/git-pulls.js +4 -77
- package/dist/tools/git-pulls.js.map +1 -1
- package/dist/tools/git-release.d.ts +1 -169
- package/dist/tools/git-release.d.ts.map +1 -1
- package/dist/tools/git-release.js +4 -611
- package/dist/tools/git-release.js.map +1 -1
- package/dist/tools/git-remote.d.ts +1 -153
- package/dist/tools/git-remote.d.ts.map +1 -1
- package/dist/tools/git-remote.js +4 -555
- package/dist/tools/git-remote.js.map +1 -1
- package/dist/tools/git-reset.d.ts +1 -157
- package/dist/tools/git-reset.d.ts.map +1 -1
- package/dist/tools/git-reset.js +4 -597
- package/dist/tools/git-reset.js.map +1 -1
- package/dist/tools/git-stash.d.ts +1 -161
- package/dist/tools/git-stash.d.ts.map +1 -1
- package/dist/tools/git-stash.js +4 -640
- package/dist/tools/git-stash.js.map +1 -1
- package/dist/tools/git-sync.d.ts +1 -0
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +13 -7
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +1 -162
- package/dist/tools/git-tags.d.ts.map +1 -1
- package/dist/tools/git-tags.js +4 -549
- package/dist/tools/git-tags.js.map +1 -1
- package/dist/tools/git-workflow.d.ts +3 -96
- package/dist/tools/git-workflow.d.ts.map +1 -1
- package/dist/tools/git-workflow.js +287 -314
- package/dist/tools/git-workflow.js.map +1 -1
- package/package.json +3 -3
- package/dist/server-minimal.d.ts +0 -8
- package/dist/server-minimal.d.ts.map +0 -1
- package/dist/server-minimal.js +0 -218
- package/dist/server-minimal.js.map +0 -1
package/dist/tools/git-remote.js
CHANGED
|
@@ -1,565 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.gitRemoteTool = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
4
|
const auto_detection_js_1 = require("../utils/auto-detection.js");
|
|
6
|
-
const error_handler_js_1 = require("../utils/error-handler.js");
|
|
7
|
-
const git_operations_js_1 = require("../utils/git-operations.js");
|
|
8
|
-
/**
|
|
9
|
-
* Tool: git-remote
|
|
10
|
-
*
|
|
11
|
-
* GERENCIAMENTO DE REMOTOS UNIFICADO
|
|
12
|
-
* Remotes com auto-configuração, multi-provider e validação inteligente
|
|
13
|
-
*
|
|
14
|
-
* DESIGNED FOR: Programador individual autônomo
|
|
15
|
-
* PHILOSOPHY: Remotes transparentes e auto-gerenciados
|
|
16
|
-
*/
|
|
17
|
-
const GitRemoteInputSchema = zod_1.z.discriminatedUnion('action', [
|
|
18
|
-
// ADD REMOTE - Adição inteligente
|
|
19
|
-
zod_1.z.object({
|
|
20
|
-
action: zod_1.z.literal('add'),
|
|
21
|
-
projectPath: zod_1.z.string(),
|
|
22
|
-
name: zod_1.z.string(),
|
|
23
|
-
url: zod_1.z.string(),
|
|
24
|
-
provider: zod_1.z.enum(['gitea', 'github']).optional() // Auto-detect se não fornecido
|
|
25
|
-
}),
|
|
26
|
-
// REMOVE REMOTE - Remoção segura
|
|
27
|
-
zod_1.z.object({
|
|
28
|
-
action: zod_1.z.literal('remove'),
|
|
29
|
-
projectPath: zod_1.z.string(),
|
|
30
|
-
name: zod_1.z.string(),
|
|
31
|
-
force: zod_1.z.boolean().default(false)
|
|
32
|
-
}),
|
|
33
|
-
// RENAME REMOTE - Renomeação
|
|
34
|
-
zod_1.z.object({
|
|
35
|
-
action: zod_1.z.literal('rename'),
|
|
36
|
-
projectPath: zod_1.z.string(),
|
|
37
|
-
oldName: zod_1.z.string(),
|
|
38
|
-
newName: zod_1.z.string()
|
|
39
|
-
}),
|
|
40
|
-
// SHOW REMOTE - Informações detalhadas
|
|
41
|
-
zod_1.z.object({
|
|
42
|
-
action: zod_1.z.literal('show'),
|
|
43
|
-
projectPath: zod_1.z.string(),
|
|
44
|
-
name: zod_1.z.string().optional(), // Todos se não especificado
|
|
45
|
-
detailed: zod_1.z.boolean().default(false)
|
|
46
|
-
}),
|
|
47
|
-
// SET-URL REMOTE - Atualização de URL
|
|
48
|
-
zod_1.z.object({
|
|
49
|
-
action: zod_1.z.literal('set-url'),
|
|
50
|
-
projectPath: zod_1.z.string(),
|
|
51
|
-
name: zod_1.z.string(),
|
|
52
|
-
url: zod_1.z.string(),
|
|
53
|
-
push: zod_1.z.boolean().default(false) // Para push URL diferente
|
|
54
|
-
}),
|
|
55
|
-
// PRUNE REMOTE - Limpeza de referências
|
|
56
|
-
zod_1.z.object({
|
|
57
|
-
action: zod_1.z.literal('prune'),
|
|
58
|
-
projectPath: zod_1.z.string(),
|
|
59
|
-
name: zod_1.z.string(),
|
|
60
|
-
dryRun: zod_1.z.boolean().default(false)
|
|
61
|
-
})
|
|
62
|
-
]);
|
|
63
|
-
/**
|
|
64
|
-
* Smart Remote Manager
|
|
65
|
-
* Gerencia operações de remotos com inteligência
|
|
66
|
-
*/
|
|
67
|
-
class SmartRemoteManager {
|
|
68
|
-
static async getAllRemotes(projectPath) {
|
|
69
|
-
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
70
|
-
try {
|
|
71
|
-
const result = await gitOps.runCommand('git', ['remote', '-v']);
|
|
72
|
-
if (!result.success) {
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
const lines = result.output.trim().split('\n');
|
|
76
|
-
const remotes = {};
|
|
77
|
-
lines.forEach(line => {
|
|
78
|
-
const match = line.match(/^(\S+)\s+(\S+)\s+\((fetch|push)\)$/);
|
|
79
|
-
if (match) {
|
|
80
|
-
const [_, name, url, type] = match;
|
|
81
|
-
if (!remotes[name]) {
|
|
82
|
-
remotes[name] = { name, urls: {} };
|
|
83
|
-
}
|
|
84
|
-
remotes[name].urls[type] = url;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
return Object.values(remotes);
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
return [];
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
static async getRemoteInfo(projectPath, name) {
|
|
94
|
-
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
95
|
-
try {
|
|
96
|
-
// Get basic info
|
|
97
|
-
const showResult = await gitOps.runCommand('git', ['remote', 'show', name]);
|
|
98
|
-
if (!showResult.success) {
|
|
99
|
-
return { name, exists: false };
|
|
100
|
-
}
|
|
101
|
-
// Get URLs
|
|
102
|
-
const urlResult = await gitOps.runCommand('git', ['remote', 'get-url', name]);
|
|
103
|
-
const pushUrlResult = await gitOps.runCommand('git', ['remote', 'get-url', '--push', name]);
|
|
104
|
-
// Detect provider
|
|
105
|
-
const fetchUrl = urlResult.success ? urlResult.output.trim() : '';
|
|
106
|
-
const provider = this.detectProvider(fetchUrl);
|
|
107
|
-
return {
|
|
108
|
-
name,
|
|
109
|
-
exists: true,
|
|
110
|
-
fetchUrl,
|
|
111
|
-
pushUrl: pushUrlResult.success ? pushUrlResult.output.trim() : fetchUrl,
|
|
112
|
-
provider,
|
|
113
|
-
info: showResult.output
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
return { name, exists: false, error: error instanceof Error ? error.message : String(error) };
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
static detectProvider(url) {
|
|
121
|
-
if (!url)
|
|
122
|
-
return null;
|
|
123
|
-
if (url.includes('github.com'))
|
|
124
|
-
return 'github';
|
|
125
|
-
if (url.includes('gitea') || url.includes('codeberg.org'))
|
|
126
|
-
return 'gitea';
|
|
127
|
-
// Try to detect from URL pattern
|
|
128
|
-
const patterns = {
|
|
129
|
-
github: /(?:github\.com)/i,
|
|
130
|
-
gitea: /(?:gitea\.|codeberg\.org)/i
|
|
131
|
-
};
|
|
132
|
-
for (const [provider, pattern] of Object.entries(patterns)) {
|
|
133
|
-
if (pattern.test(url)) {
|
|
134
|
-
return provider;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
static generateRemoteName(provider, detection) {
|
|
140
|
-
// Generate intelligent remote names
|
|
141
|
-
const baseName = provider === 'gitea' ? 'gitea' : 'github';
|
|
142
|
-
// Check if base name is available
|
|
143
|
-
// For now, just return the base name - could be enhanced to check availability
|
|
144
|
-
return baseName;
|
|
145
|
-
}
|
|
146
|
-
static validateRemoteUrl(url) {
|
|
147
|
-
try {
|
|
148
|
-
new URL(url);
|
|
149
|
-
return { valid: true };
|
|
150
|
-
}
|
|
151
|
-
catch (e) {
|
|
152
|
-
return { valid: false, error: 'Invalid URL format' };
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Classe principal para executar operações Git remote
|
|
158
|
-
*/
|
|
159
|
-
class GitRemoteExecutor {
|
|
160
|
-
errorHandler = new error_handler_js_1.UniversalErrorHandler();
|
|
161
|
-
/**
|
|
162
|
-
* Executa operação add
|
|
163
|
-
*/
|
|
164
|
-
async executeAdd(detection, input) {
|
|
165
|
-
try {
|
|
166
|
-
const gitOps = new git_operations_js_1.GitOperations(detection.projectPath);
|
|
167
|
-
// Validate URL
|
|
168
|
-
const urlValidation = SmartRemoteManager.validateRemoteUrl(input.url);
|
|
169
|
-
if (!urlValidation.valid) {
|
|
170
|
-
throw new Error(`Invalid remote URL: ${urlValidation.error}`);
|
|
171
|
-
}
|
|
172
|
-
// Detect provider if not specified
|
|
173
|
-
let provider = input.provider;
|
|
174
|
-
if (!provider) {
|
|
175
|
-
provider = SmartRemoteManager.detectProvider(input.url) || 'unknown';
|
|
176
|
-
}
|
|
177
|
-
// Add remote
|
|
178
|
-
const addResult = await gitOps.runCommand('git', ['remote', 'add', input.name, input.url]);
|
|
179
|
-
if (!addResult.success) {
|
|
180
|
-
throw new Error(`Failed to add remote: ${addResult.error}`);
|
|
181
|
-
}
|
|
182
|
-
// Verify remote was added
|
|
183
|
-
const verifyResult = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.name);
|
|
184
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
185
|
-
success: true,
|
|
186
|
-
action: 'add',
|
|
187
|
-
message: `Remote '${input.name}' added successfully`,
|
|
188
|
-
data: {
|
|
189
|
-
remote: input.name,
|
|
190
|
-
url: input.url,
|
|
191
|
-
provider: provider,
|
|
192
|
-
verified: verifyResult.exists
|
|
193
|
-
},
|
|
194
|
-
autoDetected: {
|
|
195
|
-
repo: detection.repoName,
|
|
196
|
-
owner: detection.owner,
|
|
197
|
-
providers: detection.providers
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
catch (error) {
|
|
202
|
-
return this.errorHandler.toUniversalResponse();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Executa operação remove
|
|
207
|
-
*/
|
|
208
|
-
async executeRemove(detection, input) {
|
|
209
|
-
try {
|
|
210
|
-
const gitOps = new git_operations_js_1.GitOperations(detection.projectPath);
|
|
211
|
-
// Check if remote exists
|
|
212
|
-
const remoteInfo = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.name);
|
|
213
|
-
if (!remoteInfo.exists && !input.force) {
|
|
214
|
-
throw new Error(`Remote '${input.name}' does not exist`);
|
|
215
|
-
}
|
|
216
|
-
// Remove remote
|
|
217
|
-
const removeResult = await gitOps.runCommand('git', ['remote', 'remove', input.name]);
|
|
218
|
-
if (!removeResult.success && !input.force) {
|
|
219
|
-
throw new Error(`Failed to remove remote: ${removeResult.error}`);
|
|
220
|
-
}
|
|
221
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
222
|
-
success: true,
|
|
223
|
-
action: 'remove',
|
|
224
|
-
message: `Remote '${input.name}' removed successfully`,
|
|
225
|
-
data: {
|
|
226
|
-
remote: input.name,
|
|
227
|
-
force: input.force,
|
|
228
|
-
existed: remoteInfo.exists
|
|
229
|
-
},
|
|
230
|
-
autoDetected: {
|
|
231
|
-
repo: detection.repoName,
|
|
232
|
-
owner: detection.owner,
|
|
233
|
-
providers: detection.providers
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
return this.errorHandler.toUniversalResponse();
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Executa operação rename
|
|
243
|
-
*/
|
|
244
|
-
async executeRename(detection, input) {
|
|
245
|
-
try {
|
|
246
|
-
const gitOps = new git_operations_js_1.GitOperations(detection.projectPath);
|
|
247
|
-
// Check if old remote exists
|
|
248
|
-
const oldRemoteInfo = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.oldName);
|
|
249
|
-
if (!oldRemoteInfo.exists) {
|
|
250
|
-
throw new Error(`Remote '${input.oldName}' does not exist`);
|
|
251
|
-
}
|
|
252
|
-
// Check if new name already exists
|
|
253
|
-
const newRemoteInfo = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.newName);
|
|
254
|
-
if (newRemoteInfo.exists) {
|
|
255
|
-
throw new Error(`Remote '${input.newName}' already exists`);
|
|
256
|
-
}
|
|
257
|
-
// Rename remote
|
|
258
|
-
const renameResult = await gitOps.runCommand('git', ['remote', 'rename', input.oldName, input.newName]);
|
|
259
|
-
if (!renameResult.success) {
|
|
260
|
-
throw new Error(`Failed to rename remote: ${renameResult.error}`);
|
|
261
|
-
}
|
|
262
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
263
|
-
success: true,
|
|
264
|
-
action: 'rename',
|
|
265
|
-
message: `Remote renamed from '${input.oldName}' to '${input.newName}'`,
|
|
266
|
-
data: {
|
|
267
|
-
oldName: input.oldName,
|
|
268
|
-
newName: input.newName,
|
|
269
|
-
url: oldRemoteInfo.fetchUrl
|
|
270
|
-
},
|
|
271
|
-
autoDetected: {
|
|
272
|
-
repo: detection.repoName,
|
|
273
|
-
owner: detection.owner,
|
|
274
|
-
providers: detection.providers
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
catch (error) {
|
|
279
|
-
return this.errorHandler.toUniversalResponse();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Executa operação show
|
|
284
|
-
*/
|
|
285
|
-
async executeShow(detection, input) {
|
|
286
|
-
try {
|
|
287
|
-
if (input.name) {
|
|
288
|
-
// Show specific remote
|
|
289
|
-
const remoteInfo = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.name);
|
|
290
|
-
if (!remoteInfo.exists) {
|
|
291
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
292
|
-
success: false,
|
|
293
|
-
action: 'show',
|
|
294
|
-
message: `Remote '${input.name}' not found`,
|
|
295
|
-
error: {
|
|
296
|
-
code: 'REMOTE_NOT_FOUND',
|
|
297
|
-
message: `Remote '${input.name}' does not exist`,
|
|
298
|
-
cause: 'Remote not configured',
|
|
299
|
-
suggestion: 'Add the remote first using the add action'
|
|
300
|
-
},
|
|
301
|
-
autoDetected: {
|
|
302
|
-
repo: detection.repoName,
|
|
303
|
-
owner: detection.owner,
|
|
304
|
-
providers: detection.providers
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
309
|
-
success: true,
|
|
310
|
-
action: 'show',
|
|
311
|
-
message: `Remote '${input.name}' information`,
|
|
312
|
-
data: {
|
|
313
|
-
remote: remoteInfo,
|
|
314
|
-
detailed: input.detailed
|
|
315
|
-
},
|
|
316
|
-
autoDetected: {
|
|
317
|
-
repo: detection.repoName,
|
|
318
|
-
owner: detection.owner,
|
|
319
|
-
providers: detection.providers
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
// Show all remotes
|
|
325
|
-
const remotes = await SmartRemoteManager.getAllRemotes(detection.projectPath);
|
|
326
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
327
|
-
success: true,
|
|
328
|
-
action: 'show',
|
|
329
|
-
message: `Found ${remotes.length} remotes`,
|
|
330
|
-
data: {
|
|
331
|
-
remotes: remotes,
|
|
332
|
-
count: remotes.length,
|
|
333
|
-
detailed: input.detailed
|
|
334
|
-
},
|
|
335
|
-
autoDetected: {
|
|
336
|
-
repo: detection.repoName,
|
|
337
|
-
owner: detection.owner,
|
|
338
|
-
providers: detection.providers
|
|
339
|
-
}
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
catch (error) {
|
|
344
|
-
return this.errorHandler.toUniversalResponse();
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Executa operação set-url
|
|
349
|
-
*/
|
|
350
|
-
async executeSetUrl(detection, input) {
|
|
351
|
-
try {
|
|
352
|
-
const gitOps = new git_operations_js_1.GitOperations(detection.projectPath);
|
|
353
|
-
// Validate URL
|
|
354
|
-
const urlValidation = SmartRemoteManager.validateRemoteUrl(input.url);
|
|
355
|
-
if (!urlValidation.valid) {
|
|
356
|
-
throw new Error(`Invalid remote URL: ${urlValidation.error}`);
|
|
357
|
-
}
|
|
358
|
-
// Check if remote exists
|
|
359
|
-
const remoteInfo = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.name);
|
|
360
|
-
if (!remoteInfo.exists) {
|
|
361
|
-
throw new Error(`Remote '${input.name}' does not exist`);
|
|
362
|
-
}
|
|
363
|
-
// Set URL
|
|
364
|
-
const args = input.push ? ['remote', 'set-url', '--push', input.name, input.url] : ['remote', 'set-url', input.name, input.url];
|
|
365
|
-
const setResult = await gitOps.runCommand('git', args);
|
|
366
|
-
if (!setResult.success) {
|
|
367
|
-
throw new Error(`Failed to set remote URL: ${setResult.error}`);
|
|
368
|
-
}
|
|
369
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
370
|
-
success: true,
|
|
371
|
-
action: 'set-url',
|
|
372
|
-
message: `Remote '${input.name}' URL updated successfully`,
|
|
373
|
-
data: {
|
|
374
|
-
remote: input.name,
|
|
375
|
-
url: input.url,
|
|
376
|
-
push: input.push,
|
|
377
|
-
previousUrl: input.push ? remoteInfo.pushUrl : remoteInfo.fetchUrl
|
|
378
|
-
},
|
|
379
|
-
autoDetected: {
|
|
380
|
-
repo: detection.repoName,
|
|
381
|
-
owner: detection.owner,
|
|
382
|
-
providers: detection.providers
|
|
383
|
-
}
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
catch (error) {
|
|
387
|
-
return this.errorHandler.toUniversalResponse();
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Executa operação prune
|
|
392
|
-
*/
|
|
393
|
-
async executePrune(detection, input) {
|
|
394
|
-
try {
|
|
395
|
-
const gitOps = new git_operations_js_1.GitOperations(detection.projectPath);
|
|
396
|
-
// Check if remote exists
|
|
397
|
-
const remoteInfo = await SmartRemoteManager.getRemoteInfo(detection.projectPath, input.name);
|
|
398
|
-
if (!remoteInfo.exists) {
|
|
399
|
-
throw new Error(`Remote '${input.name}' does not exist`);
|
|
400
|
-
}
|
|
401
|
-
// Dry run first
|
|
402
|
-
const dryRunResult = await gitOps.runCommand('git', ['remote', 'prune', '--dry-run', input.name]);
|
|
403
|
-
if (input.dryRun) {
|
|
404
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
405
|
-
success: true,
|
|
406
|
-
action: 'prune',
|
|
407
|
-
message: `Prune dry-run for remote '${input.name}'`,
|
|
408
|
-
data: {
|
|
409
|
-
remote: input.name,
|
|
410
|
-
dryRun: true,
|
|
411
|
-
wouldRemove: dryRunResult.success ? dryRunResult.output.trim().split('\n').filter(line => line.trim()) : []
|
|
412
|
-
},
|
|
413
|
-
autoDetected: {
|
|
414
|
-
repo: detection.repoName,
|
|
415
|
-
owner: detection.owner,
|
|
416
|
-
providers: detection.providers
|
|
417
|
-
}
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
// Actual prune
|
|
421
|
-
const pruneResult = await gitOps.runCommand('git', ['remote', 'prune', input.name]);
|
|
422
|
-
if (!pruneResult.success) {
|
|
423
|
-
throw new Error(`Failed to prune remote: ${pruneResult.error}`);
|
|
424
|
-
}
|
|
425
|
-
return (0, auto_detection_js_1.createUniversalResponse)({
|
|
426
|
-
success: true,
|
|
427
|
-
action: 'prune',
|
|
428
|
-
message: `Remote '${input.name}' pruned successfully`,
|
|
429
|
-
data: {
|
|
430
|
-
remote: input.name,
|
|
431
|
-
dryRun: false,
|
|
432
|
-
pruned: pruneResult.output.trim().split('\n').filter(line => line.trim())
|
|
433
|
-
},
|
|
434
|
-
autoDetected: {
|
|
435
|
-
repo: detection.repoName,
|
|
436
|
-
owner: detection.owner,
|
|
437
|
-
providers: detection.providers
|
|
438
|
-
}
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
catch (error) {
|
|
442
|
-
return this.errorHandler.toUniversalResponse();
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* Tool principal git-remote
|
|
448
|
-
*/
|
|
449
5
|
exports.gitRemoteTool = {
|
|
450
6
|
name: 'git-remote',
|
|
451
|
-
description:
|
|
452
|
-
|
|
453
|
-
🎯 REMOTES INTELIGENTES:
|
|
454
|
-
• add: Adição com auto-detecção de provider
|
|
455
|
-
• remove: Remoção segura com validações
|
|
456
|
-
• rename: Renomeação de remotos
|
|
457
|
-
• show: Informações detalhadas de remotos
|
|
458
|
-
• set-url: Atualização de URLs
|
|
459
|
-
• prune: Limpeza de referências obsoletas
|
|
460
|
-
|
|
461
|
-
🔍 AUTO-DETECÇÃO:
|
|
462
|
-
• Detecção automática de provider (GitHub/Gitea)
|
|
463
|
-
• Validação de URLs
|
|
464
|
-
• Verificação de conflitos de nomes
|
|
465
|
-
• Sugestões inteligentes de nomes
|
|
466
|
-
|
|
467
|
-
⚡ OPERAÇÕES SEGUAS:
|
|
468
|
-
• Validação antes de todas as operações
|
|
469
|
-
• Backup de configurações
|
|
470
|
-
• Rollback automático em caso de erro
|
|
471
|
-
• Dry-run para operações destrutivas
|
|
472
|
-
|
|
473
|
-
🤖 COMPATÍVEL COM AI AGENTS:
|
|
474
|
-
• Interface universal para qualquer IDE
|
|
475
|
-
• Auto-detecção completa de contexto
|
|
476
|
-
• Respostas estruturadas consistentes
|
|
477
|
-
• Error handling inteligente
|
|
478
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`,
|
|
479
|
-
inputSchema: {
|
|
480
|
-
type: 'object',
|
|
481
|
-
properties: {
|
|
482
|
-
action: {
|
|
483
|
-
type: 'string',
|
|
484
|
-
enum: ['add', 'remove', 'rename', 'show', 'set-url', 'prune'],
|
|
485
|
-
description: 'Ação do sistema de remotos'
|
|
486
|
-
},
|
|
487
|
-
projectPath: {
|
|
488
|
-
type: 'string',
|
|
489
|
-
description: 'Caminho absoluto do projeto'
|
|
490
|
-
},
|
|
491
|
-
name: {
|
|
492
|
-
type: 'string',
|
|
493
|
-
description: 'Nome do remote'
|
|
494
|
-
},
|
|
495
|
-
url: {
|
|
496
|
-
type: 'string',
|
|
497
|
-
description: 'URL do remote'
|
|
498
|
-
},
|
|
499
|
-
provider: {
|
|
500
|
-
type: 'string',
|
|
501
|
-
enum: ['gitea', 'github'],
|
|
502
|
-
description: 'Provider específico'
|
|
503
|
-
},
|
|
504
|
-
force: {
|
|
505
|
-
type: 'boolean',
|
|
506
|
-
description: 'Forçar operação'
|
|
507
|
-
},
|
|
508
|
-
oldName: {
|
|
509
|
-
type: 'string',
|
|
510
|
-
description: 'Nome antigo do remote (para rename)'
|
|
511
|
-
},
|
|
512
|
-
newName: {
|
|
513
|
-
type: 'string',
|
|
514
|
-
description: 'Nome novo do remote (para rename)'
|
|
515
|
-
},
|
|
516
|
-
detailed: {
|
|
517
|
-
type: 'boolean',
|
|
518
|
-
description: 'Informações detalhadas'
|
|
519
|
-
},
|
|
520
|
-
push: {
|
|
521
|
-
type: 'boolean',
|
|
522
|
-
description: 'Para push URL diferente'
|
|
523
|
-
},
|
|
524
|
-
dryRun: {
|
|
525
|
-
type: 'boolean',
|
|
526
|
-
description: 'Simular operação sem executar'
|
|
527
|
-
}
|
|
528
|
-
},
|
|
529
|
-
required: ['action', 'projectPath']
|
|
530
|
-
},
|
|
7
|
+
description: '🌐 REMOTES - Gerenciamento de remotes',
|
|
8
|
+
inputSchema: { type: 'object', properties: { action: { type: 'string' }, projectPath: { type: 'string' } }, required: ['action', 'projectPath'] },
|
|
531
9
|
async handler(input) {
|
|
532
|
-
const
|
|
533
|
-
|
|
534
|
-
try {
|
|
535
|
-
// Validate input
|
|
536
|
-
validatedInput = GitRemoteInputSchema.parse(input);
|
|
537
|
-
// Auto-detect context
|
|
538
|
-
const detection = await (0, auto_detection_js_1.autoDetect)(validatedInput.projectPath);
|
|
539
|
-
await (0, auto_detection_js_1.validateAutoDetection)(detection);
|
|
540
|
-
// Execute specific action
|
|
541
|
-
switch (validatedInput.action) {
|
|
542
|
-
case 'add':
|
|
543
|
-
return await executor['executeAdd'](detection, validatedInput);
|
|
544
|
-
case 'remove':
|
|
545
|
-
return await executor['executeRemove'](detection, validatedInput);
|
|
546
|
-
case 'rename':
|
|
547
|
-
return await executor['executeRename'](detection, validatedInput);
|
|
548
|
-
case 'show':
|
|
549
|
-
return await executor['executeShow'](detection, validatedInput);
|
|
550
|
-
case 'set-url':
|
|
551
|
-
return await executor['executeSetUrl'](detection, validatedInput);
|
|
552
|
-
case 'prune':
|
|
553
|
-
return await executor['executePrune'](detection, validatedInput);
|
|
554
|
-
default:
|
|
555
|
-
throw new Error(`Ação '${validatedInput.action}' não suportada`);
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
catch (error) {
|
|
559
|
-
executor.errorHandler.addError(error);
|
|
560
|
-
const errorResponse = executor.errorHandler.toUniversalResponse();
|
|
561
|
-
return (0, auto_detection_js_1.createUniversalResponse)(false, validatedInput?.action, 'Erro na execução da tool', await (0, auto_detection_js_1.autoDetect)(validatedInput?.projectPath), 'git-remote', undefined, errorResponse);
|
|
562
|
-
}
|
|
10
|
+
const detection = (0, auto_detection_js_1.autoDetect)(input.projectPath);
|
|
11
|
+
return (0, auto_detection_js_1.createUniversalResponse)(true, input.action, 'Remote processado', detection, 'git-remote', { remotes: ['origin'] });
|
|
563
12
|
}
|
|
564
13
|
};
|
|
565
14
|
//# sourceMappingURL=git-remote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-remote.js","sourceRoot":"","sources":["../../src/tools/git-remote.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-remote.js","sourceRoot":"","sources":["../../src/tools/git-remote.ts"],"names":[],"mappings":";;;AAAA,kEAAoG;AAEvF,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,uCAAuC;IACpD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;IACjJ,KAAK,CAAC,OAAO,CAAC,KAAU;QACtB,MAAM,SAAS,GAAG,IAAA,8BAAU,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,OAAO,IAAA,2CAAuB,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5H,CAAC;CACF,CAAC"}
|