@andrebuzeli/git-mcp 2.7.1 → 2.7.2

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.
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Auto-detecção de usuário para tools
3
+ *
4
+ * Este módulo fornece funções para auto-detectar o usuário atual
5
+ * baseado no token de autenticação, evitando a necessidade de
6
+ * passar owner/username em cada tool call.
7
+ */
8
+ /**
9
+ * Interface para parâmetros que podem ter owner/username
10
+ */
11
+ export interface AutoUserParams {
12
+ owner?: string;
13
+ username?: string;
14
+ provider?: string;
15
+ }
16
+ /**
17
+ * Aplica auto-detecção de usuário aos parâmetros
18
+ *
19
+ * @param params Parâmetros da tool
20
+ * @param actionsForOwner Ações que requerem owner
21
+ * @param actionsForUsername Ações que requerem username
22
+ * @returns Parâmetros atualizados com usuário auto-detectado
23
+ */
24
+ export declare function applyAutoUserDetection(params: AutoUserParams, actionsForOwner?: string[], actionsForUsername?: string[], action?: string): Promise<AutoUserParams>;
25
+ /**
26
+ * Configurações padrão para auto-detecção por tool
27
+ */
28
+ export declare const AUTO_USER_CONFIG: {
29
+ repositories: {
30
+ ownerActions: string[];
31
+ usernameActions: string[];
32
+ };
33
+ branches: {
34
+ ownerActions: string[];
35
+ usernameActions: never[];
36
+ };
37
+ files: {
38
+ ownerActions: string[];
39
+ usernameActions: never[];
40
+ };
41
+ commits: {
42
+ ownerActions: string[];
43
+ usernameActions: never[];
44
+ };
45
+ issues: {
46
+ ownerActions: string[];
47
+ usernameActions: never[];
48
+ };
49
+ pulls: {
50
+ ownerActions: string[];
51
+ usernameActions: never[];
52
+ };
53
+ releases: {
54
+ ownerActions: string[];
55
+ usernameActions: never[];
56
+ };
57
+ tags: {
58
+ ownerActions: string[];
59
+ usernameActions: never[];
60
+ };
61
+ users: {
62
+ ownerActions: never[];
63
+ usernameActions: string[];
64
+ };
65
+ webhooks: {
66
+ ownerActions: string[];
67
+ usernameActions: never[];
68
+ };
69
+ workflows: {
70
+ ownerActions: string[];
71
+ usernameActions: never[];
72
+ };
73
+ actions: {
74
+ ownerActions: string[];
75
+ usernameActions: never[];
76
+ };
77
+ deployments: {
78
+ ownerActions: string[];
79
+ usernameActions: never[];
80
+ };
81
+ security: {
82
+ ownerActions: string[];
83
+ usernameActions: never[];
84
+ };
85
+ analytics: {
86
+ ownerActions: string[];
87
+ usernameActions: never[];
88
+ };
89
+ 'code-review': {
90
+ ownerActions: string[];
91
+ usernameActions: never[];
92
+ };
93
+ };
94
+ /**
95
+ * Aplica auto-detecção para uma tool específica
96
+ *
97
+ * @param toolName Nome da tool
98
+ * @param params Parâmetros da tool
99
+ * @param action Ação sendo executada
100
+ * @returns Parâmetros atualizados
101
+ */
102
+ export declare function applyAutoUserForTool(toolName: keyof typeof AUTO_USER_CONFIG, params: AutoUserParams, action?: string): Promise<AutoUserParams>;
103
+ //# sourceMappingURL=auto-user-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-user-detection.d.ts","sourceRoot":"","sources":["../../src/tools/auto-user-detection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,eAAe,GAAE,MAAM,EAAO,EAC9B,kBAAkB,GAAE,MAAM,EAAO,EACjC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAiCzB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiE5B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,OAAO,gBAAgB,EACvC,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAYzB"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-detecção de usuário para tools
4
+ *
5
+ * Este módulo fornece funções para auto-detectar o usuário atual
6
+ * baseado no token de autenticação, evitando a necessidade de
7
+ * passar owner/username em cada tool call.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AUTO_USER_CONFIG = void 0;
11
+ exports.applyAutoUserDetection = applyAutoUserDetection;
12
+ exports.applyAutoUserForTool = applyAutoUserForTool;
13
+ const validator_js_1 = require("./validator.js");
14
+ /**
15
+ * Aplica auto-detecção de usuário aos parâmetros
16
+ *
17
+ * @param params Parâmetros da tool
18
+ * @param actionsForOwner Ações que requerem owner
19
+ * @param actionsForUsername Ações que requerem username
20
+ * @returns Parâmetros atualizados com usuário auto-detectado
21
+ */
22
+ async function applyAutoUserDetection(params, actionsForOwner = [], actionsForUsername = [], action) {
23
+ const updatedParams = { ...params };
24
+ try {
25
+ // Auto-detectar owner se necessário
26
+ if (!updatedParams.owner && action && actionsForOwner.includes(action)) {
27
+ updatedParams.owner = await (0, validator_js_1.getCurrentUser)(updatedParams.provider);
28
+ }
29
+ // Auto-detectar username se necessário
30
+ if (!updatedParams.username && action && actionsForUsername.includes(action)) {
31
+ updatedParams.username = await (0, validator_js_1.getCurrentUser)(updatedParams.provider);
32
+ }
33
+ // Para ações de list, se nem username nem owner foram fornecidos, usa owner como fallback
34
+ if (action === 'list' && !updatedParams.username && !updatedParams.owner) {
35
+ updatedParams.username = await (0, validator_js_1.getCurrentUser)(updatedParams.provider);
36
+ }
37
+ return updatedParams;
38
+ }
39
+ catch (error) {
40
+ const errorMessage = error instanceof Error ? error.message : String(error);
41
+ if (action && actionsForOwner.includes(action)) {
42
+ throw new Error(`Owner é obrigatório para a ação '${action}' e não foi possível auto-detectar o usuário atual. Erro: ${errorMessage}`);
43
+ }
44
+ if (action && actionsForUsername.includes(action)) {
45
+ throw new Error(`Username é obrigatório para a ação '${action}' e não foi possível auto-detectar o usuário atual. Erro: ${errorMessage}`);
46
+ }
47
+ throw error;
48
+ }
49
+ }
50
+ /**
51
+ * Configurações padrão para auto-detecção por tool
52
+ */
53
+ exports.AUTO_USER_CONFIG = {
54
+ repositories: {
55
+ ownerActions: ['get', 'update', 'delete', 'fork', 'archive', 'transfer'],
56
+ usernameActions: ['list']
57
+ },
58
+ branches: {
59
+ ownerActions: ['create', 'list', 'get', 'delete', 'merge', 'compare'],
60
+ usernameActions: []
61
+ },
62
+ files: {
63
+ ownerActions: ['get', 'create', 'update', 'delete', 'list'],
64
+ usernameActions: []
65
+ },
66
+ commits: {
67
+ ownerActions: ['list', 'get', 'create', 'compare', 'search'],
68
+ usernameActions: []
69
+ },
70
+ issues: {
71
+ ownerActions: ['create', 'list', 'get', 'update', 'close', 'comment', 'search'],
72
+ usernameActions: []
73
+ },
74
+ pulls: {
75
+ ownerActions: ['create', 'list', 'get', 'update', 'merge', 'close', 'review', 'search'],
76
+ usernameActions: []
77
+ },
78
+ releases: {
79
+ ownerActions: ['create', 'list', 'get', 'update', 'delete', 'publish'],
80
+ usernameActions: []
81
+ },
82
+ tags: {
83
+ ownerActions: ['create', 'list', 'get', 'delete', 'search'],
84
+ usernameActions: []
85
+ },
86
+ users: {
87
+ ownerActions: [],
88
+ usernameActions: ['get', 'list', 'search']
89
+ },
90
+ webhooks: {
91
+ ownerActions: ['create', 'list', 'get', 'update', 'delete'],
92
+ usernameActions: []
93
+ },
94
+ workflows: {
95
+ ownerActions: ['list', 'create', 'trigger', 'status', 'logs', 'disable', 'enable'],
96
+ usernameActions: []
97
+ },
98
+ actions: {
99
+ ownerActions: ['list-runs', 'cancel', 'rerun', 'artifacts', 'secrets', 'jobs', 'download-artifact'],
100
+ usernameActions: []
101
+ },
102
+ deployments: {
103
+ ownerActions: ['list', 'create', 'status', 'environments', 'rollback', 'delete'],
104
+ usernameActions: []
105
+ },
106
+ security: {
107
+ ownerActions: ['scan', 'vulnerabilities', 'alerts', 'policies', 'compliance', 'dependencies', 'advisories'],
108
+ usernameActions: []
109
+ },
110
+ analytics: {
111
+ ownerActions: ['traffic', 'contributors', 'activity', 'performance', 'reports', 'trends', 'insights'],
112
+ usernameActions: []
113
+ },
114
+ 'code-review': {
115
+ ownerActions: ['analyze', 'review-file', 'review-commit', 'review-pr', 'generate-report', 'apply-suggestions'],
116
+ usernameActions: []
117
+ }
118
+ };
119
+ /**
120
+ * Aplica auto-detecção para uma tool específica
121
+ *
122
+ * @param toolName Nome da tool
123
+ * @param params Parâmetros da tool
124
+ * @param action Ação sendo executada
125
+ * @returns Parâmetros atualizados
126
+ */
127
+ async function applyAutoUserForTool(toolName, params, action) {
128
+ const config = exports.AUTO_USER_CONFIG[toolName];
129
+ if (!config) {
130
+ return params;
131
+ }
132
+ return applyAutoUserDetection(params, config.ownerActions, config.usernameActions, action);
133
+ }
134
+ //# sourceMappingURL=auto-user-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-user-detection.js","sourceRoot":"","sources":["../../src/tools/auto-user-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Verificador de permissões para tokens
3
+ *
4
+ * Este módulo verifica se o token configurado tem permissões
5
+ * adequadas para acessar repositórios privados e públicos.
6
+ */
7
+ /**
8
+ * Interface para resultado de verificação de permissões
9
+ */
10
+ export interface PermissionCheckResult {
11
+ success: boolean;
12
+ provider: string;
13
+ user: string;
14
+ permissions: {
15
+ publicRepos: boolean;
16
+ privateRepos: boolean;
17
+ writeAccess: boolean;
18
+ adminAccess: boolean;
19
+ };
20
+ errors: string[];
21
+ }
22
+ /**
23
+ * Verifica as permissões do token atual
24
+ *
25
+ * @param provider Nome do provider (opcional, usa padrão se não fornecido)
26
+ * @returns Resultado da verificação de permissões
27
+ */
28
+ export declare function checkTokenPermissions(provider?: string): Promise<PermissionCheckResult>;
29
+ /**
30
+ * Gera relatório de permissões em formato legível
31
+ *
32
+ * @param result Resultado da verificação de permissões
33
+ * @returns Relatório formatado
34
+ */
35
+ export declare function generatePermissionReport(result: PermissionCheckResult): string;
36
+ /**
37
+ * Verifica permissões para todos os providers configurados
38
+ *
39
+ * @returns Array com resultados de todos os providers
40
+ */
41
+ export declare function checkAllProvidersPermissions(): Promise<PermissionCheckResult[]>;
42
+ //# sourceMappingURL=permission-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../../src/tools/permission-checker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE;QACX,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAmG7F;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAmC9E;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAUrF"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ /**
3
+ * Verificador de permissões para tokens
4
+ *
5
+ * Este módulo verifica se o token configurado tem permissões
6
+ * adequadas para acessar repositórios privados e públicos.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.checkTokenPermissions = checkTokenPermissions;
10
+ exports.generatePermissionReport = generatePermissionReport;
11
+ exports.checkAllProvidersPermissions = checkAllProvidersPermissions;
12
+ const index_js_1 = require("../providers/index.js");
13
+ /**
14
+ * Verifica as permissões do token atual
15
+ *
16
+ * @param provider Nome do provider (opcional, usa padrão se não fornecido)
17
+ * @returns Resultado da verificação de permissões
18
+ */
19
+ async function checkTokenPermissions(provider) {
20
+ const result = {
21
+ success: false,
22
+ provider: provider || 'default',
23
+ user: '',
24
+ permissions: {
25
+ publicRepos: false,
26
+ privateRepos: false,
27
+ writeAccess: false,
28
+ adminAccess: false
29
+ },
30
+ errors: []
31
+ };
32
+ try {
33
+ // Obter o provider
34
+ const providerInstance = provider
35
+ ? index_js_1.globalProviderFactory.getProvider(provider)
36
+ : index_js_1.globalProviderFactory.getDefaultProvider();
37
+ if (!providerInstance) {
38
+ result.errors.push(`Provider '${provider}' não encontrado`);
39
+ return result;
40
+ }
41
+ result.provider = providerInstance.config?.name || provider || 'unknown';
42
+ // 1. Verificar se consegue obter informações do usuário atual
43
+ try {
44
+ const userInfo = await providerInstance.getCurrentUser();
45
+ result.user = userInfo.login;
46
+ result.permissions.publicRepos = true; // Se conseguiu obter usuário, tem acesso básico
47
+ }
48
+ catch (error) {
49
+ result.errors.push(`Falha ao obter informações do usuário: ${error instanceof Error ? error.message : String(error)}`);
50
+ return result;
51
+ }
52
+ // 2. Tentar listar repositórios do usuário (inclui privados se tiver permissão)
53
+ try {
54
+ const repositories = await providerInstance.listRepositories(result.user, 1, 10);
55
+ // Verificar se há repositórios privados na lista
56
+ const hasPrivateRepos = repositories.some(repo => repo.private);
57
+ result.permissions.privateRepos = hasPrivateRepos;
58
+ if (repositories.length > 0) {
59
+ result.permissions.writeAccess = true; // Se conseguiu listar, provavelmente tem write access
60
+ }
61
+ }
62
+ catch (error) {
63
+ result.errors.push(`Falha ao listar repositórios: ${error instanceof Error ? error.message : String(error)}`);
64
+ }
65
+ // 3. Tentar obter um repositório específico (teste de read access)
66
+ try {
67
+ const testRepo = await providerInstance.getRepository(result.user, 'test-repo-12345');
68
+ // Se chegou aqui, conseguiu acessar (mesmo que seja um repositório inexistente)
69
+ result.permissions.publicRepos = true;
70
+ }
71
+ catch (error) {
72
+ // Erro esperado se o repositório não existir, mas indica que tem permissão de read
73
+ if (error instanceof Error && !error.message.includes('Not found')) {
74
+ result.errors.push(`Falha ao testar acesso a repositório: ${error.message}`);
75
+ }
76
+ }
77
+ // 4. Verificar permissões de admin (tentar criar um repositório de teste)
78
+ try {
79
+ const testRepoName = `permission-test-${Date.now()}`;
80
+ const testRepo = await providerInstance.createRepository(testRepoName, 'Teste de permissões', true);
81
+ // Se conseguiu criar, tem permissões de admin
82
+ result.permissions.adminAccess = true;
83
+ result.permissions.privateRepos = true;
84
+ result.permissions.writeAccess = true;
85
+ // Limpar o repositório de teste
86
+ try {
87
+ await providerInstance.deleteRepository(result.user, testRepoName);
88
+ }
89
+ catch (cleanupError) {
90
+ result.errors.push(`Aviso: Repositório de teste '${testRepoName}' criado mas não foi possível deletar`);
91
+ }
92
+ }
93
+ catch (error) {
94
+ if (error instanceof Error && error.message.includes('already exists')) {
95
+ // Repositório já existe, mas isso indica que tem permissões de admin
96
+ result.permissions.adminAccess = true;
97
+ result.permissions.privateRepos = true;
98
+ result.permissions.writeAccess = true;
99
+ }
100
+ else {
101
+ result.errors.push(`Sem permissões de admin: ${error instanceof Error ? error.message : String(error)}`);
102
+ }
103
+ }
104
+ // Determinar sucesso geral
105
+ result.success = result.permissions.publicRepos && result.permissions.privateRepos && result.permissions.writeAccess;
106
+ }
107
+ catch (error) {
108
+ result.errors.push(`Erro geral na verificação: ${error instanceof Error ? error.message : String(error)}`);
109
+ }
110
+ return result;
111
+ }
112
+ /**
113
+ * Gera relatório de permissões em formato legível
114
+ *
115
+ * @param result Resultado da verificação de permissões
116
+ * @returns Relatório formatado
117
+ */
118
+ function generatePermissionReport(result) {
119
+ let report = `\n=== RELATÓRIO DE PERMISSÕES ===\n`;
120
+ report += `Provider: ${result.provider}\n`;
121
+ report += `Usuário: ${result.user}\n`;
122
+ report += `Status: ${result.success ? '✅ SUCESSO' : '❌ PROBLEMAS DETECTADOS'}\n\n`;
123
+ report += `PERMISSÕES:\n`;
124
+ report += `• Repositórios públicos: ${result.permissions.publicRepos ? '✅' : '❌'}\n`;
125
+ report += `• Repositórios privados: ${result.permissions.privateRepos ? '✅' : '❌'}\n`;
126
+ report += `• Acesso de escrita: ${result.permissions.writeAccess ? '✅' : '❌'}\n`;
127
+ report += `• Acesso de admin: ${result.permissions.adminAccess ? '✅' : '❌'}\n\n`;
128
+ if (result.errors.length > 0) {
129
+ report += `ERROS DETECTADOS:\n`;
130
+ result.errors.forEach((error, index) => {
131
+ report += `${index + 1}. ${error}\n`;
132
+ });
133
+ report += `\n`;
134
+ }
135
+ if (!result.success) {
136
+ report += `RECOMENDAÇÕES:\n`;
137
+ if (!result.permissions.privateRepos) {
138
+ report += `• Verifique se o token tem permissões para acessar repositórios privados\n`;
139
+ }
140
+ if (!result.permissions.writeAccess) {
141
+ report += `• Verifique se o token tem permissões de escrita (write)\n`;
142
+ }
143
+ if (!result.permissions.adminAccess) {
144
+ report += `• Para operações completas, o token precisa de permissões de admin\n`;
145
+ }
146
+ report += `• Consulte a documentação do seu provider (Gitea/GitHub) para configurar permissões adequadas\n`;
147
+ }
148
+ return report;
149
+ }
150
+ /**
151
+ * Verifica permissões para todos os providers configurados
152
+ *
153
+ * @returns Array com resultados de todos os providers
154
+ */
155
+ async function checkAllProvidersPermissions() {
156
+ const results = [];
157
+ const providers = index_js_1.globalProviderFactory.listProviders();
158
+ for (const providerName of providers) {
159
+ const result = await checkTokenPermissions(providerName);
160
+ results.push(result);
161
+ }
162
+ return results;
163
+ }
164
+ //# sourceMappingURL=permission-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-checker.js","sourceRoot":"","sources":["../../src/tools/permission-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Tool: permissions
4
+ *
5
+ * DESCRIÇÃO:
6
+ * Verificação de permissões de tokens para Gitea e GitHub
7
+ *
8
+ * FUNCIONALIDADES:
9
+ * - Verificar permissões de token específico
10
+ * - Verificar todos os providers configurados
11
+ * - Gerar relatórios de permissões
12
+ * - Validar acesso a repositórios privados
13
+ *
14
+ * USO:
15
+ * - Para validar configuração de tokens
16
+ * - Para diagnosticar problemas de acesso
17
+ * - Para verificar permissões antes de operações críticas
18
+ * - Para auditoria de segurança
19
+ *
20
+ * RECOMENDAÇÕES:
21
+ * - Execute regularmente para validar tokens
22
+ * - Verifique antes de operações em massa
23
+ * - Monitore mudanças de permissões
24
+ * - Mantenha logs de verificações
25
+ */
26
+ /**
27
+ * Schema de validação para entrada da tool permissions
28
+ */
29
+ declare const PermissionsInputSchema: z.ZodObject<{
30
+ action: z.ZodEnum<["check", "check-all", "report"]>;
31
+ provider: z.ZodOptional<z.ZodString>;
32
+ generateReport: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ action: "check" | "check-all" | "report";
35
+ generateReport: boolean;
36
+ provider?: string | undefined;
37
+ }, {
38
+ action: "check" | "check-all" | "report";
39
+ provider?: string | undefined;
40
+ generateReport?: boolean | undefined;
41
+ }>;
42
+ export type PermissionsInput = z.infer<typeof PermissionsInputSchema>;
43
+ declare const PermissionsResultSchema: z.ZodObject<{
44
+ success: z.ZodBoolean;
45
+ action: z.ZodString;
46
+ message: z.ZodString;
47
+ data: z.ZodOptional<z.ZodAny>;
48
+ error: z.ZodOptional<z.ZodString>;
49
+ }, "strip", z.ZodTypeAny, {
50
+ message: string;
51
+ action: string;
52
+ success: boolean;
53
+ error?: string | undefined;
54
+ data?: any;
55
+ }, {
56
+ message: string;
57
+ action: string;
58
+ success: boolean;
59
+ error?: string | undefined;
60
+ data?: any;
61
+ }>;
62
+ export type PermissionsResult = z.infer<typeof PermissionsResultSchema>;
63
+ /**
64
+ * Tool: permissions
65
+ *
66
+ * ACTIONS DISPONÍVEIS:
67
+ *
68
+ * 1. check - Verificar permissões de um provider específico
69
+ * Parâmetros:
70
+ * - provider (opcional): Provider específico para verificar
71
+ * - generateReport (opcional): Gerar relatório formatado (padrão: true)
72
+ *
73
+ * 2. check-all - Verificar permissões de todos os providers
74
+ * Parâmetros:
75
+ * - generateReport (opcional): Gerar relatório formatado (padrão: true)
76
+ *
77
+ * 3. report - Gerar apenas relatório das últimas verificações
78
+ * Parâmetros:
79
+ * - provider (opcional): Provider específico
80
+ *
81
+ * RECOMENDAÇÕES DE USO:
82
+ * - Use 'check-all' para auditoria completa
83
+ * - Use 'check' para verificação específica
84
+ * - Use 'report' para visualizar resultados
85
+ * - Execute regularmente para monitoramento
86
+ */
87
+ export declare const permissionsTool: {
88
+ name: string;
89
+ description: string;
90
+ inputSchema: {
91
+ type: string;
92
+ properties: {
93
+ action: {
94
+ type: string;
95
+ enum: string[];
96
+ description: string;
97
+ };
98
+ provider: {
99
+ type: string;
100
+ description: string;
101
+ };
102
+ generateReport: {
103
+ type: string;
104
+ description: string;
105
+ };
106
+ };
107
+ required: string[];
108
+ };
109
+ /**
110
+ * Handler principal da tool permissions
111
+ */
112
+ handler(input: PermissionsInput): Promise<PermissionsResult>;
113
+ /**
114
+ * Verifica permissões de um provider específico
115
+ */
116
+ checkProviderPermissions(params: PermissionsInput): Promise<PermissionsResult>;
117
+ /**
118
+ * Verifica permissões de todos os providers
119
+ */
120
+ checkAllProviders(params: PermissionsInput): Promise<PermissionsResult>;
121
+ /**
122
+ * Gera relatório de verificações
123
+ */
124
+ generateReport(params: PermissionsInput): Promise<PermissionsResult>;
125
+ };
126
+ export {};
127
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/tools/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;GAEG;AACH,QAAA,MAAM,sBAAsB;;;;;;;;;;;;EAI1B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;IAiB1B;;OAEG;mBACkB,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwBlE;;OAEG;qCACoC,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBpF;;OAEG;8BAC6B,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkC7E;;OAEG;2BAC0B,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA2B3E,CAAC"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.permissionsTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const permission_checker_js_1 = require("./permission-checker.js");
6
+ /**
7
+ * Tool: permissions
8
+ *
9
+ * DESCRIÇÃO:
10
+ * Verificação de permissões de tokens para Gitea e GitHub
11
+ *
12
+ * FUNCIONALIDADES:
13
+ * - Verificar permissões de token específico
14
+ * - Verificar todos os providers configurados
15
+ * - Gerar relatórios de permissões
16
+ * - Validar acesso a repositórios privados
17
+ *
18
+ * USO:
19
+ * - Para validar configuração de tokens
20
+ * - Para diagnosticar problemas de acesso
21
+ * - Para verificar permissões antes de operações críticas
22
+ * - Para auditoria de segurança
23
+ *
24
+ * RECOMENDAÇÕES:
25
+ * - Execute regularmente para validar tokens
26
+ * - Verifique antes de operações em massa
27
+ * - Monitore mudanças de permissões
28
+ * - Mantenha logs de verificações
29
+ */
30
+ /**
31
+ * Schema de validação para entrada da tool permissions
32
+ */
33
+ const PermissionsInputSchema = zod_1.z.object({
34
+ action: zod_1.z.enum(['check', 'check-all', 'report']),
35
+ provider: zod_1.z.string().optional(),
36
+ generateReport: zod_1.z.boolean().optional().default(true)
37
+ });
38
+ // Schema de saída
39
+ const PermissionsResultSchema = zod_1.z.object({
40
+ success: zod_1.z.boolean(),
41
+ action: zod_1.z.string(),
42
+ message: zod_1.z.string(),
43
+ data: zod_1.z.any().optional(),
44
+ error: zod_1.z.string().optional()
45
+ });
46
+ /**
47
+ * Tool: permissions
48
+ *
49
+ * ACTIONS DISPONÍVEIS:
50
+ *
51
+ * 1. check - Verificar permissões de um provider específico
52
+ * Parâmetros:
53
+ * - provider (opcional): Provider específico para verificar
54
+ * - generateReport (opcional): Gerar relatório formatado (padrão: true)
55
+ *
56
+ * 2. check-all - Verificar permissões de todos os providers
57
+ * Parâmetros:
58
+ * - generateReport (opcional): Gerar relatório formatado (padrão: true)
59
+ *
60
+ * 3. report - Gerar apenas relatório das últimas verificações
61
+ * Parâmetros:
62
+ * - provider (opcional): Provider específico
63
+ *
64
+ * RECOMENDAÇÕES DE USO:
65
+ * - Use 'check-all' para auditoria completa
66
+ * - Use 'check' para verificação específica
67
+ * - Use 'report' para visualizar resultados
68
+ * - Execute regularmente para monitoramento
69
+ */
70
+ exports.permissionsTool = {
71
+ name: 'permissions',
72
+ description: 'VERIFICAÇÃO DE PERMISSÕES DE TOKENS - GitHub & Gitea\n\nACTIONS DISPONÍVEIS:\n• check: Verifica permissões de um provider específico\n• check-all: Verifica permissões de todos os providers\n• report: Gera relatório de verificações\n\nPARÂMETROS COMUNS:\n• provider: Provider específico (github, gitea) ou usa todos\n• generateReport: Gerar relatório formatado (padrão: true)\n\nEXEMPLOS DE USO:\n• Verificar provider específico: {"action":"check","provider":"gitea"}\n• Verificar todos: {"action":"check-all"}\n• Gerar relatório: {"action":"report","provider":"github"}',
73
+ inputSchema: {
74
+ type: 'object',
75
+ properties: {
76
+ action: {
77
+ type: 'string',
78
+ enum: ['check', 'check-all', 'report'],
79
+ description: 'Action to perform on permissions'
80
+ },
81
+ provider: { type: 'string', description: 'Specific provider to check' },
82
+ generateReport: { type: 'boolean', description: 'Generate formatted report' }
83
+ },
84
+ required: ['action']
85
+ },
86
+ /**
87
+ * Handler principal da tool permissions
88
+ */
89
+ async handler(input) {
90
+ try {
91
+ const params = PermissionsInputSchema.parse(input);
92
+ switch (params.action) {
93
+ case 'check':
94
+ return await this.checkProviderPermissions(params);
95
+ case 'check-all':
96
+ return await this.checkAllProviders(params);
97
+ case 'report':
98
+ return await this.generateReport(params);
99
+ default:
100
+ throw new Error(`Ação não suportada: ${params.action}`);
101
+ }
102
+ }
103
+ catch (error) {
104
+ return {
105
+ success: false,
106
+ action: input.action,
107
+ message: 'Erro na verificação de permissões',
108
+ error: error instanceof Error ? error.message : String(error)
109
+ };
110
+ }
111
+ },
112
+ /**
113
+ * Verifica permissões de um provider específico
114
+ */
115
+ async checkProviderPermissions(params) {
116
+ try {
117
+ const result = await (0, permission_checker_js_1.checkTokenPermissions)(params.provider);
118
+ let message = `Verificação de permissões concluída para provider '${result.provider}'`;
119
+ if (!result.success) {
120
+ message += ' - Problemas detectados';
121
+ }
122
+ const response = {
123
+ success: result.success,
124
+ action: 'check',
125
+ message,
126
+ data: {
127
+ result,
128
+ report: params.generateReport ? (0, permission_checker_js_1.generatePermissionReport)(result) : undefined
129
+ }
130
+ };
131
+ return response;
132
+ }
133
+ catch (error) {
134
+ throw new Error(`Falha ao verificar permissões: ${error instanceof Error ? error.message : String(error)}`);
135
+ }
136
+ },
137
+ /**
138
+ * Verifica permissões de todos os providers
139
+ */
140
+ async checkAllProviders(params) {
141
+ try {
142
+ const results = await (0, permission_checker_js_1.checkAllProvidersPermissions)();
143
+ const successCount = results.filter(r => r.success).length;
144
+ const totalCount = results.length;
145
+ let message = `Verificação concluída para ${totalCount} provider(s). ${successCount}/${totalCount} com permissões adequadas`;
146
+ if (successCount < totalCount) {
147
+ message += ' - Problemas detectados';
148
+ }
149
+ const response = {
150
+ success: successCount === totalCount,
151
+ action: 'check-all',
152
+ message,
153
+ data: {
154
+ results,
155
+ summary: {
156
+ total: totalCount,
157
+ successful: successCount,
158
+ failed: totalCount - successCount
159
+ },
160
+ reports: params.generateReport ? results.map(r => (0, permission_checker_js_1.generatePermissionReport)(r)) : undefined
161
+ }
162
+ };
163
+ return response;
164
+ }
165
+ catch (error) {
166
+ throw new Error(`Falha ao verificar permissões de todos os providers: ${error instanceof Error ? error.message : String(error)}`);
167
+ }
168
+ },
169
+ /**
170
+ * Gera relatório de verificações
171
+ */
172
+ async generateReport(params) {
173
+ try {
174
+ let results;
175
+ if (params.provider) {
176
+ const result = await (0, permission_checker_js_1.checkTokenPermissions)(params.provider);
177
+ results = [result];
178
+ }
179
+ else {
180
+ results = await (0, permission_checker_js_1.checkAllProvidersPermissions)();
181
+ }
182
+ const reports = results.map(r => (0, permission_checker_js_1.generatePermissionReport)(r));
183
+ const combinedReport = reports.join('\n' + '='.repeat(50) + '\n');
184
+ return {
185
+ success: true,
186
+ action: 'report',
187
+ message: `Relatório gerado para ${results.length} provider(s)`,
188
+ data: {
189
+ report: combinedReport,
190
+ results
191
+ }
192
+ };
193
+ }
194
+ catch (error) {
195
+ throw new Error(`Falha ao gerar relatório: ${error instanceof Error ? error.message : String(error)}`);
196
+ }
197
+ }
198
+ };
199
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/tools/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Helper para obter usuário atual automaticamente
3
+ *
4
+ * Este módulo evita dependências circulares ao fornecer
5
+ * funcionalidade de auto-detecção de usuário.
6
+ */
7
+ /**
8
+ * Obtém o usuário atual baseado no token de autenticação
9
+ *
10
+ * @param provider Nome do provider (opcional)
11
+ * @returns Login do usuário atual
12
+ */
13
+ export declare function getCurrentUser(provider?: string): Promise<string>;
14
+ //# sourceMappingURL=user-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-helper.d.ts","sourceRoot":"","sources":["../../src/tools/user-helper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBvE"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Helper para obter usuário atual automaticamente
4
+ *
5
+ * Este módulo evita dependências circulares ao fornecer
6
+ * funcionalidade de auto-detecção de usuário.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getCurrentUser = getCurrentUser;
10
+ const index_js_1 = require("../providers/index.js");
11
+ /**
12
+ * Obtém o usuário atual baseado no token de autenticação
13
+ *
14
+ * @param provider Nome do provider (opcional)
15
+ * @returns Login do usuário atual
16
+ */
17
+ async function getCurrentUser(provider) {
18
+ try {
19
+ const factory = index_js_1.globalProviderFactory;
20
+ let providerInstance;
21
+ if (provider) {
22
+ providerInstance = factory.getProvider(provider);
23
+ }
24
+ else {
25
+ providerInstance = factory.getDefaultProvider();
26
+ }
27
+ if (!providerInstance) {
28
+ throw new Error('No provider available');
29
+ }
30
+ const userInfo = await providerInstance.getCurrentUser();
31
+ return userInfo.login;
32
+ }
33
+ catch (error) {
34
+ console.warn('Failed to get current user:', error);
35
+ throw new Error('Unable to determine current user. Please provide owner/username explicitly.');
36
+ }
37
+ }
38
+ //# sourceMappingURL=user-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-helper.js","sourceRoot":"","sources":["../../src/tools/user-helper.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAUH,wCAqBC;AA7BD,oDAA8D;AAE9D;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,QAAiB;IACpD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,gCAAqB,CAAC;QACtC,IAAI,gBAAgB,CAAC;QAErB,IAAI,QAAQ,EAAE,CAAC;YACb,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,cAAc,EAAE,CAAC;QACzD,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@andrebuzeli/git-mcp",
3
- "version": "2.7.1",
4
- "description": "MCP server for Gitea and GitHub integration with 18 comprehensive DevOps tools including enhanced CI/CD workflows, security, analytics and advanced automation",
3
+ "version": "2.7.2",
4
+ "description": "MCP server for Gitea and GitHub integration with 18 comprehensive DevOps tools including auto-user detection, enhanced CI/CD workflows, security, analytics and advanced automation",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "git-mcp": "dist/index.js"
@@ -13,7 +13,7 @@
13
13
  "test": "node tests/basic.test.js",
14
14
  "lint": "echo \"No linting configured\" && exit 0",
15
15
  "prepublishOnly": "npm run build",
16
- "postpublish": "echo 'Git MCP v2.7.1 published successfully!'"
16
+ "postpublish": "echo 'Git MCP v2.7.2 published successfully!'"
17
17
  },
18
18
  "keywords": [
19
19
  "mcp",