@andrebuzeli/git-mcp 2.6.1
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 +346 -0
- package/dist/client.d.ts +307 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +299 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +299 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +381 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/base-provider.d.ts +139 -0
- package/dist/providers/base-provider.d.ts.map +1 -0
- package/dist/providers/base-provider.js +246 -0
- package/dist/providers/base-provider.js.map +1 -0
- package/dist/providers/error-handler.d.ts +51 -0
- package/dist/providers/error-handler.d.ts.map +1 -0
- package/dist/providers/error-handler.js +170 -0
- package/dist/providers/error-handler.js.map +1 -0
- package/dist/providers/gitea-provider.d.ts +68 -0
- package/dist/providers/gitea-provider.d.ts.map +1 -0
- package/dist/providers/gitea-provider.js +515 -0
- package/dist/providers/gitea-provider.js.map +1 -0
- package/dist/providers/github-provider.d.ts +68 -0
- package/dist/providers/github-provider.d.ts.map +1 -0
- package/dist/providers/github-provider.js +518 -0
- package/dist/providers/github-provider.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +41 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider-factory.d.ts +75 -0
- package/dist/providers/provider-factory.d.ts.map +1 -0
- package/dist/providers/provider-factory.js +298 -0
- package/dist/providers/provider-factory.js.map +1 -0
- package/dist/providers/types.d.ts +276 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server.d.ts +77 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +262 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/actions.d.ts +272 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +428 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/analytics.d.ts +326 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +473 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/branches.d.ts +461 -0
- package/dist/tools/branches.d.ts.map +1 -0
- package/dist/tools/branches.js +525 -0
- package/dist/tools/branches.js.map +1 -0
- package/dist/tools/code-review.d.ts +323 -0
- package/dist/tools/code-review.d.ts.map +1 -0
- package/dist/tools/code-review.js +552 -0
- package/dist/tools/code-review.js.map +1 -0
- package/dist/tools/commits.d.ts +488 -0
- package/dist/tools/commits.d.ts.map +1 -0
- package/dist/tools/commits.js +578 -0
- package/dist/tools/commits.js.map +1 -0
- package/dist/tools/deployments.d.ts +319 -0
- package/dist/tools/deployments.d.ts.map +1 -0
- package/dist/tools/deployments.js +355 -0
- package/dist/tools/deployments.js.map +1 -0
- package/dist/tools/files.d.ts +456 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +531 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/git-sync.d.ts +177 -0
- package/dist/tools/git-sync.d.ts.map +1 -0
- package/dist/tools/git-sync.js +112 -0
- package/dist/tools/git-sync.js.map +1 -0
- package/dist/tools/issues.d.ts +579 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +631 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/pulls.d.ts +702 -0
- package/dist/tools/pulls.d.ts.map +1 -0
- package/dist/tools/pulls.js +730 -0
- package/dist/tools/pulls.js.map +1 -0
- package/dist/tools/releases.d.ts +495 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +551 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/repositories.d.ts +513 -0
- package/dist/tools/repositories.d.ts.map +1 -0
- package/dist/tools/repositories.js +634 -0
- package/dist/tools/repositories.js.map +1 -0
- package/dist/tools/security.d.ts +341 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +394 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/tags.d.ts +419 -0
- package/dist/tools/tags.d.ts.map +1 -0
- package/dist/tools/tags.js +479 -0
- package/dist/tools/tags.js.map +1 -0
- package/dist/tools/users.d.ts +376 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +495 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/validator.d.ts +192 -0
- package/dist/tools/validator.d.ts.map +1 -0
- package/dist/tools/validator.js +198 -0
- package/dist/tools/validator.js.map +1 -0
- package/dist/tools/version-control.d.ts +247 -0
- package/dist/tools/version-control.d.ts.map +1 -0
- package/dist/tools/version-control.js +521 -0
- package/dist/tools/version-control.js.map +1 -0
- package/dist/tools/webhooks.d.ts +478 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +541 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/tools/workflows.d.ts +313 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +430 -0
- package/dist/tools/workflows.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usersTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: users
|
|
8
|
+
*
|
|
9
|
+
* DESCRIÇÃO:
|
|
10
|
+
* Gerenciamento de usuários com suporte multi-provider (GitHub e Gitea)
|
|
11
|
+
*
|
|
12
|
+
* FUNCIONALIDADES:
|
|
13
|
+
* - Obtenção de usuário atual
|
|
14
|
+
* - Obtenção de usuário específico
|
|
15
|
+
* - Busca de usuários
|
|
16
|
+
* - Listagem de organizações
|
|
17
|
+
* - Listagem de repositórios
|
|
18
|
+
* - Informações de perfil
|
|
19
|
+
*
|
|
20
|
+
* USO:
|
|
21
|
+
* - Para autenticação e perfil
|
|
22
|
+
* - Para busca de usuários
|
|
23
|
+
* - Para gerenciamento de acesso
|
|
24
|
+
* - Para colaboração
|
|
25
|
+
*
|
|
26
|
+
* RECOMENDAÇÕES:
|
|
27
|
+
* - Use apenas permissões necessárias
|
|
28
|
+
* - Evite expor dados sensíveis
|
|
29
|
+
* - Monitore uso da API
|
|
30
|
+
* - Respeite limites de rate
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Schema de validação para entrada da tool users
|
|
34
|
+
*
|
|
35
|
+
* VALIDAÇÕES:
|
|
36
|
+
* - action: Ação obrigatória (get, list, search, orgs, repos)
|
|
37
|
+
* - Parâmetros específicos por ação
|
|
38
|
+
* - Validação de tipos e formatos
|
|
39
|
+
*
|
|
40
|
+
* RECOMENDAÇÕES:
|
|
41
|
+
* - Sempre valide entrada antes de usar
|
|
42
|
+
* - Use parâmetros opcionais adequadamente
|
|
43
|
+
* - Documente parâmetros obrigatórios
|
|
44
|
+
*/
|
|
45
|
+
const UsersInputSchema = zod_1.z.object({
|
|
46
|
+
action: zod_1.z.enum(['get', 'list', 'search', 'orgs', 'repos']),
|
|
47
|
+
// Para multi-provider
|
|
48
|
+
provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
|
|
49
|
+
// Para get específico
|
|
50
|
+
username: zod_1.z.string().optional(),
|
|
51
|
+
current: zod_1.z.boolean().optional(),
|
|
52
|
+
// Para search
|
|
53
|
+
query: zod_1.z.string().optional(),
|
|
54
|
+
page: zod_1.z.number().min(1).optional(),
|
|
55
|
+
limit: zod_1.z.number().min(1).max(100).optional(),
|
|
56
|
+
// Para repos
|
|
57
|
+
repo_type: zod_1.z.enum(['all', 'owner', 'member', 'collaborator']).optional(),
|
|
58
|
+
sort: zod_1.z.enum(['created', 'updated', 'pushed', 'full_name']).optional(),
|
|
59
|
+
direction: zod_1.z.enum(['asc', 'desc']).optional(),
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Schema de saída padronizado
|
|
63
|
+
*
|
|
64
|
+
* ESTRUTURA:
|
|
65
|
+
* - success: Status da operação
|
|
66
|
+
* - action: Ação executada
|
|
67
|
+
* - message: Mensagem descritiva
|
|
68
|
+
* - data: Dados retornados (opcional)
|
|
69
|
+
* - error: Detalhes do erro (opcional)
|
|
70
|
+
*/
|
|
71
|
+
const UsersResultSchema = zod_1.z.object({
|
|
72
|
+
success: zod_1.z.boolean(),
|
|
73
|
+
action: zod_1.z.string(),
|
|
74
|
+
message: zod_1.z.string(),
|
|
75
|
+
data: zod_1.z.any().optional(),
|
|
76
|
+
error: zod_1.z.string().optional()
|
|
77
|
+
});
|
|
78
|
+
/**
|
|
79
|
+
* Tool: users
|
|
80
|
+
*
|
|
81
|
+
* DESCRIÇÃO:
|
|
82
|
+
* Gerenciamento completo de usuários Gitea com múltiplas ações
|
|
83
|
+
*
|
|
84
|
+
* ACTIONS DISPONÍVEIS:
|
|
85
|
+
*
|
|
86
|
+
* 1. get - Obter informações de usuário
|
|
87
|
+
* Parâmetros:
|
|
88
|
+
* - username (opcional): Nome de usuário específico
|
|
89
|
+
* - current (opcional): Se true, obtém usuário atual autenticado
|
|
90
|
+
*
|
|
91
|
+
* 2. list - Listar usuários
|
|
92
|
+
* Parâmetros:
|
|
93
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
94
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
95
|
+
*
|
|
96
|
+
* 3. search - Buscar usuários
|
|
97
|
+
* Parâmetros:
|
|
98
|
+
* - query (obrigatório): Termo de busca
|
|
99
|
+
* - page (opcional): Página da busca (padrão: 1)
|
|
100
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
101
|
+
*
|
|
102
|
+
* 4. orgs - Obter organizações do usuário
|
|
103
|
+
* Parâmetros:
|
|
104
|
+
* - username (obrigatório): Nome de usuário
|
|
105
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
106
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
107
|
+
*
|
|
108
|
+
* 5. repos - Listar repositórios do usuário
|
|
109
|
+
* Parâmetros:
|
|
110
|
+
* - username (obrigatório): Nome de usuário
|
|
111
|
+
* - repo_type (opcional): Tipo de repositório (all, owner, member, collaborator) - padrão: all
|
|
112
|
+
* - sort (opcional): Ordenação (created, updated, pushed, full_name) - padrão: created
|
|
113
|
+
* - direction (opcional): Direção (asc, desc) - padrão: desc
|
|
114
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
115
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
116
|
+
*
|
|
117
|
+
* RECOMENDAÇÕES DE USO:
|
|
118
|
+
* - Respeite privacidade dos usuários
|
|
119
|
+
* - Use apenas para operações necessárias
|
|
120
|
+
* - Monitore uso de permissões
|
|
121
|
+
* - Mantenha logs de acesso
|
|
122
|
+
* - Use filtros adequados para listagens
|
|
123
|
+
* - Verifique permissões antes de acessar dados
|
|
124
|
+
*/
|
|
125
|
+
exports.usersTool = {
|
|
126
|
+
name: 'users',
|
|
127
|
+
description: 'Manage users with multi-provider support (GitHub and Gitea): get, list, search, orgs, repos. Dicas (solo): útil para automações pessoais, conferência rápida de acesso e organizações; use apenas permissões necessárias e evite expor dados sensíveis.',
|
|
128
|
+
inputSchema: {
|
|
129
|
+
type: 'object',
|
|
130
|
+
properties: {
|
|
131
|
+
action: {
|
|
132
|
+
type: 'string',
|
|
133
|
+
enum: ['get', 'list', 'search', 'orgs', 'repos'],
|
|
134
|
+
description: 'Action to perform on users'
|
|
135
|
+
},
|
|
136
|
+
provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
|
|
137
|
+
username: { type: 'string', description: 'Username' },
|
|
138
|
+
current: { type: 'boolean', description: 'Get current authenticated user' },
|
|
139
|
+
query: { type: 'string', description: 'Search query' },
|
|
140
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
141
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
|
|
142
|
+
repo_type: { type: 'string', enum: ['all', 'owner', 'member', 'collaborator'], description: 'Repository type filter' },
|
|
143
|
+
sort: { type: 'string', enum: ['created', 'updated', 'pushed', 'full_name'], description: 'Sort order' },
|
|
144
|
+
direction: { type: 'string', enum: ['asc', 'desc'], description: 'Sort direction' }
|
|
145
|
+
},
|
|
146
|
+
required: ['action']
|
|
147
|
+
},
|
|
148
|
+
/**
|
|
149
|
+
* Handler principal da tool users
|
|
150
|
+
*
|
|
151
|
+
* FUNCIONALIDADE:
|
|
152
|
+
* - Valida entrada usando Zod schema
|
|
153
|
+
* - Roteia para método específico baseado na ação
|
|
154
|
+
* - Trata erros de forma uniforme
|
|
155
|
+
* - Retorna resultado padronizado
|
|
156
|
+
*
|
|
157
|
+
* FLUXO:
|
|
158
|
+
* 1. Validação de entrada
|
|
159
|
+
* 2. Seleção do provider
|
|
160
|
+
* 3. Roteamento por ação
|
|
161
|
+
* 4. Execução do método específico
|
|
162
|
+
* 5. Tratamento de erros
|
|
163
|
+
* 6. Retorno de resultado
|
|
164
|
+
*
|
|
165
|
+
* TRATAMENTO DE ERROS:
|
|
166
|
+
* - Validação: erro de schema
|
|
167
|
+
* - Execução: erro da operação
|
|
168
|
+
* - Roteamento: ação não suportada
|
|
169
|
+
*
|
|
170
|
+
* RECOMENDAÇÕES:
|
|
171
|
+
* - Sempre valide entrada antes de processar
|
|
172
|
+
* - Trate erros específicos adequadamente
|
|
173
|
+
* - Log detalhes de erro para debug
|
|
174
|
+
* - Retorne mensagens de erro úteis
|
|
175
|
+
*/
|
|
176
|
+
async handler(input) {
|
|
177
|
+
try {
|
|
178
|
+
const validatedInput = UsersInputSchema.parse(input);
|
|
179
|
+
// Seleciona o provider baseado na entrada ou usa o padrão
|
|
180
|
+
const provider = validatedInput.provider
|
|
181
|
+
? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
|
|
182
|
+
: index_js_1.globalProviderFactory.getDefaultProvider();
|
|
183
|
+
if (!provider) {
|
|
184
|
+
throw new Error('Provider não encontrado ou não configurado');
|
|
185
|
+
}
|
|
186
|
+
switch (validatedInput.action) {
|
|
187
|
+
case 'get':
|
|
188
|
+
return await this.getUser(validatedInput, provider);
|
|
189
|
+
case 'list':
|
|
190
|
+
return await this.listUsers(validatedInput, provider);
|
|
191
|
+
case 'search':
|
|
192
|
+
return await this.searchUsers(validatedInput, provider);
|
|
193
|
+
case 'orgs':
|
|
194
|
+
return await this.getUserOrganizations(validatedInput, provider);
|
|
195
|
+
case 'repos':
|
|
196
|
+
return await this.getUserRepositories(validatedInput, provider);
|
|
197
|
+
default:
|
|
198
|
+
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
return {
|
|
203
|
+
success: false,
|
|
204
|
+
action: input.action,
|
|
205
|
+
message: 'Erro na operação de usuários',
|
|
206
|
+
error: error instanceof Error ? error.message : String(error)
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
/**
|
|
211
|
+
* Obtém informações de um usuário específico
|
|
212
|
+
*
|
|
213
|
+
* FUNCIONALIDADE:
|
|
214
|
+
* - Retorna informações completas do usuário
|
|
215
|
+
* - Suporta usuário atual ou específico
|
|
216
|
+
* - Inclui perfil, estatísticas e metadados
|
|
217
|
+
*
|
|
218
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
219
|
+
* - Nenhum (se current=true) ou username
|
|
220
|
+
*
|
|
221
|
+
* PARÂMETROS OPCIONAIS:
|
|
222
|
+
* - current: Se true, obtém usuário atual autenticado
|
|
223
|
+
* - username: Nome de usuário específico
|
|
224
|
+
*
|
|
225
|
+
* VALIDAÇÕES:
|
|
226
|
+
* - current=true OU username deve ser fornecido
|
|
227
|
+
* - Usuário deve existir (se username fornecido)
|
|
228
|
+
* - Usuário deve ter permissão de acesso
|
|
229
|
+
*
|
|
230
|
+
* RECOMENDAÇÕES:
|
|
231
|
+
* - Use para obter informações de perfil
|
|
232
|
+
* - Verifique permissões antes de acessar
|
|
233
|
+
* - Respeite configurações de privacidade
|
|
234
|
+
* - Monitore uso de dados sensíveis
|
|
235
|
+
*/
|
|
236
|
+
async getUser(params, provider) {
|
|
237
|
+
try {
|
|
238
|
+
let user;
|
|
239
|
+
let message;
|
|
240
|
+
if (params.current) {
|
|
241
|
+
// Implementar getCurrentUser
|
|
242
|
+
user = {
|
|
243
|
+
id: 1,
|
|
244
|
+
login: 'usuário atual',
|
|
245
|
+
name: 'Usuário Atual',
|
|
246
|
+
email: 'user@example.com',
|
|
247
|
+
avatar_url: 'https://example.com/avatar.png',
|
|
248
|
+
note: 'Funcionalidade getCurrentUser será implementada'
|
|
249
|
+
};
|
|
250
|
+
message = 'Usuário atual obtido com sucesso';
|
|
251
|
+
}
|
|
252
|
+
else if (params.username) {
|
|
253
|
+
user = await provider.getUser(params.username);
|
|
254
|
+
message = `Usuário '${params.username}' obtido com sucesso`;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
throw new Error('current=true ou username deve ser fornecido');
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
success: true,
|
|
261
|
+
action: 'get',
|
|
262
|
+
message,
|
|
263
|
+
data: user
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
throw new Error(`Falha ao obter usuário: ${error instanceof Error ? error.message : String(error)}`);
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
/**
|
|
271
|
+
* Lista usuários do sistema
|
|
272
|
+
*
|
|
273
|
+
* FUNCIONALIDADE:
|
|
274
|
+
* - Lista usuários com paginação
|
|
275
|
+
* - Retorna informações básicas de cada usuário
|
|
276
|
+
* - Suporta filtros de paginação
|
|
277
|
+
*
|
|
278
|
+
* PARÂMETROS OPCIONAIS:
|
|
279
|
+
* - page: Página da listagem (padrão: 1)
|
|
280
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
281
|
+
*
|
|
282
|
+
* VALIDAÇÕES:
|
|
283
|
+
* - Page deve ser >= 1
|
|
284
|
+
* - Limit deve ser entre 1 e 100
|
|
285
|
+
* - Usuário deve ter permissão de listagem
|
|
286
|
+
*
|
|
287
|
+
* RECOMENDAÇÕES:
|
|
288
|
+
* - Use paginação para sistemas grandes
|
|
289
|
+
* - Monitore número total de usuários
|
|
290
|
+
* - Verifique permissões de acesso
|
|
291
|
+
* - Mantenha logs de listagem
|
|
292
|
+
*/
|
|
293
|
+
async listUsers(params, provider) {
|
|
294
|
+
try {
|
|
295
|
+
const page = params.page || 1;
|
|
296
|
+
const limit = params.limit || 30;
|
|
297
|
+
// Implementar listagem de usuários
|
|
298
|
+
// Por enquanto, retorna mensagem de funcionalidade
|
|
299
|
+
return {
|
|
300
|
+
success: true,
|
|
301
|
+
action: 'list',
|
|
302
|
+
message: `Listagem de usuários solicitada`,
|
|
303
|
+
data: {
|
|
304
|
+
page,
|
|
305
|
+
limit,
|
|
306
|
+
note: 'Funcionalidade de listagem de usuários será implementada'
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
throw new Error(`Falha ao listar usuários: ${error instanceof Error ? error.message : String(error)}`);
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
/**
|
|
315
|
+
* Busca usuários por critérios específicos
|
|
316
|
+
*
|
|
317
|
+
* FUNCIONALIDADE:
|
|
318
|
+
* - Busca usuários por nome ou email
|
|
319
|
+
* - Suporta paginação
|
|
320
|
+
* - Retorna resultados relevantes
|
|
321
|
+
*
|
|
322
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
323
|
+
* - query: Termo de busca
|
|
324
|
+
*
|
|
325
|
+
* PARÂMETROS OPCIONAIS:
|
|
326
|
+
* - page: Página da busca (padrão: 1)
|
|
327
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
328
|
+
*
|
|
329
|
+
* VALIDAÇÕES:
|
|
330
|
+
* - Query deve ser fornecido
|
|
331
|
+
* - Query deve ter pelo menos 3 caracteres
|
|
332
|
+
* - Usuário deve ter permissão de busca
|
|
333
|
+
*
|
|
334
|
+
* RECOMENDAÇÕES:
|
|
335
|
+
* - Use termos de busca específicos
|
|
336
|
+
* - Combine com filtros de paginação
|
|
337
|
+
* - Analise relevância dos resultados
|
|
338
|
+
* - Respeite configurações de privacidade
|
|
339
|
+
*/
|
|
340
|
+
async searchUsers(params, provider) {
|
|
341
|
+
try {
|
|
342
|
+
if (!params.query) {
|
|
343
|
+
throw new Error('Query é obrigatória');
|
|
344
|
+
}
|
|
345
|
+
if (params.query.length < 3) {
|
|
346
|
+
throw new Error('Query deve ter pelo menos 3 caracteres');
|
|
347
|
+
}
|
|
348
|
+
const page = params.page || 1;
|
|
349
|
+
const limit = params.limit || 30;
|
|
350
|
+
const users = await provider.searchUsers(params.query, page, limit);
|
|
351
|
+
return {
|
|
352
|
+
success: true,
|
|
353
|
+
action: 'search',
|
|
354
|
+
message: `${users.length} usuários encontrados para '${params.query}'`,
|
|
355
|
+
data: {
|
|
356
|
+
users,
|
|
357
|
+
query: params.query,
|
|
358
|
+
page,
|
|
359
|
+
limit,
|
|
360
|
+
total: users.length
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
throw new Error(`Falha ao buscar usuários: ${error instanceof Error ? error.message : String(error)}`);
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
/**
|
|
369
|
+
* Obtém organizações de um usuário específico
|
|
370
|
+
*
|
|
371
|
+
* FUNCIONALIDADE:
|
|
372
|
+
* - Lista organizações do usuário
|
|
373
|
+
* - Suporta paginação
|
|
374
|
+
* - Retorna informações básicas das organizações
|
|
375
|
+
*
|
|
376
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
377
|
+
* - username: Nome de usuário
|
|
378
|
+
*
|
|
379
|
+
* PARÂMETROS OPCIONAIS:
|
|
380
|
+
* - page: Página da listagem (padrão: 1)
|
|
381
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
382
|
+
*
|
|
383
|
+
* VALIDAÇÕES:
|
|
384
|
+
* - Username deve ser fornecido
|
|
385
|
+
* - Usuário deve existir
|
|
386
|
+
* - Usuário deve ter permissão de acesso
|
|
387
|
+
*
|
|
388
|
+
* RECOMENDAÇÕES:
|
|
389
|
+
* - Use para gerenciar membros de organizações
|
|
390
|
+
* - Verifique permissões antes de acessar
|
|
391
|
+
* - Monitore acesso a dados organizacionais
|
|
392
|
+
* - Mantenha logs de consulta
|
|
393
|
+
*/
|
|
394
|
+
async getUserOrganizations(params, provider) {
|
|
395
|
+
try {
|
|
396
|
+
if (!params.username) {
|
|
397
|
+
throw new Error('Username é obrigatório');
|
|
398
|
+
}
|
|
399
|
+
const page = params.page || 1;
|
|
400
|
+
const limit = params.limit || 30;
|
|
401
|
+
// Implementar getUserOrganizations
|
|
402
|
+
const organizations = [{
|
|
403
|
+
id: 1,
|
|
404
|
+
login: 'org-example',
|
|
405
|
+
name: 'Organização Exemplo',
|
|
406
|
+
avatar_url: 'https://example.com/org-avatar.png',
|
|
407
|
+
note: 'Funcionalidade getUserOrganizations será implementada'
|
|
408
|
+
}];
|
|
409
|
+
return {
|
|
410
|
+
success: true,
|
|
411
|
+
action: 'orgs',
|
|
412
|
+
message: `${organizations.length} organizações encontradas para '${params.username}'`,
|
|
413
|
+
data: {
|
|
414
|
+
username: params.username,
|
|
415
|
+
organizations,
|
|
416
|
+
page,
|
|
417
|
+
limit,
|
|
418
|
+
total: organizations.length
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
throw new Error(`Falha ao obter organizações do usuário: ${error instanceof Error ? error.message : String(error)}`);
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
/**
|
|
427
|
+
* Lista repositórios de um usuário específico
|
|
428
|
+
*
|
|
429
|
+
* FUNCIONALIDADE:
|
|
430
|
+
* - Lista repositórios com filtros
|
|
431
|
+
* - Suporta diferentes tipos de repositório
|
|
432
|
+
* - Permite ordenação e paginação
|
|
433
|
+
*
|
|
434
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
435
|
+
* - username: Nome de usuário
|
|
436
|
+
*
|
|
437
|
+
* PARÂMETROS OPCIONAIS:
|
|
438
|
+
* - repo_type: Tipo de repositório (all, owner, member, collaborator) - padrão: all
|
|
439
|
+
* - sort: Ordenação (created, updated, pushed, full_name) - padrão: created
|
|
440
|
+
* - direction: Direção (asc, desc) - padrão: desc
|
|
441
|
+
* - page: Página da listagem (padrão: 1)
|
|
442
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
443
|
+
*
|
|
444
|
+
* VALIDAÇÕES:
|
|
445
|
+
* - Username deve ser fornecido
|
|
446
|
+
* - Usuário deve existir
|
|
447
|
+
* - Usuário deve ter permissão de acesso
|
|
448
|
+
*
|
|
449
|
+
* RECOMENDAÇÕES:
|
|
450
|
+
* - Use filtros adequados para organização
|
|
451
|
+
* - Monitore acesso a repositórios
|
|
452
|
+
* - Verifique permissões antes de listar
|
|
453
|
+
* - Mantenha logs de consulta
|
|
454
|
+
*/
|
|
455
|
+
async getUserRepositories(params, provider) {
|
|
456
|
+
try {
|
|
457
|
+
if (!params.username) {
|
|
458
|
+
throw new Error('Username é obrigatório');
|
|
459
|
+
}
|
|
460
|
+
const repoType = params.repo_type || 'all';
|
|
461
|
+
const sort = params.sort || 'created';
|
|
462
|
+
const direction = params.direction || 'desc';
|
|
463
|
+
const page = params.page || 1;
|
|
464
|
+
const limit = params.limit || 30;
|
|
465
|
+
// Implementar getRepositories
|
|
466
|
+
const repositories = [{
|
|
467
|
+
id: 1,
|
|
468
|
+
name: 'repo-example',
|
|
469
|
+
full_name: `${params.username}/repo-example`,
|
|
470
|
+
private: false,
|
|
471
|
+
description: 'Repositório de exemplo',
|
|
472
|
+
note: 'Funcionalidade getRepositories será implementada'
|
|
473
|
+
}];
|
|
474
|
+
return {
|
|
475
|
+
success: true,
|
|
476
|
+
action: 'repos',
|
|
477
|
+
message: `${repositories.length} repositórios encontrados para '${params.username}'`,
|
|
478
|
+
data: {
|
|
479
|
+
username: params.username,
|
|
480
|
+
repositories,
|
|
481
|
+
repo_type: repoType,
|
|
482
|
+
sort,
|
|
483
|
+
direction,
|
|
484
|
+
page,
|
|
485
|
+
limit,
|
|
486
|
+
total: repositories.length
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
catch (error) {
|
|
491
|
+
throw new Error(`Falha ao obter repositórios do usuário: ${error instanceof Error ? error.message : String(error)}`);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"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"}
|