ibge-br-mcp 1.9.2 → 1.10.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 (141) hide show
  1. package/README.md +74 -1
  2. package/README.pt-BR.md +76 -2
  3. package/dist/config.d.ts +52 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +108 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/errors.d.ts +3 -2
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +18 -3
  10. package/dist/errors.js.map +1 -1
  11. package/dist/index.js +6 -567
  12. package/dist/index.js.map +1 -1
  13. package/dist/prompts.d.ts +12 -0
  14. package/dist/prompts.d.ts.map +1 -0
  15. package/dist/prompts.js +85 -0
  16. package/dist/prompts.js.map +1 -0
  17. package/dist/resources.d.ts +12 -0
  18. package/dist/resources.d.ts.map +1 -0
  19. package/dist/resources.js +130 -0
  20. package/dist/resources.js.map +1 -0
  21. package/dist/retry.d.ts +10 -0
  22. package/dist/retry.d.ts.map +1 -1
  23. package/dist/retry.js +48 -4
  24. package/dist/retry.js.map +1 -1
  25. package/dist/server.d.ts +13 -0
  26. package/dist/server.d.ts.map +1 -0
  27. package/dist/server.js +699 -0
  28. package/dist/server.js.map +1 -0
  29. package/dist/structured.d.ts +50 -0
  30. package/dist/structured.d.ts.map +1 -0
  31. package/dist/structured.js +85 -0
  32. package/dist/structured.js.map +1 -0
  33. package/dist/tools/bcb.d.ts +0 -24
  34. package/dist/tools/bcb.d.ts.map +1 -1
  35. package/dist/tools/bcb.js +20 -30
  36. package/dist/tools/bcb.js.map +1 -1
  37. package/dist/tools/calendario.d.ts +2 -29
  38. package/dist/tools/calendario.d.ts.map +1 -1
  39. package/dist/tools/calendario.js +44 -37
  40. package/dist/tools/calendario.js.map +1 -1
  41. package/dist/tools/censo.d.ts +31 -25
  42. package/dist/tools/censo.d.ts.map +1 -1
  43. package/dist/tools/censo.js +77 -48
  44. package/dist/tools/censo.js.map +1 -1
  45. package/dist/tools/cidades.d.ts +39 -25
  46. package/dist/tools/cidades.d.ts.map +1 -1
  47. package/dist/tools/cidades.js +112 -58
  48. package/dist/tools/cidades.js.map +1 -1
  49. package/dist/tools/cnae.d.ts +0 -21
  50. package/dist/tools/cnae.d.ts.map +1 -1
  51. package/dist/tools/cnae.js +0 -29
  52. package/dist/tools/cnae.js.map +1 -1
  53. package/dist/tools/comparar.d.ts +75 -19
  54. package/dist/tools/comparar.d.ts.map +1 -1
  55. package/dist/tools/comparar.js +106 -65
  56. package/dist/tools/comparar.js.map +1 -1
  57. package/dist/tools/datasaude.d.ts +28 -25
  58. package/dist/tools/datasaude.d.ts.map +1 -1
  59. package/dist/tools/datasaude.js +62 -38
  60. package/dist/tools/datasaude.js.map +1 -1
  61. package/dist/tools/estados.d.ts +2 -17
  62. package/dist/tools/estados.d.ts.map +1 -1
  63. package/dist/tools/estados.js +4 -18
  64. package/dist/tools/estados.js.map +1 -1
  65. package/dist/tools/geocodigo.d.ts +2 -20
  66. package/dist/tools/geocodigo.d.ts.map +1 -1
  67. package/dist/tools/geocodigo.js +11 -30
  68. package/dist/tools/geocodigo.js.map +1 -1
  69. package/dist/tools/index.d.ts +23 -27
  70. package/dist/tools/index.d.ts.map +1 -1
  71. package/dist/tools/index.js +23 -414
  72. package/dist/tools/index.js.map +1 -1
  73. package/dist/tools/indicadores.d.ts +28 -28
  74. package/dist/tools/indicadores.d.ts.map +1 -1
  75. package/dist/tools/indicadores.js +67 -58
  76. package/dist/tools/indicadores.js.map +1 -1
  77. package/dist/tools/localidade.d.ts +0 -15
  78. package/dist/tools/localidade.d.ts.map +1 -1
  79. package/dist/tools/localidade.js +0 -18
  80. package/dist/tools/localidade.js.map +1 -1
  81. package/dist/tools/malhas-tema.d.ts +0 -24
  82. package/dist/tools/malhas-tema.d.ts.map +1 -1
  83. package/dist/tools/malhas-tema.js +1 -24
  84. package/dist/tools/malhas-tema.js.map +1 -1
  85. package/dist/tools/malhas.d.ts +0 -27
  86. package/dist/tools/malhas.d.ts.map +1 -1
  87. package/dist/tools/malhas.js +1 -38
  88. package/dist/tools/malhas.js.map +1 -1
  89. package/dist/tools/municipios.d.ts +0 -18
  90. package/dist/tools/municipios.d.ts.map +1 -1
  91. package/dist/tools/municipios.js +6 -22
  92. package/dist/tools/municipios.js.map +1 -1
  93. package/dist/tools/nomes.d.ts +0 -27
  94. package/dist/tools/nomes.d.ts.map +1 -1
  95. package/dist/tools/nomes.js +0 -26
  96. package/dist/tools/nomes.js.map +1 -1
  97. package/dist/tools/noticias.d.ts +2 -32
  98. package/dist/tools/noticias.d.ts.map +1 -1
  99. package/dist/tools/noticias.js +22 -28
  100. package/dist/tools/noticias.js.map +1 -1
  101. package/dist/tools/paises.d.ts +0 -24
  102. package/dist/tools/paises.d.ts.map +1 -1
  103. package/dist/tools/paises.js +0 -23
  104. package/dist/tools/paises.js.map +1 -1
  105. package/dist/tools/pesquisas.d.ts +0 -15
  106. package/dist/tools/pesquisas.d.ts.map +1 -1
  107. package/dist/tools/pesquisas.js +4 -28
  108. package/dist/tools/pesquisas.js.map +1 -1
  109. package/dist/tools/populacao.d.ts +39 -13
  110. package/dist/tools/populacao.d.ts.map +1 -1
  111. package/dist/tools/populacao.js +37 -23
  112. package/dist/tools/populacao.js.map +1 -1
  113. package/dist/tools/sidra-metadados.d.ts +0 -18
  114. package/dist/tools/sidra-metadados.d.ts.map +1 -1
  115. package/dist/tools/sidra-metadados.js +0 -23
  116. package/dist/tools/sidra-metadados.js.map +1 -1
  117. package/dist/tools/sidra-tabelas.d.ts +0 -18
  118. package/dist/tools/sidra-tabelas.d.ts.map +1 -1
  119. package/dist/tools/sidra-tabelas.js +1 -28
  120. package/dist/tools/sidra-tabelas.js.map +1 -1
  121. package/dist/tools/sidra.d.ts +59 -31
  122. package/dist/tools/sidra.d.ts.map +1 -1
  123. package/dist/tools/sidra.js +117 -99
  124. package/dist/tools/sidra.js.map +1 -1
  125. package/dist/tools/vizinhos.d.ts +0 -21
  126. package/dist/tools/vizinhos.d.ts.map +1 -1
  127. package/dist/tools/vizinhos.js +14 -30
  128. package/dist/tools/vizinhos.js.map +1 -1
  129. package/dist/types.d.ts +0 -3
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/validation.d.ts +31 -3
  132. package/dist/validation.d.ts.map +1 -1
  133. package/dist/validation.js +55 -22
  134. package/dist/validation.js.map +1 -1
  135. package/package.json +4 -1
  136. package/.github/workflows/ci.yml +0 -91
  137. package/.github/workflows/publish.yml +0 -118
  138. package/CHANGELOG.md +0 -171
  139. package/CONTRIBUTING.md +0 -285
  140. package/server.json +0 -21
  141. package/smithery.yaml +0 -9
package/README.md CHANGED
@@ -1,9 +1,14 @@
1
1
  # ibge-br-mcp
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/ibge-br-mcp.svg)](https://www.npmjs.com/package/ibge-br-mcp)
4
+ [![npm downloads](https://img.shields.io/npm/dm/ibge-br-mcp.svg)](https://www.npmjs.com/package/ibge-br-mcp)
5
+ [![Tests](https://img.shields.io/badge/tests-460%20passed-brightgreen.svg)](https://github.com/SidneyBissoli/ibge-br-mcp)
6
+ [![Coverage](https://img.shields.io/badge/coverage-core%2097%25-brightgreen.svg)](https://github.com/SidneyBissoli/ibge-br-mcp)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
3
8
  [![smithery badge](https://smithery.ai/badge/sidneybissoli/ibge-br-mcp)](https://smithery.ai/server/sidneybissoli/ibge-br-mcp)
9
+ [![ibge-br-mcp MCP server](https://glama.ai/mcp/servers/SidneyBissoli/ibge-br-mcp/badges/score.svg)](https://glama.ai/mcp/servers/SidneyBissoli/ibge-br-mcp)
4
10
 
5
11
  MCP Server for IBGE (Brazilian Institute of Geography and Statistics) APIs.
6
-
7
12
  🇧🇷 [Leia em Português](README.pt-BR.md)
8
13
 
9
14
  This server implements the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) to provide access to IBGE's public APIs, enabling AI assistants to query geographic, demographic, and statistical data from Brazil.
@@ -11,6 +16,8 @@ This server implements the [Model Context Protocol (MCP)](https://modelcontextpr
11
16
  ## Features
12
17
 
13
18
  - **23 specialized tools** covering all major IBGE data domains
19
+ - **Reference resources & analysis prompts** (MCP catalogs + ready-made templates)
20
+ - **460 automated tests** with 97%+ core coverage
14
21
  - **Automatic caching** with configurable TTL for optimal performance
15
22
  - **Retry mechanism** with exponential backoff for network resilience
16
23
  - **Comprehensive validation** for all input parameters
@@ -82,6 +89,49 @@ This server implements the [Model Context Protocol (MCP)](https://modelcontextpr
82
89
  | `ibge_noticias` | IBGE news and press releases |
83
90
  | `ibge_calendario` | IBGE release and collection calendar |
84
91
 
92
+ ## Which tool should I use?
93
+
94
+ With 23 tools, several can touch the same topic. Quick guide for the common overlaps:
95
+
96
+ ### Population & demographics
97
+
98
+ | You want… | Use |
99
+ |:----------|:----|
100
+ | Brazil's population right now (real-time) | `ibge_populacao` |
101
+ | A single municipality/state panel (population, HDI, GDP…) | `ibge_cidades` |
102
+ | Census data or historical series (1970–2022) | `ibge_censo` |
103
+ | Rank/compare 2–10 localities on one indicator | `ibge_comparar` |
104
+ | A macro indicator time series (GDP, IPCA, unemployment…) | `ibge_indicadores` |
105
+ | A specific SIDRA table / fine control | `ibge_sidra` |
106
+
107
+ ### Economic indicators
108
+
109
+ | You want… | Use |
110
+ |:----------|:----|
111
+ | IPCA, INPC, GDP, unemployment (IBGE, primary source) | `ibge_indicadores` |
112
+ | SELIC, CDI, TR, dollar/euro exchange rates | `bcb` |
113
+
114
+ ### Localities & codes
115
+
116
+ | You want… | Use |
117
+ |:----------|:----|
118
+ | List/search municipalities | `ibge_municipios` |
119
+ | List states | `ibge_estados` |
120
+ | Resolve a name→code at any level, or decode a code's structure | `ibge_geocodigo` |
121
+ | Full record of one locality you already have the code for | `ibge_localidade` |
122
+ | Neighboring municipalities | `ibge_vizinhos` |
123
+
124
+ ### SIDRA workflow
125
+
126
+ Discover → inspect → query: `ibge_pesquisas` / `ibge_sidra_tabelas` (find a table) → `ibge_sidra_metadados` (its structure) → `ibge_sidra` (query). For common data, the wrappers above (`ibge_censo`, `ibge_indicadores`, `ibge_comparar`, `ibge_cidades`) are usually easier.
127
+
128
+ ### Maps (meshes)
129
+
130
+ | You want… | Use |
131
+ |:----------|:----|
132
+ | Administrative outlines (Brazil/region/state/municipality) | `ibge_malhas` |
133
+ | Thematic areas (biomes, Legal Amazon, semi-arid, metro regions) | `ibge_malhas_tema` |
134
+
85
135
  ## Installation
86
136
 
87
137
  ### Prerequisites
@@ -485,6 +535,29 @@ The project includes a comprehensive test suite with 227 tests covering:
485
535
  npm test
486
536
  ```
487
537
 
538
+ ## Quality Assurance
539
+
540
+ This project maintains high code quality standards:
541
+
542
+ - **227 automated tests** covering validation, caching, retry logic, formatting, and integrations
543
+ - **97%+ test coverage** on core modules (cache, validation, errors, types)
544
+ - **ESLint** for code linting with zero warnings
545
+ - **Prettier** for consistent code formatting
546
+ - **TypeScript strict mode** for type safety
547
+ - **Automated CI/CD** via GitHub Actions
548
+
549
+ Run tests locally:
550
+ ```bash
551
+ # Run all tests
552
+ npm test
553
+
554
+ # Run tests with coverage
555
+ npm run test:coverage
556
+
557
+ # Run linter
558
+ npm run lint
559
+ ```
560
+
488
561
  ## License
489
562
 
490
563
  MIT
package/README.pt-BR.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # ibge-br-mcp
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/ibge-br-mcp.svg)](https://www.npmjs.com/package/ibge-br-mcp)
4
+ [![npm downloads](https://img.shields.io/npm/dm/ibge-br-mcp.svg)](https://www.npmjs.com/package/ibge-br-mcp)
5
+ [![Tests](https://img.shields.io/badge/tests-460%20passed-brightgreen.svg)](https://github.com/SidneyBissoli/ibge-br-mcp)
6
+ [![Coverage](https://img.shields.io/badge/coverage-core%2097%25-brightgreen.svg)](https://github.com/SidneyBissoli/ibge-br-mcp)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
3
8
  [![smithery badge](https://smithery.ai/badge/sidneybissoli/ibge-br-mcp)](https://smithery.ai/server/sidneybissoli/ibge-br-mcp)
9
+ [![ibge-br-mcp MCP server](https://glama.ai/mcp/servers/SidneyBissoli/ibge-br-mcp/badges/score.svg)](https://glama.ai/mcp/servers/SidneyBissoli/ibge-br-mcp)
4
10
 
5
11
  Servidor MCP para APIs do IBGE (Instituto Brasileiro de Geografia e Estatística).
6
12
 
@@ -8,10 +14,12 @@ Este servidor implementa o [Model Context Protocol (MCP)](https://modelcontextpr
8
14
 
9
15
  🇺🇸 [Read in English](README.md)
10
16
 
11
- ## Funcionalidades
17
+ ## Recursos
12
18
 
13
19
  - **23 ferramentas especializadas** cobrindo todos os principais domínios de dados do IBGE
14
- - **Cache automático** com TTL configurável para desempenho otimizado
20
+ - **Resources de referência & prompts de análise** (catálogos MCP + templates prontos)
21
+ - **460 testes automatizados** com 97%+ de cobertura no core
22
+ - **Cache automático** com TTL configurável para performance otimizada
15
23
  - **Mecanismo de retry** com backoff exponencial para resiliência de rede
16
24
  - **Validação abrangente** para todos os parâmetros de entrada
17
25
  - **Tratamento de erros padronizado** com sugestões úteis
@@ -82,6 +90,49 @@ Este servidor implementa o [Model Context Protocol (MCP)](https://modelcontextpr
82
90
  | `ibge_noticias` | Notícias e releases do IBGE |
83
91
  | `ibge_calendario` | Calendário de divulgações e coletas do IBGE |
84
92
 
93
+ ## Qual ferramenta usar?
94
+
95
+ Com 23 ferramentas, várias podem tocar no mesmo assunto. Guia rápido para as sobreposições comuns:
96
+
97
+ ### População e demografia
98
+
99
+ | Você quer… | Use |
100
+ |:-----------|:----|
101
+ | População do Brasil agora (tempo real) | `ibge_populacao` |
102
+ | Painel de um único município/UF (população, IDH, PIB…) | `ibge_cidades` |
103
+ | Dados censitários ou série histórica (1970–2022) | `ibge_censo` |
104
+ | Ranquear/comparar 2–10 localidades num indicador | `ibge_comparar` |
105
+ | Série temporal de indicador macro (PIB, IPCA, desemprego…) | `ibge_indicadores` |
106
+ | Uma tabela SIDRA específica / controle fino | `ibge_sidra` |
107
+
108
+ ### Indicadores econômicos
109
+
110
+ | Você quer… | Use |
111
+ |:-----------|:----|
112
+ | IPCA, INPC, PIB, desemprego (IBGE, fonte primária) | `ibge_indicadores` |
113
+ | SELIC, CDI, TR, câmbio dólar/euro | `bcb` |
114
+
115
+ ### Localidades e códigos
116
+
117
+ | Você quer… | Use |
118
+ |:-----------|:----|
119
+ | Listar/buscar municípios | `ibge_municipios` |
120
+ | Listar estados | `ibge_estados` |
121
+ | Resolver nome→código em qualquer nível, ou decodificar a estrutura de um código | `ibge_geocodigo` |
122
+ | Ficha completa de uma localidade da qual você já tem o código | `ibge_localidade` |
123
+ | Municípios vizinhos | `ibge_vizinhos` |
124
+
125
+ ### Fluxo SIDRA
126
+
127
+ Descobrir → inspecionar → consultar: `ibge_pesquisas` / `ibge_sidra_tabelas` (achar a tabela) → `ibge_sidra_metadados` (sua estrutura) → `ibge_sidra` (consultar). Para dados comuns, os atalhos acima (`ibge_censo`, `ibge_indicadores`, `ibge_comparar`, `ibge_cidades`) costumam ser mais fáceis.
128
+
129
+ ### Mapas (malhas)
130
+
131
+ | Você quer… | Use |
132
+ |:-----------|:----|
133
+ | Contornos administrativos (Brasil/região/UF/município) | `ibge_malhas` |
134
+ | Áreas temáticas (biomas, Amazônia Legal, semiárido, regiões metropolitanas) | `ibge_malhas_tema` |
135
+
85
136
  ## Instalação
86
137
 
87
138
  ### Pré-requisitos
@@ -488,6 +539,29 @@ O projeto inclui uma suíte de testes abrangente com 227 testes cobrindo:
488
539
  npm test
489
540
  ```
490
541
 
542
+ ## Garantia de Qualidade
543
+
544
+ Este projeto mantém altos padrões de qualidade de código:
545
+
546
+ - **227 testes automatizados** cobrindo validação, cache, retry, formatação e integrações
547
+ - **97%+ de cobertura de testes** nos módulos core (cache, validation, errors, types)
548
+ - **ESLint** para linting de código sem warnings
549
+ - **Prettier** para formatação consistente
550
+ - **TypeScript modo strict** para segurança de tipos
551
+ - **CI/CD automatizado** via GitHub Actions
552
+
553
+ Execute os testes localmente:
554
+ ```bash
555
+ # Rodar todos os testes
556
+ npm test
557
+
558
+ # Rodar testes com cobertura
559
+ npm run test:coverage
560
+
561
+ # Rodar linter
562
+ npm run lint
563
+ ```
564
+
491
565
  ## Licença
492
566
 
493
567
  MIT
package/dist/config.d.ts CHANGED
@@ -2,6 +2,14 @@
2
2
  * Centralized configuration for IBGE MCP Server
3
3
  * Contains all constants, mappings, and endpoint definitions
4
4
  */
5
+ /** Default per-request timeout in milliseconds (upstream APIs are usually fast). */
6
+ export declare const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
7
+ /**
8
+ * Effective request timeout, overridable at startup via the
9
+ * `IBGE_MCP_TIMEOUT_MS` environment variable. Invalid or non-positive values
10
+ * fall back to the default. Used as the default `timeoutMs` for every fetch.
11
+ */
12
+ export declare const REQUEST_TIMEOUT_MS: number;
5
13
  export declare const API_ENDPOINTS: {
6
14
  readonly IBGE: {
7
15
  readonly LOCALIDADES: "https://servicodados.ibge.gov.br/api/v1/localidades";
@@ -75,6 +83,25 @@ export declare const TERRITORIAL_LEVELS: {
75
83
  * Territorial level names (for display)
76
84
  */
77
85
  export declare const TERRITORIAL_LEVEL_NAMES: Record<string, string>;
86
+ /**
87
+ * Short, agent-facing label for each territorial level code. Used to build the
88
+ * standardized `nivel_territorial` descriptions and error suggestions so the
89
+ * naming stays consistent across every tool (Brasil/Região/UF/Município ...).
90
+ */
91
+ export declare const TERRITORIAL_LEVEL_LABELS: Record<string, string>;
92
+ /** All SIDRA territorial level codes, in canonical order. */
93
+ export declare const ALL_TERRITORIAL_LEVELS: string[];
94
+ /**
95
+ * Builds the standardized `nivel_territorial` field description from the level
96
+ * codes a tool supports, e.g. ["1","2","3","6"] ->
97
+ * "Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município".
98
+ */
99
+ export declare function territorialLevelHint(codes: string[]): string;
100
+ /**
101
+ * Builds a "código (Label)" list for error suggestions, e.g.
102
+ * "1 (Brasil), 2 (Região), 3 (UF), 6 (Município)".
103
+ */
104
+ export declare function territorialLevelList(codes: string[]): string;
78
105
  export declare const BIOME_CODES: Record<string, number>;
79
106
  export declare const BIOME_NAMES: Record<number, string>;
80
107
  /**
@@ -137,6 +164,31 @@ export declare function getUfCode(uf: string): number | undefined;
137
164
  * Get UF abbreviation from code
138
165
  */
139
166
  export declare function getUfSigla(code: number): string | undefined;
167
+ /**
168
+ * Normalizes free text for matching: lowercased, trimmed, internal whitespace
169
+ * collapsed, and accents stripped (e.g. "São Paulo " -> "sao paulo").
170
+ */
171
+ export declare function normalizeText(text: string): string;
172
+ /**
173
+ * Normalized state name -> sigla (e.g. "sao paulo" -> "SP").
174
+ */
175
+ export declare const UF_NAME_TO_SIGLA: Record<string, string>;
176
+ export interface ResolvedUf {
177
+ code: number;
178
+ sigla: string;
179
+ nome: string;
180
+ }
181
+ /**
182
+ * Resolves a state (UF) from any of its three forms, interchangeably:
183
+ * - sigla: "SP" / "sp"
184
+ * - nome: "São Paulo" / "sao paulo" (accent- and case-insensitive)
185
+ * - código: "35" / 35
186
+ *
187
+ * Single source of truth for UF input resolution — tools should accept all
188
+ * three forms by routing user input through this helper. Returns null if the
189
+ * input matches none of them.
190
+ */
191
+ export declare function resolveUf(input: string | number): ResolvedUf | null;
140
192
  /**
141
193
  * Get region code from state abbreviation
142
194
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;CAqBhB,CAAC;AAMX;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiC3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4B3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAMrD,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;CAoBrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoB1D,CAAC;AAMF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO9C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO9C,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAmBf,CAAC;AAMX;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC;AAMX,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAgBX,CAAC;AAMX;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,WAAW,GAAG,UAAU,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAoBA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -3,6 +3,23 @@
3
3
  * Contains all constants, mappings, and endpoint definitions
4
4
  */
5
5
  // ============================================================================
6
+ // Request timeout
7
+ // ============================================================================
8
+ /** Default per-request timeout in milliseconds (upstream APIs are usually fast). */
9
+ export const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
10
+ /**
11
+ * Effective request timeout, overridable at startup via the
12
+ * `IBGE_MCP_TIMEOUT_MS` environment variable. Invalid or non-positive values
13
+ * fall back to the default. Used as the default `timeoutMs` for every fetch.
14
+ */
15
+ export const REQUEST_TIMEOUT_MS = (() => {
16
+ const raw = process.env.IBGE_MCP_TIMEOUT_MS;
17
+ if (!raw)
18
+ return DEFAULT_REQUEST_TIMEOUT_MS;
19
+ const parsed = Number(raw);
20
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_REQUEST_TIMEOUT_MS;
21
+ })();
22
+ // ============================================================================
6
23
  // API Endpoints
7
24
  // ============================================================================
8
25
  export const API_ENDPOINTS = {
@@ -185,6 +202,50 @@ export const TERRITORIAL_LEVEL_NAMES = {
185
202
  "127": "Amazônia Legal",
186
203
  "128": "Semiárido",
187
204
  };
205
+ /**
206
+ * Short, agent-facing label for each territorial level code. Used to build the
207
+ * standardized `nivel_territorial` descriptions and error suggestions so the
208
+ * naming stays consistent across every tool (Brasil/Região/UF/Município ...).
209
+ */
210
+ export const TERRITORIAL_LEVEL_LABELS = {
211
+ "1": "Brasil",
212
+ "2": "Região",
213
+ "3": "UF",
214
+ "6": "Município",
215
+ "7": "Região Metropolitana",
216
+ "8": "Mesorregião",
217
+ "9": "Microrregião",
218
+ "10": "Distrito",
219
+ "11": "Subdistrito",
220
+ "13": "RM/RIDE",
221
+ "14": "RIDE",
222
+ "15": "Aglomeração Urbana",
223
+ "17": "Região Geográfica Imediata",
224
+ "18": "Região Geográfica Intermediária",
225
+ "105": "Macrorregião de Saúde",
226
+ "106": "Região de Saúde",
227
+ "114": "Aglomerado Subnormal",
228
+ "127": "Amazônia Legal",
229
+ "128": "Semiárido",
230
+ };
231
+ /** All SIDRA territorial level codes, in canonical order. */
232
+ export const ALL_TERRITORIAL_LEVELS = Object.keys(TERRITORIAL_LEVEL_LABELS);
233
+ /**
234
+ * Builds the standardized `nivel_territorial` field description from the level
235
+ * codes a tool supports, e.g. ["1","2","3","6"] ->
236
+ * "Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município".
237
+ */
238
+ export function territorialLevelHint(codes) {
239
+ const list = codes.map((c) => `${c}=${TERRITORIAL_LEVEL_LABELS[c] ?? c}`).join(", ");
240
+ return `Nível territorial (código N): ${list}`;
241
+ }
242
+ /**
243
+ * Builds a "código (Label)" list for error suggestions, e.g.
244
+ * "1 (Brasil), 2 (Região), 3 (UF), 6 (Município)".
245
+ */
246
+ export function territorialLevelList(codes) {
247
+ return codes.map((c) => `${c} (${TERRITORIAL_LEVEL_LABELS[c] ?? c})`).join(", ");
248
+ }
188
249
  // ============================================================================
189
250
  // Biome Codes
190
251
  // ============================================================================
@@ -287,6 +348,53 @@ export function getUfCode(uf) {
287
348
  export function getUfSigla(code) {
288
349
  return UF_SIGLAS[code];
289
350
  }
351
+ /**
352
+ * Normalizes free text for matching: lowercased, trimmed, internal whitespace
353
+ * collapsed, and accents stripped (e.g. "São Paulo " -> "sao paulo").
354
+ */
355
+ export function normalizeText(text) {
356
+ return text
357
+ .toLowerCase()
358
+ .trim()
359
+ .replace(/\s+/g, " ")
360
+ .normalize("NFD")
361
+ .replace(/[\u0300-\u036f]/g, "");
362
+ }
363
+ /**
364
+ * Normalized state name -> sigla (e.g. "sao paulo" -> "SP").
365
+ */
366
+ export const UF_NAME_TO_SIGLA = Object.fromEntries(Object.entries(UF_NAMES).map(([sigla, nome]) => [normalizeText(nome), sigla]));
367
+ /**
368
+ * Resolves a state (UF) from any of its three forms, interchangeably:
369
+ * - sigla: "SP" / "sp"
370
+ * - nome: "São Paulo" / "sao paulo" (accent- and case-insensitive)
371
+ * - código: "35" / 35
372
+ *
373
+ * Single source of truth for UF input resolution — tools should accept all
374
+ * three forms by routing user input through this helper. Returns null if the
375
+ * input matches none of them.
376
+ */
377
+ export function resolveUf(input) {
378
+ const raw = String(input).trim();
379
+ if (!raw)
380
+ return null;
381
+ let sigla;
382
+ if (/^\d+$/.test(raw)) {
383
+ // Numeric IBGE code (e.g. "35")
384
+ sigla = UF_SIGLAS[parseInt(raw, 10)];
385
+ }
386
+ else if (raw.length === 2 && raw.toUpperCase() in UF_CODES) {
387
+ // Sigla (e.g. "SP")
388
+ sigla = raw.toUpperCase();
389
+ }
390
+ else {
391
+ // State name (e.g. "São Paulo")
392
+ sigla = UF_NAME_TO_SIGLA[normalizeText(raw)];
393
+ }
394
+ if (!sigla)
395
+ return null;
396
+ return { code: UF_CODES[sigla], sigla, nome: UF_NAMES[sigla] };
397
+ }
290
398
  /**
291
399
  * Get region code from state abbreviation
292
400
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -28,13 +28,14 @@ export declare const ValidationErrors: {
28
28
  invalidCode: (code: string, tool: string, validFormats: string) => string;
29
29
  notFound: (item: string, tool: string, searchTool?: string) => string;
30
30
  emptyResult: (tool: string, suggestion?: string) => string;
31
+ invalidDate: (value: string, tool: string) => string;
31
32
  invalidPeriod: (period: string, tool: string, validPeriods?: string) => string;
32
- invalidTerritory: (level: string, tool: string) => string;
33
+ invalidTerritory: (level: string, tool: string, validLevels?: string) => string;
33
34
  };
34
35
  /**
35
36
  * Timeout error handler
36
37
  */
37
- export declare function timeoutError(tool: string, timeoutMs: number): string;
38
+ export declare function timeoutError(tool: string, timeoutMs: number, relatedTools?: string[]): string;
38
39
  /**
39
40
  * Network error handler
40
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAqBpF,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAkCpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,CAYR;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;wBACP,MAAM,QAAQ,MAAM,gBAAgB,MAAM,KAAG,MAAM;qBAOtD,MAAM,QAAQ,MAAM,eAAe,MAAM,KAAG,MAAM;wBAS/C,MAAM,eAAe,MAAM,KAAG,MAAM;4BAOhC,MAAM,QAAQ,MAAM,iBAAiB,MAAM,KAAG,MAAM;8BASlD,MAAM,QAAQ,MAAM,KAAG,MAAM;CAOxD,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAqBpF,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAkCpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,MAAM,CAiBR;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;wBACP,MAAM,QAAQ,MAAM,gBAAgB,MAAM,KAAG,MAAM;qBAOtD,MAAM,QAAQ,MAAM,eAAe,MAAM,KAAG,MAAM;wBAS/C,MAAM,eAAe,MAAM,KAAG,MAAM;yBAOnC,MAAM,QAAQ,MAAM,KAAG,MAAM;4BAQ1B,MAAM,QAAQ,MAAM,iBAAiB,MAAM,KAAG,MAAM;8BASlD,MAAM,QAAQ,MAAM,gBAAgB,MAAM,KAAG,MAAM;CAU9E,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAQ7F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD"}
package/dist/errors.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Standardized error handling for IBGE MCP Server
3
3
  */
4
+ import { TimeoutError } from "./retry.js";
4
5
  // Common IBGE API error codes and their meanings
5
6
  export const IBGE_ERROR_CODES = {
6
7
  400: {
@@ -59,6 +60,10 @@ export function formatError(error) {
59
60
  * Parse HTTP error and return formatted message
60
61
  */
61
62
  export function parseHttpError(error, tool, params, relatedTools) {
63
+ // A timed-out request gets a dedicated, actionable message.
64
+ if (error instanceof TimeoutError) {
65
+ return timeoutError(tool, error.timeoutMs, relatedTools);
66
+ }
62
67
  // Extract HTTP code from error message if present
63
68
  const httpMatch = error.message.match(/HTTP (\d+)/);
64
69
  const code = httpMatch ? parseInt(httpMatch[1]) : undefined;
@@ -91,6 +96,12 @@ export const ValidationErrors = {
91
96
  tool,
92
97
  suggestion: suggestion || "Tente ajustar os parâmetros de busca.",
93
98
  }),
99
+ invalidDate: (value, tool) => formatError({
100
+ message: `Data inválida: "${value}"`,
101
+ tool,
102
+ suggestion: `Use o formato brasileiro DD/MM/AAAA (ex: 31/12/2024).
103
+ Também são aceitos DD-MM-AAAA e o formato ISO AAAA-MM-DD.`,
104
+ }),
94
105
  invalidPeriod: (period, tool, validPeriods) => formatError({
95
106
  message: `Período inválido: "${period}"`,
96
107
  tool,
@@ -98,22 +109,26 @@ export const ValidationErrors = {
98
109
  ? `Períodos válidos: ${validPeriods}`
99
110
  : "Use 'last' para o último período disponível ou especifique um ano.",
100
111
  }),
101
- invalidTerritory: (level, tool) => formatError({
112
+ invalidTerritory: (level, tool, validLevels) => formatError({
102
113
  message: `Nível territorial inválido: "${level}"`,
103
114
  tool,
104
- suggestion: `Níveis válidos: 1 (Brasil), 2 (Região), 3 (UF), 6 (Município), etc.
115
+ suggestion: validLevels
116
+ ? `Níveis válidos: ${validLevels}.
117
+ Use ibge_sidra_metadados para ver os níveis disponíveis para cada tabela.`
118
+ : `Níveis válidos: 1 (Brasil), 2 (Região), 3 (UF), 6 (Município), etc.
105
119
  Use ibge_sidra_metadados para ver os níveis disponíveis para cada tabela.`,
106
120
  }),
107
121
  };
108
122
  /**
109
123
  * Timeout error handler
110
124
  */
111
- export function timeoutError(tool, timeoutMs) {
125
+ export function timeoutError(tool, timeoutMs, relatedTools) {
112
126
  return formatError({
113
127
  message: "Tempo de resposta excedido",
114
128
  tool,
115
129
  suggestion: `A requisição demorou mais de ${timeoutMs / 1000} segundos.
116
130
  Tente novamente ou reduza o escopo da consulta (menos localidades ou períodos).`,
131
+ relatedTools,
117
132
  });
118
133
  }
119
134
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAA4D;IACvF,GAAG,EAAE;QACH,OAAO,EAAE,sBAAsB;QAC/B,UAAU,EAAE,sDAAsD;KACnE;IACD,GAAG,EAAE;QACH,OAAO,EAAE,wBAAwB;QACjC,UAAU,EAAE,gDAAgD;KAC7D;IACD,GAAG,EAAE;QACH,OAAO,EAAE,+BAA+B;QACxC,UAAU,EAAE,oCAAoC;KACjD;IACD,GAAG,EAAE;QACH,OAAO,EAAE,2CAA2C;QACpD,UAAU,EAAE,oCAAoC;KACjD;IACD,GAAG,EAAE;QACH,OAAO,EAAE,4BAA4B;QACrC,UAAU,EAAE,6BAA6B;KAC1C;CACF,CAAC;AAWF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAgB;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnE,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,IAAI,MAAM,CAAC;IAE1C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,IAAI,oBAAoB,KAAK,CAAC,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,MAAM,IAAI,iBAAiB,SAAS,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,MAAM,CAAC;IAErE,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,+BAA+B,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,SAAS,EAAE,UAAU,CAAC;IAC7D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,UAAU,MAAM,CAAC;IAChD,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,kCAAkC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAY,EACZ,IAAY,EACZ,MAAgC,EAChC,YAAuB;IAEvB,kDAAkD;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5D,OAAO,WAAW,CAAC;QACjB,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI;QACJ,MAAM;QACN,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,CAAC,IAAY,EAAE,IAAY,EAAE,YAAoB,EAAU,EAAE,CACxE,WAAW,CAAC;QACV,OAAO,EAAE,qBAAqB,IAAI,GAAG;QACrC,IAAI;QACJ,UAAU,EAAE,sBAAsB,YAAY,EAAE;KACjD,CAAC;IAEJ,QAAQ,EAAE,CAAC,IAAY,EAAE,IAAY,EAAE,UAAmB,EAAU,EAAE,CACpE,WAAW,CAAC;QACV,OAAO,EAAE,GAAG,IAAI,iBAAiB;QACjC,IAAI;QACJ,UAAU,EAAE,UAAU;YACpB,CAAC,CAAC,OAAO,UAAU,8BAA8B;YACjD,CAAC,CAAC,4CAA4C;KACjD,CAAC;IAEJ,WAAW,EAAE,CAAC,IAAY,EAAE,UAAmB,EAAU,EAAE,CACzD,WAAW,CAAC;QACV,OAAO,EAAE,wBAAwB;QACjC,IAAI;QACJ,UAAU,EAAE,UAAU,IAAI,uCAAuC;KAClE,CAAC;IAEJ,aAAa,EAAE,CAAC,MAAc,EAAE,IAAY,EAAE,YAAqB,EAAU,EAAE,CAC7E,WAAW,CAAC;QACV,OAAO,EAAE,sBAAsB,MAAM,GAAG;QACxC,IAAI;QACJ,UAAU,EAAE,YAAY;YACtB,CAAC,CAAC,qBAAqB,YAAY,EAAE;YACrC,CAAC,CAAC,oEAAoE;KACzE,CAAC;IAEJ,gBAAgB,EAAE,CAAC,KAAa,EAAE,IAAY,EAAU,EAAE,CACxD,WAAW,CAAC;QACV,OAAO,EAAE,gCAAgC,KAAK,GAAG;QACjD,IAAI;QACJ,UAAU,EAAE;0EACwD;KACrE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,SAAiB;IAC1D,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,4BAA4B;QACrC,IAAI;QACJ,UAAU,EAAE,gCAAgC,SAAS,GAAG,IAAI;gFACgB;KAC7E,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC;QACjB,OAAO,EAAE,iBAAiB;QAC1B,IAAI;QACJ,UAAU,EAAE;wDACwC;KACrD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}