@andrebuzeli/git-mcp 2.27.4 → 2.28.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/dist/client.d.ts +306 -306
- package/dist/client.js +298 -298
- package/dist/config.d.ts +310 -310
- package/dist/config.js +392 -392
- package/dist/index.d.ts +22 -22
- package/dist/index.js +89 -89
- package/dist/providers/base-provider.d.ts +160 -156
- package/dist/providers/base-provider.d.ts.map +1 -1
- package/dist/providers/base-provider.js +274 -260
- package/dist/providers/base-provider.js.map +1 -1
- package/dist/providers/error-handler.d.ts +50 -50
- package/dist/providers/error-handler.js +175 -175
- package/dist/providers/gitea-provider.d.ts +97 -97
- package/dist/providers/gitea-provider.js +1001 -1001
- package/dist/providers/github-provider.d.ts +104 -104
- package/dist/providers/github-provider.js +1234 -1234
- package/dist/providers/index.d.ts +12 -12
- package/dist/providers/index.js +40 -40
- package/dist/providers/provider-factory.d.ts +74 -74
- package/dist/providers/provider-factory.js +311 -311
- package/dist/providers/types.d.ts +318 -298
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +6 -6
- package/dist/server.d.ts +76 -76
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +306 -305
- package/dist/server.js.map +1 -1
- package/dist/tools/gh-actions.d.ts +252 -252
- package/dist/tools/gh-actions.js +389 -389
- package/dist/tools/gh-analytics.d.ts +263 -263
- package/dist/tools/gh-analytics.js +401 -401
- package/dist/tools/gh-code-review.d.ts +304 -304
- package/dist/tools/gh-code-review.js +512 -512
- package/dist/tools/gh-codespaces.d.ts +138 -138
- package/dist/tools/gh-codespaces.js +282 -282
- package/dist/tools/gh-deployments.d.ts +300 -300
- package/dist/tools/gh-deployments.js +367 -367
- package/dist/tools/gh-gists.d.ts +174 -174
- package/dist/tools/gh-gists.js +321 -321
- package/dist/tools/gh-projects.d.ts +205 -205
- package/dist/tools/gh-projects.js +358 -358
- package/dist/tools/gh-security.d.ts +274 -274
- package/dist/tools/gh-security.js +395 -395
- package/dist/tools/gh-sync.d.ts +213 -213
- package/dist/tools/gh-sync.js +378 -378
- package/dist/tools/gh-workflows.d.ts +290 -290
- package/dist/tools/gh-workflows.js +432 -432
- package/dist/tools/git-archive.d.ts +165 -165
- package/dist/tools/git-archive.js +233 -233
- package/dist/tools/git-branches.d.ts +430 -430
- package/dist/tools/git-branches.d.ts.map +1 -1
- package/dist/tools/git-branches.js +627 -530
- package/dist/tools/git-branches.js.map +1 -1
- package/dist/tools/git-bundle.d.ts +171 -171
- package/dist/tools/git-bundle.js +241 -241
- package/dist/tools/git-cherry-pick.d.ts +158 -158
- package/dist/tools/git-cherry-pick.js +224 -224
- package/dist/tools/git-commits.d.ts +485 -485
- package/dist/tools/git-commits.d.ts.map +1 -1
- package/dist/tools/git-commits.js +735 -625
- package/dist/tools/git-commits.js.map +1 -1
- package/dist/tools/git-config.d.ts +140 -140
- package/dist/tools/git-config.js +268 -268
- package/dist/tools/git-files.d.ts +486 -486
- package/dist/tools/git-files.js +607 -607
- package/dist/tools/git-issues.d.ts +571 -571
- package/dist/tools/git-issues.d.ts.map +1 -1
- package/dist/tools/git-issues.js +740 -693
- package/dist/tools/git-issues.js.map +1 -1
- package/dist/tools/git-pulls.d.ts +694 -694
- package/dist/tools/git-pulls.js +732 -732
- package/dist/tools/git-rebase.d.ts +137 -137
- package/dist/tools/git-rebase.js +213 -213
- package/dist/tools/git-releases.d.ts +487 -487
- package/dist/tools/git-releases.js +557 -557
- package/dist/tools/git-remote.d.ts +138 -138
- package/dist/tools/git-remote.js +274 -274
- package/dist/tools/git-repositories.d.ts +483 -483
- package/dist/tools/git-repositories.js +640 -640
- package/dist/tools/git-reset.d.ts +130 -130
- package/dist/tools/git-reset.js +223 -223
- package/dist/tools/git-revert.d.ts +149 -149
- package/dist/tools/git-revert.js +198 -198
- package/dist/tools/git-stash.d.ts +140 -140
- package/dist/tools/git-stash.js +269 -269
- package/dist/tools/git-submodule.d.ts +152 -152
- package/dist/tools/git-submodule.js +289 -289
- package/dist/tools/git-sync.d.ts +178 -166
- package/dist/tools/git-sync.d.ts.map +1 -1
- package/dist/tools/git-sync.js +312 -117
- package/dist/tools/git-sync.js.map +1 -1
- package/dist/tools/git-tags.d.ts +411 -411
- package/dist/tools/git-tags.js +485 -485
- package/dist/tools/git-webhooks.d.ts +470 -482
- package/dist/tools/git-webhooks.d.ts.map +1 -1
- package/dist/tools/git-webhooks.js +543 -555
- package/dist/tools/git-webhooks.js.map +1 -1
- package/dist/tools/git-worktree.d.ts +159 -159
- package/dist/tools/git-worktree.js +269 -269
- package/dist/tools/repositories.d.ts +405 -405
- package/dist/tools/repositories.js +569 -569
- package/dist/tools/users.d.ts +372 -372
- package/dist/tools/users.js +499 -499
- package/dist/tools/validator.d.ts +170 -170
- package/dist/tools/validator.js +194 -194
- package/dist/tools/version-control.d.ts +136 -136
- package/dist/tools/version-control.js +164 -164
- package/dist/utils/terminal-controller.d.ts +80 -80
- package/dist/utils/terminal-controller.js +345 -345
- package/dist/utils/user-detection.d.ts +24 -24
- package/dist/utils/user-detection.js +53 -53
- package/package.json +59 -59
package/dist/tools/gh-gists.js
CHANGED
|
@@ -1,322 +1,322 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ghGistsTool = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const index_js_1 = require("../providers/index.js");
|
|
6
|
-
/**
|
|
7
|
-
* Tool: gh-gists
|
|
8
|
-
*
|
|
9
|
-
* DESCRIÇÃO:
|
|
10
|
-
* Gerenciamento de Gists GitHub (exclusivo GitHub) com múltiplas ações
|
|
11
|
-
*
|
|
12
|
-
* FUNCIONALIDADES:
|
|
13
|
-
* - Criar gist
|
|
14
|
-
* - Listar gists
|
|
15
|
-
* - Obter gist
|
|
16
|
-
* - Atualizar gist
|
|
17
|
-
* - Deletar gist
|
|
18
|
-
* - Fazer fork do gist
|
|
19
|
-
* - Favoritar gist
|
|
20
|
-
* - Comentar gist
|
|
21
|
-
*
|
|
22
|
-
* USO:
|
|
23
|
-
* - Para compartilhar código rapidamente
|
|
24
|
-
* - Para snippets de código
|
|
25
|
-
* - Para documentação rápida
|
|
26
|
-
* - Para testes de código
|
|
27
|
-
*
|
|
28
|
-
* RECOMENDAÇÕES:
|
|
29
|
-
* - Use para código pequeno e focado
|
|
30
|
-
* - Adicione descrições claras
|
|
31
|
-
* - Use tags apropriadas
|
|
32
|
-
* - Mantenha gists organizados
|
|
33
|
-
*/
|
|
34
|
-
const GhGistsInputSchema = zod_1.z.object({
|
|
35
|
-
action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'fork', 'star', 'comment']),
|
|
36
|
-
// owner: obtido automaticamente do provider,
|
|
37
|
-
repo: zod_1.z.string(),
|
|
38
|
-
projectPath: zod_1.z.string().describe('Local project path for git operations'),
|
|
39
|
-
// Para create/update
|
|
40
|
-
gist_id: zod_1.z.string().optional(),
|
|
41
|
-
description: zod_1.z.string().optional(),
|
|
42
|
-
files: zod_1.z.record(zod_1.z.object({
|
|
43
|
-
content: zod_1.z.string(),
|
|
44
|
-
filename: zod_1.z.string().optional()
|
|
45
|
-
})).optional(),
|
|
46
|
-
public: zod_1.z.boolean().optional(),
|
|
47
|
-
// Para list
|
|
48
|
-
username: zod_1.z.string().optional(),
|
|
49
|
-
page: zod_1.z.number().min(1).optional(),
|
|
50
|
-
limit: zod_1.z.number().min(1).max(100).optional(),
|
|
51
|
-
// Para star
|
|
52
|
-
star: zod_1.z.boolean().optional(),
|
|
53
|
-
// Para comment
|
|
54
|
-
comment_body: zod_1.z.string().optional(),
|
|
55
|
-
});
|
|
56
|
-
const GhGistsResultSchema = zod_1.z.object({
|
|
57
|
-
success: zod_1.z.boolean(),
|
|
58
|
-
action: zod_1.z.string(),
|
|
59
|
-
message: zod_1.z.string(),
|
|
60
|
-
data: zod_1.z.any().optional(),
|
|
61
|
-
error: zod_1.z.string().optional()
|
|
62
|
-
});
|
|
63
|
-
exports.ghGistsTool = {
|
|
64
|
-
name: 'gh-gists',
|
|
65
|
-
description: 'tool: Gerencia GitHub Gists para compartilhamento de código\n──────────────\naction create: cria novo gist\naction create requires: files, description, public\n───────────────\naction list: lista gists\naction list requires: username, page, limit\n───────────────\naction get: obtém detalhes de gist específico\naction get requires: gist_id\n───────────────\naction update: atualiza gist existente\naction update requires: gist_id, description, files, public\n───────────────\naction delete: remove gist\naction delete requires: gist_id\n───────────────\naction fork: faz fork de gist\naction fork requires: gist_id\n───────────────\naction star: adiciona/remove estrela\naction star requires: gist_id, star\n───────────────\naction comment: adiciona comentário\naction comment requires: gist_id, comment_body',
|
|
66
|
-
inputSchema: {
|
|
67
|
-
type: 'object',
|
|
68
|
-
properties: {
|
|
69
|
-
action: {
|
|
70
|
-
type: 'string',
|
|
71
|
-
enum: ['create', 'list', 'get', 'update', 'delete', 'fork', 'star', 'comment'],
|
|
72
|
-
description: 'Action to perform on gists'
|
|
73
|
-
},
|
|
74
|
-
projectPath: { type: 'string', description: 'Local project path for git operations' },
|
|
75
|
-
gist_id: { type: 'string', description: 'Gist ID' },
|
|
76
|
-
description: { type: 'string', description: 'Gist description' },
|
|
77
|
-
files: { type: 'object', description: 'Gist files' },
|
|
78
|
-
public: { type: 'boolean', description: 'Public gist' },
|
|
79
|
-
username: { type: 'string', description: 'Username for listing gists' },
|
|
80
|
-
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
81
|
-
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
|
|
82
|
-
star: { type: 'boolean', description: 'Star/unstar gist' },
|
|
83
|
-
comment_body: { type: 'string', description: 'Comment content' }
|
|
84
|
-
},
|
|
85
|
-
required: ['action', 'projectPath']
|
|
86
|
-
},
|
|
87
|
-
async handler(input) {
|
|
88
|
-
try {
|
|
89
|
-
const validatedInput = GhGistsInputSchema.parse(input);
|
|
90
|
-
// Fixar provider como github para tools exclusivas do GitHub
|
|
91
|
-
const provider = index_js_1.globalProviderFactory.getProvider('github');
|
|
92
|
-
if (!provider) {
|
|
93
|
-
throw new Error('Provider GitHub não encontrado');
|
|
94
|
-
}
|
|
95
|
-
switch (validatedInput.action) {
|
|
96
|
-
case 'create':
|
|
97
|
-
return await this.create(validatedInput, provider);
|
|
98
|
-
case 'list':
|
|
99
|
-
return await this.list(validatedInput, provider);
|
|
100
|
-
case 'get':
|
|
101
|
-
return await this.get(validatedInput, provider);
|
|
102
|
-
case 'update':
|
|
103
|
-
return await this.update(validatedInput, provider);
|
|
104
|
-
case 'delete':
|
|
105
|
-
return await this.delete(validatedInput, provider);
|
|
106
|
-
case 'fork':
|
|
107
|
-
return await this.fork(validatedInput, provider);
|
|
108
|
-
case 'star':
|
|
109
|
-
return await this.star(validatedInput, provider);
|
|
110
|
-
case 'comment':
|
|
111
|
-
return await this.comment(validatedInput, provider);
|
|
112
|
-
default:
|
|
113
|
-
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
return {
|
|
118
|
-
success: false,
|
|
119
|
-
action: input.action,
|
|
120
|
-
message: 'Erro na operação de gist',
|
|
121
|
-
error: error instanceof Error ? error.message : String(error)
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
async create(params, provider) {
|
|
126
|
-
try {
|
|
127
|
-
if (!params.files) {
|
|
128
|
-
throw new Error('files são obrigatórios para create');
|
|
129
|
-
}
|
|
130
|
-
// Simular criação de gist (implementação real dependeria da API do GitHub)
|
|
131
|
-
const gist = {
|
|
132
|
-
id: `gist-${Date.now()}`,
|
|
133
|
-
description: params.description || '',
|
|
134
|
-
files: params.files,
|
|
135
|
-
public: params.public || false,
|
|
136
|
-
created_at: new Date().toISOString(),
|
|
137
|
-
updated_at: new Date().toISOString()
|
|
138
|
-
};
|
|
139
|
-
return {
|
|
140
|
-
success: true,
|
|
141
|
-
action: 'create',
|
|
142
|
-
message: 'Gist criado com sucesso',
|
|
143
|
-
data: gist
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
throw new Error(`Falha ao criar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
async list(params, provider) {
|
|
151
|
-
try {
|
|
152
|
-
const page = params.page || 1;
|
|
153
|
-
const limit = params.limit || 30;
|
|
154
|
-
// Simular listagem de gists
|
|
155
|
-
const gists = [
|
|
156
|
-
{
|
|
157
|
-
id: 'gist-1',
|
|
158
|
-
description: 'Sample gist 1',
|
|
159
|
-
public: true,
|
|
160
|
-
created_at: new Date().toISOString()
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
id: 'gist-2',
|
|
164
|
-
description: 'Sample gist 2',
|
|
165
|
-
public: false,
|
|
166
|
-
created_at: new Date().toISOString()
|
|
167
|
-
}
|
|
168
|
-
];
|
|
169
|
-
return {
|
|
170
|
-
success: true,
|
|
171
|
-
action: 'list',
|
|
172
|
-
message: `${gists.length} gists encontrados`,
|
|
173
|
-
data: {
|
|
174
|
-
gists,
|
|
175
|
-
page,
|
|
176
|
-
limit,
|
|
177
|
-
total: gists.length
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
throw new Error(`Falha ao listar gists: ${error instanceof Error ? error.message : String(error)}`);
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
async get(params, provider) {
|
|
186
|
-
try {
|
|
187
|
-
if (!params.gist_id) {
|
|
188
|
-
throw new Error('gist_id é obrigatório para get');
|
|
189
|
-
}
|
|
190
|
-
// Simular obtenção de gist
|
|
191
|
-
const gist = {
|
|
192
|
-
id: params.gist_id,
|
|
193
|
-
description: 'Sample gist',
|
|
194
|
-
files: {
|
|
195
|
-
'example.js': {
|
|
196
|
-
content: 'console.log("Hello, World!");',
|
|
197
|
-
filename: 'example.js'
|
|
198
|
-
}
|
|
199
|
-
},
|
|
200
|
-
public: true,
|
|
201
|
-
created_at: new Date().toISOString(),
|
|
202
|
-
updated_at: new Date().toISOString()
|
|
203
|
-
};
|
|
204
|
-
return {
|
|
205
|
-
success: true,
|
|
206
|
-
action: 'get',
|
|
207
|
-
message: `Gist ${params.gist_id} obtido com sucesso`,
|
|
208
|
-
data: gist
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
throw new Error(`Falha ao obter gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
213
|
-
}
|
|
214
|
-
},
|
|
215
|
-
async update(params, provider) {
|
|
216
|
-
try {
|
|
217
|
-
if (!params.gist_id) {
|
|
218
|
-
throw new Error('gist_id é obrigatório para update');
|
|
219
|
-
}
|
|
220
|
-
// Simular atualização de gist
|
|
221
|
-
const gist = {
|
|
222
|
-
id: params.gist_id,
|
|
223
|
-
description: params.description || 'Updated gist',
|
|
224
|
-
files: params.files || {},
|
|
225
|
-
public: params.public,
|
|
226
|
-
updated_at: new Date().toISOString()
|
|
227
|
-
};
|
|
228
|
-
return {
|
|
229
|
-
success: true,
|
|
230
|
-
action: 'update',
|
|
231
|
-
message: `Gist ${params.gist_id} atualizado com sucesso`,
|
|
232
|
-
data: gist
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
throw new Error(`Falha ao atualizar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
async delete(params, provider) {
|
|
240
|
-
try {
|
|
241
|
-
if (!params.gist_id) {
|
|
242
|
-
throw new Error('gist_id é obrigatório para delete');
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
success: true,
|
|
246
|
-
action: 'delete',
|
|
247
|
-
message: `Gist ${params.gist_id} deletado com sucesso`,
|
|
248
|
-
data: { deleted: true }
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
throw new Error(`Falha ao deletar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
async fork(params, provider) {
|
|
256
|
-
try {
|
|
257
|
-
if (!params.gist_id) {
|
|
258
|
-
throw new Error('gist_id é obrigatório para fork');
|
|
259
|
-
}
|
|
260
|
-
// Simular fork de gist
|
|
261
|
-
const forkedGist = {
|
|
262
|
-
id: `gist-${Date.now()}`,
|
|
263
|
-
description: `Fork of ${params.gist_id}`,
|
|
264
|
-
forked_from: params.gist_id,
|
|
265
|
-
created_at: new Date().toISOString()
|
|
266
|
-
};
|
|
267
|
-
return {
|
|
268
|
-
success: true,
|
|
269
|
-
action: 'fork',
|
|
270
|
-
message: `Fork do gist ${params.gist_id} criado com sucesso`,
|
|
271
|
-
data: forkedGist
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
throw new Error(`Falha ao fazer fork do gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
276
|
-
}
|
|
277
|
-
},
|
|
278
|
-
async star(params, provider) {
|
|
279
|
-
try {
|
|
280
|
-
if (!params.gist_id) {
|
|
281
|
-
throw new Error('gist_id é obrigatório para star');
|
|
282
|
-
}
|
|
283
|
-
const action = params.star ? 'favoritado' : 'desfavoritado';
|
|
284
|
-
return {
|
|
285
|
-
success: true,
|
|
286
|
-
action: 'star',
|
|
287
|
-
message: `Gist ${params.gist_id} ${action} com sucesso`,
|
|
288
|
-
data: {
|
|
289
|
-
gist_id: params.gist_id,
|
|
290
|
-
starred: params.star
|
|
291
|
-
}
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
catch (error) {
|
|
295
|
-
throw new Error(`Falha ao favoritar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
296
|
-
}
|
|
297
|
-
},
|
|
298
|
-
async comment(params, provider) {
|
|
299
|
-
try {
|
|
300
|
-
if (!params.gist_id || !params.comment_body) {
|
|
301
|
-
throw new Error('gist_id e comment_body são obrigatórios para comment');
|
|
302
|
-
}
|
|
303
|
-
// Simular comentário em gist
|
|
304
|
-
const comment = {
|
|
305
|
-
id: `comment-${Date.now()}`,
|
|
306
|
-
gist_id: params.gist_id,
|
|
307
|
-
body: params.comment_body,
|
|
308
|
-
created_at: new Date().toISOString()
|
|
309
|
-
};
|
|
310
|
-
return {
|
|
311
|
-
success: true,
|
|
312
|
-
action: 'comment',
|
|
313
|
-
message: `Comentário adicionado ao gist ${params.gist_id} com sucesso`,
|
|
314
|
-
data: comment
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
catch (error) {
|
|
318
|
-
throw new Error(`Falha ao comentar no gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ghGistsTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: gh-gists
|
|
8
|
+
*
|
|
9
|
+
* DESCRIÇÃO:
|
|
10
|
+
* Gerenciamento de Gists GitHub (exclusivo GitHub) com múltiplas ações
|
|
11
|
+
*
|
|
12
|
+
* FUNCIONALIDADES:
|
|
13
|
+
* - Criar gist
|
|
14
|
+
* - Listar gists
|
|
15
|
+
* - Obter gist
|
|
16
|
+
* - Atualizar gist
|
|
17
|
+
* - Deletar gist
|
|
18
|
+
* - Fazer fork do gist
|
|
19
|
+
* - Favoritar gist
|
|
20
|
+
* - Comentar gist
|
|
21
|
+
*
|
|
22
|
+
* USO:
|
|
23
|
+
* - Para compartilhar código rapidamente
|
|
24
|
+
* - Para snippets de código
|
|
25
|
+
* - Para documentação rápida
|
|
26
|
+
* - Para testes de código
|
|
27
|
+
*
|
|
28
|
+
* RECOMENDAÇÕES:
|
|
29
|
+
* - Use para código pequeno e focado
|
|
30
|
+
* - Adicione descrições claras
|
|
31
|
+
* - Use tags apropriadas
|
|
32
|
+
* - Mantenha gists organizados
|
|
33
|
+
*/
|
|
34
|
+
const GhGistsInputSchema = zod_1.z.object({
|
|
35
|
+
action: zod_1.z.enum(['create', 'list', 'get', 'update', 'delete', 'fork', 'star', 'comment']),
|
|
36
|
+
// owner: obtido automaticamente do provider,
|
|
37
|
+
repo: zod_1.z.string(),
|
|
38
|
+
projectPath: zod_1.z.string().describe('Local project path for git operations'),
|
|
39
|
+
// Para create/update
|
|
40
|
+
gist_id: zod_1.z.string().optional(),
|
|
41
|
+
description: zod_1.z.string().optional(),
|
|
42
|
+
files: zod_1.z.record(zod_1.z.object({
|
|
43
|
+
content: zod_1.z.string(),
|
|
44
|
+
filename: zod_1.z.string().optional()
|
|
45
|
+
})).optional(),
|
|
46
|
+
public: zod_1.z.boolean().optional(),
|
|
47
|
+
// Para list
|
|
48
|
+
username: zod_1.z.string().optional(),
|
|
49
|
+
page: zod_1.z.number().min(1).optional(),
|
|
50
|
+
limit: zod_1.z.number().min(1).max(100).optional(),
|
|
51
|
+
// Para star
|
|
52
|
+
star: zod_1.z.boolean().optional(),
|
|
53
|
+
// Para comment
|
|
54
|
+
comment_body: zod_1.z.string().optional(),
|
|
55
|
+
});
|
|
56
|
+
const GhGistsResultSchema = zod_1.z.object({
|
|
57
|
+
success: zod_1.z.boolean(),
|
|
58
|
+
action: zod_1.z.string(),
|
|
59
|
+
message: zod_1.z.string(),
|
|
60
|
+
data: zod_1.z.any().optional(),
|
|
61
|
+
error: zod_1.z.string().optional()
|
|
62
|
+
});
|
|
63
|
+
exports.ghGistsTool = {
|
|
64
|
+
name: 'gh-gists',
|
|
65
|
+
description: 'tool: Gerencia GitHub Gists para compartilhamento de código\n──────────────\naction create: cria novo gist\naction create requires: files, description, public\n───────────────\naction list: lista gists\naction list requires: username, page, limit\n───────────────\naction get: obtém detalhes de gist específico\naction get requires: gist_id\n───────────────\naction update: atualiza gist existente\naction update requires: gist_id, description, files, public\n───────────────\naction delete: remove gist\naction delete requires: gist_id\n───────────────\naction fork: faz fork de gist\naction fork requires: gist_id\n───────────────\naction star: adiciona/remove estrela\naction star requires: gist_id, star\n───────────────\naction comment: adiciona comentário\naction comment requires: gist_id, comment_body',
|
|
66
|
+
inputSchema: {
|
|
67
|
+
type: 'object',
|
|
68
|
+
properties: {
|
|
69
|
+
action: {
|
|
70
|
+
type: 'string',
|
|
71
|
+
enum: ['create', 'list', 'get', 'update', 'delete', 'fork', 'star', 'comment'],
|
|
72
|
+
description: 'Action to perform on gists'
|
|
73
|
+
},
|
|
74
|
+
projectPath: { type: 'string', description: 'Local project path for git operations' },
|
|
75
|
+
gist_id: { type: 'string', description: 'Gist ID' },
|
|
76
|
+
description: { type: 'string', description: 'Gist description' },
|
|
77
|
+
files: { type: 'object', description: 'Gist files' },
|
|
78
|
+
public: { type: 'boolean', description: 'Public gist' },
|
|
79
|
+
username: { type: 'string', description: 'Username for listing gists' },
|
|
80
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
81
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
|
|
82
|
+
star: { type: 'boolean', description: 'Star/unstar gist' },
|
|
83
|
+
comment_body: { type: 'string', description: 'Comment content' }
|
|
84
|
+
},
|
|
85
|
+
required: ['action', 'projectPath']
|
|
86
|
+
},
|
|
87
|
+
async handler(input) {
|
|
88
|
+
try {
|
|
89
|
+
const validatedInput = GhGistsInputSchema.parse(input);
|
|
90
|
+
// Fixar provider como github para tools exclusivas do GitHub
|
|
91
|
+
const provider = index_js_1.globalProviderFactory.getProvider('github');
|
|
92
|
+
if (!provider) {
|
|
93
|
+
throw new Error('Provider GitHub não encontrado');
|
|
94
|
+
}
|
|
95
|
+
switch (validatedInput.action) {
|
|
96
|
+
case 'create':
|
|
97
|
+
return await this.create(validatedInput, provider);
|
|
98
|
+
case 'list':
|
|
99
|
+
return await this.list(validatedInput, provider);
|
|
100
|
+
case 'get':
|
|
101
|
+
return await this.get(validatedInput, provider);
|
|
102
|
+
case 'update':
|
|
103
|
+
return await this.update(validatedInput, provider);
|
|
104
|
+
case 'delete':
|
|
105
|
+
return await this.delete(validatedInput, provider);
|
|
106
|
+
case 'fork':
|
|
107
|
+
return await this.fork(validatedInput, provider);
|
|
108
|
+
case 'star':
|
|
109
|
+
return await this.star(validatedInput, provider);
|
|
110
|
+
case 'comment':
|
|
111
|
+
return await this.comment(validatedInput, provider);
|
|
112
|
+
default:
|
|
113
|
+
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return {
|
|
118
|
+
success: false,
|
|
119
|
+
action: input.action,
|
|
120
|
+
message: 'Erro na operação de gist',
|
|
121
|
+
error: error instanceof Error ? error.message : String(error)
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
async create(params, provider) {
|
|
126
|
+
try {
|
|
127
|
+
if (!params.files) {
|
|
128
|
+
throw new Error('files são obrigatórios para create');
|
|
129
|
+
}
|
|
130
|
+
// Simular criação de gist (implementação real dependeria da API do GitHub)
|
|
131
|
+
const gist = {
|
|
132
|
+
id: `gist-${Date.now()}`,
|
|
133
|
+
description: params.description || '',
|
|
134
|
+
files: params.files,
|
|
135
|
+
public: params.public || false,
|
|
136
|
+
created_at: new Date().toISOString(),
|
|
137
|
+
updated_at: new Date().toISOString()
|
|
138
|
+
};
|
|
139
|
+
return {
|
|
140
|
+
success: true,
|
|
141
|
+
action: 'create',
|
|
142
|
+
message: 'Gist criado com sucesso',
|
|
143
|
+
data: gist
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw new Error(`Falha ao criar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
async list(params, provider) {
|
|
151
|
+
try {
|
|
152
|
+
const page = params.page || 1;
|
|
153
|
+
const limit = params.limit || 30;
|
|
154
|
+
// Simular listagem de gists
|
|
155
|
+
const gists = [
|
|
156
|
+
{
|
|
157
|
+
id: 'gist-1',
|
|
158
|
+
description: 'Sample gist 1',
|
|
159
|
+
public: true,
|
|
160
|
+
created_at: new Date().toISOString()
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: 'gist-2',
|
|
164
|
+
description: 'Sample gist 2',
|
|
165
|
+
public: false,
|
|
166
|
+
created_at: new Date().toISOString()
|
|
167
|
+
}
|
|
168
|
+
];
|
|
169
|
+
return {
|
|
170
|
+
success: true,
|
|
171
|
+
action: 'list',
|
|
172
|
+
message: `${gists.length} gists encontrados`,
|
|
173
|
+
data: {
|
|
174
|
+
gists,
|
|
175
|
+
page,
|
|
176
|
+
limit,
|
|
177
|
+
total: gists.length
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
throw new Error(`Falha ao listar gists: ${error instanceof Error ? error.message : String(error)}`);
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
async get(params, provider) {
|
|
186
|
+
try {
|
|
187
|
+
if (!params.gist_id) {
|
|
188
|
+
throw new Error('gist_id é obrigatório para get');
|
|
189
|
+
}
|
|
190
|
+
// Simular obtenção de gist
|
|
191
|
+
const gist = {
|
|
192
|
+
id: params.gist_id,
|
|
193
|
+
description: 'Sample gist',
|
|
194
|
+
files: {
|
|
195
|
+
'example.js': {
|
|
196
|
+
content: 'console.log("Hello, World!");',
|
|
197
|
+
filename: 'example.js'
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
public: true,
|
|
201
|
+
created_at: new Date().toISOString(),
|
|
202
|
+
updated_at: new Date().toISOString()
|
|
203
|
+
};
|
|
204
|
+
return {
|
|
205
|
+
success: true,
|
|
206
|
+
action: 'get',
|
|
207
|
+
message: `Gist ${params.gist_id} obtido com sucesso`,
|
|
208
|
+
data: gist
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
throw new Error(`Falha ao obter gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
async update(params, provider) {
|
|
216
|
+
try {
|
|
217
|
+
if (!params.gist_id) {
|
|
218
|
+
throw new Error('gist_id é obrigatório para update');
|
|
219
|
+
}
|
|
220
|
+
// Simular atualização de gist
|
|
221
|
+
const gist = {
|
|
222
|
+
id: params.gist_id,
|
|
223
|
+
description: params.description || 'Updated gist',
|
|
224
|
+
files: params.files || {},
|
|
225
|
+
public: params.public,
|
|
226
|
+
updated_at: new Date().toISOString()
|
|
227
|
+
};
|
|
228
|
+
return {
|
|
229
|
+
success: true,
|
|
230
|
+
action: 'update',
|
|
231
|
+
message: `Gist ${params.gist_id} atualizado com sucesso`,
|
|
232
|
+
data: gist
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
throw new Error(`Falha ao atualizar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
async delete(params, provider) {
|
|
240
|
+
try {
|
|
241
|
+
if (!params.gist_id) {
|
|
242
|
+
throw new Error('gist_id é obrigatório para delete');
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
success: true,
|
|
246
|
+
action: 'delete',
|
|
247
|
+
message: `Gist ${params.gist_id} deletado com sucesso`,
|
|
248
|
+
data: { deleted: true }
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
throw new Error(`Falha ao deletar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
async fork(params, provider) {
|
|
256
|
+
try {
|
|
257
|
+
if (!params.gist_id) {
|
|
258
|
+
throw new Error('gist_id é obrigatório para fork');
|
|
259
|
+
}
|
|
260
|
+
// Simular fork de gist
|
|
261
|
+
const forkedGist = {
|
|
262
|
+
id: `gist-${Date.now()}`,
|
|
263
|
+
description: `Fork of ${params.gist_id}`,
|
|
264
|
+
forked_from: params.gist_id,
|
|
265
|
+
created_at: new Date().toISOString()
|
|
266
|
+
};
|
|
267
|
+
return {
|
|
268
|
+
success: true,
|
|
269
|
+
action: 'fork',
|
|
270
|
+
message: `Fork do gist ${params.gist_id} criado com sucesso`,
|
|
271
|
+
data: forkedGist
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
throw new Error(`Falha ao fazer fork do gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
async star(params, provider) {
|
|
279
|
+
try {
|
|
280
|
+
if (!params.gist_id) {
|
|
281
|
+
throw new Error('gist_id é obrigatório para star');
|
|
282
|
+
}
|
|
283
|
+
const action = params.star ? 'favoritado' : 'desfavoritado';
|
|
284
|
+
return {
|
|
285
|
+
success: true,
|
|
286
|
+
action: 'star',
|
|
287
|
+
message: `Gist ${params.gist_id} ${action} com sucesso`,
|
|
288
|
+
data: {
|
|
289
|
+
gist_id: params.gist_id,
|
|
290
|
+
starred: params.star
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
throw new Error(`Falha ao favoritar gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
async comment(params, provider) {
|
|
299
|
+
try {
|
|
300
|
+
if (!params.gist_id || !params.comment_body) {
|
|
301
|
+
throw new Error('gist_id e comment_body são obrigatórios para comment');
|
|
302
|
+
}
|
|
303
|
+
// Simular comentário em gist
|
|
304
|
+
const comment = {
|
|
305
|
+
id: `comment-${Date.now()}`,
|
|
306
|
+
gist_id: params.gist_id,
|
|
307
|
+
body: params.comment_body,
|
|
308
|
+
created_at: new Date().toISOString()
|
|
309
|
+
};
|
|
310
|
+
return {
|
|
311
|
+
success: true,
|
|
312
|
+
action: 'comment',
|
|
313
|
+
message: `Comentário adicionado ao gist ${params.gist_id} com sucesso`,
|
|
314
|
+
data: comment
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
throw new Error(`Falha ao comentar no gist: ${error instanceof Error ? error.message : String(error)}`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
322
|
//# sourceMappingURL=gh-gists.js.map
|