@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.
- package/dist/tools/auto-user-detection.d.ts +103 -0
- package/dist/tools/auto-user-detection.d.ts.map +1 -0
- package/dist/tools/auto-user-detection.js +134 -0
- package/dist/tools/auto-user-detection.js.map +1 -0
- package/dist/tools/permission-checker.d.ts +42 -0
- package/dist/tools/permission-checker.d.ts.map +1 -0
- package/dist/tools/permission-checker.js +164 -0
- package/dist/tools/permission-checker.js.map +1 -0
- package/dist/tools/permissions.d.ts +127 -0
- package/dist/tools/permissions.d.ts.map +1 -0
- package/dist/tools/permissions.js +199 -0
- package/dist/tools/permissions.js.map +1 -0
- package/dist/tools/user-helper.d.ts +14 -0
- package/dist/tools/user-helper.d.ts.map +1 -0
- package/dist/tools/user-helper.js +38 -0
- package/dist/tools/user-helper.js.map +1 -0
- package/package.json +3 -3
|
@@ -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.
|
|
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.
|
|
16
|
+
"postpublish": "echo 'Git MCP v2.7.2 published successfully!'"
|
|
17
17
|
},
|
|
18
18
|
"keywords": [
|
|
19
19
|
"mcp",
|