bcb-br-mcp 1.10.0 → 1.11.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 CHANGED
@@ -1,4 +1,4 @@
1
- # Brazilian Central Bank (BCB) - MCP
1
+ # Banco Central do Brasil (BCB) SGS Time Series MCP Server
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/bcb-br-mcp.svg)](https://www.npmjs.com/package/bcb-br-mcp)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/bcb-br-mcp.svg)](https://www.npmjs.com/package/bcb-br-mcp)
@@ -13,13 +13,13 @@
13
13
 
14
14
  [Leia em Português](README.pt-BR.md)
15
15
 
16
- MCP (Model Context Protocol) server for the **Brazilian Central Bank** (Banco Central do Brasil, **BCB**) time series data (SGS/BCB).
16
+ MCP (Model Context Protocol) server for the **Brazilian Central Bank** (Banco Central do Brasil, **BCB**): **SGS** time series (SGS/BCB), the **Focus** market-expectations survey (served over the **Olinda** OData API) and **PTAX** exchange rates.
17
17
 
18
18
  Query economic and financial indicators such as **Selic** (interest rate), **IPCA** (inflation), **exchange rates**, **GDP**, and more, directly from AI assistants like Claude.
19
19
 
20
20
  > If you find this project useful, please consider giving it a [star on GitHub](https://github.com/SidneyBissoli/bcb-br-mcp). It helps others discover the project!
21
21
 
22
- **Capabilities:** 15 tools (skills) · 3 resources · 3 prompts — everything an MCP client needs to query the Brazilian Central Bank: SGS/BCB time series, the **Focus** market-expectations survey and **PTAX** exchange rates.
22
+ **Capabilities:** 17 tools (skills) · 3 resources · 3 prompts — everything an MCP client needs to query the Brazilian Central Bank: SGS/BCB time series, the **Focus** market-expectations survey and **PTAX** exchange rates.
23
23
 
24
24
  ## See it in action
25
25
 
@@ -54,6 +54,8 @@ The answers come live from the Brazilian Central Bank's SGS API — exact figure
54
54
  - **Focus survey** - Market expectations (mean, median, std. deviation, min, max, respondents) for IPCA, GDP, FX and more, by monthly/quarterly/annual horizon or rolling 12/24-month inflation, plus Selic by Copom meeting
55
55
  - **PTAX exchange rates** - Official closing quotes for any currency the BCB publishes, single day or date range
56
56
 
57
+ 📖 **Article (in Portuguese):** [Séries do Banco Central: como consultar o SGS, a Focus e a PTAX sem cair nas armadilhas](docs/artigo-sgs-series-do-banco-central.pt-BR.md) — the three API limits measured live, level vs. rate series, the Focus scopes, and what the ODbL requires. Also published on the site, in Portuguese and English: [sidneybissoli.com](https://sidneybissoli.com/en/blog/posts/series-banco-central/).
58
+
57
59
  ## Available Tools
58
60
 
59
61
  | Tool | Description |
@@ -71,6 +73,8 @@ The answers come live from the Brazilian Central Bank's SGS API — exact figure
71
73
  | `bcb_focus_referencias` | Which indicators and reference dates the Focus survey actually publishes, **broken down per scope** (the five horizons plus `selic`, whose axis is the Copom meeting) — the indicator set differs by scope (9 monthly vs 26 annual) |
72
74
  | `bcb_cambio_cotacao` | PTAX quote for a currency (USD by default), single day or date range |
73
75
  | `bcb_cambio_moedas` | Currencies with quotes published by the BCB |
76
+ | `search` | OpenAI Deep Research contract: searches the series catalog (curated + open data portal index) and returns `{ id, title, url }` — see [ChatGPT (Deep Research)](#chatgpt-deep-research) |
77
+ | `fetch` | OpenAI Deep Research contract: returns one series as a readable document with its canonical public URL |
74
78
 
75
79
  ## Resources
76
80
 
@@ -146,6 +150,16 @@ npm install -g bcb-br-mcp
146
150
  }
147
151
  ```
148
152
 
153
+ ### ChatGPT (Deep Research)
154
+
155
+ 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 `bcb_*` tools. Point the connector at the hosted endpoint, no key required:
156
+
157
+ ```
158
+ https://bcb.sidneybissoli.com/mcp
159
+ ```
160
+
161
+ `search` ranks the query against the series catalog — the 135 curated series plus the thousands indexed from the Open Data Portal — and returns `{ id, title, url }` (ids are `sgs:<code>`); `fetch` returns the series as readable Markdown (name, category, frequency, unit, latest value) with the canonical public URL, which is what ChatGPT cites: the dataset page on dadosabertos.bcb.gov.br when the series has one, otherwise the public SGS query for its latest observations (the SGS has no per-series page). 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 `bcb_*` tools remain the ones to use for data.
162
+
149
163
  ## Usage Examples
150
164
 
151
165
  ### Get the current Selic rate
@@ -443,9 +457,9 @@ rounded (to 4 decimals).
443
457
 
444
458
  ### Smart Search
445
459
 
446
- `bcb_buscar_serie` searches two layers: the curated curated catalog of 135 verified series (which ranks first, with the name source declared
447
- names) and the index of the BCB Open Data Portal, with thousands of series identified by code. Terms are
448
- accent- and case-insensitive, and several terms are combined with AND:
460
+ `bcb_buscar_serie` searches two layers: the curated catalog of 135 verified series (which ranks first, with
461
+ the source of the name declared) and the index of the BCB Open Data Portal, with thousands of series
462
+ identified by code. Terms are accent- and case-insensitive, and several terms are combined with AND:
449
463
 
450
464
  - `"inflacao"` → finds "Inflação"
451
465
  - `"cambio"` → finds "Câmbio"
@@ -592,7 +606,20 @@ Contributions are welcome! Please:
592
606
 
593
607
  ## License
594
608
 
595
- MIT - see [LICENSE](LICENSE) for details.
609
+ **Two licences, and they are not the same thing.**
610
+
611
+ - **Code:** MIT — see [LICENSE](LICENSE).
612
+ - **Data:** from the Banco Central do Brasil, under the **Open Data Commons Open
613
+ Database License (ODbL) v1.0** — https://opendatacommons.org/licenses/odbl/1-0/.
614
+ Not CC0, not CC BY, not public domain: the ODbL requires **attribution**, has a
615
+ **share-alike** clause on derived databases, and an **anti-DRM** clause.
616
+
617
+ Every successful response carries a provenance block with the source, the query URL, the data vintage, the
618
+ real extraction instant and the licence. Exchange-rate answers pass the BCB disclaimer through verbatim, and
619
+ non-USD parities are qualified as information-agency data (Refinitiv) redistributed by the BCB — not as data
620
+ compiled by the Central Bank.
621
+
622
+ Details and obligations in [NOTICE.md](NOTICE.md). Privacy: no user data is logged, by either channel — see [PRIVACY.md](PRIVACY.md).
596
623
 
597
624
  ## Author
598
625
 
package/README.pt-BR.md CHANGED
@@ -1,4 +1,4 @@
1
- # Banco Central do Brasil (BCB) - MCP
1
+ # Banco Central do Brasil (BCB) SGS Time Series MCP Server
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/bcb-br-mcp.svg)](https://www.npmjs.com/package/bcb-br-mcp)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/bcb-br-mcp.svg)](https://www.npmjs.com/package/bcb-br-mcp)
@@ -12,13 +12,13 @@
12
12
 
13
13
  [Read in English](README.md)
14
14
 
15
- Servidor MCP (Model Context Protocol) para acesso às séries temporais do Banco Central do Brasil (SGS/BCB).
15
+ Servidor MCP (Model Context Protocol) do **Banco Central do Brasil** (**BCB**): séries temporais do **SGS** (SGS/BCB), a pesquisa de expectativas de mercado **Focus** (servida pela API OData **Olinda**) e as cotações de câmbio **PTAX**.
16
16
 
17
17
  Permite consultar indicadores econômicos e financeiros como **Selic**, **IPCA**, **câmbio**, **PIB**, entre outros, diretamente em assistentes de IA como Claude.
18
18
 
19
19
  > Se você achou este projeto útil, considere dar uma [estrela no GitHub](https://github.com/SidneyBissoli/bcb-br-mcp). Isso ajuda outras pessoas a descobrirem o projeto!
20
20
 
21
- **Capacidades:** 8 ferramentas (skills) · 3 recursos · 3 prompts — tudo o que um cliente MCP precisa para consultar a API de séries temporais do BCB (SGS).
21
+ **Capacidades:** 17 ferramentas (skills) · 3 recursos · 3 prompts — tudo o que um cliente MCP precisa para consultar o Banco Central do Brasil: séries temporais do SGS/BCB, a pesquisa de expectativas de mercado **Focus** e as cotações de câmbio **PTAX**.
22
22
 
23
23
  ## Veja na prática
24
24
 
@@ -27,6 +27,9 @@ Pergunte ao seu assistente, em português:
27
27
  - *"Qual a taxa Selic atual?"* → `bcb_indicadores_atuais`
28
28
  - *"Mostre o IPCA mês a mês em 2024."* → `bcb_serie_valores`
29
29
  - *"Qual foi a variação do dólar nos últimos 12 meses?"* → `bcb_variacao`
30
+ - *"O que o mercado espera do IPCA em 2027?"* → `bcb_focus_expectativas`
31
+ - *"Qual a Selic esperada na próxima reunião do Copom?"* → `bcb_focus_selic`
32
+ - *"Qual foi a PTAX de fechamento do euro na sexta?"* → `bcb_cambio_cotacao`
30
33
 
31
34
  As respostas vêm ao vivo da API SGS do Banco Central — valores exatos com procedência, não números chutados do treino.
32
35
 
@@ -47,6 +50,10 @@ As respostas vêm ao vivo da API SGS do Banco Central — valores exatos com pro
47
50
  - **Cálculo de variação** - Variação percentual entre períodos com estatísticas
48
51
  - **Comparação de séries** - Compara múltiplas séries no mesmo período, com aviso
49
52
  quando as periodicidades diferem
53
+ - **Pesquisa Focus** - Expectativas de mercado (média, mediana, desvio-padrão, mínimo, máximo, número de respondentes) para IPCA, PIB, câmbio e outros, por horizonte mensal/trimestral/anual ou inflação acumulada em 12/24 meses, mais a Selic por reunião do Copom
54
+ - **Câmbio PTAX** - Cotações oficiais de fechamento para qualquer moeda que o BCB publique, em um dia ou num intervalo de datas
55
+
56
+ 📖 **Artigo:** [Séries do Banco Central: como consultar o SGS, a Focus e a PTAX sem cair nas armadilhas](docs/artigo-sgs-series-do-banco-central.pt-BR.md) — os três limites da API medidos ao vivo, a diferença entre série de nível e série de taxa, os escopos da Focus e o que a ODbL exige. Também publicado no site: [sidneybissoli.com](https://sidneybissoli.com/blog/posts/series-banco-central/).
50
57
 
51
58
  ## Ferramentas Disponíveis
52
59
 
@@ -60,6 +67,13 @@ As respostas vêm ao vivo da API SGS do Banco Central — valores exatos com pro
60
67
  | `bcb_indicadores_atuais` | Valores mais recentes: Selic, IPCA, Dólar, IBC-Br |
61
68
  | `bcb_variacao` | Variação percentual de UMA série no período: entre as pontas para série de nível, **acumulado por encadeamento** para série que já é variação por período (IPCA, IGP-M, INPC…); `analise.metodo` diz qual |
62
69
  | `bcb_comparar` | Compara 2 a 5 séries no mesmo período com ranking (mesma regra nível/encadeamento por série, declarada em `metodo`) |
70
+ | `bcb_focus_expectativas` | Expectativas da pesquisa Focus para um indicador, com o horizonte como parâmetro (mensal, trimestral, anual, inflação acumulada em 12m/24m); marcador `top5` |
71
+ | `bcb_focus_selic` | Expectativas Focus para a taxa Selic, por reunião do Copom (formato R1/2026) |
72
+ | `bcb_focus_referencias` | Quais indicadores e datas de referência a Focus de fato publica, **discriminados por escopo** (os cinco horizontes mais `selic`, cujo eixo é a reunião do Copom) — o conjunto de indicadores muda com o escopo (9 no mensal contra 26 no anual) |
73
+ | `bcb_cambio_cotacao` | Cotação PTAX de uma moeda (dólar por padrão), num dia ou num intervalo de datas |
74
+ | `bcb_cambio_moedas` | Moedas com cotação publicada pelo BCB |
75
+ | `search` | Contrato Deep Research da OpenAI: busca no catálogo de séries (curado + índice do portal de dados abertos) e devolve `{ id, title, url }` — ver [ChatGPT (Deep Research)](#chatgpt-deep-research) |
76
+ | `fetch` | Contrato Deep Research da OpenAI: devolve uma série como documento legível com a sua URL pública canônica |
63
77
 
64
78
  ## Recursos
65
79
 
@@ -92,9 +106,14 @@ Acesse [bcb-br-mcp no Smithery](https://smithery.ai/servers/sidneybissoli/bcb-br
92
106
  Use o endpoint HTTP diretamente, sem instalar nada:
93
107
 
94
108
  ```
95
- https://bcb.sidneybissoli.workers.dev
109
+ https://bcb.sidneybissoli.com/mcp
96
110
  ```
97
111
 
112
+ O hostname antigo `https://bcb.sidneybissoli.workers.dev` continua funcionando, e a
113
+ rota antiga `POST /` também — cliente configurado antes de o endpoint mudar para
114
+ `/mcp` é reescrito de forma transparente, então nada que funcionava parou. Config
115
+ nova deve usar a URL acima.
116
+
98
117
  ### Via npx (Claude Desktop)
99
118
 
100
119
  Adicione ao arquivo de configuração do Claude Desktop:
@@ -130,6 +149,16 @@ npm install -g bcb-br-mcp
130
149
  }
131
150
  ```
132
151
 
152
+ ### ChatGPT (Deep Research)
153
+
154
+ 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 `bcb_*`. Aponte o conector para o endpoint hospedado, sem chave:
155
+
156
+ ```
157
+ https://bcb.sidneybissoli.com/mcp
158
+ ```
159
+
160
+ `search` ranqueia a consulta contra o catálogo de séries — as 135 curadas mais os milhares indexados do Portal de Dados Abertos — e devolve `{ id, title, url }` (os ids são `sgs:<código>`); `fetch` devolve a série em Markdown legível (nome, categoria, periodicidade, unidade, último valor) com a URL pública canônica, que é o que o ChatGPT cita: a página do dataset em dadosabertos.bcb.gov.br quando a série tem uma, senão a consulta pública do SGS às últimas observações dela (o SGS não tem página por série). 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 `bcb_*` continuam sendo as certas.
161
+
133
162
  ## Exemplos de Uso
134
163
 
135
164
  ### Consultar a Selic atual
@@ -427,11 +456,48 @@ Valor publicado pelo BCB sai sempre verbatim; só o que é calculado é arredond
427
456
 
428
457
  ### Busca Inteligente
429
458
 
430
- A ferramenta `bcb_buscar_serie` normaliza os termos de busca, permitindo encontrar séries mesmo sem acentos:
459
+ `bcb_buscar_serie` procura em duas camadas: o catálogo curado de 135 séries verificadas (que aparece primeiro,
460
+ com a origem do nome declarada) e o índice do Portal de Dados Abertos do BCB, com milhares de séries
461
+ identificadas por código. Os termos ignoram acento e caixa, e vários termos são combinados com E:
431
462
 
432
463
  - `"inflacao"` → encontra "Inflação"
433
464
  - `"cambio"` → encontra "Câmbio"
434
- - `"credito"` → encontra "Crédito"
465
+ - `"ipca servicos"` → os dois termos precisam bater
466
+
467
+ O índice do portal é servido de um cache de 24 horas, renovado pela primeira busca depois que ele vence (uma
468
+ requisição ao portal, só metadados — códigos e nomes de série, nunca observações). Toda resposta carrega
469
+ `catalogo.cobertura`: o índice **não** é o SGS inteiro, então não achar uma série aqui não prova que ela não
470
+ existe.
471
+
472
+ ### Fonte dos dados e licença
473
+
474
+ Dados obtidos do Banco Central do Brasil (SGS / Olinda-Expectativas / PTAX), publicados sob a
475
+ **Open Data Commons Open Database License (ODbL) v1.0** — https://opendatacommons.org/licenses/odbl/1-0/.
476
+ Reconferido contra a fonte em 2026-08-13: 4.259 dos 4.260 conjuntos do portal declaram
477
+ `license_id: "odc-odbl"`. Isso **não** é CC0, CC BY nem domínio público — a ODbL traz cláusulas de
478
+ atribuição, de compartilhamento nos mesmos termos (para bases derivadas) e contra DRM. As respostas de
479
+ câmbio repassam verbatim o próprio aviso de responsabilidade do BCB; as paridades entre moedas **não** são
480
+ apuradas pelo BCB — vêm de agência de informação (Refinitiv) e são redistribuídas por ele, e as ferramentas
481
+ dizem isso.
482
+
483
+ O código do servidor é MIT; os dados não são. Ver [NOTICE.md](NOTICE.md). Privacidade: nenhum dado de
484
+ usuário é registrado, por nenhum dos canais — ver [PRIVACY.md](PRIVACY.md).
485
+
486
+ ### Bloco de proveniência
487
+
488
+ Toda resposta bem-sucedida carrega um bloco de proveniência (contrato do portfólio v1.0) em dois canais:
489
+ `structuredContent.provenance` + `attribution` (visível ao modelo) e um espelho em `_meta` sob
490
+ `br.com.sidneybissoli.bcb/*` (fora de banda, custo zero em tokens). Cada bloco nomeia a fonte, a URL canônica
491
+ que reproduz a consulta, a vintage do dado, o instante **real** da extração na origem e a licença.
492
+
493
+ Dois detalhes fáceis de errar, e que aqui estão tratados:
494
+
495
+ - **`retrieved_at` é o instante real da extração, não "agora".** O índice do portal é servido de um cache de
496
+ 24 horas, então busca respondida do cache informa o instante em que o índice foi de fato buscado — que pode
497
+ ser de um dia atrás, e é a data juridicamente relevante.
498
+ - **Um bloco por proveniência, nunca fundidos.** `bcb_buscar_serie` separa o índice do portal do BCB do
499
+ catálogo curado do próprio servidor; `bcb_serie_metadados` separa a leitura ao vivo do SGS do catálogo;
500
+ `bcb_cambio_cotacao` separa as cotações de dólar apuradas pelo BCB das paridades vindas de agência.
435
501
 
436
502
  ## Desenvolvimento
437
503
 
@@ -453,12 +519,18 @@ npm install
453
519
  npm run build
454
520
  ```
455
521
 
456
- ### Teste local
522
+ ### Teste local (stdio)
457
523
 
458
524
  ```bash
459
525
  npm run dev
460
526
  ```
461
527
 
528
+ ### Teste local (worker HTTP)
529
+
530
+ ```bash
531
+ npm run dev:worker
532
+ ```
533
+
462
534
  Ou use o MCP Inspector:
463
535
 
464
536
  ```bash
@@ -476,6 +548,33 @@ Este servidor utiliza a API pública do Banco Central do Brasil:
476
548
 
477
549
  ## Changelog
478
550
 
551
+ ### v1.4.1
552
+
553
+ - `bcb_focus_referencias`: o parâmetro passou a ser `escopo`, não `horizonte`, e o
554
+ vetor da resposta é `escopos`. Os escopos são os cinco horizontes de
555
+ `bcb_focus_expectativas` **mais `selic`** — e `selic` não é horizonte: o eixo dele
556
+ é a reunião do Copom. Cada bloco nomeia a `tool` que o consome. O nome anterior
557
+ dava a entender que `selic` era um horizonte consultável de
558
+ `bcb_focus_expectativas`, e não é. Nunca foi publicado no npm com o nome antigo.
559
+
560
+ ### v1.4.0
561
+
562
+ - **Três APIs sob um contrato só, de 8 para 13 ferramentas.** A pesquisa de
563
+ expectativas de mercado Focus (`bcb_focus_expectativas`, `bcb_focus_selic`,
564
+ `bcb_focus_referencias`) e o câmbio PTAX (`bcb_cambio_cotacao`,
565
+ `bcb_cambio_moedas`), consolidados por parâmetro em vez de espelhar os ~18
566
+ recursos OData da origem.
567
+ - **Busca de verdade.** `bcb_buscar_serie` passou a consultar o índice do Portal de
568
+ Dados Abertos (3.500+ séries, cache de 24 horas, só metadados) por cima do
569
+ catálogo curado, e a declarar a cobertura do índice em vez de afirmar que uma
570
+ série não existe.
571
+ - Cada nome de campo da Focus e da PTAX foi conferido contra a API ao vivo,
572
+ inclusive o recurso Top 5 da Selic, que publica os campos numa caixa diferente
573
+ dos outros doze.
574
+ - Obrigações da ODbL entregues junto com as ferramentas de câmbio: o aviso do BCB
575
+ é repassado verbatim, e as paridades que não envolvem o dólar são qualificadas
576
+ como dado de terceiro (Refinitiv) redistribuído pelo BCB.
577
+
479
578
  ### v1.2.0
480
579
 
481
580
  - Endpoint HTTP via Cloudflare Workers (`https://bcb.sidneybissoli.workers.dev`)
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `search` e `fetch` — o contrato Deep Research da OpenAI sobre o acervo do
3
+ * servidor (ChatGPT deep research, company knowledge e os workflows de pesquisa
4
+ * da API Responses exigem EXATAMENTE essas duas tools, com esses nomes — a
5
+ * única exceção admitida ao prefixo `bcb_`).
6
+ *
7
+ * Desenho "coletor + JSON do pacote": a fábrica de `@sbissoli/mcp-search` é
8
+ * apontada para um coletor que captura título, description e callback; as
9
+ * duas entradas viram `ToolDefinition` como as outras 15 — com os schemas do
10
+ * contrato em JSON Schema (`contractJsonSchemas`, derivados uma vez no pacote,
11
+ * porque este servidor serve JSON Schema verbatim e não deriva de zod no fio;
12
+ * `CLAUDE.md`) e o canal de proveniência acrescentado em `TOOL_DEFINITIONS`
13
+ * como nas demais — e o `dispatchTool` as despacha por `case`. Assim o coletor
14
+ * de extração (`retrieved_at`), o `record` e o laço do `registerAll` cobrem as
15
+ * duas sem caso especial.
16
+ *
17
+ * O módulo recebe do `tools.ts` o que é dele (catálogo curado, o handler de
18
+ * metadados e o bloco de proveniência do catálogo) em vez de importar de lá:
19
+ * `tools.ts` monta `TOOL_DEFINITIONS` no topo do módulo, e um ciclo de import
20
+ * o quebraria em quem importasse este arquivo primeiro.
21
+ *
22
+ * O acervo: as séries do SGS conhecidas pelo servidor — o catálogo curado
23
+ * (135, revisadas à mão) e o índice do Portal de Dados Abertos (milhares,
24
+ * `package_list`, cache de 24 h em `catalog.ts`). Id `sgs:<codigo>`. A `url`
25
+ * é a página do dataset no portal quando a série tem uma; as séries curadas
26
+ * sem dataset (53, `fonteNome: "medido"`) citam a consulta pública do SGS às
27
+ * últimas 10 observações — a mesma `urlUltimos10` que `bcb_serie_metadados`
28
+ * publica — porque não existe página humana por série no SGS (`sgspub` não tem
29
+ * deep link) e a consulta SEM janela responde 406 nas séries diárias longas
30
+ * (medido em 03/09/2026: 1, 11 e 12 recusam; `CLAUDE.md`, limite de 10 anos).
31
+ */
32
+ import { DEEP_RESEARCH_TOOLS } from "@sbissoli/mcp-search";
33
+ import { type Proveniencia } from "./provenance.js";
34
+ import { type SeriePopular, type ToolDefinition, type ToolResult } from "./shared.js";
35
+ export { DEEP_RESEARCH_TOOLS };
36
+ /** Teto de resultados do `search` (o contrato pede uma lista curta e relevante). */
37
+ export declare const DEEP_RESEARCH_LIMIT = 10;
38
+ /** O que o adapter precisa do `tools.ts` — injetado para não fechar ciclo de import. */
39
+ export interface DeepResearchDeps {
40
+ seriesPopulares: readonly SeriePopular[];
41
+ /** O handler real de `bcb_serie_metadados`: o `fetch` é ele, com a proveniência dele. */
42
+ metadados: (codigo: number, timeoutMs?: number, maxRetries?: number) => Promise<ToolResult>;
43
+ /** Bloco de proveniência do catálogo curado — o mesmo que as outras tools emitem. */
44
+ provCatalogoCurado: (detalhe?: string) => Proveniencia;
45
+ }
46
+ export interface DeepResearchTools {
47
+ /** As duas definições, na forma das outras 15 (sem o canal de proveniência — `TOOL_DEFINITIONS` o acrescenta). */
48
+ definitions: ToolDefinition[];
49
+ /** Despacha `search`/`fetch`; `null` quando a tool não é destas. */
50
+ dispatch: (toolName: string, args: Record<string, unknown>, timeoutMs?: number, maxRetries?: number) => Promise<ToolResult> | null;
51
+ }
52
+ /** Só para os testes. */
53
+ export declare function _resetDeepResearch(): void;
54
+ export declare function criarDeepResearchTools(deps: DeepResearchDeps): DeepResearchTools;
55
+ //# sourceMappingURL=deep-research.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-research.d.ts","sourceRoot":"","sources":["../src/deep-research.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EACL,mBAAmB,EAUpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAA6C,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/F,OAAO,EAAiB,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAErG,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAItC,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,yFAAyF;IACzF,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5F,qFAAqF;IACrF,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC;CACxD;AAED,MAAM,WAAW,iBAAiB;IAChC,kHAAkH;IAClH,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACjC;AAkBD,yBAAyB;AACzB,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAmHD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CAyHhF"}
@@ -0,0 +1,246 @@
1
+ /**
2
+ * `search` e `fetch` — o contrato Deep Research da OpenAI sobre o acervo do
3
+ * servidor (ChatGPT deep research, company knowledge e os workflows de pesquisa
4
+ * da API Responses exigem EXATAMENTE essas duas tools, com esses nomes — a
5
+ * única exceção admitida ao prefixo `bcb_`).
6
+ *
7
+ * Desenho "coletor + JSON do pacote": a fábrica de `@sbissoli/mcp-search` é
8
+ * apontada para um coletor que captura título, description e callback; as
9
+ * duas entradas viram `ToolDefinition` como as outras 15 — com os schemas do
10
+ * contrato em JSON Schema (`contractJsonSchemas`, derivados uma vez no pacote,
11
+ * porque este servidor serve JSON Schema verbatim e não deriva de zod no fio;
12
+ * `CLAUDE.md`) e o canal de proveniência acrescentado em `TOOL_DEFINITIONS`
13
+ * como nas demais — e o `dispatchTool` as despacha por `case`. Assim o coletor
14
+ * de extração (`retrieved_at`), o `record` e o laço do `registerAll` cobrem as
15
+ * duas sem caso especial.
16
+ *
17
+ * O módulo recebe do `tools.ts` o que é dele (catálogo curado, o handler de
18
+ * metadados e o bloco de proveniência do catálogo) em vez de importar de lá:
19
+ * `tools.ts` monta `TOOL_DEFINITIONS` no topo do módulo, e um ciclo de import
20
+ * o quebraria em quem importasse este arquivo primeiro.
21
+ *
22
+ * O acervo: as séries do SGS conhecidas pelo servidor — o catálogo curado
23
+ * (135, revisadas à mão) e o índice do Portal de Dados Abertos (milhares,
24
+ * `package_list`, cache de 24 h em `catalog.ts`). Id `sgs:<codigo>`. A `url`
25
+ * é a página do dataset no portal quando a série tem uma; as séries curadas
26
+ * sem dataset (53, `fonteNome: "medido"`) citam a consulta pública do SGS às
27
+ * últimas 10 observações — a mesma `urlUltimos10` que `bcb_serie_metadados`
28
+ * publica — porque não existe página humana por série no SGS (`sgspub` não tem
29
+ * deep link) e a consulta SEM janela responde 406 nas séries diárias longas
30
+ * (medido em 03/09/2026: 1, 11 e 12 recusam; `CLAUDE.md`, limite de 10 anos).
31
+ */
32
+ import { DEEP_RESEARCH_TOOLS, contractJsonSchemas, createIndex, registerDeepResearchTools } from "@sbissoli/mcp-search";
33
+ import { CKAN_DATASET_BASE, CKAN_PACKAGE_LIST, nomeDoSlug, obterCatalogo } from "./catalog.js";
34
+ import { provenienciaBcb, resultadoComProveniencia } from "./provenance.js";
35
+ import { BCB_SGS_BASE } from "./series.js";
36
+ import { leituraRemota } from "./shared.js";
37
+ export { DEEP_RESEARCH_TOOLS };
38
+ /** Teto de resultados do `search` (o contrato pede uma lista curta e relevante). */
39
+ export const DEEP_RESEARCH_LIMIT = 10;
40
+ const PREFIXO_SGS = "sgs:";
41
+ let acervo = null;
42
+ /** Só para os testes. */
43
+ export function _resetDeepResearch() {
44
+ acervo = null;
45
+ }
46
+ function idDe(codigo) {
47
+ return `${PREFIXO_SGS}${codigo}`;
48
+ }
49
+ /** Consulta pública do SGS que responde 200 em qualquer série — o fallback de `url`. */
50
+ function urlConsultaPublica(codigo) {
51
+ return `${BCB_SGS_BASE}.${codigo}/dados/ultimos/10?formato=json`;
52
+ }
53
+ function codigoDe(id) {
54
+ if (!id.startsWith(PREFIXO_SGS))
55
+ return null;
56
+ const resto = id.slice(PREFIXO_SGS.length);
57
+ return /^\d+$/.test(resto) ? Number(resto) : null;
58
+ }
59
+ function construirAcervo(seriesPopulares, snapshot) {
60
+ const slugPorCodigo = new Map((snapshot?.entradas ?? []).map(e => [e.codigo, e.slug]));
61
+ const entradas = [];
62
+ // Camada de destaque: o catálogo curado, com o nome bom e as palavras-chave.
63
+ for (const s of seriesPopulares) {
64
+ const slug = slugPorCodigo.get(s.codigo);
65
+ entradas.push({
66
+ id: idDe(s.codigo),
67
+ title: s.nome,
68
+ url: slug ? `${CKAN_DATASET_BASE}/${slug}` : urlConsultaPublica(s.codigo),
69
+ keywords: [String(s.codigo), s.categoria, s.periodicidade, ...(s.unidade ? [s.unidade] : [])],
70
+ codigo: s.codigo,
71
+ origem: "curado"
72
+ });
73
+ }
74
+ const curados = new Set(seriesPopulares.map(s => s.codigo));
75
+ for (const e of snapshot?.entradas ?? []) {
76
+ if (curados.has(e.codigo))
77
+ continue;
78
+ entradas.push({
79
+ id: idDe(e.codigo),
80
+ title: nomeDoSlug(e.slug),
81
+ url: `${CKAN_DATASET_BASE}/${e.slug}`,
82
+ keywords: [String(e.codigo)],
83
+ codigo: e.codigo,
84
+ origem: "indice"
85
+ });
86
+ }
87
+ return {
88
+ chave: snapshot?.obtidoEm ?? null,
89
+ porId: new Map(entradas.map(e => [e.id, e])),
90
+ indice: createIndex(entradas)
91
+ };
92
+ }
93
+ /** Bloco de proveniência do índice do portal — o mesmo de `bcb_buscar_serie`. */
94
+ function provIndicePortal(snapshot) {
95
+ return provenienciaBcb({
96
+ fonte: "PORTAL",
97
+ url: CKAN_PACKAGE_LIST,
98
+ dataset: { id: "package_list", name: "Índice de datasets do portal", version: null },
99
+ dataVintage: snapshot.obtidoEm,
100
+ detalheCitacao: "índice de datasets (package_list)"
101
+ });
102
+ }
103
+ /**
104
+ * Projeta blocos de proveniência nos extras do envelope do pacote, pelo mesmo
105
+ * caminho das outras tools (`resultadoComProveniencia`): `structuredContent`
106
+ * ganha `provenance`/`attribution` e `_meta` as chaves do servidor.
107
+ */
108
+ function extrasDe(proveniencia) {
109
+ const { structuredContent, _meta } = resultadoComProveniencia({}, proveniencia);
110
+ return { structured: structuredContent, meta: _meta };
111
+ }
112
+ function renderizarDocumento(entrada, m, serie) {
113
+ const linhas = [
114
+ `# ${entrada.title}`,
115
+ "",
116
+ `- Código no SGS (Sistema Gerenciador de Séries Temporais do Banco Central do Brasil): ${m.codigo}`,
117
+ `- Categoria: ${m.categoria}`,
118
+ `- Periodicidade: ${m.periodicidade}${m.periodicidadeInferida ? " (inferida do espaçamento das observações)" : ""}`,
119
+ ...(serie?.unidade ? [`- Unidade: ${serie.unidade}`] : []),
120
+ ...(m.ultimoValor ? [`- Último valor publicado: ${m.ultimoValor.valor} em ${m.ultimoValor.data}`] : []),
121
+ `- Fonte: Banco Central do Brasil — SGS`,
122
+ `- Origem no acervo: ${entrada.origem === "curado" ? "catálogo curado do servidor" : "índice do Portal de Dados Abertos do BCB"}`,
123
+ `- ${entrada.url.startsWith(CKAN_DATASET_BASE) ? "Página do dataset" : "Consulta pública (últimas 10 observações)"}: ${entrada.url}`,
124
+ "",
125
+ m.observacao,
126
+ "",
127
+ `Para os valores da série use \`bcb_serie_valores\` (período) ou \`bcb_serie_ultimos\` (últimas observações) com \`codigo: ${m.codigo}\`.`
128
+ ];
129
+ return linhas.join("\n");
130
+ }
131
+ export function criarDeepResearchTools(deps) {
132
+ const { seriesPopulares, metadados, provCatalogoCurado } = deps;
133
+ async function obterAcervo(timeoutMs, maxRetries) {
134
+ const { snapshot, aviso } = await obterCatalogo(timeoutMs, maxRetries);
135
+ const chave = snapshot?.obtidoEm ?? null;
136
+ if (!acervo || acervo.chave !== chave)
137
+ acervo = construirAcervo(seriesPopulares, snapshot);
138
+ return { acervo, snapshot, aviso };
139
+ }
140
+ // Os handlers rodam DENTRO do `dispatchTool` (coletor de extração aberto), como
141
+ // os das outras tools — o `retrieved_at` do índice de cache é o do fetch original.
142
+ // O orçamento de rede é o da chamada (o Worker passa um mais curto), por isso
143
+ // as duas funções nascem por chamada, fechadas sobre ele.
144
+ function handlers(timeoutMs, maxRetries) {
145
+ async function search(query) {
146
+ const { acervo, snapshot } = await obterAcervo(timeoutMs, maxRetries);
147
+ const results = acervo.indice
148
+ .search(query, { limit: DEEP_RESEARCH_LIMIT })
149
+ .map(({ id, title, url }) => ({ id, title, url }));
150
+ const proveniencia = [provCatalogoCurado(`busca por "${query}"`)];
151
+ if (snapshot)
152
+ proveniencia.unshift(provIndicePortal(snapshot));
153
+ return { results, extras: extrasDe(proveniencia) };
154
+ }
155
+ async function fetch(id) {
156
+ const codigo = codigoDe(id);
157
+ if (codigo === null)
158
+ return null;
159
+ const { acervo } = await obterAcervo(timeoutMs, maxRetries);
160
+ const entrada = acervo.porId.get(id);
161
+ if (!entrada)
162
+ return null;
163
+ const resultado = await metadados(codigo, timeoutMs, maxRetries);
164
+ if (resultado.isError === true || !resultado.structuredContent) {
165
+ throw new Error(resultado.content[0]?.text ?? `metadados da série ${codigo} indisponíveis`);
166
+ }
167
+ const { provenance, attribution, ...dados } = resultado.structuredContent;
168
+ const m = dados;
169
+ const serie = seriesPopulares.find(s => s.codigo === codigo);
170
+ // O título é o do acervo, não o de `bcb_serie_metadados`: fora da curadoria
171
+ // ela só sabe dizer "Série N", e o acervo tem o nome derivado do slug do
172
+ // portal — o mesmo que `search` acabou de mostrar (achado na ponta, 1.11.0).
173
+ return {
174
+ document: {
175
+ id,
176
+ title: entrada.title,
177
+ text: renderizarDocumento(entrada, m, serie),
178
+ url: entrada.url,
179
+ metadata: {
180
+ codigo,
181
+ categoria: m.categoria,
182
+ periodicidade: m.periodicidade,
183
+ origem: entrada.origem,
184
+ ...(serie ? { fonteNome: serie.fonteNome } : {}),
185
+ ...(serie?.unidade ? { unidade: serie.unidade } : {}),
186
+ ...(m.ultimoValor ? { ultimoValor: m.ultimoValor } : {})
187
+ }
188
+ },
189
+ extras: {
190
+ structured: { provenance, attribution },
191
+ meta: resultado._meta
192
+ }
193
+ };
194
+ }
195
+ return { search, fetch };
196
+ }
197
+ /**
198
+ * Aponta a fábrica do pacote para um coletor e devolve o que ela registrou.
199
+ * `record` fica de fora de propósito: o laço do `registerAll` já conta as duas
200
+ * como conta as outras. `annotations` idem — a definição abaixo leva as suas.
201
+ */
202
+ function capturar(timeoutMs, maxRetries) {
203
+ const capturados = [];
204
+ const coletor = {
205
+ registerTool: (name, config, callback) => {
206
+ capturados.push({ name, config, callback });
207
+ }
208
+ };
209
+ registerDeepResearchTools(coletor, {
210
+ ...handlers(timeoutMs, maxRetries),
211
+ corpus: "Banco Central do Brasil time series (SGS: interest rates, inflation, exchange rates, credit, " +
212
+ "fiscal and external sector — the curated catalog plus the open data portal index)",
213
+ richTools: "the `bcb_*` tools",
214
+ limit: DEEP_RESEARCH_LIMIT
215
+ });
216
+ const porNome = {};
217
+ for (const name of DEEP_RESEARCH_TOOLS) {
218
+ const reg = capturados.find(c => c.name === name);
219
+ if (!reg?.config.title || !reg.config.description)
220
+ throw new Error(`a fábrica não registrou "${name}"`);
221
+ porNome[name] = reg;
222
+ }
223
+ return porNome;
224
+ }
225
+ const json = contractJsonSchemas("pt-BR");
226
+ const schemas = {
227
+ search: { input: json.searchInputSchema, output: json.searchOutputSchema },
228
+ fetch: { input: json.fetchInputSchema, output: json.fetchDocumentSchema }
229
+ };
230
+ const registros = capturar();
231
+ const definitions = DEEP_RESEARCH_TOOLS.map(name => ({
232
+ name,
233
+ description: registros[name].config.description,
234
+ annotations: leituraRemota(registros[name].config.title),
235
+ inputSchema: schemas[name].input,
236
+ outputSchema: schemas[name].output
237
+ }));
238
+ const dispatch = (toolName, args, timeoutMs, maxRetries) => {
239
+ if (!DEEP_RESEARCH_TOOLS.includes(toolName))
240
+ return null;
241
+ const { callback } = capturar(timeoutMs, maxRetries)[toolName];
242
+ return callback(args);
243
+ };
244
+ return { definitions, dispatch };
245
+ }
246
+ //# sourceMappingURL=deep-research.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-research.js","sourceRoot":"","sources":["../src/deep-research.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../src/focus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../src/focus.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,eAAe;IAC1B,8EAA8E;;IAE9E;;;OAGG;;IAEH,yDAAyD;;IAIzD;;;;OAIG;;IAEH;;;;OAIG;oBAOE,UAAU,EAAE;CACT,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAWpB,CAAC"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,eAAe;IAC1B,8EAA8E;aAC9E,IAAI,EAAE,YAAY;IAClB;;;OAGG;aACH,KAAK,EAAE,4DAA4D;IACnE,yDAAyD;aACzD,WAAW;IAGX;;;;OAIG;aACH,UAAU,EAAE,+BAA+B;IAC3C;;;;OAIG;aACH,KAAK,EAMA,UAAU,EAAE;CACT,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAWpB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAE7G,qEAAqE;AACrE,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAEjC,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAE9D,+EAA+E;AAC/E,sEAAsE;AACtE,0EAA0E;AAC1E,iEAAiE;AACjE,MAAM,iBAAiB,GAAG,SAAS,CAAC,SAAS,CAAC;AAC9C,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE;IAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAE7G,qEAAqE;AACrE,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAEjC,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE7C,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAE9D,+EAA+E;AAC/E,sEAAsE;AACtE,0EAA0E;AAC1E,iEAAiE;AACjE,MAAM,iBAAiB,GAAG,SAAS,CAAC,SAAS,CAAC;AAC9C,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE;IAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,gFAAgF;AAChF,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,uFAKzB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AASD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAqBrF"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,gFAAgF;AAChF,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,YACjC,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,CACN,CAAC;AAEX,0EAA0E;AAC1E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AASD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAqBrF"}