ibge-br-mcp 4.2.0 → 5.0.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.
- package/README.md +36 -6
- package/README.pt-BR.md +38 -8
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +4 -2
- package/dist/cache.js.map +1 -1
- package/dist/call-shape.d.ts +68 -0
- package/dist/call-shape.d.ts.map +1 -0
- package/dist/call-shape.js +138 -0
- package/dist/call-shape.js.map +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +2 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -1
- package/dist/errors.js.map +1 -1
- package/dist/provenance.d.ts +4 -0
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js +4 -0
- package/dist/provenance.js.map +1 -1
- package/dist/retry.d.ts +35 -0
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +69 -1
- package/dist/retry.js.map +1 -1
- package/dist/server.d.ts +33 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +92 -53
- package/dist/server.js.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +119 -5
- package/dist/stats.js.map +1 -1
- package/dist/structured.d.ts +16 -0
- package/dist/structured.d.ts.map +1 -1
- package/dist/structured.js +28 -0
- package/dist/structured.js.map +1 -1
- package/dist/tools/censo.d.ts.map +1 -1
- package/dist/tools/censo.js +3 -9
- package/dist/tools/censo.js.map +1 -1
- package/dist/tools/datasaude.d.ts.map +1 -1
- package/dist/tools/datasaude.js +3 -10
- package/dist/tools/datasaude.js.map +1 -1
- package/dist/tools/deep-research.d.ts +119 -0
- package/dist/tools/deep-research.d.ts.map +1 -0
- package/dist/tools/deep-research.js +308 -0
- package/dist/tools/deep-research.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/indicadores.d.ts.map +1 -1
- package/dist/tools/indicadores.js +3 -9
- package/dist/tools/indicadores.js.map +1 -1
- package/dist/tools/malhas-tema.d.ts +65 -20
- package/dist/tools/malhas-tema.d.ts.map +1 -1
- package/dist/tools/malhas-tema.js +275 -243
- package/dist/tools/malhas-tema.js.map +1 -1
- package/dist/tools/malhas.d.ts +33 -1
- package/dist/tools/malhas.d.ts.map +1 -1
- package/dist/tools/malhas.js +144 -55
- package/dist/tools/malhas.js.map +1 -1
- package/dist/tools/sidra.d.ts.map +1 -1
- package/dist/tools/sidra.js +96 -15
- package/dist/tools/sidra.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ ranking all 5,570 municipalities in a single call.
|
|
|
40
40
|
|
|
41
41
|
## Features
|
|
42
42
|
|
|
43
|
-
- **
|
|
43
|
+
- **23 tools** covering all major IBGE data domains — 21 `ibge_*` data tools plus `search`/`fetch` for ChatGPT Deep Research
|
|
44
44
|
- **Provenance block on every response** — source, canonical URL, reference
|
|
45
45
|
period, real extraction timestamp, ready-to-use citation, and legal regime
|
|
46
46
|
(see [Data provenance](#data-provenance))
|
|
@@ -52,7 +52,9 @@ ranking all 5,570 municipalities in a single call.
|
|
|
52
52
|
- **Standardized error handling** with helpful suggestions
|
|
53
53
|
- **Full TypeScript support** with strict typing
|
|
54
54
|
|
|
55
|
-
📖 **Article (in Portuguese):** [Como achar a tabela certa no SIDRA — e como saber que é a certa](docs/artigo-sidra-tabela-certa.pt-BR.md) — finding the right SIDRA table, the metadata that settles it, a full worked example on 2022 Census data, and the four traps that cost the most.
|
|
55
|
+
📖 **Article (in Portuguese):** [Como achar a tabela certa no SIDRA — e como saber que é a certa](docs/artigo-sidra-tabela-certa.pt-BR.md) — finding the right SIDRA table, the metadata that settles it, a full worked example on 2022 Census data, and the four traps that cost the most. Also published on the site, in Portuguese and English: [sidneybissoli.com](https://sidneybissoli.com/en/blog/posts/sidra-tabela-certa/).
|
|
56
|
+
|
|
57
|
+
🔌 **Tutorial:** [Querying SIDRA through MCP in Claude and ChatGPT](https://sidneybissoli.com/en/blog/posts/sidra-via-mcp/) — how to connect this server in claude.ai, Claude Desktop, Claude Code, ChatGPT (developer mode and Deep Research), Cursor, VS Code and Gemini CLI, then one real query end to end with the provenance block it returns. [Em português](https://sidneybissoli.com/blog/posts/sidra-via-mcp/).
|
|
56
58
|
|
|
57
59
|
## Data provenance
|
|
58
60
|
|
|
@@ -129,7 +131,7 @@ aggregates are computed server-side from the raw IBGE values.
|
|
|
129
131
|
| Tool | Description |
|
|
130
132
|
|:-----|:------------|
|
|
131
133
|
| `ibge_malhas` | Geographic meshes (GeoJSON, TopoJSON, SVG) |
|
|
132
|
-
| `ibge_malhas_tema` |
|
|
134
|
+
| `ibge_malhas_tema` | What a thematic recorte contains (biomes, Legal Amazon, semi-arid, coastal, border strip, metro regions, RIDEs) + the URL to download its geometry |
|
|
133
135
|
|
|
134
136
|
### Health
|
|
135
137
|
| Tool | Description |
|
|
@@ -142,9 +144,17 @@ aggregates are computed server-side from the raw IBGE values.
|
|
|
142
144
|
| `ibge_noticias` | IBGE news and press releases |
|
|
143
145
|
| `ibge_calendario` | IBGE release and collection calendar |
|
|
144
146
|
|
|
147
|
+
### ChatGPT Deep Research
|
|
148
|
+
| Tool | Description |
|
|
149
|
+
|:-----|:------------|
|
|
150
|
+
| `search` | Searches the IBGE catalog (SIDRA tables, municipalities, known indicators) — OpenAI Deep Research contract |
|
|
151
|
+
| `fetch` | Returns one catalog document (table metadata, municipality hierarchy + population, indicator series) with its public URL for citation |
|
|
152
|
+
|
|
153
|
+
The two are the only tools without the `ibge_` prefix: their names are fixed by the OpenAI contract. For data queries keep using the `ibge_*` tools.
|
|
154
|
+
|
|
145
155
|
## Which tool should I use?
|
|
146
156
|
|
|
147
|
-
With
|
|
157
|
+
With 23 tools, several can touch the same topic. Quick guide for the common overlaps:
|
|
148
158
|
|
|
149
159
|
### Population & demographics
|
|
150
160
|
|
|
@@ -182,13 +192,13 @@ Discover → inspect → query: `ibge_pesquisas` / `ibge_sidra_tabelas` (find a
|
|
|
182
192
|
| You want… | Use |
|
|
183
193
|
|:----------|:----|
|
|
184
194
|
| Administrative outlines (Brazil/region/state/municipality) | `ibge_malhas` |
|
|
185
|
-
| Thematic areas (biomes, Legal Amazon, semi-arid, metro regions) | `ibge_malhas_tema` |
|
|
195
|
+
| Thematic areas (biomes, Legal Amazon, semi-arid, metro regions) | `ibge_malhas_tema` (IBGE Geosserviços WFS — the Malhas API does not publish these) |
|
|
186
196
|
|
|
187
197
|
## Installation
|
|
188
198
|
|
|
189
199
|
### Prerequisites
|
|
190
200
|
|
|
191
|
-
- Node.js
|
|
201
|
+
- Node.js 22.x or higher (`engines.node`)
|
|
192
202
|
- npm or yarn
|
|
193
203
|
|
|
194
204
|
### From npm (recommended)
|
|
@@ -213,6 +223,16 @@ npm run build
|
|
|
213
223
|
|
|
214
224
|
## Configuration
|
|
215
225
|
|
|
226
|
+
### Remote endpoint (nothing to install)
|
|
227
|
+
|
|
228
|
+
The server is also hosted, with the same tools, over Streamable HTTP and without a key:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
https://ibge.sidneybissoli.com/mcp
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
It works with any client that accepts a remote MCP server — a custom connector in claude.ai (Settings → Connectors → Add custom connector), `claude mcp add --transport http ibge https://ibge.sidneybissoli.com/mcp` in Claude Code, an app in ChatGPT, the `mcp.json` of Cursor and VS Code. The step-by-step for each client is in the [tutorial](https://sidneybissoli.com/en/blog/posts/sidra-via-mcp/). The sections below cover the local form, via `npx`.
|
|
235
|
+
|
|
216
236
|
### Claude Desktop
|
|
217
237
|
|
|
218
238
|
Add to your Claude Desktop configuration file (`claude_desktop_config.json`):
|
|
@@ -254,6 +274,16 @@ Or if installed from source:
|
|
|
254
274
|
}
|
|
255
275
|
```
|
|
256
276
|
|
|
277
|
+
### ChatGPT (Deep Research)
|
|
278
|
+
|
|
279
|
+
ChatGPT deep research (and company knowledge, and research workflows over the Responses API) only uses an MCP server that exposes exactly `search` and `fetch` — this server does, on top of the `ibge_*` tools. Point the connector at the hosted endpoint, no key required:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
https://ibge.sidneybissoli.com/mcp
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
`search` ranks the query against SIDRA tables, municipalities and the known indicators and returns `{ id, title, url }`; `fetch` returns the document as readable Markdown with the canonical public URL (sidra.ibge.gov.br or cidades.ibge.gov.br), which is what ChatGPT cites. Both carry the same provenance block as every other tool. In ChatGPT's developer mode (Settings → Security and login → Developer mode) any tool is callable — the `ibge_*` tools remain the ones to use for data.
|
|
286
|
+
|
|
257
287
|
## Tool Usage Examples
|
|
258
288
|
|
|
259
289
|
### ibge_estados
|
package/README.pt-BR.md
CHANGED
|
@@ -40,7 +40,7 @@ entre elas ranquear os 5.570 municípios numa chamada só.
|
|
|
40
40
|
|
|
41
41
|
## Recursos
|
|
42
42
|
|
|
43
|
-
- **
|
|
43
|
+
- **23 ferramentas** cobrindo todos os principais domínios de dados do IBGE — 21 `ibge_*` de dados mais `search`/`fetch` para o Deep Research do ChatGPT
|
|
44
44
|
- **Resources de referência & prompts de análise** (catálogos MCP + templates prontos)
|
|
45
45
|
- **565 testes automatizados** — 88% de cobertura geral, 92% nas tools
|
|
46
46
|
- **Cache automático** com TTL configurável para performance otimizada
|
|
@@ -49,7 +49,9 @@ entre elas ranquear os 5.570 municípios numa chamada só.
|
|
|
49
49
|
- **Tratamento de erros padronizado** com sugestões úteis
|
|
50
50
|
- **Suporte completo a TypeScript** com tipagem estrita
|
|
51
51
|
|
|
52
|
-
📖 **Artigo:** [Como achar a tabela certa no SIDRA — e como saber que é a certa](docs/artigo-sidra-tabela-certa.pt-BR.md) — os três passos da busca, os metadados que decidem, um exemplo completo com dado de 2022 e as quatro armadilhas que mais custam caro.
|
|
52
|
+
📖 **Artigo:** [Como achar a tabela certa no SIDRA — e como saber que é a certa](docs/artigo-sidra-tabela-certa.pt-BR.md) — os três passos da busca, os metadados que decidem, um exemplo completo com dado de 2022 e as quatro armadilhas que mais custam caro. Também publicado no site: [sidneybissoli.com](https://sidneybissoli.com/blog/posts/sidra-tabela-certa/).
|
|
53
|
+
|
|
54
|
+
🔌 **Tutorial:** [Consultando o SIDRA por MCP no Claude e no ChatGPT](https://sidneybissoli.com/blog/posts/sidra-via-mcp/) — como conectar este servidor no claude.ai, Claude Desktop, Claude Code, ChatGPT (modo desenvolvedor e Deep Research), Cursor, VS Code e Gemini CLI, e uma consulta real de ponta a ponta com o bloco de procedência que ele devolve. [In English](https://sidneybissoli.com/en/blog/posts/sidra-via-mcp/).
|
|
53
55
|
|
|
54
56
|
## Procedência dos dados
|
|
55
57
|
|
|
@@ -126,7 +128,7 @@ calculados no servidor a partir dos valores brutos do IBGE.
|
|
|
126
128
|
| Ferramenta | Descrição |
|
|
127
129
|
|:-----------|:----------|
|
|
128
130
|
| `ibge_malhas` | Malhas geográficas (GeoJSON, TopoJSON, SVG) |
|
|
129
|
-
| `ibge_malhas_tema` |
|
|
131
|
+
| `ibge_malhas_tema` | O que um recorte temático contém (biomas, Amazônia Legal, semiárido, zona costeira, faixa de fronteira, regiões metropolitanas, RIDEs) + a URL para baixar a geometria |
|
|
130
132
|
|
|
131
133
|
### Saúde
|
|
132
134
|
| Ferramenta | Descrição |
|
|
@@ -139,9 +141,17 @@ calculados no servidor a partir dos valores brutos do IBGE.
|
|
|
139
141
|
| `ibge_noticias` | Notícias e releases do IBGE |
|
|
140
142
|
| `ibge_calendario` | Calendário de divulgações e coletas do IBGE |
|
|
141
143
|
|
|
144
|
+
### Deep Research do ChatGPT
|
|
145
|
+
| Ferramenta | Descrição |
|
|
146
|
+
|:-----------|:----------|
|
|
147
|
+
| `search` | Busca no catálogo do IBGE (tabelas SIDRA, municípios, indicadores conhecidos) — contrato Deep Research da OpenAI |
|
|
148
|
+
| `fetch` | Devolve um documento do catálogo (metadados da tabela, hierarquia + população do município, série do indicador) com a URL pública para citação |
|
|
149
|
+
|
|
150
|
+
As duas são as únicas ferramentas sem o prefixo `ibge_`: os nomes são fixados pelo contrato da OpenAI. Para consultar dados, continue usando as `ibge_*`.
|
|
151
|
+
|
|
142
152
|
## Qual ferramenta usar?
|
|
143
153
|
|
|
144
|
-
Com
|
|
154
|
+
Com 23 ferramentas, várias podem tocar no mesmo assunto. Guia rápido para as sobreposições comuns:
|
|
145
155
|
|
|
146
156
|
### População e demografia
|
|
147
157
|
|
|
@@ -179,13 +189,13 @@ Descobrir → inspecionar → consultar: `ibge_pesquisas` / `ibge_sidra_tabelas`
|
|
|
179
189
|
| Você quer… | Use |
|
|
180
190
|
|:-----------|:----|
|
|
181
191
|
| Contornos administrativos (Brasil/região/UF/município) | `ibge_malhas` |
|
|
182
|
-
| Áreas temáticas (biomas, Amazônia Legal, semiárido, regiões metropolitanas) | `ibge_malhas_tema` |
|
|
192
|
+
| Áreas temáticas (biomas, Amazônia Legal, semiárido, regiões metropolitanas) | `ibge_malhas_tema` (WFS do IBGE Geosserviços — a API de Malhas não publica esses recortes) |
|
|
183
193
|
|
|
184
194
|
## Instalação
|
|
185
195
|
|
|
186
196
|
### Pré-requisitos
|
|
187
197
|
|
|
188
|
-
- Node.js
|
|
198
|
+
- Node.js 22.x ou superior (`engines.node`)
|
|
189
199
|
- npm ou yarn
|
|
190
200
|
|
|
191
201
|
### Via npm (recomendado)
|
|
@@ -210,6 +220,16 @@ npm run build
|
|
|
210
220
|
|
|
211
221
|
## Configuração
|
|
212
222
|
|
|
223
|
+
### Endpoint remoto (sem instalar)
|
|
224
|
+
|
|
225
|
+
O servidor também está hospedado, com as mesmas ferramentas, em Streamable HTTP e sem chave:
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
https://ibge.sidneybissoli.com/mcp
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Serve para qualquer cliente que aceite servidor MCP remoto — conector personalizado no claude.ai (Configurações → Conectores → Adicionar conector personalizado), `claude mcp add --transport http ibge https://ibge.sidneybissoli.com/mcp` no Claude Code, app no ChatGPT, `mcp.json` do Cursor e do VS Code. O passo a passo de cada cliente está no [tutorial](https://sidneybissoli.com/blog/posts/sidra-via-mcp/). As seções abaixo cobrem a forma local, via `npx`.
|
|
232
|
+
|
|
213
233
|
### Claude Desktop
|
|
214
234
|
|
|
215
235
|
Adicione ao seu arquivo de configuração do Claude Desktop (`claude_desktop_config.json`):
|
|
@@ -219,7 +239,7 @@ Adicione ao seu arquivo de configuração do Claude Desktop (`claude_desktop_con
|
|
|
219
239
|
"mcpServers": {
|
|
220
240
|
"ibge-br-mcp": {
|
|
221
241
|
"command": "npx",
|
|
222
|
-
"args": ["ibge-br-mcp"]
|
|
242
|
+
"args": ["-y", "ibge-br-mcp"]
|
|
223
243
|
}
|
|
224
244
|
}
|
|
225
245
|
}
|
|
@@ -245,12 +265,22 @@ Ou se instalado a partir do código-fonte:
|
|
|
245
265
|
"mcpServers": {
|
|
246
266
|
"ibge-br-mcp": {
|
|
247
267
|
"command": "npx",
|
|
248
|
-
"args": ["ibge-br-mcp"]
|
|
268
|
+
"args": ["-y", "ibge-br-mcp"]
|
|
249
269
|
}
|
|
250
270
|
}
|
|
251
271
|
}
|
|
252
272
|
```
|
|
253
273
|
|
|
274
|
+
### ChatGPT (Deep Research)
|
|
275
|
+
|
|
276
|
+
O Deep Research do ChatGPT (e o Company Knowledge, e os workflows de pesquisa da API Responses) só usa um servidor MCP que exponha exatamente `search` e `fetch` — este servidor expõe as duas, além das `ibge_*`. Aponte o conector para o endpoint hospedado, sem chave:
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
https://ibge.sidneybissoli.com/mcp
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
`search` ranqueia a consulta contra tabelas SIDRA, municípios e indicadores conhecidos e devolve `{ id, title, url }`; `fetch` devolve o documento em Markdown legível com a URL pública canônica (sidra.ibge.gov.br ou cidades.ibge.gov.br), que é o que o ChatGPT cita. As duas carregam o mesmo bloco de proveniência das demais ferramentas. No modo desenvolvedor do ChatGPT (Configurações → Segurança e login → Modo desenvolvedor) qualquer ferramenta pode ser chamada — para dados, as `ibge_*` continuam sendo as certas.
|
|
283
|
+
|
|
254
284
|
## Exemplos de Uso das Ferramentas
|
|
255
285
|
|
|
256
286
|
### ibge_estados
|
package/dist/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAO9F;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAA6E;IAC9F,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,iBAAiB,GAAE,MAAW,EAEzC;IAED;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAU5B;IAED;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAMtD;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExB;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGxB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED,mFAAmF;IACnF,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAElD;IAED;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAM3B;IAED,0EAA0E;IAC1E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAIlC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAOd;IAED;;OAEG;IACH,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAMxC;CACF;AAGD,eAAO,MAAM,KAAK,cAAuB,CAAC;AAG1C,eAAO,MAAM,SAAS;aACpB,MAAM;aACN,MAAM,EAAE,EAAE;aACV,KAAK,EAAE,EAAE;aACT,QAAQ,EAAE,CAAC;CACH,CAAC;AAEX;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC7D,MAAM,CAUR;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEnE"}
|
package/dist/cache.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Simple in-memory cache with TTL support for IBGE API requests
|
|
3
3
|
*/
|
|
4
|
-
import { fetchWithRetry } from "./retry.js";
|
|
4
|
+
import { fetchWithRetry, motivoUpstream, UpstreamError } from "./retry.js";
|
|
5
5
|
class RequestCache {
|
|
6
6
|
cache = new Map();
|
|
7
7
|
fetchMeta = new Map();
|
|
@@ -132,7 +132,9 @@ export async function cachedFetch(url, cacheKeyStr, ttlMinutes, retryOptions) {
|
|
|
132
132
|
// Fetch from API with retry support
|
|
133
133
|
const response = await fetchWithRetry(url, undefined, retryOptions);
|
|
134
134
|
if (!response.ok) {
|
|
135
|
-
|
|
135
|
+
// O corpo vai junto: é nele que a fonte diz QUAL parâmetro recusou e por
|
|
136
|
+
// quê, e sem ele o chamador só pode tentar outra combinação às cegas.
|
|
137
|
+
throw new UpstreamError(response.status, response.statusText, await motivoUpstream(response));
|
|
136
138
|
}
|
|
137
139
|
const data = (await response.json());
|
|
138
140
|
// Store in cache
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAqB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A FORMA da chamada, nunca o conteúdo dela.
|
|
3
|
+
*
|
|
4
|
+
* Por que existe. Em 10/09/2026 o painel do portfólio passou a medir erro por
|
|
5
|
+
* chamada e apontou cinco ferramentas quebradas, uma delas aqui:
|
|
6
|
+
* `ibge_sidra`, com 47 erros em 122 chamadas — a porta principal do servidor. Diagnosticar custou vinte
|
|
7
|
+
* minutos de chamadas manuais porque a telemetria dizia QUE falhou e não DIZIA
|
|
8
|
+
* por quê. No senado, onde o mesmo campo foi ligado primeiro, uma linha
|
|
9
|
+
* respondeu o que a sonda levou meia hora para achar. Atenção a um limite que
|
|
10
|
+
* vale aqui também: erro de validação de esquema NÃO chega a esta camada — o
|
|
11
|
+
* SDK o responde antes do handler, e a chamada não é contada nem como chamada
|
|
12
|
+
* nem como erro.
|
|
13
|
+
*
|
|
14
|
+
* Por que não gravar os argumentos. O dado que este servidor serve é público; a
|
|
15
|
+
* PERGUNTA não é: o registro já guarda país e organização de rede, e parte dos
|
|
16
|
+
* parâmetros é texto livre (`nome`, `busca`), onde cabe qualquer coisa que a
|
|
17
|
+
* pessoa digitou. E ligar isso mudaria o que o serviço coleta sem
|
|
18
|
+
* mudar o que a página pública diz que ele coleta.
|
|
19
|
+
*
|
|
20
|
+
* O meio-termo: NOMES de parâmetro (que são o esquema publicado, não dado de
|
|
21
|
+
* ninguém) e a CLASSE do erro (vocabulário fechado, derivado da nossa própria
|
|
22
|
+
* mensagem). Isso separa "chamou sem o parâmetro obrigatório" de "chamou certo
|
|
23
|
+
* com um valor que não existe" — que é a bifurcação do conserto.
|
|
24
|
+
*/
|
|
25
|
+
/** Vocabulário FECHADO. Nada aqui carrega valor vindo do usuário. */
|
|
26
|
+
export type ErrorClass =
|
|
27
|
+
/** Regra de contrato checada no código (o esquema não a expressa): parâmetro que falta, combinação proibida. */
|
|
28
|
+
"contrato"
|
|
29
|
+
/** A fonte respondeu, e respondeu que não existe: 404, vazio, sem registros. */
|
|
30
|
+
| "nao_encontrado"
|
|
31
|
+
/** A fonte falhou ou demorou: 5xx, timeout, payload grande demais. */
|
|
32
|
+
| "fonte"
|
|
33
|
+
/** Falhou por outro motivo — se esta classe crescer, é sinal de que falta uma classe. */
|
|
34
|
+
| "outro";
|
|
35
|
+
/**
|
|
36
|
+
* Classifica pela mensagem de erro, que é NOSSA. A ordem importa: "não
|
|
37
|
+
* encontrado" e "vazio" são mais específicos que "erro da fonte", e um 404
|
|
38
|
+
* casaria com os dois.
|
|
39
|
+
*
|
|
40
|
+
* O vocabulário foi ampliado depois de passar o classificador por TODAS as
|
|
41
|
+
* mensagens de erro do bcb e do senado (a varredura virou a guarda em
|
|
42
|
+
* `call-shape.test.ts`): 13 de 18 aqui e 12 de 18 lá caíam em `outro`, ou
|
|
43
|
+
* seja, a telemetria não responderia nada nestes dois servidores. As famílias
|
|
44
|
+
* que faltavam eram "Informe X ou Y", "só existe para", "desconhecido",
|
|
45
|
+
* "recusada", "não retornou dados" e "não publica" — nenhuma exótica; a versão
|
|
46
|
+
* inicial foi escrita a partir das mensagens do senado que eu já tinha lido.
|
|
47
|
+
*/
|
|
48
|
+
export declare function classifyError(message: string): ErrorClass;
|
|
49
|
+
/**
|
|
50
|
+
* Nomes dos parâmetros que a chamada trouxe, em ordem, separados por vírgula.
|
|
51
|
+
* Só os nomes de PRIMEIRO nível e só quando o argumento é objeto simples — o
|
|
52
|
+
* conteúdo nunca entra. Cortado em 200 caracteres porque blob do Analytics
|
|
53
|
+
* Engine tem teto de tamanho e um nome de parâmetro longo não vale a linha.
|
|
54
|
+
*/
|
|
55
|
+
export declare function paramNames(args: unknown): string;
|
|
56
|
+
/**
|
|
57
|
+
* Texto de erro de um resultado de tool, para classificar. Vazio quando não há.
|
|
58
|
+
*
|
|
59
|
+
* Lê o CAMPO `error` do envelope, não o payload serializado inteiro. O envelope
|
|
60
|
+
* padrão é `{ error, retryable, hint }`, e o `hint` de erro não recuperável
|
|
61
|
+
* termina com "a fonte oficial pode estar indisponível" — texto de formulário,
|
|
62
|
+
* igual em todos. Classificando o payload inteiro, esse "indisponível"
|
|
63
|
+
* arrastava TODO erro não recuperável para a classe `fonte`. Visto na produção
|
|
64
|
+
* do senado em 10/09/2026: a mensagem "Não existe reunião com o código X",
|
|
65
|
+
* que é `nao_encontrado` por definição, foi gravada como `fonte`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function errorText(result: unknown): string;
|
|
68
|
+
//# sourceMappingURL=call-shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-shape.d.ts","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,UAAU;AACpB,gHAAgH;AAC9G,UAAU;AACZ,gFAAgF;GAC9E,gBAAgB;AAClB,sEAAsE;GACpE,OAAO;AACT,yFAAyF;GACvF,OAAO,CAAC;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAmEzD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAiBjD"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A FORMA da chamada, nunca o conteúdo dela.
|
|
3
|
+
*
|
|
4
|
+
* Por que existe. Em 10/09/2026 o painel do portfólio passou a medir erro por
|
|
5
|
+
* chamada e apontou cinco ferramentas quebradas, uma delas aqui:
|
|
6
|
+
* `ibge_sidra`, com 47 erros em 122 chamadas — a porta principal do servidor. Diagnosticar custou vinte
|
|
7
|
+
* minutos de chamadas manuais porque a telemetria dizia QUE falhou e não DIZIA
|
|
8
|
+
* por quê. No senado, onde o mesmo campo foi ligado primeiro, uma linha
|
|
9
|
+
* respondeu o que a sonda levou meia hora para achar. Atenção a um limite que
|
|
10
|
+
* vale aqui também: erro de validação de esquema NÃO chega a esta camada — o
|
|
11
|
+
* SDK o responde antes do handler, e a chamada não é contada nem como chamada
|
|
12
|
+
* nem como erro.
|
|
13
|
+
*
|
|
14
|
+
* Por que não gravar os argumentos. O dado que este servidor serve é público; a
|
|
15
|
+
* PERGUNTA não é: o registro já guarda país e organização de rede, e parte dos
|
|
16
|
+
* parâmetros é texto livre (`nome`, `busca`), onde cabe qualquer coisa que a
|
|
17
|
+
* pessoa digitou. E ligar isso mudaria o que o serviço coleta sem
|
|
18
|
+
* mudar o que a página pública diz que ele coleta.
|
|
19
|
+
*
|
|
20
|
+
* O meio-termo: NOMES de parâmetro (que são o esquema publicado, não dado de
|
|
21
|
+
* ninguém) e a CLASSE do erro (vocabulário fechado, derivado da nossa própria
|
|
22
|
+
* mensagem). Isso separa "chamou sem o parâmetro obrigatório" de "chamou certo
|
|
23
|
+
* com um valor que não existe" — que é a bifurcação do conserto.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Classifica pela mensagem de erro, que é NOSSA. A ordem importa: "não
|
|
27
|
+
* encontrado" e "vazio" são mais específicos que "erro da fonte", e um 404
|
|
28
|
+
* casaria com os dois.
|
|
29
|
+
*
|
|
30
|
+
* O vocabulário foi ampliado depois de passar o classificador por TODAS as
|
|
31
|
+
* mensagens de erro do bcb e do senado (a varredura virou a guarda em
|
|
32
|
+
* `call-shape.test.ts`): 13 de 18 aqui e 12 de 18 lá caíam em `outro`, ou
|
|
33
|
+
* seja, a telemetria não responderia nada nestes dois servidores. As famílias
|
|
34
|
+
* que faltavam eram "Informe X ou Y", "só existe para", "desconhecido",
|
|
35
|
+
* "recusada", "não retornou dados" e "não publica" — nenhuma exótica; a versão
|
|
36
|
+
* inicial foi escrita a partir das mensagens do senado que eu já tinha lido.
|
|
37
|
+
*/
|
|
38
|
+
export function classifyError(message) {
|
|
39
|
+
const m = message.toLowerCase();
|
|
40
|
+
// A fronteira de palavra vai só no INÍCIO. Os padrões são RADICAIS
|
|
41
|
+
// ("vazi", "obrigatóri", "indisponív") justamente porque a flexão muda o
|
|
42
|
+
// fim: `\bvazi\b` não casa "vazia", e foi assim que "Resposta upstream
|
|
43
|
+
// vazia" caiu em `fonte` na primeira versão — a palavra que casava era
|
|
44
|
+
// "upstream". Ordem também importa: "não encontrado" é mais específico que
|
|
45
|
+
// "erro da fonte", e a mensagem real do senado tem sinal das duas famílias.
|
|
46
|
+
// "desconhecido"/"unknown" só é sinal de contrato quando qualifica um VALOR
|
|
47
|
+
// que o chamador passou ("Índice de preços desconhecido: X. Aceitos: ...",
|
|
48
|
+
// "Unknown dimension(s) for dataflow X"). "Erro desconhecido ao consultar o
|
|
49
|
+
// calendário do IBGE" e "Unknown error" são o oposto — são justamente o caso
|
|
50
|
+
// sem classe — e a primeira versão desta ampliação os classificava como
|
|
51
|
+
// contrato.
|
|
52
|
+
const valorDesconhecido = /\b(desconhecid|unknown)/.test(m) && !/\b(erro desconhecid|unknown error)/.test(m);
|
|
53
|
+
if (valorDesconhecido ||
|
|
54
|
+
/\b(obrigatóri|obrigatori|exige|requer|required|inválid|invalid|validation error|não aceita|nao aceita|no máximo|no maximo|só existe|so existe|recusad)/.test(m) ||
|
|
55
|
+
// Inglês, das mensagens do ilo, do uis e do medical. `empty query` fica
|
|
56
|
+
// AQUI e não em nao_encontrado: consulta vazia é parâmetro que falta. Era o
|
|
57
|
+
// radical `empty` solto que a classificava errado — ele existia para "empty
|
|
58
|
+
// response", que é outra coisa, e agora está escrito por extenso lá.
|
|
59
|
+
// "narrow it/the query" e "maximum N per call" são instruções ao chamador:
|
|
60
|
+
// a resposta não veio porque a chamada precisa mudar, que é contrato.
|
|
61
|
+
/\b(empty query|not part of|too broad|too many|maximum|narrow (it|the|your)|has no codelist|has no enumerated)/.test(m)) {
|
|
62
|
+
return "contrato";
|
|
63
|
+
}
|
|
64
|
+
if (/\b(não encontrad|nao encontrad|não existe|nao existe|does ?n[o']t exist|not.?found|inexistent|vazi|empty response|empty result|returned empty|sem registros|não retornou dados|nao retornou dados|não publica|nao publica|404)/.test(m) ||
|
|
65
|
+
// "Nenhum evento encontrado", "nenhuma reunião", "nenhum registro": a forma
|
|
66
|
+
// varia com o substantivo de cada servidor, então case pelo padrão.
|
|
67
|
+
/\bnenhum[ao]?s?\b[\s\S]{0,40}\b(encontrad|resultado|registro|dado)/.test(m)) {
|
|
68
|
+
return "nao_encontrado";
|
|
69
|
+
}
|
|
70
|
+
// "Informe X ou Y" é a mensagem canônica de parâmetro que falta — dez delas
|
|
71
|
+
// no senado, com e sem qualificador na frente ("Para por=senador, informe
|
|
72
|
+
// 'codigoSenador'"). Fica DEPOIS de "não encontrado" de propósito: é o sinal
|
|
73
|
+
// mais fraco dos dois, e um "informe um código válido" fechando uma mensagem
|
|
74
|
+
// de não encontrado não pode sequestrar a classe. Hoje nenhuma mensagem dos
|
|
75
|
+
// quatro servidores casa com as duas famílias — a ordem existe para a
|
|
76
|
+
// mensagem que alguém escrever amanhã.
|
|
77
|
+
if (/\binforme\b/.test(m))
|
|
78
|
+
return "contrato";
|
|
79
|
+
// `\b5\d\d\b` e não `5\d\d`: sem a fronteira final, qualquer número com um 5
|
|
80
|
+
// seguido de dois dígitos casava — um código de reunião "591234" citado na
|
|
81
|
+
// mensagem virava "erro 5xx". A intenção sempre foi o status HTTP.
|
|
82
|
+
// A fonte falhou ou demorou. As quatro últimas vieram da fábrica de erros do
|
|
83
|
+
// ibge, onde caíam em `outro`: ela nomeia a falha de infraestrutura em vez de
|
|
84
|
+
// usar as palavras genéricas ("Tempo de resposta excedido", não "timeout";
|
|
85
|
+
// "Serviço em manutenção"; "Erro de conexão"). `erro interno do servidor` vai
|
|
86
|
+
// com o complemento, porque "erro interno" sozinho pode ser bug nosso.
|
|
87
|
+
if (/\b(timeout|tempo esgotado|tempo de resposta excedid|excedeu o tempo|indisponív|indisponiv|manutenç|manutenc|erro de conexão|erro de conexao|erro interno do servidor|internal server error|upstream|\b5\d\d\b|payload|too large|grande demais|limite de tamanho)/.test(m)) {
|
|
88
|
+
return "fonte";
|
|
89
|
+
}
|
|
90
|
+
return "outro";
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Nomes dos parâmetros que a chamada trouxe, em ordem, separados por vírgula.
|
|
94
|
+
* Só os nomes de PRIMEIRO nível e só quando o argumento é objeto simples — o
|
|
95
|
+
* conteúdo nunca entra. Cortado em 200 caracteres porque blob do Analytics
|
|
96
|
+
* Engine tem teto de tamanho e um nome de parâmetro longo não vale a linha.
|
|
97
|
+
*/
|
|
98
|
+
export function paramNames(args) {
|
|
99
|
+
const a = Array.isArray(args) ? args[0] : args;
|
|
100
|
+
if (!a || typeof a !== "object" || Array.isArray(a))
|
|
101
|
+
return "";
|
|
102
|
+
const nomes = Object.keys(a)
|
|
103
|
+
.filter((k) => a[k] !== undefined)
|
|
104
|
+
.sort();
|
|
105
|
+
return nomes.join(",").slice(0, 200);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Texto de erro de um resultado de tool, para classificar. Vazio quando não há.
|
|
109
|
+
*
|
|
110
|
+
* Lê o CAMPO `error` do envelope, não o payload serializado inteiro. O envelope
|
|
111
|
+
* padrão é `{ error, retryable, hint }`, e o `hint` de erro não recuperável
|
|
112
|
+
* termina com "a fonte oficial pode estar indisponível" — texto de formulário,
|
|
113
|
+
* igual em todos. Classificando o payload inteiro, esse "indisponível"
|
|
114
|
+
* arrastava TODO erro não recuperável para a classe `fonte`. Visto na produção
|
|
115
|
+
* do senado em 10/09/2026: a mensagem "Não existe reunião com o código X",
|
|
116
|
+
* que é `nao_encontrado` por definição, foi gravada como `fonte`.
|
|
117
|
+
*/
|
|
118
|
+
export function errorText(result) {
|
|
119
|
+
if (!result || typeof result !== "object")
|
|
120
|
+
return "";
|
|
121
|
+
const r = result;
|
|
122
|
+
const estruturado = r.structuredContent?.error;
|
|
123
|
+
if (typeof estruturado === "string")
|
|
124
|
+
return estruturado;
|
|
125
|
+
const t = Array.isArray(r.content) ? r.content[0]?.text : undefined;
|
|
126
|
+
if (typeof t !== "string")
|
|
127
|
+
return "";
|
|
128
|
+
try {
|
|
129
|
+
const j = JSON.parse(t);
|
|
130
|
+
if (typeof j.error === "string")
|
|
131
|
+
return j.error;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Não é o envelope JSON — vale o texto cru (é o caso de outros servidores).
|
|
135
|
+
}
|
|
136
|
+
return t;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=call-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare const API_ENDPOINTS: {
|
|
|
16
16
|
readonly NOMES: "https://servicodados.ibge.gov.br/api/v2/censos/nomes";
|
|
17
17
|
readonly AGREGADOS: "https://servicodados.ibge.gov.br/api/v3/agregados";
|
|
18
18
|
readonly MALHAS: "https://servicodados.ibge.gov.br/api/v3/malhas";
|
|
19
|
+
readonly GEOSERVICOS: "https://geoservicos.ibge.gov.br/geoserver/ows";
|
|
19
20
|
readonly NOTICIAS: "https://servicodados.ibge.gov.br/api/v3/noticias";
|
|
20
21
|
readonly POPULACAO: "https://servicodados.ibge.gov.br/api/v1/projecoes/populacao";
|
|
21
22
|
readonly CNAE: "https://servicodados.ibge.gov.br/api/v2/cnae";
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAK3B,CAAC;AAML,eAAO,MAAM,aAAa;aAExB,IAAI;iBACF,WAAW,EAAE,qDAAqD;iBAClE,KAAK,EAAE,sDAAsD;iBAC7D,SAAS,EAAE,mDAAmD;iBAC9D,MAAM,EAAE,gDAAgD;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -29,6 +29,13 @@ export const API_ENDPOINTS = {
|
|
|
29
29
|
NOMES: "https://servicodados.ibge.gov.br/api/v2/censos/nomes",
|
|
30
30
|
AGREGADOS: "https://servicodados.ibge.gov.br/api/v3/agregados",
|
|
31
31
|
MALHAS: "https://servicodados.ibge.gov.br/api/v3/malhas",
|
|
32
|
+
// Geosserviços (OGC WFS/WMS do IBGE Geociências). É OUTRO serviço, e não
|
|
33
|
+
// a API de malhas: os recortes TEMÁTICOS (biomas, Amazônia Legal,
|
|
34
|
+
// semiárido, zona costeira, faixa de fronteira, regiões metropolitanas,
|
|
35
|
+
// RIDEs) não existem na API de malhas — todo caminho temático dela
|
|
36
|
+
// responde 404 — e existem aqui, como camadas WFS. Conferido em
|
|
37
|
+
// 11/09/2026.
|
|
38
|
+
GEOSERVICOS: "https://geoservicos.ibge.gov.br/geoserver/ows",
|
|
32
39
|
NOTICIAS: "https://servicodados.ibge.gov.br/api/v3/noticias",
|
|
33
40
|
POPULACAO: "https://servicodados.ibge.gov.br/api/v1/projecoes/populacao",
|
|
34
41
|
CNAE: "https://servicodados.ibge.gov.br/api/v2/cnae",
|
package/dist/config.js.map
CHANGED
|
@@ -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
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CA4CpD;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,CAoBR;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,WAAW,SAAS,MAAM,QAAQ,MAAM,gBAAgB,MAAM,KAAG,MAAM;IAOvE,QAAQ,SAAS,MAAM,QAAQ,MAAM,eAAe,MAAM,KAAG,MAAM;IASnE,WAAW,SAAS,MAAM,eAAe,MAAM,KAAG,MAAM;IAOxD,WAAW,UAAU,MAAM,QAAQ,MAAM,KAAG,MAAM;IAQlD,aAAa,WAAW,MAAM,QAAQ,MAAM,iBAAiB,MAAM,KAAG,MAAM;IAS5E,gBAAgB,UAAU,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,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Standardized error handling for IBGE MCP Server
|
|
3
3
|
*/
|
|
4
|
-
import { TimeoutError } from "./retry.js";
|
|
4
|
+
import { TimeoutError, UpstreamError } from "./retry.js";
|
|
5
5
|
// Common IBGE API error codes and their meanings
|
|
6
6
|
export const IBGE_ERROR_CODES = {
|
|
7
7
|
400: {
|
|
@@ -35,6 +35,15 @@ export function formatError(error) {
|
|
|
35
35
|
output += `**Código HTTP:** ${error.code}\n`;
|
|
36
36
|
}
|
|
37
37
|
output += `**Mensagem:** ${errorInfo?.message || error.message}\n\n`;
|
|
38
|
+
// A frase da FONTE, quando existe, vem antes dos parâmetros e da sugestão
|
|
39
|
+
// genérica — é a única linha que diz QUAL parâmetro foi recusado e por quê.
|
|
40
|
+
// O texto do código HTTP ("Parâmetros inválidos") continua como manchete
|
|
41
|
+
// porque ele é o que se pode afirmar sem ler a fonte; o motivo é o que
|
|
42
|
+
// resolve. Antes de 11/09/2026 esta linha não existia e o corpo da resposta
|
|
43
|
+
// era descartado no `cachedFetch`.
|
|
44
|
+
if (error.motivo) {
|
|
45
|
+
output += `**Resposta da fonte:** ${error.motivo}\n\n`;
|
|
46
|
+
}
|
|
38
47
|
if (error.params && Object.keys(error.params).length > 0) {
|
|
39
48
|
output += `### Parâmetros utilizados\n\n`;
|
|
40
49
|
for (const [key, value] of Object.entries(error.params)) {
|
|
@@ -72,6 +81,9 @@ export function parseHttpError(error, tool, params, relatedTools) {
|
|
|
72
81
|
message: error.message,
|
|
73
82
|
tool,
|
|
74
83
|
params,
|
|
84
|
+
// Campo tipado e não recorte da `message`: o detalhe chega inteiro de quem
|
|
85
|
+
// o leu da resposta, sem depender de separador dentro de uma string.
|
|
86
|
+
motivo: error instanceof UpstreamError ? error.detalhe : undefined,
|
|
75
87
|
relatedTools,
|
|
76
88
|
});
|
|
77
89
|
}
|