@andrebuzeli/git-mcp 2.47.3 → 3.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.
- package/README.md +100 -71
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +55 -71
- package/dist/server.js.map +1 -1
- package/dist/tools/git-commits.d.ts +2 -2
- package/dist/tools/git-config.d.ts +2 -2
- package/dist/tools/git-files.d.ts +2 -2
- package/dist/tools/git-issues.d.ts +6 -6
- package/dist/tools/git-packages.d.ts +2 -2
- package/dist/tools/git-projects.d.ts +142 -57
- package/dist/tools/git-projects.d.ts.map +1 -1
- package/dist/tools/git-projects.js +281 -283
- package/dist/tools/git-projects.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +8 -8
- package/dist/tools/git-releases.d.ts +2 -2
- package/dist/tools/git-remote.d.ts +2 -2
- package/dist/tools/git-repositories.d.ts +4 -4
- package/dist/tools/git-sync.d.ts +4 -4
- package/dist/tools/git-tags.d.ts +2 -2
- package/dist/tools/git-undo.d.ts +268 -0
- package/dist/tools/git-undo.d.ts.map +1 -0
- package/dist/tools/git-undo.js +516 -0
- package/dist/tools/git-undo.js.map +1 -0
- package/dist/tools/git-update-project.d.ts +4 -4
- package/dist/tools/git-versioning.d.ts +286 -0
- package/dist/tools/git-versioning.d.ts.map +1 -0
- package/dist/tools/git-versioning.js +483 -0
- package/dist/tools/git-versioning.js.map +1 -0
- package/dist/tools/git-workflow.d.ts +393 -0
- package/dist/tools/git-workflow.d.ts.map +1 -0
- package/dist/tools/git-workflow.js +617 -0
- package/dist/tools/git-workflow.js.map +1 -0
- package/package.json +60 -60
|
@@ -0,0 +1,617 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gitWorkflowTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
const user_detection_js_1 = require("../utils/user-detection.js");
|
|
7
|
+
const git_operations_js_1 = require("../utils/git-operations.js");
|
|
8
|
+
/**
|
|
9
|
+
* Tool: git-workflow
|
|
10
|
+
*
|
|
11
|
+
* FERRAMENTA UNIFICADA PARA WORKFLOW GIT COMPLETO
|
|
12
|
+
* Combina as funcionalidades essenciais de:
|
|
13
|
+
* - git-update-project (init, update, sync)
|
|
14
|
+
* - git-commits (create, push, pull)
|
|
15
|
+
* - git-stash (save, apply, list)
|
|
16
|
+
* - git-reset (soft, mixed, hard)
|
|
17
|
+
*
|
|
18
|
+
* DESIGNED FOR: Programador individual autônomo
|
|
19
|
+
* PHILOSOPHY: Simplicidade + Funcionalidade + Error Handling Robusto
|
|
20
|
+
*/
|
|
21
|
+
const GitWorkflowInputSchema = zod_1.z.discriminatedUnion('action', [
|
|
22
|
+
// WORKFLOW PRINCIPAL - Substitui git-update-project
|
|
23
|
+
zod_1.z.object({
|
|
24
|
+
action: zod_1.z.literal('init'),
|
|
25
|
+
repo: zod_1.z.string(),
|
|
26
|
+
projectPath: zod_1.z.string(),
|
|
27
|
+
provider: zod_1.z.enum(['gitea', 'github']),
|
|
28
|
+
message: zod_1.z.string().min(1, 'Commit message is required'),
|
|
29
|
+
createRemote: zod_1.z.boolean().optional().default(false),
|
|
30
|
+
branch: zod_1.z.string().optional().default('main')
|
|
31
|
+
}),
|
|
32
|
+
zod_1.z.object({
|
|
33
|
+
action: zod_1.z.literal('commit'),
|
|
34
|
+
projectPath: zod_1.z.string(),
|
|
35
|
+
message: zod_1.z.string().min(1, 'Commit message is required'),
|
|
36
|
+
addAll: zod_1.z.boolean().optional().default(true),
|
|
37
|
+
push: zod_1.z.boolean().optional().default(false),
|
|
38
|
+
branch: zod_1.z.string().optional().default('main'),
|
|
39
|
+
provider: zod_1.z.enum(['gitea', 'github']).optional()
|
|
40
|
+
}),
|
|
41
|
+
zod_1.z.object({
|
|
42
|
+
action: zod_1.z.literal('sync'),
|
|
43
|
+
repo: zod_1.z.string(),
|
|
44
|
+
projectPath: zod_1.z.string(),
|
|
45
|
+
provider: zod_1.z.enum(['gitea', 'github']),
|
|
46
|
+
message: zod_1.z.string().min(1, 'Commit message is required'),
|
|
47
|
+
branch: zod_1.z.string().optional().default('main'),
|
|
48
|
+
forcePush: zod_1.z.boolean().optional().default(false)
|
|
49
|
+
}),
|
|
50
|
+
// STATUS E MONITORAMENTO
|
|
51
|
+
zod_1.z.object({
|
|
52
|
+
action: zod_1.z.literal('status'),
|
|
53
|
+
projectPath: zod_1.z.string(),
|
|
54
|
+
detailed: zod_1.z.boolean().optional().default(false)
|
|
55
|
+
}),
|
|
56
|
+
zod_1.z.object({
|
|
57
|
+
action: zod_1.z.literal('diff'),
|
|
58
|
+
projectPath: zod_1.z.string(),
|
|
59
|
+
staged: zod_1.z.boolean().optional().default(false),
|
|
60
|
+
file: zod_1.z.string().optional()
|
|
61
|
+
}),
|
|
62
|
+
zod_1.z.object({
|
|
63
|
+
action: zod_1.z.literal('log'),
|
|
64
|
+
projectPath: zod_1.z.string(),
|
|
65
|
+
limit: zod_1.z.number().optional().default(10),
|
|
66
|
+
oneline: zod_1.z.boolean().optional().default(true)
|
|
67
|
+
}),
|
|
68
|
+
// UNDO/REDO - Substitui git-stash + git-reset + git-revert
|
|
69
|
+
zod_1.z.object({
|
|
70
|
+
action: zod_1.z.literal('stash'),
|
|
71
|
+
projectPath: zod_1.z.string(),
|
|
72
|
+
name: zod_1.z.string().optional(),
|
|
73
|
+
includeUntracked: zod_1.z.boolean().optional().default(false)
|
|
74
|
+
}),
|
|
75
|
+
zod_1.z.object({
|
|
76
|
+
action: zod_1.z.literal('stash-list'),
|
|
77
|
+
projectPath: zod_1.z.string()
|
|
78
|
+
}),
|
|
79
|
+
zod_1.z.object({
|
|
80
|
+
action: zod_1.z.literal('stash-apply'),
|
|
81
|
+
projectPath: zod_1.z.string(),
|
|
82
|
+
index: zod_1.z.number().optional().default(0)
|
|
83
|
+
}),
|
|
84
|
+
zod_1.z.object({
|
|
85
|
+
action: zod_1.z.literal('reset'),
|
|
86
|
+
projectPath: zod_1.z.string(),
|
|
87
|
+
mode: zod_1.z.enum(['soft', 'mixed', 'hard']).optional().default('mixed'),
|
|
88
|
+
commit: zod_1.z.string().optional(),
|
|
89
|
+
confirm: zod_1.z.boolean().optional().default(false)
|
|
90
|
+
}),
|
|
91
|
+
// QUICK ACTIONS
|
|
92
|
+
zod_1.z.object({
|
|
93
|
+
action: zod_1.z.literal('pull'),
|
|
94
|
+
projectPath: zod_1.z.string(),
|
|
95
|
+
branch: zod_1.z.string().optional().default('main'),
|
|
96
|
+
provider: zod_1.z.enum(['gitea', 'github']).optional()
|
|
97
|
+
}),
|
|
98
|
+
zod_1.z.object({
|
|
99
|
+
action: zod_1.z.literal('push'),
|
|
100
|
+
projectPath: zod_1.z.string(),
|
|
101
|
+
branch: zod_1.z.string().optional().default('main'),
|
|
102
|
+
provider: zod_1.z.enum(['gitea', 'github']).optional(),
|
|
103
|
+
force: zod_1.z.boolean().optional().default(false)
|
|
104
|
+
})
|
|
105
|
+
]);
|
|
106
|
+
const GitWorkflowResultSchema = zod_1.z.object({
|
|
107
|
+
success: zod_1.z.boolean(),
|
|
108
|
+
action: zod_1.z.string(),
|
|
109
|
+
message: zod_1.z.string(),
|
|
110
|
+
data: zod_1.z.any().optional(),
|
|
111
|
+
error: zod_1.z.string().optional(),
|
|
112
|
+
recoverable: zod_1.z.boolean().optional(),
|
|
113
|
+
suggestion: zod_1.z.string().optional()
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* Enhanced Error Handler with Recovery Suggestions
|
|
117
|
+
*/
|
|
118
|
+
class WorkflowErrorHandler {
|
|
119
|
+
static handleError(error, context) {
|
|
120
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
121
|
+
// Error patterns and recovery suggestions
|
|
122
|
+
const errorPatterns = [
|
|
123
|
+
{
|
|
124
|
+
pattern: /not a git repository/i,
|
|
125
|
+
suggestion: "Run 'git init' first or check the project path",
|
|
126
|
+
recoverable: true
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
pattern: /no commits/i,
|
|
130
|
+
suggestion: "Make initial commit first",
|
|
131
|
+
recoverable: true
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
pattern: /branch.*does not exist/i,
|
|
135
|
+
suggestion: "Create the branch first or check branch name",
|
|
136
|
+
recoverable: true
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
pattern: /merge conflict/i,
|
|
140
|
+
suggestion: "Resolve conflicts manually then commit",
|
|
141
|
+
recoverable: false
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
pattern: /authentication failed/i,
|
|
145
|
+
suggestion: "Check your token configuration",
|
|
146
|
+
recoverable: true
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
pattern: /permission denied/i,
|
|
150
|
+
suggestion: "Check repository permissions and token scope",
|
|
151
|
+
recoverable: true
|
|
152
|
+
}
|
|
153
|
+
];
|
|
154
|
+
const matchedPattern = errorPatterns.find(p => p.pattern.test(errorMessage));
|
|
155
|
+
return {
|
|
156
|
+
success: false,
|
|
157
|
+
action: context,
|
|
158
|
+
message: `Error in ${context}: ${errorMessage}`,
|
|
159
|
+
error: errorMessage,
|
|
160
|
+
recoverable: matchedPattern?.recoverable || false,
|
|
161
|
+
suggestion: matchedPattern?.suggestion
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.gitWorkflowTool = {
|
|
166
|
+
name: 'git-workflow',
|
|
167
|
+
description: `🛠️ GIT WORKFLOW UNIFICADO - Tudo que um programador individual precisa
|
|
168
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
169
|
+
🎯 WORKFLOW PRINCIPAL:
|
|
170
|
+
• init: Inicializar projeto e fazer primeiro commit
|
|
171
|
+
• commit: Commit + push automático (mais inteligente)
|
|
172
|
+
• sync: Pull + commit + push completo
|
|
173
|
+
|
|
174
|
+
📊 STATUS & MONITORAMENTO:
|
|
175
|
+
• status: Status detalhado do projeto
|
|
176
|
+
• diff: Ver diferenças nos arquivos
|
|
177
|
+
• log: Histórico de commits
|
|
178
|
+
|
|
179
|
+
🔄 UNDO/REDO SYSTEM:
|
|
180
|
+
• stash: Salvar mudanças temporariamente
|
|
181
|
+
• stash-list: Listar stashes salvos
|
|
182
|
+
• stash-apply: Aplicar stash salvo
|
|
183
|
+
• reset: Desfazer commits com confirmação
|
|
184
|
+
|
|
185
|
+
⚡ QUICK ACTIONS:
|
|
186
|
+
• pull: Baixar mudanças do remoto
|
|
187
|
+
• push: Enviar mudanças para remoto
|
|
188
|
+
|
|
189
|
+
✨ DIFERENCIAIS:
|
|
190
|
+
• Error handling inteligente com sugestões de correção
|
|
191
|
+
• Auto-detecção de provider
|
|
192
|
+
• Operações seguras com confirmação
|
|
193
|
+
• Workflow otimizado para programador individual`,
|
|
194
|
+
inputSchema: {
|
|
195
|
+
type: 'object',
|
|
196
|
+
properties: {
|
|
197
|
+
action: {
|
|
198
|
+
type: 'string',
|
|
199
|
+
enum: ['init', 'commit', 'sync', 'status', 'diff', 'log', 'stash', 'stash-list', 'stash-apply', 'reset', 'pull', 'push'],
|
|
200
|
+
description: 'Workflow action to perform'
|
|
201
|
+
},
|
|
202
|
+
repo: { type: 'string', description: 'Repository name' },
|
|
203
|
+
projectPath: { type: 'string', description: 'Local project path' },
|
|
204
|
+
provider: { type: 'string', enum: ['gitea', 'github'], description: 'Git provider' },
|
|
205
|
+
message: { type: 'string', description: 'Commit message' },
|
|
206
|
+
createRemote: { type: 'boolean', description: 'Create remote repository', default: false },
|
|
207
|
+
branch: { type: 'string', description: 'Branch name', default: 'main' },
|
|
208
|
+
addAll: { type: 'boolean', description: 'Add all files before commit', default: true },
|
|
209
|
+
push: { type: 'boolean', description: 'Push after commit', default: false },
|
|
210
|
+
forcePush: { type: 'boolean', description: 'Force push', default: false },
|
|
211
|
+
detailed: { type: 'boolean', description: 'Detailed output', default: false },
|
|
212
|
+
staged: { type: 'boolean', description: 'Show staged changes', default: false },
|
|
213
|
+
file: { type: 'string', description: 'Specific file for diff' },
|
|
214
|
+
limit: { type: 'number', description: 'Limit for log', default: 10 },
|
|
215
|
+
oneline: { type: 'boolean', description: 'One line log format', default: true },
|
|
216
|
+
name: { type: 'string', description: 'Stash name' },
|
|
217
|
+
includeUntracked: { type: 'boolean', description: 'Include untracked files in stash', default: false },
|
|
218
|
+
index: { type: 'number', description: 'Stash index', default: 0 },
|
|
219
|
+
mode: { type: 'string', enum: ['soft', 'mixed', 'hard'], description: 'Reset mode', default: 'mixed' },
|
|
220
|
+
confirm: { type: 'boolean', description: 'Confirm destructive operation', default: false },
|
|
221
|
+
force: { type: 'boolean', description: 'Force push', default: false }
|
|
222
|
+
},
|
|
223
|
+
required: ['action', 'projectPath']
|
|
224
|
+
},
|
|
225
|
+
async handler(input) {
|
|
226
|
+
try {
|
|
227
|
+
const validatedInput = GitWorkflowInputSchema.parse(input);
|
|
228
|
+
switch (validatedInput.action) {
|
|
229
|
+
case 'init':
|
|
230
|
+
return await this.handleInit(validatedInput);
|
|
231
|
+
case 'commit':
|
|
232
|
+
return await this.handleCommit(validatedInput);
|
|
233
|
+
case 'sync':
|
|
234
|
+
return await this.handleSync(validatedInput);
|
|
235
|
+
case 'status':
|
|
236
|
+
return await this.handleStatus(validatedInput);
|
|
237
|
+
case 'diff':
|
|
238
|
+
return await this.handleDiff(validatedInput);
|
|
239
|
+
case 'log':
|
|
240
|
+
return await this.handleLog(validatedInput);
|
|
241
|
+
case 'stash':
|
|
242
|
+
return await this.handleStash(validatedInput);
|
|
243
|
+
case 'stash-list':
|
|
244
|
+
return await this.handleStashList(validatedInput);
|
|
245
|
+
case 'stash-apply':
|
|
246
|
+
return await this.handleStashApply(validatedInput);
|
|
247
|
+
case 'reset':
|
|
248
|
+
return await this.handleReset(validatedInput);
|
|
249
|
+
case 'pull':
|
|
250
|
+
return await this.handlePull(validatedInput);
|
|
251
|
+
case 'push':
|
|
252
|
+
return await this.handlePush(validatedInput);
|
|
253
|
+
default:
|
|
254
|
+
throw new Error(`Action '${validatedInput.action}' not supported`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
return WorkflowErrorHandler.handleError(error, `workflow.${input.action}`);
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
async handleInit(params) {
|
|
262
|
+
const { repo, projectPath, message, createRemote, branch, provider } = params;
|
|
263
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
264
|
+
// Check if already a git repo
|
|
265
|
+
const isGit = await gitOps.isGitRepository();
|
|
266
|
+
if (isGit) {
|
|
267
|
+
return {
|
|
268
|
+
success: false,
|
|
269
|
+
action: 'init',
|
|
270
|
+
message: 'Project is already a Git repository',
|
|
271
|
+
suggestion: 'Use commit or sync instead'
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
try {
|
|
275
|
+
// Initialize git repo
|
|
276
|
+
const initResult = await gitOps.initRepository();
|
|
277
|
+
if (!initResult.success) {
|
|
278
|
+
throw new Error(`Failed to initialize Git repository: ${initResult.error}`);
|
|
279
|
+
}
|
|
280
|
+
// Add all files
|
|
281
|
+
const addResult = await gitOps.addFiles();
|
|
282
|
+
if (!addResult.success) {
|
|
283
|
+
throw new Error(`Failed to add files: ${addResult.error}`);
|
|
284
|
+
}
|
|
285
|
+
// Create initial commit
|
|
286
|
+
const commitResult = await gitOps.commit(message);
|
|
287
|
+
if (!commitResult.success) {
|
|
288
|
+
throw new Error(`Failed to create initial commit: ${commitResult.error}`);
|
|
289
|
+
}
|
|
290
|
+
// Create remote if requested
|
|
291
|
+
if (createRemote) {
|
|
292
|
+
const processedInput = await (0, user_detection_js_1.applyAutoUserDetection)({ provider, repo }, provider);
|
|
293
|
+
if (processedInput.owner) {
|
|
294
|
+
const providerInstance = index_js_1.globalProviderFactory.getProvider(provider);
|
|
295
|
+
if (providerInstance) {
|
|
296
|
+
try {
|
|
297
|
+
const remoteResult = await providerInstance.createRepository(repo, `Project initialized via MCP`, false);
|
|
298
|
+
const remoteUrl = await providerInstance.getRepositoryUrl(processedInput.owner, repo);
|
|
299
|
+
// Add remote
|
|
300
|
+
const remoteAddResult = await gitOps.remote('add', 'origin', remoteUrl);
|
|
301
|
+
if (remoteAddResult.success) {
|
|
302
|
+
// Push to remote
|
|
303
|
+
const pushResult = await gitOps.push('origin', branch);
|
|
304
|
+
if (pushResult.success) {
|
|
305
|
+
return {
|
|
306
|
+
success: true,
|
|
307
|
+
action: 'init',
|
|
308
|
+
message: `Project initialized with remote repository`,
|
|
309
|
+
data: { remoteUrl, branch, commit: commitResult.output }
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch (remoteError) {
|
|
315
|
+
// Remote creation failed, but local repo is ready
|
|
316
|
+
console.warn('Remote creation failed:', remoteError);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
success: true,
|
|
323
|
+
action: 'init',
|
|
324
|
+
message: 'Project initialized successfully',
|
|
325
|
+
data: { branch, commit: commitResult.output }
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
return WorkflowErrorHandler.handleError(error, 'init');
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
async handleCommit(params) {
|
|
333
|
+
const { projectPath, message, addAll, push, branch, provider } = params;
|
|
334
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
335
|
+
// Verify git repo
|
|
336
|
+
if (!(await gitOps.isGitRepository())) {
|
|
337
|
+
return WorkflowErrorHandler.handleError(new Error('Not a Git repository'), 'commit');
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
// Add files if requested
|
|
341
|
+
if (addAll) {
|
|
342
|
+
const addResult = await gitOps.addFiles();
|
|
343
|
+
if (!addResult.success) {
|
|
344
|
+
throw new Error(`Failed to add files: ${addResult.error}`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
// Check if there are changes to commit
|
|
348
|
+
const statusResult = await gitOps.status({ porcelain: true });
|
|
349
|
+
if (!statusResult.output.trim()) {
|
|
350
|
+
return {
|
|
351
|
+
success: false,
|
|
352
|
+
action: 'commit',
|
|
353
|
+
message: 'No changes to commit',
|
|
354
|
+
suggestion: 'Make some changes first'
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
// Commit
|
|
358
|
+
const commitResult = await gitOps.commit(message);
|
|
359
|
+
if (!commitResult.success) {
|
|
360
|
+
throw new Error(`Commit failed: ${commitResult.error}`);
|
|
361
|
+
}
|
|
362
|
+
// Push if requested
|
|
363
|
+
if (push && provider) {
|
|
364
|
+
const pushResult = await gitOps.push('origin', branch);
|
|
365
|
+
if (!pushResult.success) {
|
|
366
|
+
return {
|
|
367
|
+
success: true,
|
|
368
|
+
action: 'commit',
|
|
369
|
+
message: 'Commit successful, but push failed',
|
|
370
|
+
data: { commit: commitResult.output },
|
|
371
|
+
error: pushResult.error,
|
|
372
|
+
suggestion: 'Check remote configuration or network connection'
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return {
|
|
377
|
+
success: true,
|
|
378
|
+
action: 'commit',
|
|
379
|
+
message: push ? 'Commit and push successful' : 'Commit successful',
|
|
380
|
+
data: { commit: commitResult.output, pushed: push || false }
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
return WorkflowErrorHandler.handleError(error, 'commit');
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
async handleSync(params) {
|
|
388
|
+
const { repo, projectPath, message, branch, forcePush, provider } = params;
|
|
389
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
390
|
+
try {
|
|
391
|
+
// Pull first
|
|
392
|
+
const pullResult = await gitOps.pull('origin', branch);
|
|
393
|
+
if (!pullResult.success && !pullResult.error?.includes('up-to-date')) {
|
|
394
|
+
console.warn('Pull failed:', pullResult.error);
|
|
395
|
+
}
|
|
396
|
+
// Add and commit
|
|
397
|
+
const addResult = await gitOps.addFiles();
|
|
398
|
+
if (!addResult.success) {
|
|
399
|
+
throw new Error(`Failed to add files: ${addResult.error}`);
|
|
400
|
+
}
|
|
401
|
+
const statusResult = await gitOps.status({ porcelain: true });
|
|
402
|
+
if (statusResult.output.trim()) {
|
|
403
|
+
const commitResult = await gitOps.commit(message);
|
|
404
|
+
if (!commitResult.success) {
|
|
405
|
+
throw new Error(`Commit failed: ${commitResult.error}`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// Push
|
|
409
|
+
const pushOptions = {};
|
|
410
|
+
if (forcePush)
|
|
411
|
+
pushOptions.force = true;
|
|
412
|
+
const pushResult = await gitOps.push('origin', branch, pushOptions);
|
|
413
|
+
if (!pushResult.success) {
|
|
414
|
+
throw new Error(`Push failed: ${pushResult.error}`);
|
|
415
|
+
}
|
|
416
|
+
return {
|
|
417
|
+
success: true,
|
|
418
|
+
action: 'sync',
|
|
419
|
+
message: 'Sync completed successfully',
|
|
420
|
+
data: { pulled: pullResult.success, pushed: true, branch }
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
return WorkflowErrorHandler.handleError(error, 'sync');
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
async handleStatus(params) {
|
|
428
|
+
const { projectPath, detailed } = params;
|
|
429
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
430
|
+
try {
|
|
431
|
+
const statusResult = await gitOps.status(detailed ? {} : { short: true });
|
|
432
|
+
if (!statusResult.success) {
|
|
433
|
+
throw new Error(`Status check failed: ${statusResult.error}`);
|
|
434
|
+
}
|
|
435
|
+
return {
|
|
436
|
+
success: true,
|
|
437
|
+
action: 'status',
|
|
438
|
+
message: 'Status retrieved successfully',
|
|
439
|
+
data: { status: statusResult.output, detailed }
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
catch (error) {
|
|
443
|
+
return WorkflowErrorHandler.handleError(error, 'status');
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
async handleDiff(params) {
|
|
447
|
+
const { projectPath, staged, file } = params;
|
|
448
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
449
|
+
try {
|
|
450
|
+
const diffOptions = { patch: true };
|
|
451
|
+
if (staged)
|
|
452
|
+
diffOptions.cached = true;
|
|
453
|
+
if (file)
|
|
454
|
+
diffOptions.path = file;
|
|
455
|
+
const diffResult = await gitOps.diff(diffOptions);
|
|
456
|
+
return {
|
|
457
|
+
success: true,
|
|
458
|
+
action: 'diff',
|
|
459
|
+
message: 'Diff retrieved successfully',
|
|
460
|
+
data: { diff: diffResult.output, staged, file }
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
catch (error) {
|
|
464
|
+
return WorkflowErrorHandler.handleError(error, 'diff');
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
async handleLog(params) {
|
|
468
|
+
const { projectPath, limit, oneline } = params;
|
|
469
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
470
|
+
try {
|
|
471
|
+
const logOptions = { maxCount: limit };
|
|
472
|
+
if (oneline)
|
|
473
|
+
logOptions.oneline = true;
|
|
474
|
+
const logResult = await gitOps.log(logOptions);
|
|
475
|
+
if (!logResult.success) {
|
|
476
|
+
throw new Error(`Log retrieval failed: ${logResult.error}`);
|
|
477
|
+
}
|
|
478
|
+
return {
|
|
479
|
+
success: true,
|
|
480
|
+
action: 'log',
|
|
481
|
+
message: 'Log retrieved successfully',
|
|
482
|
+
data: { log: logResult.output, limit, oneline }
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
catch (error) {
|
|
486
|
+
return WorkflowErrorHandler.handleError(error, 'log');
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
async handleStash(params) {
|
|
490
|
+
const { projectPath, name, includeUntracked } = params;
|
|
491
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
492
|
+
try {
|
|
493
|
+
const stashOptions = {};
|
|
494
|
+
if (name)
|
|
495
|
+
stashOptions.message = name;
|
|
496
|
+
if (includeUntracked)
|
|
497
|
+
stashOptions.includeUntracked = true;
|
|
498
|
+
const stashResult = await gitOps.stash('push', stashOptions);
|
|
499
|
+
if (!stashResult.success) {
|
|
500
|
+
throw new Error(`Stash failed: ${stashResult.error}`);
|
|
501
|
+
}
|
|
502
|
+
return {
|
|
503
|
+
success: true,
|
|
504
|
+
action: 'stash',
|
|
505
|
+
message: 'Changes stashed successfully',
|
|
506
|
+
data: { name, includeUntracked }
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
return WorkflowErrorHandler.handleError(error, 'stash');
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
async handleStashList(params) {
|
|
514
|
+
const { projectPath } = params;
|
|
515
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
516
|
+
try {
|
|
517
|
+
const stashResult = await gitOps.stash('list');
|
|
518
|
+
return {
|
|
519
|
+
success: true,
|
|
520
|
+
action: 'stash-list',
|
|
521
|
+
message: 'Stash list retrieved successfully',
|
|
522
|
+
data: { stashes: stashResult.output }
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
catch (error) {
|
|
526
|
+
return WorkflowErrorHandler.handleError(error, 'stash-list');
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
async handleStashApply(params) {
|
|
530
|
+
const { projectPath, index } = params;
|
|
531
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
532
|
+
try {
|
|
533
|
+
const stashResult = await gitOps.stash('apply', { index });
|
|
534
|
+
if (!stashResult.success) {
|
|
535
|
+
throw new Error(`Stash apply failed: ${stashResult.error}`);
|
|
536
|
+
}
|
|
537
|
+
return {
|
|
538
|
+
success: true,
|
|
539
|
+
action: 'stash-apply',
|
|
540
|
+
message: 'Stash applied successfully',
|
|
541
|
+
data: { index }
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
catch (error) {
|
|
545
|
+
return WorkflowErrorHandler.handleError(error, 'stash-apply');
|
|
546
|
+
}
|
|
547
|
+
},
|
|
548
|
+
async handleReset(params) {
|
|
549
|
+
const { projectPath, mode, commit, confirm } = params;
|
|
550
|
+
if (mode === 'hard' && !confirm) {
|
|
551
|
+
return {
|
|
552
|
+
success: false,
|
|
553
|
+
action: 'reset',
|
|
554
|
+
message: 'Hard reset requires confirmation',
|
|
555
|
+
suggestion: 'Set confirm=true to proceed with hard reset'
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
559
|
+
try {
|
|
560
|
+
const resetResult = await gitOps.reset(commit || 'HEAD~1', { mode });
|
|
561
|
+
if (!resetResult.success) {
|
|
562
|
+
throw new Error(`Reset failed: ${resetResult.error}`);
|
|
563
|
+
}
|
|
564
|
+
return {
|
|
565
|
+
success: true,
|
|
566
|
+
action: 'reset',
|
|
567
|
+
message: `Reset (${mode}) completed successfully`,
|
|
568
|
+
data: { mode, commit }
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
catch (error) {
|
|
572
|
+
return WorkflowErrorHandler.handleError(error, 'reset');
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
async handlePull(params) {
|
|
576
|
+
const { projectPath, branch } = params;
|
|
577
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
578
|
+
try {
|
|
579
|
+
const pullResult = await gitOps.pull('origin', branch);
|
|
580
|
+
if (!pullResult.success && !pullResult.error?.includes('up-to-date')) {
|
|
581
|
+
throw new Error(`Pull failed: ${pullResult.error}`);
|
|
582
|
+
}
|
|
583
|
+
return {
|
|
584
|
+
success: true,
|
|
585
|
+
action: 'pull',
|
|
586
|
+
message: pullResult.error?.includes('up-to-date') ? 'Already up-to-date' : 'Pull completed successfully',
|
|
587
|
+
data: { branch, upToDate: pullResult.error?.includes('up-to-date') || false }
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
return WorkflowErrorHandler.handleError(error, 'pull');
|
|
592
|
+
}
|
|
593
|
+
},
|
|
594
|
+
async handlePush(params) {
|
|
595
|
+
const { projectPath, branch, force } = params;
|
|
596
|
+
const gitOps = new git_operations_js_1.GitOperations(projectPath);
|
|
597
|
+
try {
|
|
598
|
+
const pushOptions = {};
|
|
599
|
+
if (force)
|
|
600
|
+
pushOptions.force = true;
|
|
601
|
+
const pushResult = await gitOps.push('origin', branch, pushOptions);
|
|
602
|
+
if (!pushResult.success) {
|
|
603
|
+
throw new Error(`Push failed: ${pushResult.error}`);
|
|
604
|
+
}
|
|
605
|
+
return {
|
|
606
|
+
success: true,
|
|
607
|
+
action: 'push',
|
|
608
|
+
message: 'Push completed successfully',
|
|
609
|
+
data: { branch, force }
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
catch (error) {
|
|
613
|
+
return WorkflowErrorHandler.handleError(error, 'push');
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
};
|
|
617
|
+
//# sourceMappingURL=git-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-workflow.js","sourceRoot":"","sources":["../../src/tools/git-workflow.ts"],"names":[],"mappings":"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"}
|