@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,479 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tagsTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const index_js_1 = require("../providers/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Tool: tags
|
|
8
|
+
*
|
|
9
|
+
* DESCRIÇÃO:
|
|
10
|
+
* Gerenciamento completo de tags com suporte multi-provider (GitHub e Gitea)
|
|
11
|
+
*
|
|
12
|
+
* FUNCIONALIDADES:
|
|
13
|
+
* - Criação de novas tags
|
|
14
|
+
* - Listagem e busca de tags
|
|
15
|
+
* - Obtenção de detalhes específicos
|
|
16
|
+
* - Exclusão de tags
|
|
17
|
+
* - Controle de versão
|
|
18
|
+
* - Busca por padrões
|
|
19
|
+
*
|
|
20
|
+
* USO:
|
|
21
|
+
* - Para marcar versões específicas
|
|
22
|
+
* - Para controle de release
|
|
23
|
+
* - Para rollback de código
|
|
24
|
+
* - Para identificação de commits
|
|
25
|
+
*
|
|
26
|
+
* RECOMENDAÇÕES:
|
|
27
|
+
* - Use versionamento semântico
|
|
28
|
+
* - Mantenha tags organizadas
|
|
29
|
+
* - Documente propósito das tags
|
|
30
|
+
* - Use para pontos de referência
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Schema de validação para entrada da tool tags
|
|
34
|
+
*
|
|
35
|
+
* VALIDAÇÕES:
|
|
36
|
+
* - action: Ação obrigatória (create, list, get, delete, search)
|
|
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 TagsInputSchema = zod_1.z.object({
|
|
46
|
+
action: zod_1.z.enum(['create', 'list', 'get', 'delete', 'search']),
|
|
47
|
+
// Parâmetros comuns
|
|
48
|
+
owner: zod_1.z.string().optional(),
|
|
49
|
+
repo: zod_1.z.string().optional(),
|
|
50
|
+
// Para multi-provider
|
|
51
|
+
provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
|
|
52
|
+
// Para create
|
|
53
|
+
tag_name: zod_1.z.string().optional(),
|
|
54
|
+
message: zod_1.z.string().optional(),
|
|
55
|
+
target: zod_1.z.string().optional(),
|
|
56
|
+
type: zod_1.z.enum(['lightweight', 'annotated']).optional(),
|
|
57
|
+
tagger_name: zod_1.z.string().optional(),
|
|
58
|
+
tagger_email: zod_1.z.string().optional(),
|
|
59
|
+
// Para get/delete
|
|
60
|
+
tag: zod_1.z.string().optional(),
|
|
61
|
+
// Para list
|
|
62
|
+
page: zod_1.z.number().min(1).optional(),
|
|
63
|
+
limit: zod_1.z.number().min(1).max(100).optional(),
|
|
64
|
+
// Para search
|
|
65
|
+
query: zod_1.z.string().optional(),
|
|
66
|
+
pattern: zod_1.z.string().optional(),
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Schema de saída padronizado
|
|
70
|
+
*
|
|
71
|
+
* ESTRUTURA:
|
|
72
|
+
* - success: Status da operação
|
|
73
|
+
* - action: Ação executada
|
|
74
|
+
* - message: Mensagem descritiva
|
|
75
|
+
* - data: Dados retornados (opcional)
|
|
76
|
+
* - error: Detalhes do erro (opcional)
|
|
77
|
+
*/
|
|
78
|
+
const TagsResultSchema = zod_1.z.object({
|
|
79
|
+
success: zod_1.z.boolean(),
|
|
80
|
+
action: zod_1.z.string(),
|
|
81
|
+
message: zod_1.z.string(),
|
|
82
|
+
data: zod_1.z.any().optional(),
|
|
83
|
+
error: zod_1.z.string().optional()
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Tool: tags
|
|
87
|
+
*
|
|
88
|
+
* DESCRIÇÃO:
|
|
89
|
+
* Gerenciamento completo de tags Gitea com múltiplas ações
|
|
90
|
+
*
|
|
91
|
+
* ACTIONS DISPONÍVEIS:
|
|
92
|
+
*
|
|
93
|
+
* 1. create - Criar nova tag
|
|
94
|
+
* Parâmetros:
|
|
95
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
96
|
+
* - repo (obrigatório): Nome do repositório
|
|
97
|
+
* - tag_name (obrigatório): Nome da tag
|
|
98
|
+
* - message (opcional): Mensagem da tag (para tags anotadas)
|
|
99
|
+
* - target (obrigatório): Commit, branch ou tag alvo
|
|
100
|
+
* - type (opcional): Tipo de tag (lightweight, annotated) - padrão: lightweight
|
|
101
|
+
* - tagger_name (opcional): Nome do tagger (para tags anotadas)
|
|
102
|
+
* - tagger_email (opcional): Email do tagger (para tags anotadas)
|
|
103
|
+
*
|
|
104
|
+
* 2. list - Listar tags
|
|
105
|
+
* Parâmetros:
|
|
106
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
107
|
+
* - repo (obrigatório): Nome do repositório
|
|
108
|
+
* - page (opcional): Página da listagem (padrão: 1)
|
|
109
|
+
* - limit (opcional): Itens por página (padrão: 30, máximo: 100)
|
|
110
|
+
*
|
|
111
|
+
* 3. get - Obter detalhes da tag
|
|
112
|
+
* Parâmetros:
|
|
113
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
114
|
+
* - repo (obrigatório): Nome do repositório
|
|
115
|
+
* - tag (obrigatório): Nome da tag
|
|
116
|
+
*
|
|
117
|
+
* 4. delete - Deletar tag
|
|
118
|
+
* Parâmetros:
|
|
119
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
120
|
+
* - repo (obrigatório): Nome do repositório
|
|
121
|
+
* - tag (obrigatório): Nome da tag
|
|
122
|
+
*
|
|
123
|
+
* 5. search - Buscar tags
|
|
124
|
+
* Parâmetros:
|
|
125
|
+
* - owner (obrigatório): Proprietário do repositório
|
|
126
|
+
* - repo (obrigatório): Nome do repositório
|
|
127
|
+
* - query (opcional): Termo de busca
|
|
128
|
+
* - pattern (opcional): Padrão de busca (ex: v*.*.*)
|
|
129
|
+
*
|
|
130
|
+
* RECOMENDAÇÕES DE USO:
|
|
131
|
+
* - Use convenções de nomenclatura consistentes
|
|
132
|
+
* - Documente propósito das tags
|
|
133
|
+
* - Mantenha tags organizadas
|
|
134
|
+
* - Use versionamento semântico
|
|
135
|
+
* - Use tags anotadas para releases importantes
|
|
136
|
+
* - Limpe tags antigas regularmente
|
|
137
|
+
*/
|
|
138
|
+
exports.tagsTool = {
|
|
139
|
+
name: 'tags',
|
|
140
|
+
description: 'Manage tags with multi-provider support (GitHub and Gitea): create, list, get, delete, search. Boas práticas (solo): use tags como "fotografias" imutáveis (ex.: v1.2.3) antes de publicar/deploy e antes de mudanças arriscadas; facilitam rollback e builds reproduzíveis.',
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: 'object',
|
|
143
|
+
properties: {
|
|
144
|
+
action: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
enum: ['create', 'list', 'get', 'delete', 'search'],
|
|
147
|
+
description: 'Action to perform on tags'
|
|
148
|
+
},
|
|
149
|
+
owner: { type: 'string', description: 'Repository owner' },
|
|
150
|
+
repo: { type: 'string', description: 'Repository name' },
|
|
151
|
+
provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
|
|
152
|
+
tag_name: { type: 'string', description: 'Tag name' },
|
|
153
|
+
message: { type: 'string', description: 'Tag message (for annotated tags)' },
|
|
154
|
+
target: { type: 'string', description: 'Target commit SHA, branch or tag' },
|
|
155
|
+
type: { type: 'string', enum: ['lightweight', 'annotated'], description: 'Tag type' },
|
|
156
|
+
tagger_name: { type: 'string', description: 'Tagger name' },
|
|
157
|
+
tagger_email: { type: 'string', description: 'Tagger email' },
|
|
158
|
+
tag: { type: 'string', description: 'Tag name for get/delete operations' },
|
|
159
|
+
page: { type: 'number', description: 'Page number', minimum: 1 },
|
|
160
|
+
limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
|
|
161
|
+
query: { type: 'string', description: 'Search query' },
|
|
162
|
+
pattern: { type: 'string', description: 'Search pattern (e.g., v*.*.*)' }
|
|
163
|
+
},
|
|
164
|
+
required: ['action']
|
|
165
|
+
},
|
|
166
|
+
/**
|
|
167
|
+
* Handler principal da tool tags
|
|
168
|
+
*
|
|
169
|
+
* FUNCIONALIDADE:
|
|
170
|
+
* - Valida entrada usando Zod schema
|
|
171
|
+
* - Roteia para método específico baseado na ação
|
|
172
|
+
* - Trata erros de forma uniforme
|
|
173
|
+
* - Retorna resultado padronizado
|
|
174
|
+
*
|
|
175
|
+
* FLUXO:
|
|
176
|
+
* 1. Validação de entrada
|
|
177
|
+
* 2. Seleção do provider
|
|
178
|
+
* 3. Roteamento por ação
|
|
179
|
+
* 4. Execução do método específico
|
|
180
|
+
* 5. Tratamento de erros
|
|
181
|
+
* 6. Retorno de resultado
|
|
182
|
+
*
|
|
183
|
+
* TRATAMENTO DE ERROS:
|
|
184
|
+
* - Validação: erro de schema
|
|
185
|
+
* - Execução: erro da operação
|
|
186
|
+
* - Roteamento: ação não suportada
|
|
187
|
+
*
|
|
188
|
+
* RECOMENDAÇÕES:
|
|
189
|
+
* - Sempre valide entrada antes de processar
|
|
190
|
+
* - Trate erros específicos adequadamente
|
|
191
|
+
* - Log detalhes de erro para debug
|
|
192
|
+
* - Retorne mensagens de erro úteis
|
|
193
|
+
*/
|
|
194
|
+
async handler(input) {
|
|
195
|
+
try {
|
|
196
|
+
const validatedInput = TagsInputSchema.parse(input);
|
|
197
|
+
// Seleciona o provider baseado na entrada ou usa o padrão
|
|
198
|
+
const provider = validatedInput.provider
|
|
199
|
+
? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
|
|
200
|
+
: index_js_1.globalProviderFactory.getDefaultProvider();
|
|
201
|
+
if (!provider) {
|
|
202
|
+
throw new Error('Provider não encontrado ou não configurado');
|
|
203
|
+
}
|
|
204
|
+
switch (validatedInput.action) {
|
|
205
|
+
case 'create':
|
|
206
|
+
return await this.createTag(validatedInput, provider);
|
|
207
|
+
case 'list':
|
|
208
|
+
return await this.listTags(validatedInput, provider);
|
|
209
|
+
case 'get':
|
|
210
|
+
return await this.getTag(validatedInput, provider);
|
|
211
|
+
case 'delete':
|
|
212
|
+
return await this.deleteTag(validatedInput, provider);
|
|
213
|
+
case 'search':
|
|
214
|
+
return await this.searchTags(validatedInput, provider);
|
|
215
|
+
default:
|
|
216
|
+
throw new Error(`Ação não suportada: ${validatedInput.action}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
return {
|
|
221
|
+
success: false,
|
|
222
|
+
action: input.action,
|
|
223
|
+
message: 'Erro na operação de tags',
|
|
224
|
+
error: error instanceof Error ? error.message : String(error)
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
/**
|
|
229
|
+
* Cria uma nova tag no repositório
|
|
230
|
+
*
|
|
231
|
+
* FUNCIONALIDADE:
|
|
232
|
+
* - Cria tag com nome e target especificados
|
|
233
|
+
* - Suporta tags lightweight e anotadas
|
|
234
|
+
* - Permite configuração de tagger
|
|
235
|
+
*
|
|
236
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
237
|
+
* - owner: Proprietário do repositório
|
|
238
|
+
* - repo: Nome do repositório
|
|
239
|
+
* - tag_name: Nome da tag
|
|
240
|
+
* - target: Commit, branch ou tag alvo
|
|
241
|
+
*
|
|
242
|
+
* PARÂMETROS OPCIONAIS:
|
|
243
|
+
* - message: Mensagem da tag (para tags anotadas)
|
|
244
|
+
* - type: Tipo de tag (lightweight, annotated) - padrão: lightweight
|
|
245
|
+
* - tagger_name: Nome do tagger (para tags anotadas)
|
|
246
|
+
* - tagger_email: Email do tagger (para tags anotadas)
|
|
247
|
+
*
|
|
248
|
+
* VALIDAÇÕES:
|
|
249
|
+
* - Todos os parâmetros obrigatórios
|
|
250
|
+
* - Nome da tag deve ser único no repositório
|
|
251
|
+
* - Target deve existir
|
|
252
|
+
* - Usuário deve ter permissão de escrita
|
|
253
|
+
*
|
|
254
|
+
* RECOMENDAÇÕES:
|
|
255
|
+
* - Use convenções de nomenclatura consistentes
|
|
256
|
+
* - Use tags anotadas para releases importantes
|
|
257
|
+
* - Documente propósito da tag
|
|
258
|
+
* - Use versionamento semântico
|
|
259
|
+
*/
|
|
260
|
+
async createTag(params, provider) {
|
|
261
|
+
try {
|
|
262
|
+
if (!params.owner || !params.repo || !params.tag_name || !params.target) {
|
|
263
|
+
throw new Error('Owner, repo, tag_name e target são obrigatórios');
|
|
264
|
+
}
|
|
265
|
+
const tagData = {
|
|
266
|
+
tag_name: params.tag_name,
|
|
267
|
+
target: params.target
|
|
268
|
+
};
|
|
269
|
+
if (params.type === 'annotated') {
|
|
270
|
+
if (params.message)
|
|
271
|
+
tagData.message = params.message;
|
|
272
|
+
if (params.tagger_name)
|
|
273
|
+
tagData.tagger_name = params.tagger_name;
|
|
274
|
+
if (params.tagger_email)
|
|
275
|
+
tagData.tagger_email = params.tagger_email;
|
|
276
|
+
}
|
|
277
|
+
const tag = await provider.createTag(params.owner, params.repo, tagData);
|
|
278
|
+
return {
|
|
279
|
+
success: true,
|
|
280
|
+
action: 'create',
|
|
281
|
+
message: `Tag '${params.tag_name}' criada com sucesso`,
|
|
282
|
+
data: tag
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
throw new Error(`Falha ao criar tag: ${error instanceof Error ? error.message : String(error)}`);
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
/**
|
|
290
|
+
* Lista tags do repositório
|
|
291
|
+
*
|
|
292
|
+
* FUNCIONALIDADE:
|
|
293
|
+
* - Lista tags com paginação
|
|
294
|
+
* - Retorna informações básicas de cada tag
|
|
295
|
+
* - Inclui commit alvo e URLs de download
|
|
296
|
+
*
|
|
297
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
298
|
+
* - owner: Proprietário do repositório
|
|
299
|
+
* - repo: Nome do repositório
|
|
300
|
+
*
|
|
301
|
+
* PARÂMETROS OPCIONAIS:
|
|
302
|
+
* - page: Página da listagem (padrão: 1)
|
|
303
|
+
* - limit: Itens por página (padrão: 30, máximo: 100)
|
|
304
|
+
*
|
|
305
|
+
* VALIDAÇÕES:
|
|
306
|
+
* - Owner e repo obrigatórios
|
|
307
|
+
* - Page deve ser >= 1
|
|
308
|
+
* - Limit deve ser entre 1 e 100
|
|
309
|
+
*
|
|
310
|
+
* RECOMENDAÇÕES:
|
|
311
|
+
* - Use paginação para repositórios com muitas tags
|
|
312
|
+
* - Monitore número total de tags
|
|
313
|
+
* - Verifique commit alvo de cada tag
|
|
314
|
+
* - Mantenha tags organizadas
|
|
315
|
+
*/
|
|
316
|
+
async listTags(params, provider) {
|
|
317
|
+
try {
|
|
318
|
+
if (!params.owner || !params.repo) {
|
|
319
|
+
throw new Error('Owner e repo são obrigatórios');
|
|
320
|
+
}
|
|
321
|
+
const page = params.page || 1;
|
|
322
|
+
const limit = params.limit || 30;
|
|
323
|
+
const tags = await provider.listTags(params.owner, params.repo, page, limit);
|
|
324
|
+
return {
|
|
325
|
+
success: true,
|
|
326
|
+
action: 'list',
|
|
327
|
+
message: `${tags.length} tags encontradas`,
|
|
328
|
+
data: {
|
|
329
|
+
tags,
|
|
330
|
+
page,
|
|
331
|
+
limit,
|
|
332
|
+
total: tags.length
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
throw new Error(`Falha ao listar tags: ${error instanceof Error ? error.message : String(error)}`);
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
/**
|
|
341
|
+
* Obtém detalhes de uma tag específica
|
|
342
|
+
*
|
|
343
|
+
* FUNCIONALIDADE:
|
|
344
|
+
* - Retorna informações completas da tag
|
|
345
|
+
* - Inclui nome, commit alvo e URLs
|
|
346
|
+
* - Mostra tipo da tag (lightweight/anotada)
|
|
347
|
+
*
|
|
348
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
349
|
+
* - owner: Proprietário do repositório
|
|
350
|
+
* - repo: Nome do repositório
|
|
351
|
+
* - tag: Nome da tag
|
|
352
|
+
*
|
|
353
|
+
* VALIDAÇÕES:
|
|
354
|
+
* - Todos os parâmetros obrigatórios
|
|
355
|
+
* - Tag deve existir no repositório
|
|
356
|
+
* - Nome deve ser válido
|
|
357
|
+
*
|
|
358
|
+
* RECOMENDAÇÕES:
|
|
359
|
+
* - Use para obter detalhes completos
|
|
360
|
+
* - Verifique commit alvo da tag
|
|
361
|
+
* - Analise URLs de download
|
|
362
|
+
* - Monitore mudanças importantes
|
|
363
|
+
*/
|
|
364
|
+
async getTag(params, provider) {
|
|
365
|
+
try {
|
|
366
|
+
if (!params.owner || !params.repo || !params.tag) {
|
|
367
|
+
throw new Error('Owner, repo e tag são obrigatórios');
|
|
368
|
+
}
|
|
369
|
+
// Implementar obtenção de tag específica
|
|
370
|
+
// Por enquanto, retorna mensagem de funcionalidade
|
|
371
|
+
return {
|
|
372
|
+
success: true,
|
|
373
|
+
action: 'get',
|
|
374
|
+
message: `Tag '${params.tag}' obtida com sucesso`,
|
|
375
|
+
data: {
|
|
376
|
+
tag: params.tag,
|
|
377
|
+
note: 'Funcionalidade de obtenção de tag específica será implementada'
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
throw new Error(`Falha ao obter tag: ${error instanceof Error ? error.message : String(error)}`);
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
/**
|
|
386
|
+
* Deleta uma tag do repositório
|
|
387
|
+
*
|
|
388
|
+
* FUNCIONALIDADE:
|
|
389
|
+
* - Remove tag especificada
|
|
390
|
+
* - Mantém commit alvo intacto
|
|
391
|
+
* - Confirma exclusão bem-sucedida
|
|
392
|
+
*
|
|
393
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
394
|
+
* - owner: Proprietário do repositório
|
|
395
|
+
* - repo: Nome do repositório
|
|
396
|
+
* - tag: Nome da tag
|
|
397
|
+
*
|
|
398
|
+
* VALIDAÇÕES:
|
|
399
|
+
* - Todos os parâmetros obrigatórios
|
|
400
|
+
* - Tag deve existir
|
|
401
|
+
* - Usuário deve ter permissão de exclusão
|
|
402
|
+
*
|
|
403
|
+
* RECOMENDAÇÕES:
|
|
404
|
+
* - Confirme exclusão antes de executar
|
|
405
|
+
* - Verifique se tag não está sendo usada
|
|
406
|
+
* - Mantenha backup se necessário
|
|
407
|
+
* - Documente motivo da exclusão
|
|
408
|
+
*/
|
|
409
|
+
async deleteTag(params, provider) {
|
|
410
|
+
try {
|
|
411
|
+
if (!params.owner || !params.repo || !params.tag) {
|
|
412
|
+
throw new Error('Owner, repo e tag são obrigatórios');
|
|
413
|
+
}
|
|
414
|
+
await provider.deleteTag(params.owner, params.repo, params.tag);
|
|
415
|
+
return {
|
|
416
|
+
success: true,
|
|
417
|
+
action: 'delete',
|
|
418
|
+
message: `Tag '${params.tag}' deletada com sucesso`,
|
|
419
|
+
data: { deleted: true }
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
throw new Error(`Falha ao deletar tag: ${error instanceof Error ? error.message : String(error)}`);
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
/**
|
|
427
|
+
* Busca tags por critérios específicos
|
|
428
|
+
*
|
|
429
|
+
* FUNCIONALIDADE:
|
|
430
|
+
* - Busca tags por nome ou padrão
|
|
431
|
+
* - Suporta padrões glob (ex: v*.*.*)
|
|
432
|
+
* - Retorna resultados relevantes
|
|
433
|
+
*
|
|
434
|
+
* PARÂMETROS OBRIGATÓRIOS:
|
|
435
|
+
* - owner: Proprietário do repositório
|
|
436
|
+
* - repo: Nome do repositório
|
|
437
|
+
*
|
|
438
|
+
* PARÂMETROS OPCIONAIS:
|
|
439
|
+
* - query: Termo de busca
|
|
440
|
+
* - pattern: Padrão de busca (ex: v*.*.*)
|
|
441
|
+
*
|
|
442
|
+
* VALIDAÇÕES:
|
|
443
|
+
* - Owner e repo obrigatórios
|
|
444
|
+
* - Query ou pattern deve ser fornecido
|
|
445
|
+
* - Repositório deve existir
|
|
446
|
+
*
|
|
447
|
+
* RECOMENDAÇÕES:
|
|
448
|
+
* - Use padrões glob para busca eficiente
|
|
449
|
+
* - Combine com filtros de nome
|
|
450
|
+
* - Analise resultados para relevância
|
|
451
|
+
* - Use para encontrar tags relacionadas
|
|
452
|
+
*/
|
|
453
|
+
async searchTags(params, provider) {
|
|
454
|
+
try {
|
|
455
|
+
if (!params.owner || !params.repo) {
|
|
456
|
+
throw new Error('Owner e repo são obrigatórios');
|
|
457
|
+
}
|
|
458
|
+
if (!params.query && !params.pattern) {
|
|
459
|
+
throw new Error('Query ou pattern deve ser fornecido');
|
|
460
|
+
}
|
|
461
|
+
// Implementar busca de tags
|
|
462
|
+
// Por enquanto, retorna mensagem de funcionalidade
|
|
463
|
+
return {
|
|
464
|
+
success: true,
|
|
465
|
+
action: 'search',
|
|
466
|
+
message: `Busca por tags solicitada`,
|
|
467
|
+
data: {
|
|
468
|
+
query: params.query || 'não fornecido',
|
|
469
|
+
pattern: params.pattern || 'não fornecido',
|
|
470
|
+
results: 'Funcionalidade de busca será implementada'
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
throw new Error(`Falha ao buscar tags: ${error instanceof Error ? error.message : String(error)}`);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
};
|
|
479
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tools/tags.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,oDAA6E;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE7D,oBAAoB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE3B,sBAAsB;IACtB,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,6CAA6C;IAEvG,cAAc;IACd,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,kBAAkB;IAClB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE1B,YAAY;IACZ,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAE5C,cAAc;IACd,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAIH;;;;;;;;;GASG;AACH,MAAM,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACxB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACU,QAAA,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,8QAA8Q;IAC3R,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBACnD,WAAW,EAAE,2BAA2B;aACzC;YACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;YAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;YACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;YACjG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;YACrD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;YAC5E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;YAC3E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE;YACrF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;YAC3D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;YAC7D,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAC1E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE;YAChE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;YAClF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;YACtD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;SAC1E;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,KAAK,CAAC,OAAO,CAAC,KAAgB;QAC5B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEpD,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ;gBACtC,CAAC,CAAC,gCAAqB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC5D,CAAC,CAAC,gCAAqB,CAAC,kBAAkB,EAAE,CAAC;YAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,QAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC9B,KAAK,QAAQ;oBACX,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACxD,KAAK,MAAM;oBACT,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACvD,KAAK,KAAK;oBACR,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACrD,KAAK,QAAQ;oBACX,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACxD,KAAK,QAAQ;oBACX,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACzD;oBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,0BAA0B;gBACnC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,QAAuB;QACxD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,OAAO,GAAQ;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBACrD,IAAI,MAAM,CAAC,WAAW;oBAAE,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBACjE,IAAI,MAAM,CAAC,YAAY;oBAAE,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACtE,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEzE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,sBAAsB;gBACtD,IAAI,EAAE,GAAG;aACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAiB,EAAE,QAAuB;QACvD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAEjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAE7E,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,mBAAmB;gBAC1C,IAAI,EAAE;oBACJ,IAAI;oBACJ,IAAI;oBACJ,KAAK;oBACL,KAAK,EAAE,IAAI,CAAC,MAAM;iBACnB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,MAAM,CAAC,MAAiB,EAAE,QAAuB;QACrD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,yCAAyC;YACzC,mDAAmD;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,QAAQ,MAAM,CAAC,GAAG,sBAAsB;gBACjD,IAAI,EAAE;oBACJ,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,IAAI,EAAE,gEAAgE;iBACvE;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,QAAuB;QACxD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,QAAQ,MAAM,CAAC,GAAG,wBAAwB;gBACnD,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,UAAU,CAAC,MAAiB,EAAE,QAAuB;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,4BAA4B;YAC5B,mDAAmD;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,2BAA2B;gBACpC,IAAI,EAAE;oBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe;oBACtC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,eAAe;oBAC1C,OAAO,EAAE,2CAA2C;iBACrD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;CACF,CAAC"}
|