bcb-br-mcp 1.11.0 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -1
- package/README.pt-BR.md +17 -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/catalog.d.ts +6 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +16 -8
- package/dist/catalog.js.map +1 -1
- package/dist/deep-research.d.ts.map +1 -1
- package/dist/deep-research.js +11 -2
- package/dist/deep-research.js.map +1 -1
- package/dist/register.d.ts +9 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +9 -5
- package/dist/register.js.map +1 -1
- package/dist/stats.d.ts +14 -8
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +9 -0
- package/dist/stats.js.map +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +16 -3
- package/dist/tools.js.map +1 -1
- package/dist/vocabulario.d.ts +65 -0
- package/dist/vocabulario.d.ts.map +1 -0
- package/dist/vocabulario.js +78 -0
- package/dist/vocabulario.js.map +1 -0
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ The answers come live from the Brazilian Central Bank's SGS API — exact figure
|
|
|
64
64
|
| `bcb_serie_ultimos` | Get the last N values of a series (any N — the upstream cap of 20 is worked around) |
|
|
65
65
|
| `bcb_serie_metadados` | Get series metadata (name, frequency, category, last value) |
|
|
66
66
|
| `bcb_series_populares` | List popular series grouped by category |
|
|
67
|
-
| `bcb_buscar_serie` | Search series by name or description (accent-insensitive) |
|
|
67
|
+
| `bcb_buscar_serie` | Search series by name or description (accent-insensitive, AND between words; everyday words resolved to the BCB's wording, and the response says so) |
|
|
68
68
|
| `bcb_indicadores_atuais` | Latest values: Selic, IPCA, USD/BRL, IBC-Br |
|
|
69
69
|
| `bcb_variacao` | Percentage variation of one series over a period: level change for level series, **compounded accumulation** for series that are already period-on-period rates (IPCA, IGP-M, INPC…); `analise.metodo` says which |
|
|
70
70
|
| `bcb_comparar` | Compare 2 to 5 series over the same period with ranking (same level/compounding rule per series, declared in `metodo`) |
|
|
@@ -421,6 +421,22 @@ The SGS database contains over 18,000 time series. To find codes for other serie
|
|
|
421
421
|
3. Note the series code
|
|
422
422
|
4. Use that code with this server's tools
|
|
423
423
|
|
|
424
|
+
## Ask in your words, not the BCB's
|
|
425
|
+
|
|
426
|
+
`bcb_buscar_serie` matches your words, all of them (AND), against the curated catalogue (135 series: name and category) and the dataset slugs of the BCB open-data portal (3,579 series identified by code). Accents were already ignored; the word was not. Measured over both layers on 2026-09-16, fixed since 1.12.0: the everyday word is expanded to the BCB's own, and the response says so in `notasVocabulario`; zero results come with a way out.
|
|
427
|
+
|
|
428
|
+
| you ask | hits before (curated / portal) | the BCB writes | hits |
|
|
429
|
+
| --- | ---: | --- | ---: |
|
|
430
|
+
| `déficit`, `superávit` | 0 / 0 | resultado primário, resultado nominal | 1 / 26, 0 / 22 |
|
|
431
|
+
| `calote` | 0 / 0 | inadimplência | 6 / 484 |
|
|
432
|
+
| `juros básicos` | 0 / 0 | Selic | 5 / 7 |
|
|
433
|
+
| `desemprego` | 0 / 0 | desocupação | 1 / 0 |
|
|
434
|
+
| `arrecadação`, `gasto` | 0 / 0 | receita, despesa | 2 / 8, 0 / 8 |
|
|
435
|
+
| `investimento estrangeiro` | 0 / 0 | investimento direto | 1 / 12 |
|
|
436
|
+
| `conta corrente` | 0 / 0 | transações correntes | 1 / 5 |
|
|
437
|
+
|
|
438
|
+
Only measured pairs enter the table (`src/vocabulario.ts`): the word you ask with absent from both layers, the BCB's word present. What the BCB does not publish under any of these names stays out and still returns zero — `salário mínimo`, `ibovespa`, `bitcoin`, `meta de inflação` — because an alias for a series that does not exist promises what the source does not have; and `empréstimo` is not mapped to `crédito` on purpose (the portal already answers it with 45 datasets; the mapping would drown them in 2,000). The same table feeds the Deep Research `search` index.
|
|
439
|
+
|
|
424
440
|
## Technical Details
|
|
425
441
|
|
|
426
442
|
### Robustness
|
package/README.pt-BR.md
CHANGED
|
@@ -63,7 +63,7 @@ As respostas vêm ao vivo da API SGS do Banco Central — valores exatos com pro
|
|
|
63
63
|
| `bcb_serie_ultimos` | Obtém os últimos N valores de uma série (qualquer N — o teto de 20 da origem é contornado) |
|
|
64
64
|
| `bcb_serie_metadados` | Retorna nome, periodicidade, categoria e último valor de uma série |
|
|
65
65
|
| `bcb_series_populares` | Lista séries populares agrupadas por categoria |
|
|
66
|
-
| `bcb_buscar_serie` | Busca séries por nome ou descrição (aceita termos sem acento) |
|
|
66
|
+
| `bcb_buscar_serie` | Busca séries por nome ou descrição (aceita termos sem acento, AND entre palavras; a palavra de todo dia é traduzida para a do BCB, e a resposta diz que traduziu) |
|
|
67
67
|
| `bcb_indicadores_atuais` | Valores mais recentes: Selic, IPCA, Dólar, IBC-Br |
|
|
68
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 |
|
|
69
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`) |
|
|
@@ -420,6 +420,22 @@ O SGS possui mais de 18.000 séries temporais. Para encontrar o código de outra
|
|
|
420
420
|
3. Anote o código da série
|
|
421
421
|
4. Use esse código nas ferramentas deste servidor
|
|
422
422
|
|
|
423
|
+
## Pergunte com as suas palavras, não com as do BCB
|
|
424
|
+
|
|
425
|
+
`bcb_buscar_serie` casa as suas palavras, todas (AND), contra o catálogo curado (135 séries: nome e categoria) e os slugs dos datasets do Portal de Dados Abertos do BCB (3.579 séries identificadas por código). O acento já era ignorado; a palavra, não. Medido nas duas camadas em 16/09/2026 e consertado na 1.12.0: a palavra de todo dia é expandida para a do BCB, e a resposta diz isso em `notasVocabulario`; zero resultado vem com a saída.
|
|
426
|
+
|
|
427
|
+
| você pergunta | achava (curado / portal) | o BCB escreve | acha |
|
|
428
|
+
| --- | ---: | --- | ---: |
|
|
429
|
+
| `déficit`, `superávit` | 0 / 0 | resultado primário, resultado nominal | 1 / 26, 0 / 22 |
|
|
430
|
+
| `calote` | 0 / 0 | inadimplência | 6 / 484 |
|
|
431
|
+
| `juros básicos` | 0 / 0 | Selic | 5 / 7 |
|
|
432
|
+
| `desemprego` | 0 / 0 | desocupação | 1 / 0 |
|
|
433
|
+
| `arrecadação`, `gasto` | 0 / 0 | receita, despesa | 2 / 8, 0 / 8 |
|
|
434
|
+
| `investimento estrangeiro` | 0 / 0 | investimento direto | 1 / 12 |
|
|
435
|
+
| `conta corrente` | 0 / 0 | transações correntes | 1 / 5 |
|
|
436
|
+
|
|
437
|
+
Só entra par **medido** (`src/vocabulario.ts`): a palavra perguntada ausente das duas camadas, a palavra do BCB presente. O que o BCB não publica com nenhum desses nomes fica de fora e segue devolvendo zero — `salário mínimo`, `ibovespa`, `bitcoin`, `meta de inflação` — porque apelido para série inexistente promete o que a fonte não tem; e `empréstimo` não é mapeado para `crédito` de propósito (o portal já responde por ele com 45 datasets; o mapeamento os afogaria em 2 mil). A mesma tabela alimenta o índice de `search` (Deep Research).
|
|
438
|
+
|
|
423
439
|
## Características Técnicas
|
|
424
440
|
|
|
425
441
|
### Robustez
|
|
@@ -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
|
+
* `bcb_focus_expectativas`, com 42 erros em 116 chamadas. 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 (`indicador`, `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,CAcjD"}
|
|
@@ -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
|
+
* `bcb_focus_expectativas`, com 42 erros em 116 chamadas. 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 (`indicador`, `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/catalog.d.ts
CHANGED
|
@@ -105,9 +105,15 @@ export interface SerieEncontrada {
|
|
|
105
105
|
* série está nele, ela vem primeiro e com o nome bom, porque foi revisada à
|
|
106
106
|
* mão; o índice do portal entra depois, ordenado do slug mais curto (mais
|
|
107
107
|
* específico) para o mais longo, com desempate estável pelo código.
|
|
108
|
+
*
|
|
109
|
+
* Cada termo vira um OR das grafias que o BCB usa para ele (src/vocabulario.ts):
|
|
110
|
+
* quem escreve "deficit" ou "calote" casa "resultado primario" e
|
|
111
|
+
* "inadimplencia" em vez de receber zero calado; stopwords ("taxa DE juros")
|
|
112
|
+
* ficam fora do AND. O `notas` devolvido diz quando houve tradução.
|
|
108
113
|
*/
|
|
109
114
|
export declare function buscarSeries(termo: string, curadoria: SeriePopular[], entradas: EntradaCatalogo[] | null, limite: number): {
|
|
110
115
|
total: number;
|
|
111
116
|
series: SerieEncontrada[];
|
|
117
|
+
notas: string[];
|
|
112
118
|
};
|
|
113
119
|
//# sourceMappingURL=catalog.d.ts.map
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,iBAAiB,8DAA8D,CAAC;AAC7F,eAAO,MAAM,iBAAiB,4CAA4C,CAAC;AAE3E,gEAAgE;AAChE,eAAO,MAAM,eAAe,QAAsB,CAAC;AAEnD,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,iDAAiD;AACjD,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAkBvG;AAwBD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyCvG;AAID,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,YAAY,EAAE,EACzB,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,EAClC,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CA6B/D"}
|
package/dist/catalog.js
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
// `tools.ts`) para a busca ser testável sem estado global e para não haver ciclo
|
|
32
32
|
// entre os módulos de tool.
|
|
33
33
|
import { fetchBcbApi, normalizeString, registrarAcesso } from "./shared.js";
|
|
34
|
+
import { casaBusca, expandirBusca, normalizar, notasDeVocabulario } from "./vocabulario.js";
|
|
34
35
|
export const CKAN_PACKAGE_LIST = "https://dadosabertos.bcb.gov.br/api/3/action/package_list";
|
|
35
36
|
export const CKAN_DATASET_BASE = "https://dadosabertos.bcb.gov.br/dataset";
|
|
36
37
|
/** Validade do catálogo em cache: 24 h (decisão do decisor). */
|
|
@@ -188,29 +189,36 @@ function comoEncontradaDoIndice(entrada) {
|
|
|
188
189
|
* série está nele, ela vem primeiro e com o nome bom, porque foi revisada à
|
|
189
190
|
* mão; o índice do portal entra depois, ordenado do slug mais curto (mais
|
|
190
191
|
* específico) para o mais longo, com desempate estável pelo código.
|
|
192
|
+
*
|
|
193
|
+
* Cada termo vira um OR das grafias que o BCB usa para ele (src/vocabulario.ts):
|
|
194
|
+
* quem escreve "deficit" ou "calote" casa "resultado primario" e
|
|
195
|
+
* "inadimplencia" em vez de receber zero calado; stopwords ("taxa DE juros")
|
|
196
|
+
* ficam fora do AND. O `notas` devolvido diz quando houve tradução.
|
|
191
197
|
*/
|
|
192
198
|
export function buscarSeries(termo, curadoria, entradas, limite) {
|
|
193
199
|
const termoNorm = normalizeString(termo).trim();
|
|
194
|
-
const tokens = termoNorm.split(/\s+/).filter(Boolean);
|
|
195
200
|
// Busca por código: "433" deve achar a série 433, não as que contêm "433".
|
|
196
201
|
if (/^\d+$/.test(termoNorm)) {
|
|
197
202
|
const codigo = Number(termoNorm);
|
|
198
203
|
const curada = curadoria.find(s => s.codigo === codigo);
|
|
199
204
|
if (curada)
|
|
200
|
-
return { total: 1, series: [comoEncontrada(curada)] };
|
|
205
|
+
return { total: 1, series: [comoEncontrada(curada)], notas: [] };
|
|
201
206
|
const doIndice = entradas?.find(e => e.codigo === codigo);
|
|
202
207
|
if (doIndice)
|
|
203
|
-
return { total: 1, series: [comoEncontradaDoIndice(doIndice)] };
|
|
204
|
-
return { total: 0, series: [] };
|
|
208
|
+
return { total: 1, series: [comoEncontradaDoIndice(doIndice)], notas: [] };
|
|
209
|
+
return { total: 0, series: [], notas: [] };
|
|
205
210
|
}
|
|
206
|
-
const
|
|
207
|
-
|
|
211
|
+
const expandidos = expandirBusca(termoNorm);
|
|
212
|
+
// O slug do portal separa palavras por "-": normalizar para espaço, senão
|
|
213
|
+
// "resultado primario" (frase da tabela) nunca casaria "resultado-primario".
|
|
214
|
+
const casa = (texto) => casaBusca(normalizar(texto.replace(/-+/g, " ")), expandidos);
|
|
215
|
+
const curadas = curadoria.filter(s => casa(s.nome) || casa(s.categoria));
|
|
208
216
|
const codigosCurados = new Set(curadas.map(s => s.codigo));
|
|
209
217
|
const doIndice = (entradas ?? [])
|
|
210
|
-
.filter(e => !codigosCurados.has(e.codigo) &&
|
|
218
|
+
.filter(e => !codigosCurados.has(e.codigo) && casa(e.slug))
|
|
211
219
|
.sort((a, b) => a.slug.length - b.slug.length || a.codigo - b.codigo);
|
|
212
220
|
const total = curadas.length + doIndice.length;
|
|
213
221
|
const series = [...curadas.map(comoEncontrada), ...doIndice.map(comoEncontradaDoIndice)].slice(0, limite);
|
|
214
|
-
return { total, series };
|
|
222
|
+
return { total, series, notas: notasDeVocabulario(expandidos) };
|
|
215
223
|
}
|
|
216
224
|
//# sourceMappingURL=catalog.js.map
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,gFAAgF;AAChF,iFAAiF;AACjF,4BAA4B;AAC5B,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EAGhB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,gFAAgF;AAChF,iFAAiF;AACjF,4BAA4B;AAC5B,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EAGhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,2DAA2D,CAAC;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAE3E,gEAAgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAuBnD,IAAI,KAAK,GAA4B,IAAI,CAAC;AAC1C,iFAAiF;AACjF,IAAI,cAAc,GAAqC,IAAI,CAAC;AAE5D,iDAAiD;AACjD,MAAM,UAAU,cAAc;IAC5B,KAAK,GAAG,IAAI,CAAC;IACb,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,QAA0B;IACtD,KAAK,GAAG,QAAQ,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9E,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC;SACnC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,8BAA8B;SACnD,KAAK,CAAC,OAAO,CAAC,CAAC,iDAAiD;SAChE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SAClE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IAErE,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAClE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,SAAkB,EAAE,UAAmB;IAC5D,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,CAAC,CAG5E,CAAC;IAEF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IAE/G,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO;QACL,QAAQ;QACR,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;QACvC,aAAa;QACb,QAAQ,EAAE,KAAK,GAAG,eAAe;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAkB,EAAE,UAAmB;IACzE,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzC,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,sEAAsE;QACtE,eAAe,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC;aAC5C,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,KAAK,GAAG,QAAQ,CAAC;YACjB,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,KAAK,EAAE,CAAC;YACV,uEAAuE;YACvE,4DAA4D;YAC5D,eAAe,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACnE,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,KAAK,EACH,wDAAwD,KAAK,CAAC,QAAQ,MAAM;oBAC5E,uBAAuB,MAAM,EAAE;aAClC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,kCAAkC,MAAM,iDAAiD;SACjG,CAAC;IACJ,CAAC;AACH,CAAC;AAuBD,SAAS,cAAc,CAAC,KAAmB;IACzC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAwB;IACtD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,GAAG,iBAAiB,IAAI,OAAO,CAAC,IAAI,EAAE;KAChD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,SAAyB,EACzB,QAAkC,EAClC,MAAc;IAEd,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhD,2EAA2E;IAC3E,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACxD,IAAI,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC7E,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC1D,IAAI,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACzF,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE7F,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC1D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAExE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE1G,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAGrG,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;AA2HD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CAyHhF"}
|
package/dist/deep-research.js
CHANGED
|
@@ -34,6 +34,7 @@ import { CKAN_DATASET_BASE, CKAN_PACKAGE_LIST, nomeDoSlug, obterCatalogo } from
|
|
|
34
34
|
import { provenienciaBcb, resultadoComProveniencia } from "./provenance.js";
|
|
35
35
|
import { BCB_SGS_BASE } from "./series.js";
|
|
36
36
|
import { leituraRemota } from "./shared.js";
|
|
37
|
+
import { palavrasPerguntadas } from "./vocabulario.js";
|
|
37
38
|
export { DEEP_RESEARCH_TOOLS };
|
|
38
39
|
/** Teto de resultados do `search` (o contrato pede uma lista curta e relevante). */
|
|
39
40
|
export const DEEP_RESEARCH_LIMIT = 10;
|
|
@@ -66,7 +67,15 @@ function construirAcervo(seriesPopulares, snapshot) {
|
|
|
66
67
|
id: idDe(s.codigo),
|
|
67
68
|
title: s.nome,
|
|
68
69
|
url: slug ? `${CKAN_DATASET_BASE}/${slug}` : urlConsultaPublica(s.codigo),
|
|
69
|
-
keywords: [
|
|
70
|
+
keywords: [
|
|
71
|
+
String(s.codigo),
|
|
72
|
+
s.categoria,
|
|
73
|
+
s.periodicidade,
|
|
74
|
+
...(s.unidade ? [s.unidade] : []),
|
|
75
|
+
// A palavra com que se PERGUNTA, quando difere da que o BCB escreve
|
|
76
|
+
// ("deficit" para o resultado primário) — src/vocabulario.ts.
|
|
77
|
+
...palavrasPerguntadas(`${s.nome} ${s.categoria}`)
|
|
78
|
+
],
|
|
70
79
|
codigo: s.codigo,
|
|
71
80
|
origem: "curado"
|
|
72
81
|
});
|
|
@@ -79,7 +88,7 @@ function construirAcervo(seriesPopulares, snapshot) {
|
|
|
79
88
|
id: idDe(e.codigo),
|
|
80
89
|
title: nomeDoSlug(e.slug),
|
|
81
90
|
url: `${CKAN_DATASET_BASE}/${e.slug}`,
|
|
82
|
-
keywords: [String(e.codigo)],
|
|
91
|
+
keywords: [String(e.codigo), ...palavrasPerguntadas(nomeDoSlug(e.slug))],
|
|
83
92
|
codigo: e.codigo,
|
|
84
93
|
origem: "indice"
|
|
85
94
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-research.js","sourceRoot":"","sources":["../src/deep-research.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,yBAAyB,EAO1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAyB,MAAM,cAAc,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAqB,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAA2D,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"deep-research.js","sourceRoot":"","sources":["../src/deep-research.ts"],"names":[],"mappings":"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"}
|
package/dist/register.d.ts
CHANGED
|
@@ -38,7 +38,15 @@ import { McpServer } from "@modelcontextprotocol/server";
|
|
|
38
38
|
* Worker passes its UsageTracker recorder. Names and counts only — never
|
|
39
39
|
* arguments, never results.
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
/**
|
|
42
|
+
* A FORMA da chamada, quando o chamador sabe informá-la: nomes dos parâmetros
|
|
43
|
+
* e classe do erro. Opcional — o stdio não passa recorder. Ver src/call-shape.ts.
|
|
44
|
+
*/
|
|
45
|
+
export interface FormaDaChamada {
|
|
46
|
+
params: string;
|
|
47
|
+
classe: string;
|
|
48
|
+
}
|
|
49
|
+
export type ToolUsageRecorder = (kind: "tool_call" | "tool_error", name: string, forma?: FormaDaChamada) => void;
|
|
42
50
|
export interface RegisterOptions {
|
|
43
51
|
/** Per-transport timeout/retry budget (the Worker uses a tighter one). */
|
|
44
52
|
config?: {
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,SAAS,EAOV,MAAM,8BAA8B,CAAC;AA4CtC;;;;;GAKG;AACH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,WAAW,GAAG,YAAY,EAChC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,cAAc,KACnB,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAgElF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,SAAS,CAiBtF"}
|
package/dist/register.js
CHANGED
|
@@ -39,6 +39,7 @@ import { McpServer, fromJsonSchema } from "@modelcontextprotocol/server";
|
|
|
39
39
|
// interpreta o schema em vez de gerar código, funciona igual no Node, e assim
|
|
40
40
|
// os dois transportes validam exatamente da mesma forma.
|
|
41
41
|
import { CfWorkerJsonSchemaValidator } from "@modelcontextprotocol/server/validators/cf-worker";
|
|
42
|
+
import { classifyError, errorText, paramNames } from "./call-shape.js";
|
|
42
43
|
import { announceServedVersions } from "./discover.js";
|
|
43
44
|
import { SERVER_IDENTITY, SERVER_INSTRUCTIONS } from "./identity.js";
|
|
44
45
|
import { TOOL_DEFINITIONS, RESOURCE_DEFINITIONS, PROMPT_DEFINITIONS, dispatchTool, CONFIG } from "./tools.js";
|
|
@@ -83,17 +84,20 @@ export function registerAll(server, options = {}) {
|
|
|
83
84
|
}, async (args) => {
|
|
84
85
|
try {
|
|
85
86
|
const result = await dispatchTool(tool.name, (args ?? {}), config.TIMEOUT_MS, config.MAX_RETRIES);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
const forma = { params: paramNames(args), classe: "" };
|
|
88
|
+
record?.("tool_call", tool.name, forma);
|
|
89
|
+
if (result.isError === true) {
|
|
90
|
+
record?.("tool_error", tool.name, { ...forma, classe: classifyError(errorText(result)) });
|
|
91
|
+
}
|
|
89
92
|
return result;
|
|
90
93
|
}
|
|
91
94
|
catch (error) {
|
|
92
95
|
// Handlers already trap their own failures; this is the last resort
|
|
93
96
|
// so an unexpected throw never breaks the transport.
|
|
94
97
|
const message = error instanceof Error ? error.message : String(error);
|
|
95
|
-
|
|
96
|
-
record?.("
|
|
98
|
+
const forma = { params: paramNames(args), classe: classifyError(message) };
|
|
99
|
+
record?.("tool_call", tool.name, forma);
|
|
100
|
+
record?.("tool_error", tool.name, forma);
|
|
97
101
|
return {
|
|
98
102
|
content: [{ type: "text", text: `Erro ao executar a tool "${tool.name}": ${message}` }],
|
|
99
103
|
isError: true
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,SAAS,EACT,cAAc,EAMf,MAAM,8BAA8B,CAAC;AACtC,yEAAyE;AACzE,uEAAuE;AACvE,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,yDAAyD;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|
package/dist/stats.d.ts
CHANGED
|
@@ -31,14 +31,20 @@ export declare const CASAS_DERIVADAS = 4;
|
|
|
31
31
|
/** Arredonda um valor DERIVADO. Não use em valor vindo da fonte. */
|
|
32
32
|
export declare function arredondarDerivado(valor: number): number;
|
|
33
33
|
export interface EstatisticasSerie {
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
/**
|
|
35
|
+
* `null` quando a série vem VAZIA: máximo, mínimo, média e amplitude de
|
|
36
|
+
* nenhuma observação são indefinidos, não zero. Zero aqui sairia na resposta
|
|
37
|
+
* com cara de medida do BCB — "a Selic variou de 0 a 0 no período" — sobre uma
|
|
38
|
+
* consulta que não trouxe ponto nenhum. Segue a convenção do motor comum
|
|
39
|
+
* (`@sbissoli/mcp-stats` >= 0.3.0), que devolve `null` + `reason` no vazio.
|
|
40
|
+
*/
|
|
41
|
+
maximo: number | null;
|
|
42
|
+
/** Verbatim da fonte; `null` na série vazia. */
|
|
43
|
+
minimo: number | null;
|
|
44
|
+
/** Derivado, 4 casas; `null` na série vazia. */
|
|
45
|
+
media: number | null;
|
|
46
|
+
/** Derivado, 4 casas; `null` na série vazia. */
|
|
47
|
+
amplitude: number | null;
|
|
42
48
|
/** Observações consideradas. */
|
|
43
49
|
n: number;
|
|
44
50
|
}
|
package/dist/stats.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAoC,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,+DAA+D;AAC/D,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,MAAM,WAAW,iBAAiB;IAChC
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAoC,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,+DAA+D;AAC/D,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gDAAgD;IAChD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gDAAgD;IAChD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gCAAgC;IAChC,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAoBxE;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAIhE;AAID,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8BAA8B;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA2BD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,EACpD,MAAM,EAAE,gBAAgB,GACvB,qBAAqB,CAmBvB;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GACnD,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQ/C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;aAChC,OAAO;aACP,KAAK,EAAE,qBAAqB;aAC5B,IAAI;CAKI,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;aACjC,OAAO;aACP,KAAK,EAAE,qBAAqB;aAC5B,IAAI;CAOI,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;aAC/B,OAAO;aACP,KAAK,EAAE,qBAAqB;aAC5B,IAAI;CAUI,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;aAC7B,OAAO;aACP,KAAK,EAAE,YAAY;aACnB,IAAI;CAQI,CAAC"}
|