@gyramais/mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/bin/gyra-mcp-internal.d.ts +3 -0
  2. package/dist/bin/gyra-mcp-internal.d.ts.map +1 -0
  3. package/dist/bin/gyra-mcp-internal.js +8 -0
  4. package/dist/bin/gyra-mcp-internal.js.map +1 -0
  5. package/dist/bin/gyra-mcp.d.ts +7 -0
  6. package/dist/bin/gyra-mcp.d.ts.map +1 -0
  7. package/dist/bin/gyra-mcp.js +7 -0
  8. package/dist/bin/gyra-mcp.js.map +1 -0
  9. package/dist/enrichments/auth.enrichment.d.ts +3 -0
  10. package/dist/enrichments/auth.enrichment.d.ts.map +1 -0
  11. package/dist/enrichments/auth.enrichment.js +20 -0
  12. package/dist/enrichments/auth.enrichment.js.map +1 -0
  13. package/dist/enrichments/credential.enrichment.d.ts +3 -0
  14. package/dist/enrichments/credential.enrichment.d.ts.map +1 -0
  15. package/dist/enrichments/credential.enrichment.js +62 -0
  16. package/dist/enrichments/credential.enrichment.js.map +1 -0
  17. package/dist/enrichments/credit-policy.enrichment.d.ts +3 -0
  18. package/dist/enrichments/credit-policy.enrichment.d.ts.map +1 -0
  19. package/dist/enrichments/credit-policy.enrichment.js +48 -0
  20. package/dist/enrichments/credit-policy.enrichment.js.map +1 -0
  21. package/dist/enrichments/index.d.ts +10 -0
  22. package/dist/enrichments/index.d.ts.map +1 -0
  23. package/dist/enrichments/index.js +23 -0
  24. package/dist/enrichments/index.js.map +1 -0
  25. package/dist/enrichments/insight.enrichment.d.ts +3 -0
  26. package/dist/enrichments/insight.enrichment.d.ts.map +1 -0
  27. package/dist/enrichments/insight.enrichment.js +37 -0
  28. package/dist/enrichments/insight.enrichment.js.map +1 -0
  29. package/dist/enrichments/public-endpoints.d.ts +15 -0
  30. package/dist/enrichments/public-endpoints.d.ts.map +1 -0
  31. package/dist/enrichments/public-endpoints.js +44 -0
  32. package/dist/enrichments/public-endpoints.js.map +1 -0
  33. package/dist/enrichments/report.enrichment.d.ts +3 -0
  34. package/dist/enrichments/report.enrichment.d.ts.map +1 -0
  35. package/dist/enrichments/report.enrichment.js +133 -0
  36. package/dist/enrichments/report.enrichment.js.map +1 -0
  37. package/dist/enrichments/section.enrichment.d.ts +3 -0
  38. package/dist/enrichments/section.enrichment.d.ts.map +1 -0
  39. package/dist/enrichments/section.enrichment.js +24 -0
  40. package/dist/enrichments/section.enrichment.js.map +1 -0
  41. package/dist/enrichments/types.d.ts +26 -0
  42. package/dist/enrichments/types.d.ts.map +1 -0
  43. package/dist/enrichments/types.js +2 -0
  44. package/dist/enrichments/types.js.map +1 -0
  45. package/dist/enrichments/webhook.enrichment.d.ts +3 -0
  46. package/dist/enrichments/webhook.enrichment.d.ts.map +1 -0
  47. package/dist/enrichments/webhook.enrichment.js +61 -0
  48. package/dist/enrichments/webhook.enrichment.js.map +1 -0
  49. package/dist/scripts/enrich-spec.d.ts +3 -0
  50. package/dist/scripts/enrich-spec.d.ts.map +1 -0
  51. package/dist/scripts/enrich-spec.js +128 -0
  52. package/dist/scripts/enrich-spec.js.map +1 -0
  53. package/dist/scripts/fetch-spec.d.ts +3 -0
  54. package/dist/scripts/fetch-spec.d.ts.map +1 -0
  55. package/dist/scripts/fetch-spec.js +34 -0
  56. package/dist/scripts/fetch-spec.js.map +1 -0
  57. package/dist/scripts/generate-internal.d.ts +3 -0
  58. package/dist/scripts/generate-internal.d.ts.map +1 -0
  59. package/dist/scripts/generate-internal.js +45 -0
  60. package/dist/scripts/generate-internal.js.map +1 -0
  61. package/dist/scripts/generate-mintlify.d.ts +3 -0
  62. package/dist/scripts/generate-mintlify.d.ts.map +1 -0
  63. package/dist/scripts/generate-mintlify.js +98 -0
  64. package/dist/scripts/generate-mintlify.js.map +1 -0
  65. package/dist/scripts/validate-spec.d.ts +3 -0
  66. package/dist/scripts/validate-spec.d.ts.map +1 -0
  67. package/dist/scripts/validate-spec.js +67 -0
  68. package/dist/scripts/validate-spec.js.map +1 -0
  69. package/dist/src/auth.d.ts +14 -0
  70. package/dist/src/auth.d.ts.map +1 -0
  71. package/dist/src/auth.js +50 -0
  72. package/dist/src/auth.js.map +1 -0
  73. package/dist/src/client.d.ts +22 -0
  74. package/dist/src/client.d.ts.map +1 -0
  75. package/dist/src/client.js +51 -0
  76. package/dist/src/client.js.map +1 -0
  77. package/dist/src/config.d.ts +13 -0
  78. package/dist/src/config.d.ts.map +1 -0
  79. package/dist/src/config.js +16 -0
  80. package/dist/src/config.js.map +1 -0
  81. package/dist/src/index.d.ts +3 -0
  82. package/dist/src/index.d.ts.map +1 -0
  83. package/dist/src/index.js +35 -0
  84. package/dist/src/index.js.map +1 -0
  85. package/dist/src/server.d.ts +5 -0
  86. package/dist/src/server.d.ts.map +1 -0
  87. package/dist/src/server.js +104 -0
  88. package/dist/src/server.js.map +1 -0
  89. package/dist/src/tools/index.d.ts +4 -0
  90. package/dist/src/tools/index.d.ts.map +1 -0
  91. package/dist/src/tools/index.js +3 -0
  92. package/dist/src/tools/index.js.map +1 -0
  93. package/dist/src/tools/param-resolver.d.ts +13 -0
  94. package/dist/src/tools/param-resolver.d.ts.map +1 -0
  95. package/dist/src/tools/param-resolver.js +44 -0
  96. package/dist/src/tools/param-resolver.js.map +1 -0
  97. package/dist/src/tools/tool-factory.d.ts +18 -0
  98. package/dist/src/tools/tool-factory.d.ts.map +1 -0
  99. package/dist/src/tools/tool-factory.js +156 -0
  100. package/dist/src/tools/tool-factory.js.map +1 -0
  101. package/package.json +44 -0
  102. package/spec/openapi-external.json +1007 -0
  103. package/spec/openapi-internal.json +2087 -0
@@ -0,0 +1,61 @@
1
+ export const webhookEnrichments = {
2
+ 'WebhookController_create': {
3
+ toolName: 'create_webhook',
4
+ summary: 'Criar webhook para notificacoes',
5
+ description: `Registra uma URL de webhook para receber notificacoes em tempo real.
6
+
7
+ Tipos de webhook disponiveis:
8
+ - REPORT: notificado quando um relatorio muda de status (PENDING → APPROVED/DENIED/ALERT)
9
+ - REPORT_FINISHED: notificado quando o processamento do relatorio finaliza
10
+ - REPORT_STATUS: notificado em cada mudanca de status intermediaria
11
+ - CREDIT_POLICY: notificado quando a politica de credito e avaliada
12
+ - OPTIN: notificado quando um opt-in e processado
13
+
14
+ O webhook recebe um POST na URL configurada com o payload do evento.
15
+ Se apiKey for informada, sera enviada no header api-key da requisicao.
16
+
17
+ RECOMENDADO: Sempre configure um webhook ao criar relatorios. Evita
18
+ a necessidade de polling com get_report.`,
19
+ paramDescriptions: {
20
+ 'type': 'Tipo do webhook: REPORT, REPORT_FINISHED, REPORT_STATUS, CREDIT_POLICY ou OPTIN.',
21
+ 'url': 'URL completa (https://) que recebera o POST com o payload do evento.',
22
+ 'apiKey': 'Chave de API enviada no header api-key para autenticacao (opcional).',
23
+ },
24
+ responseDescription: 'Webhook criado com id, type, url e organizationId.',
25
+ examples: [
26
+ {
27
+ name: 'Webhook para relatorio finalizado',
28
+ params: {
29
+ type: 'REPORT_FINISHED',
30
+ url: 'https://meu-sistema.com/webhooks/gyra',
31
+ apiKey: 'minha-chave-secreta',
32
+ },
33
+ },
34
+ ],
35
+ tags: ['webhook'],
36
+ },
37
+ 'WebhookController_find': {
38
+ toolName: 'find_webhooks',
39
+ summary: 'Consultar webhooks cadastrados',
40
+ description: `Busca webhooks cadastrados na organizacao.
41
+
42
+ Se webhookId for informado, retorna o webhook especifico.
43
+ Caso contrario, retorna todos os webhooks da organizacao autenticada.`,
44
+ paramDescriptions: {
45
+ 'webhookId': 'ID do webhook especifico (opcional). Sem este parametro, retorna todos.',
46
+ },
47
+ responseDescription: 'Webhook(s) com id, type, url, apiKey e organizationId.',
48
+ tags: ['webhook'],
49
+ },
50
+ 'WebhookController_delete': {
51
+ toolName: 'delete_webhook',
52
+ summary: 'Deletar webhook',
53
+ description: `Remove um webhook cadastrado. A URL deixa de receber notificacoes imediatamente.`,
54
+ paramDescriptions: {
55
+ 'id': 'ID do webhook a remover.',
56
+ },
57
+ responseDescription: 'Confirmacao de remocao.',
58
+ tags: ['webhook'],
59
+ },
60
+ };
61
+ //# sourceMappingURL=webhook.enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.enrichment.js","sourceRoot":"","sources":["../../enrichments/webhook.enrichment.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,0BAA0B,EAAE;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE;;;;;;;;;;;;;yCAawB;QACrC,iBAAiB,EAAE;YACjB,MAAM,EAAE,kFAAkF;YAC1F,KAAK,EAAE,sEAAsE;YAC7E,QAAQ,EAAE,sEAAsE;SACjF;QACD,mBAAmB,EAAE,oDAAoD;QACzE,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE;oBACN,IAAI,EAAE,iBAAiB;oBACvB,GAAG,EAAE,uCAAuC;oBAC5C,MAAM,EAAE,qBAAqB;iBAC9B;aACF;SACF;QACD,IAAI,EAAE,CAAC,SAAS,CAAC;KAClB;IAED,wBAAwB,EAAE;QACxB,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE;;;sEAGqD;QAClE,iBAAiB,EAAE;YACjB,WAAW,EAAE,yEAAyE;SACvF;QACD,mBAAmB,EAAE,wDAAwD;QAC7E,IAAI,EAAE,CAAC,SAAS,CAAC;KAClB;IAED,0BAA0B,EAAE;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,kFAAkF;QAC/F,iBAAiB,EAAE;YACjB,IAAI,EAAE,0BAA0B;SACjC;QACD,mBAAmB,EAAE,yBAAyB;QAC9C,IAAI,EAAE,CAAC,SAAS,CAAC;KAClB;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=enrich-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-spec.d.ts","sourceRoot":"","sources":["../../scripts/enrich-spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Mescla a spec crua do gyra-core com os enrichments curados.
4
+ * Gera spec/openapi-external.json contendo apenas os endpoints publicos.
5
+ */
6
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { enrichmentRegistry } from '../enrichments/index.js';
9
+ import { PUBLIC_OPERATION_IDS } from '../enrichments/public-endpoints.js';
10
+ const ROOT = resolve(import.meta.dirname, '..');
11
+ const RAW_PATH = resolve(ROOT, 'spec', 'openapi-raw.json');
12
+ const OUTPUT_PATH = resolve(ROOT, 'spec', 'openapi-external.json');
13
+ function main() {
14
+ if (!existsSync(RAW_PATH)) {
15
+ throw new Error(`Raw spec not found at ${RAW_PATH}. Run fetch-spec first.`);
16
+ }
17
+ const rawSpec = JSON.parse(readFileSync(RAW_PATH, 'utf-8'));
18
+ const publicIds = new Set(PUBLIC_OPERATION_IDS);
19
+ const enrichedPaths = {};
20
+ const usedSchemas = new Set();
21
+ let includedCount = 0;
22
+ let skippedCount = 0;
23
+ // Iterar por todos os paths e operacoes da spec
24
+ for (const [path, methods] of Object.entries(rawSpec.paths)) {
25
+ for (const [method, operation] of Object.entries(methods)) {
26
+ if (method === 'parameters')
27
+ continue; // path-level params
28
+ const operationId = operation.operationId;
29
+ if (!operationId || !publicIds.has(operationId)) {
30
+ skippedCount++;
31
+ continue;
32
+ }
33
+ const enrichment = enrichmentRegistry[operationId];
34
+ if (!enrichment) {
35
+ console.warn(`WARN: ${operationId} in allowlist but no enrichment found. Skipping.`);
36
+ skippedCount++;
37
+ continue;
38
+ }
39
+ // Clonar operacao e aplicar enrichments
40
+ const enrichedOp = JSON.parse(JSON.stringify(operation));
41
+ // Sobrescrever summary e description
42
+ enrichedOp.summary = enrichment.summary;
43
+ enrichedOp.description = enrichment.description;
44
+ // Enriquecer descricoes de parametros
45
+ if (enrichment.paramDescriptions && enrichedOp.parameters) {
46
+ enrichedOp.parameters = enrichedOp.parameters
47
+ .filter((p) => !enrichment.excludeParams?.includes(p.name))
48
+ .map((p) => {
49
+ if (enrichment.paramDescriptions?.[p.name]) {
50
+ return { ...p, description: enrichment.paramDescriptions[p.name] };
51
+ }
52
+ return p;
53
+ });
54
+ }
55
+ // Enriquecer descricoes do requestBody
56
+ if (enrichment.paramDescriptions && enrichedOp.requestBody?.content) {
57
+ for (const contentType of Object.values(enrichedOp.requestBody.content)) {
58
+ if (contentType.schema?.properties) {
59
+ for (const [propName, propSchema] of Object.entries(contentType.schema.properties)) {
60
+ if (enrichment.paramDescriptions[propName]) {
61
+ propSchema.description = enrichment.paramDescriptions[propName];
62
+ }
63
+ }
64
+ }
65
+ // Track $ref schemas
66
+ if (contentType.schema?.$ref) {
67
+ const refName = contentType.schema.$ref.replace('#/components/schemas/', '');
68
+ usedSchemas.add(refName);
69
+ }
70
+ }
71
+ }
72
+ // Adicionar response description
73
+ if (enrichment.responseDescription) {
74
+ const successResponse = enrichedOp.responses?.['200'] || enrichedOp.responses?.['201'] || enrichedOp.responses?.['202'];
75
+ if (successResponse) {
76
+ successResponse.description = enrichment.responseDescription;
77
+ }
78
+ }
79
+ // Adicionar ao path
80
+ if (!enrichedPaths[path]) {
81
+ enrichedPaths[path] = {};
82
+ }
83
+ enrichedPaths[path][method] = enrichedOp;
84
+ includedCount++;
85
+ }
86
+ }
87
+ // Coletar schemas referenciados recursivamente
88
+ const allSchemas = rawSpec.components?.schemas || {};
89
+ const resolvedSchemas = {};
90
+ function collectSchema(name) {
91
+ if (resolvedSchemas[name] || !allSchemas[name])
92
+ return;
93
+ resolvedSchemas[name] = allSchemas[name];
94
+ // Buscar refs internas do schema
95
+ const schemaStr = JSON.stringify(allSchemas[name]);
96
+ const refs = schemaStr.match(/#\/components\/schemas\/(\w+)/g) || [];
97
+ for (const ref of refs) {
98
+ const refName = ref.replace('#/components/schemas/', '');
99
+ collectSchema(refName);
100
+ }
101
+ }
102
+ for (const schemaName of usedSchemas) {
103
+ collectSchema(schemaName);
104
+ }
105
+ // Montar spec final
106
+ const enrichedSpec = {
107
+ openapi: rawSpec.openapi || '3.0.0',
108
+ info: {
109
+ ...rawSpec.info,
110
+ title: 'GYRA+ API - MCP Server',
111
+ description: 'API da Gyra+ para analise de credito. Spec curada para uso com agentes AI via MCP.',
112
+ },
113
+ servers: rawSpec.servers || [{ url: 'https://gyra-core.gyramais.com.br', description: 'Producao' }],
114
+ paths: enrichedPaths,
115
+ components: {
116
+ ...rawSpec.components,
117
+ schemas: resolvedSchemas,
118
+ },
119
+ };
120
+ writeFileSync(OUTPUT_PATH, JSON.stringify(enrichedSpec, null, 2));
121
+ console.log(`Enriched spec generated:`);
122
+ console.log(` Included: ${includedCount} operations`);
123
+ console.log(` Skipped: ${skippedCount} operations (internal)`);
124
+ console.log(` Schemas: ${Object.keys(resolvedSchemas).length}`);
125
+ console.log(` Output: ${OUTPUT_PATH}`);
126
+ }
127
+ main();
128
+ //# sourceMappingURL=enrich-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrich-spec.js","sourceRoot":"","sources":["../../scripts/enrich-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=fetch-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-spec.d.ts","sourceRoot":"","sources":["../../scripts/fetch-spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Busca a OpenAPI spec live do gyra-core (/api-json)
4
+ * e salva em spec/openapi-raw.json
5
+ */
6
+ import { writeFileSync, mkdirSync } from 'node:fs';
7
+ import { resolve, dirname } from 'node:path';
8
+ const SPEC_URL = process.env.GYRA_SPEC_URL
9
+ || process.env.GYRA_BASE_URL
10
+ ? `${process.env.GYRA_BASE_URL}/api-json`
11
+ : 'https://gyra-core.gyramais.com.br/api-json';
12
+ const OUTPUT_PATH = resolve(import.meta.dirname, '..', 'spec', 'openapi-raw.json');
13
+ async function main() {
14
+ console.log(`Fetching OpenAPI spec from: ${SPEC_URL}`);
15
+ const response = await fetch(SPEC_URL);
16
+ if (!response.ok) {
17
+ throw new Error(`Failed to fetch spec: ${response.status} ${response.statusText}`);
18
+ }
19
+ const spec = await response.json();
20
+ // Validacao basica
21
+ if (!spec.paths || !spec.info) {
22
+ throw new Error('Invalid OpenAPI spec: missing "paths" or "info"');
23
+ }
24
+ const pathCount = Object.keys(spec.paths).length;
25
+ console.log(`Spec fetched: ${spec.info.title} v${spec.info.version} (${pathCount} paths)`);
26
+ mkdirSync(dirname(OUTPUT_PATH), { recursive: true });
27
+ writeFileSync(OUTPUT_PATH, JSON.stringify(spec, null, 2));
28
+ console.log(`Saved to: ${OUTPUT_PATH}`);
29
+ }
30
+ main().catch((err) => {
31
+ console.error('Error fetching spec:', err.message);
32
+ process.exit(1);
33
+ });
34
+ //# sourceMappingURL=fetch-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-spec.js","sourceRoot":"","sources":["../../scripts/fetch-spec.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa;OACrC,OAAO,CAAC,GAAG,CAAC,aAAa;IAC1B,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW;IACzC,CAAC,CAAC,4CAA4C,CAAC;AAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnF,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,IAAI,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExC,mBAAmB;IACnB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,SAAS,CAAC,CAAC;IAE3F,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=generate-internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-internal.d.ts","sourceRoot":"","sources":["../../scripts/generate-internal.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Gera spec/openapi-internal.json contendo TODOS os endpoints.
4
+ * Usa descricoes auto-geradas do Swagger (sem enrichments curados).
5
+ */
6
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ const ROOT = resolve(import.meta.dirname, '..');
9
+ const RAW_PATH = resolve(ROOT, 'spec', 'openapi-raw.json');
10
+ const OUTPUT_PATH = resolve(ROOT, 'spec', 'openapi-internal.json');
11
+ function main() {
12
+ if (!existsSync(RAW_PATH)) {
13
+ throw new Error(`Raw spec not found at ${RAW_PATH}. Run fetch-spec first.`);
14
+ }
15
+ const rawSpec = JSON.parse(readFileSync(RAW_PATH, 'utf-8'));
16
+ // Enriquecer operacoes que nao tem summary/description
17
+ let enrichedCount = 0;
18
+ for (const [path, methods] of Object.entries(rawSpec.paths)) {
19
+ for (const [method, operation] of Object.entries(methods)) {
20
+ if (method === 'parameters')
21
+ continue;
22
+ // Auto-gerar summary se nao existir
23
+ if (!operation.summary) {
24
+ operation.summary = `${method.toUpperCase()} ${path}`;
25
+ enrichedCount++;
26
+ }
27
+ // Auto-gerar description se nao existir
28
+ if (!operation.description) {
29
+ const tags = operation.tags?.join(', ') || 'general';
30
+ operation.description = `Endpoint ${method.toUpperCase()} ${path} (${tags}). Gerado automaticamente do Swagger.`;
31
+ }
32
+ }
33
+ }
34
+ // Atualizar info
35
+ rawSpec.info.title = 'GYRA+ API - MCP Server (Internal)';
36
+ rawSpec.info.description = 'API completa da Gyra+ para uso interno. Todos os endpoints expostos.';
37
+ writeFileSync(OUTPUT_PATH, JSON.stringify(rawSpec, null, 2));
38
+ const pathCount = Object.keys(rawSpec.paths).length;
39
+ console.log(`Internal spec generated:`);
40
+ console.log(` Paths: ${pathCount}`);
41
+ console.log(` Auto-enriched: ${enrichedCount} operations`);
42
+ console.log(` Output: ${OUTPUT_PATH}`);
43
+ }
44
+ main();
45
+ //# sourceMappingURL=generate-internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-internal.js","sourceRoot":"","sources":["../../scripts/generate-internal.ts"],"names":[],"mappings":";AACA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEnE,SAAS,IAAI;IACX,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,yBAAyB,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,uDAAuD;IACvD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAA8B,CAAC,EAAE,CAAC;YACjF,IAAI,MAAM,KAAK,YAAY;gBAAE,SAAS;YAEtC,oCAAoC;YACpC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvB,SAAS,CAAC,OAAO,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtD,aAAa,EAAE,CAAC;YAClB,CAAC;YAED,wCAAwC;YACxC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;gBACrD,SAAS,CAAC,WAAW,GAAG,YAAY,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,KAAK,IAAI,uCAAuC,CAAC;YACnH,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,mCAAmC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,sEAAsE,CAAC;IAElG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,aAAa,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=generate-mintlify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-mintlify.d.ts","sourceRoot":"","sources":["../../scripts/generate-mintlify.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Converte spec/openapi-external.json para YAML e copia para gyra-mintlify-api-docs.
4
+ * Substitui o openapi.yaml manual.
5
+ */
6
+ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ const ROOT = resolve(import.meta.dirname, '..');
9
+ const EXTERNAL_SPEC_PATH = resolve(ROOT, 'spec', 'openapi-external.json');
10
+ const MINTLIFY_PATH = resolve(ROOT, '..', 'gyra-mintlify-api-docs', 'openapi.yaml');
11
+ /**
12
+ * Conversor JSON → YAML simples (sem dependencia externa).
13
+ * Suficiente para OpenAPI specs.
14
+ */
15
+ function jsonToYaml(obj, indent = 0) {
16
+ const spaces = ' '.repeat(indent);
17
+ if (obj === null || obj === undefined)
18
+ return 'null';
19
+ if (typeof obj === 'boolean')
20
+ return String(obj);
21
+ if (typeof obj === 'number')
22
+ return String(obj);
23
+ if (typeof obj === 'string') {
24
+ // Strings com caracteres especiais precisam de aspas
25
+ if (obj.includes('\n') ||
26
+ obj.includes(':') ||
27
+ obj.includes('#') ||
28
+ obj.includes('{') ||
29
+ obj.includes('}') ||
30
+ obj.includes('[') ||
31
+ obj.includes(']') ||
32
+ obj.includes(',') ||
33
+ obj.includes('*') ||
34
+ obj.includes('&') ||
35
+ obj.includes('!') ||
36
+ obj.includes('|') ||
37
+ obj.includes('>') ||
38
+ obj.includes("'") ||
39
+ obj.startsWith(' ') ||
40
+ obj.endsWith(' ') ||
41
+ obj === '' ||
42
+ obj === 'true' ||
43
+ obj === 'false' ||
44
+ obj === 'null') {
45
+ // Multiline
46
+ if (obj.includes('\n')) {
47
+ const lines = obj.split('\n');
48
+ return `|\n${lines.map(l => `${spaces} ${l}`).join('\n')}`;
49
+ }
50
+ return `'${obj.replace(/'/g, "''")}'`;
51
+ }
52
+ return obj;
53
+ }
54
+ if (Array.isArray(obj)) {
55
+ if (obj.length === 0)
56
+ return '[]';
57
+ const items = obj.map(item => {
58
+ if (typeof item === 'object' && item !== null) {
59
+ const inner = jsonToYaml(item, indent + 1);
60
+ const firstLine = inner.split('\n')[0];
61
+ const rest = inner.split('\n').slice(1).join('\n');
62
+ return `${spaces}- ${firstLine.trim()}${rest ? '\n' + rest : ''}`;
63
+ }
64
+ return `${spaces}- ${jsonToYaml(item, indent + 1)}`;
65
+ });
66
+ return '\n' + items.join('\n');
67
+ }
68
+ if (typeof obj === 'object') {
69
+ const entries = Object.entries(obj);
70
+ if (entries.length === 0)
71
+ return '{}';
72
+ const lines = entries.map(([key, value]) => {
73
+ const yamlValue = jsonToYaml(value, indent + 1);
74
+ if (typeof value === 'object' && value !== null && !Array.isArray(value) && Object.keys(value).length > 0) {
75
+ return `${spaces}${key}:\n${yamlValue}`;
76
+ }
77
+ if (Array.isArray(value) && value.length > 0) {
78
+ return `${spaces}${key}:${yamlValue}`;
79
+ }
80
+ return `${spaces}${key}: ${yamlValue}`;
81
+ });
82
+ return lines.join('\n');
83
+ }
84
+ return String(obj);
85
+ }
86
+ function main() {
87
+ if (!existsSync(EXTERNAL_SPEC_PATH)) {
88
+ throw new Error(`External spec not found at ${EXTERNAL_SPEC_PATH}. Run enrich-spec first.`);
89
+ }
90
+ const spec = JSON.parse(readFileSync(EXTERNAL_SPEC_PATH, 'utf-8'));
91
+ const yaml = jsonToYaml(spec);
92
+ writeFileSync(MINTLIFY_PATH, yaml);
93
+ console.log(`Mintlify spec generated at: ${MINTLIFY_PATH}`);
94
+ const pathCount = Object.keys(spec.paths || {}).length;
95
+ console.log(` Paths: ${pathCount}`);
96
+ }
97
+ main();
98
+ //# sourceMappingURL=generate-mintlify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-mintlify.js","sourceRoot":"","sources":["../../scripts/generate-mintlify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=validate-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-spec.d.ts","sourceRoot":"","sources":["../../scripts/validate-spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Valida que todos os enrichments referenciam operationIds que existem na spec.
4
+ * Falha se um enrichment aponta para um endpoint que foi removido do gyra-core.
5
+ */
6
+ import { readFileSync, existsSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { enrichmentRegistry } from '../enrichments/index.js';
9
+ import { PUBLIC_OPERATION_IDS } from '../enrichments/public-endpoints.js';
10
+ const ROOT = resolve(import.meta.dirname, '..');
11
+ const RAW_PATH = resolve(ROOT, 'spec', 'openapi-raw.json');
12
+ function main() {
13
+ if (!existsSync(RAW_PATH)) {
14
+ throw new Error(`Raw spec not found at ${RAW_PATH}. Run fetch-spec first.`);
15
+ }
16
+ const rawSpec = JSON.parse(readFileSync(RAW_PATH, 'utf-8'));
17
+ // Coletar todos os operationIds da spec
18
+ const specOperationIds = new Set();
19
+ for (const [, methods] of Object.entries(rawSpec.paths)) {
20
+ for (const [method, operation] of Object.entries(methods)) {
21
+ if (method === 'parameters')
22
+ continue;
23
+ if (operation.operationId) {
24
+ specOperationIds.add(operation.operationId);
25
+ }
26
+ }
27
+ }
28
+ const errors = [];
29
+ const warnings = [];
30
+ // Validar: cada operationId na allowlist existe na spec
31
+ for (const opId of PUBLIC_OPERATION_IDS) {
32
+ if (!specOperationIds.has(opId)) {
33
+ errors.push(`ERRO: operationId "${opId}" esta na allowlist (public-endpoints.ts) mas NAO existe na spec do gyra-core. Endpoint foi removido?`);
34
+ }
35
+ }
36
+ // Validar: cada enrichment tem operationId correspondente na allowlist
37
+ for (const opId of Object.keys(enrichmentRegistry)) {
38
+ if (!PUBLIC_OPERATION_IDS.includes(opId)) {
39
+ warnings.push(`WARN: enrichment para "${opId}" existe mas NAO esta na allowlist. Adicione em public-endpoints.ts ou remova o enrichment.`);
40
+ }
41
+ }
42
+ // Validar: cada operationId na allowlist tem enrichment
43
+ for (const opId of PUBLIC_OPERATION_IDS) {
44
+ if (!enrichmentRegistry[opId]) {
45
+ warnings.push(`WARN: operationId "${opId}" esta na allowlist mas NAO tem enrichment. Tool tera descricao basica.`);
46
+ }
47
+ }
48
+ // Report
49
+ console.log(`\nValidation Report:`);
50
+ console.log(` Spec operations: ${specOperationIds.size}`);
51
+ console.log(` Public allowlist: ${PUBLIC_OPERATION_IDS.length}`);
52
+ console.log(` Enrichments: ${Object.keys(enrichmentRegistry).length}`);
53
+ if (warnings.length > 0) {
54
+ console.log(`\nWarnings (${warnings.length}):`);
55
+ for (const w of warnings)
56
+ console.log(` ${w}`);
57
+ }
58
+ if (errors.length > 0) {
59
+ console.log(`\nErrors (${errors.length}):`);
60
+ for (const e of errors)
61
+ console.error(` ${e}`);
62
+ process.exit(1);
63
+ }
64
+ console.log(`\nValidation passed.`);
65
+ }
66
+ main();
67
+ //# sourceMappingURL=validate-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-spec.js","sourceRoot":"","sources":["../../scripts/validate-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Gerenciamento de JWT — acquire, cache e refresh automatico.
3
+ * Baseado no padrao do n8n-nodes-gyramais/GenericFunctions.ts
4
+ */
5
+ import type { GyraConfig } from './config.js';
6
+ export declare class GyraAuth {
7
+ private token;
8
+ private tokenExpiresAt;
9
+ private config;
10
+ constructor(config: GyraConfig);
11
+ getToken(): Promise<string>;
12
+ private authenticate;
13
+ }
14
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAUxB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;YAenB,YAAY;CA8B3B"}
@@ -0,0 +1,50 @@
1
+ export class GyraAuth {
2
+ token = null;
3
+ tokenExpiresAt = 0;
4
+ config;
5
+ constructor(config) {
6
+ this.config = config;
7
+ // Se tem access token estatico, usar direto
8
+ if (config.accessToken) {
9
+ this.token = config.accessToken;
10
+ this.tokenExpiresAt = Infinity; // Nao expira (gerenciado externamente)
11
+ }
12
+ }
13
+ async getToken() {
14
+ // Token estatico
15
+ if (this.config.accessToken) {
16
+ return this.config.accessToken;
17
+ }
18
+ // Token cacheado ainda valido (com buffer de 60s)
19
+ if (this.token && Date.now() < this.tokenExpiresAt - 60_000) {
20
+ return this.token;
21
+ }
22
+ // Renovar via client credentials
23
+ return this.authenticate();
24
+ }
25
+ async authenticate() {
26
+ const url = `${this.config.baseUrl}/auth/authenticate`;
27
+ const response = await fetch(url, {
28
+ method: 'POST',
29
+ headers: {
30
+ 'Content-Type': 'application/json',
31
+ 'gyra-client-id': this.config.clientId,
32
+ 'gyra-client-secret': this.config.clientSecret,
33
+ },
34
+ });
35
+ if (!response.ok) {
36
+ const body = await response.text();
37
+ throw new Error(`Falha na autenticacao (${response.status}): ${body}`);
38
+ }
39
+ const data = await response.json();
40
+ if (!data.accessToken) {
41
+ throw new Error('Resposta de autenticacao invalida: accessToken ausente.');
42
+ }
43
+ this.token = data.accessToken;
44
+ // Default 1h se expiresIn nao informado
45
+ const expiresInMs = (data.expiresIn || 3600) * 1000;
46
+ this.tokenExpiresAt = Date.now() + expiresInMs;
47
+ return this.token;
48
+ }
49
+ }
50
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,QAAQ;IACX,KAAK,GAAkB,IAAI,CAAC;IAC5B,cAAc,GAAW,CAAC,CAAC;IAC3B,MAAM,CAAa;IAE3B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,4CAA4C;QAC5C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,uCAAuC;QACzE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,iBAAiB;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACjC,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,iCAAiC;QACjC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAS;gBACvC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,YAAa;aAChD;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,wCAAwC;QACxC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAE/C,OAAO,IAAI,CAAC,KAAM,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HTTP client para chamadas ao gyra-core.
3
+ * Adiciona JWT automaticamente via GyraAuth.
4
+ */
5
+ import type { GyraAuth } from './auth.js';
6
+ import type { GyraConfig } from './config.js';
7
+ export interface ApiResponse {
8
+ status: number;
9
+ data: any;
10
+ ok: boolean;
11
+ }
12
+ export declare class GyraClient {
13
+ private auth;
14
+ private baseUrl;
15
+ constructor(config: GyraConfig, auth: GyraAuth);
16
+ request(method: string, path: string, options?: {
17
+ body?: any;
18
+ query?: Record<string, string>;
19
+ headers?: Record<string, string>;
20
+ }): Promise<ApiResponse>;
21
+ }
22
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,EAAE,EAAE,OAAO,CAAC;CACb;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ;IAKxC,OAAO,CACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GACA,OAAO,CAAC,WAAW,CAAC;CA+CxB"}