bcb-br-mcp 1.14.1 → 1.15.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 +1 -0
- package/README.pt-BR.md +1 -0
- package/dist/call-shape.d.ts +34 -0
- package/dist/call-shape.d.ts.map +1 -1
- package/dist/call-shape.js +40 -0
- package/dist/call-shape.js.map +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +6 -3
- package/dist/catalog.js.map +1 -1
- package/dist/provenance.d.ts +62 -3
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js +34 -27
- package/dist/provenance.js.map +1 -1
- package/dist/shared.d.ts +27 -28
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +170 -157
- package/dist/shared.js.map +1 -1
- package/dist/tools.d.ts +5 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +8 -4
- package/dist/tools.js.map +1 -1
- package/package.json +10 -4
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
[](https://github.com/sponsors/SidneyBissoli)
|
|
11
11
|
[](https://opensource.org/licenses/MIT)
|
|
12
12
|
[](https://allmcps.com/mcp/sidneybissoli-bcb-br-mcp)
|
|
13
|
+
[](https://mcpindex.ai/server/io-github-sidneybissoli-bcb-br-mcp)
|
|
13
14
|
|
|
14
15
|
[Leia em Português](README.pt-BR.md)
|
|
15
16
|
|
package/README.pt-BR.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
[](https://github.com/SidneyBissoli/bcb-br-mcp)
|
|
10
10
|
[](https://github.com/sponsors/SidneyBissoli)
|
|
11
11
|
[](https://opensource.org/licenses/MIT)
|
|
12
|
+
[](https://mcpindex.ai/server/io-github-sidneybissoli-bcb-br-mcp)
|
|
12
13
|
|
|
13
14
|
[Read in English](README.md)
|
|
14
15
|
|
package/dist/call-shape.d.ts
CHANGED
|
@@ -90,4 +90,38 @@ export declare function errorText(result: unknown): string;
|
|
|
90
90
|
* do erro que NÓS escrevemos.
|
|
91
91
|
*/
|
|
92
92
|
export declare function classifyThrown(error: unknown): ErrorClass;
|
|
93
|
+
/**
|
|
94
|
+
* Classe de um erro JSON-RPC do PROTOCOLO, pelo código antes da mensagem.
|
|
95
|
+
*
|
|
96
|
+
* POR QUE ELE CHEGA AQUI AGORA. Até 24/09/2026 este arquivo só era chamado de
|
|
97
|
+
* dentro do handler, com a exceção da tool na mão — e o cabeçalho acima ainda
|
|
98
|
+
* registra o limite daquele desenho: *erro de validação de esquema NÃO chega a
|
|
99
|
+
* esta camada; o SDK o responde antes do handler, e a chamada não é contada nem
|
|
100
|
+
* como chamada nem como erro*. Era verdade, e era o defeito: a recusa de esquema
|
|
101
|
+
* não gerava linha NENHUMA de telemetria. Medido na produção em 24/09/2026 pela
|
|
102
|
+
* rota do dono, ela sai como HTTP **200** com `result.isError: true` e sem
|
|
103
|
+
* código JSON-RPC; e ferramenta inexistente sai como **200** com o código
|
|
104
|
+
* **−32602** (não −32601, como se supunha). Desde então a telemetria lê o
|
|
105
|
+
* ENVELOPE da resposta (src/envelope.ts) e estes casos passam a existir.
|
|
106
|
+
*
|
|
107
|
+
* Os códigos reservados pela especificação JSON-RPC 2.0 dizem, sem ambiguidade
|
|
108
|
+
* de idioma, de quem é o conserto:
|
|
109
|
+
*
|
|
110
|
+
* - −32700 parse error, −32600 invalid request, −32601 method not found e
|
|
111
|
+
* −32602 invalid params são o CHAMADOR mandando algo que o protocolo
|
|
112
|
+
* recusa. É `contrato` — e o painel exclui `contrato` da taxa de erro
|
|
113
|
+
* (`eh_recusa_de_contrato()`), porque ferramenta que recusa chamada
|
|
114
|
+
* malformada está funcionando;
|
|
115
|
+
* - −32603 internal error é erro NOSSO, que escapou. É `defeito`, e por
|
|
116
|
+
* decisão do dono em 24/09/2026 ele entra na fila de saúde do painel: sem
|
|
117
|
+
* isso passaríamos a medir e continuaríamos a não agir.
|
|
118
|
+
*
|
|
119
|
+
* Código fora dessa faixa (erro definido pelo servidor, −32000 e abaixo) cai
|
|
120
|
+
* na mensagem, que é o caminho de `classifyError`.
|
|
121
|
+
*
|
|
122
|
+
* Cópia FIEL de sih-br-mcp/worker/src/call-shape.ts, onde a função estreou:
|
|
123
|
+
* classe medida por servidor com classificador diferente não é comparável, e
|
|
124
|
+
* comparar os sete é a razão de existir da seção de saúde do painel.
|
|
125
|
+
*/
|
|
126
|
+
export declare function classeDoErroRpc(code: number | undefined, message: string): ErrorClass;
|
|
93
127
|
//# sourceMappingURL=call-shape.d.ts.map
|
package/dist/call-shape.d.ts.map
CHANGED
|
@@ -1 +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,mFAAmF;GACjF,SAAS;AACX,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;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAUzD"}
|
|
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,mFAAmF;GACjF,SAAS;AACX,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;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAUzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAIrF"}
|
package/dist/call-shape.js
CHANGED
|
@@ -166,4 +166,44 @@ export function classifyThrown(error) {
|
|
|
166
166
|
}
|
|
167
167
|
return classifyError(error instanceof Error ? error.message : String(error));
|
|
168
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Classe de um erro JSON-RPC do PROTOCOLO, pelo código antes da mensagem.
|
|
171
|
+
*
|
|
172
|
+
* POR QUE ELE CHEGA AQUI AGORA. Até 24/09/2026 este arquivo só era chamado de
|
|
173
|
+
* dentro do handler, com a exceção da tool na mão — e o cabeçalho acima ainda
|
|
174
|
+
* registra o limite daquele desenho: *erro de validação de esquema NÃO chega a
|
|
175
|
+
* esta camada; o SDK o responde antes do handler, e a chamada não é contada nem
|
|
176
|
+
* como chamada nem como erro*. Era verdade, e era o defeito: a recusa de esquema
|
|
177
|
+
* não gerava linha NENHUMA de telemetria. Medido na produção em 24/09/2026 pela
|
|
178
|
+
* rota do dono, ela sai como HTTP **200** com `result.isError: true` e sem
|
|
179
|
+
* código JSON-RPC; e ferramenta inexistente sai como **200** com o código
|
|
180
|
+
* **−32602** (não −32601, como se supunha). Desde então a telemetria lê o
|
|
181
|
+
* ENVELOPE da resposta (src/envelope.ts) e estes casos passam a existir.
|
|
182
|
+
*
|
|
183
|
+
* Os códigos reservados pela especificação JSON-RPC 2.0 dizem, sem ambiguidade
|
|
184
|
+
* de idioma, de quem é o conserto:
|
|
185
|
+
*
|
|
186
|
+
* - −32700 parse error, −32600 invalid request, −32601 method not found e
|
|
187
|
+
* −32602 invalid params são o CHAMADOR mandando algo que o protocolo
|
|
188
|
+
* recusa. É `contrato` — e o painel exclui `contrato` da taxa de erro
|
|
189
|
+
* (`eh_recusa_de_contrato()`), porque ferramenta que recusa chamada
|
|
190
|
+
* malformada está funcionando;
|
|
191
|
+
* - −32603 internal error é erro NOSSO, que escapou. É `defeito`, e por
|
|
192
|
+
* decisão do dono em 24/09/2026 ele entra na fila de saúde do painel: sem
|
|
193
|
+
* isso passaríamos a medir e continuaríamos a não agir.
|
|
194
|
+
*
|
|
195
|
+
* Código fora dessa faixa (erro definido pelo servidor, −32000 e abaixo) cai
|
|
196
|
+
* na mensagem, que é o caminho de `classifyError`.
|
|
197
|
+
*
|
|
198
|
+
* Cópia FIEL de sih-br-mcp/worker/src/call-shape.ts, onde a função estreou:
|
|
199
|
+
* classe medida por servidor com classificador diferente não é comparável, e
|
|
200
|
+
* comparar os sete é a razão de existir da seção de saúde do painel.
|
|
201
|
+
*/
|
|
202
|
+
export function classeDoErroRpc(code, message) {
|
|
203
|
+
if (code === -32700 || code === -32600 || code === -32601 || code === -32602)
|
|
204
|
+
return "contrato";
|
|
205
|
+
if (code === -32603)
|
|
206
|
+
return "defeito";
|
|
207
|
+
return classifyError(message);
|
|
208
|
+
}
|
|
169
209
|
//# sourceMappingURL=call-shape.js.map
|
package/dist/call-shape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"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"}
|
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;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,OAAO,EAGL,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,CA2CvG;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
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
// Só primitivos: a curadoria de séries entra por parâmetro (e não por import de
|
|
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
|
-
import {
|
|
33
|
+
import { currentCall } from "@sbissoli/mcp-upstream/als";
|
|
34
|
+
import { fetchBcbApi, normalizeString } from "./shared.js";
|
|
34
35
|
import { casaBusca, expandirBusca, normalizar, notasDeVocabulario } from "./vocabulario.js";
|
|
35
36
|
export const CKAN_PACKAGE_LIST = "https://dadosabertos.bcb.gov.br/api/3/action/package_list";
|
|
36
37
|
export const CKAN_DATASET_BASE = "https://dadosabertos.bcb.gov.br/dataset";
|
|
@@ -132,7 +133,9 @@ export async function obterCatalogo(timeoutMs, maxRetries) {
|
|
|
132
133
|
// ser de até 24 h atrás — e é essa a data juridicamente relevante. Sem este
|
|
133
134
|
// registro o bloco de proveniência afirmaria uma extração que não houve
|
|
134
135
|
// (medido em `bcb/docs/07`: a 2ª busca responde com ZERO requisição).
|
|
135
|
-
|
|
136
|
+
// Acerto de cache não é ida à origem: entra em `retrieved_at` e em
|
|
137
|
+
// `served_from_cache`, nunca em `retrieval`.
|
|
138
|
+
currentCall()?.recordCache(CKAN_PACKAGE_LIST, cache.obtidoEm);
|
|
136
139
|
return { snapshot: cache };
|
|
137
140
|
}
|
|
138
141
|
if (!renovacaoEmVoo) {
|
|
@@ -153,7 +156,7 @@ export async function obterCatalogo(timeoutMs, maxRetries) {
|
|
|
153
156
|
if (cache) {
|
|
154
157
|
// Retrato VENCIDO servido por degradação — a extração segue sendo a do
|
|
155
158
|
// fetch original, e agora ela é ainda mais antiga que 24 h.
|
|
156
|
-
|
|
159
|
+
currentCall()?.recordCache(CKAN_PACKAGE_LIST, cache.obtidoEm);
|
|
157
160
|
return {
|
|
158
161
|
snapshot: cache,
|
|
159
162
|
aviso: `Índice do portal servido de cache VENCIDO (obtido em ${cache.obtidoEm}) — ` +
|
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,
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/provenance.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bloco de proveniência (contrato v1.
|
|
2
|
+
* Bloco de proveniência (contrato v1.1 do portfólio) — adaptador pt-BR sobre
|
|
3
3
|
* `@sbissoli/mcp-provenance`. O modelo canônico, as projeções
|
|
4
4
|
* `concise`/`detailed`, o determinismo da serialização, o fuso e o texto do
|
|
5
5
|
* rodapé moram no pacote; este módulo o amarra ao servidor do BCB:
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
* - um `ProvenanceContext` para o servidor inteiro (namespace
|
|
8
8
|
* `br.com.sidneybissoli.bcb`, pt-BR, horário de Brasília, modo `concise`);
|
|
9
9
|
* - o registro `FONTES_BCB` — uma entrada por procedência, não por API;
|
|
10
|
-
* - `provenienciaBcb(...)`, o construtor por chamada, que puxa
|
|
11
|
-
*
|
|
10
|
+
* - `provenienciaBcb(...)`, o construtor por chamada, que puxa do coletor
|
|
11
|
+
* aberto no `dispatchTool` (`@sbissoli/mcp-upstream`, via `shared.ts`) o
|
|
12
|
+
* instante REAL da extração e, desde a 1.15.0, o `retrieval` — a contagem
|
|
13
|
+
* real de idas, tentativas e anomalias desta chamada (diagnóstico de origem).
|
|
12
14
|
*
|
|
13
15
|
* ## Por que o registro NÃO é "uma entrada por API"
|
|
14
16
|
*
|
|
@@ -226,6 +228,14 @@ export interface OpcoesProveniencia {
|
|
|
226
228
|
* filtrados pelos acessos daquela fonte: o instante mais ANTIGO, e cache só se
|
|
227
229
|
* TUDO veio de cache (`bcb/docs/07`, S1 e S4). Sem coletor aberto — chamada
|
|
228
230
|
* direta em teste — degrada para o instante da chamada, nunca quebra.
|
|
231
|
+
*
|
|
232
|
+
* `retrieval` (contrato v1.1) é a contagem REAL de idas, tentativas e anomalias
|
|
233
|
+
* da chamada, medida pelo próprio coletor (`@sbissoli/mcp-upstream`), e sai
|
|
234
|
+
* `null` quando não há o que medir: fonte sem endpoint (o catálogo curado é
|
|
235
|
+
* dado do servidor), resposta servida só de cache, ou coletor não aberto. Nunca
|
|
236
|
+
* um `{requests: 1, attempts: 1}` inventado — `null` é "não medido", não "foi
|
|
237
|
+
* limpo". O bloco é por chamada e nenhuma tool mistura APIs, então o mesmo
|
|
238
|
+
* `retrieval` vale para toda fonte com endpoint da resposta.
|
|
229
239
|
*/
|
|
230
240
|
export declare function provenienciaBcb(opts: OpcoesProveniencia): Proveniencia;
|
|
231
241
|
/** Nota fixa das tools que calculam (o motor mora no `@sbissoli/mcp-stats`). */
|
|
@@ -265,6 +275,54 @@ export declare const PROVENANCE_BLOCK_SCHEMA: {
|
|
|
265
275
|
type: "string";
|
|
266
276
|
description: string;
|
|
267
277
|
};
|
|
278
|
+
retrieval: {
|
|
279
|
+
oneOf: ({
|
|
280
|
+
type: "object";
|
|
281
|
+
description: string;
|
|
282
|
+
properties: {
|
|
283
|
+
requests: {
|
|
284
|
+
type: "integer";
|
|
285
|
+
minimum: number;
|
|
286
|
+
description: string;
|
|
287
|
+
};
|
|
288
|
+
attempts: {
|
|
289
|
+
type: "integer";
|
|
290
|
+
minimum: number;
|
|
291
|
+
description: string;
|
|
292
|
+
};
|
|
293
|
+
anomalies: {
|
|
294
|
+
type: "array";
|
|
295
|
+
description: string;
|
|
296
|
+
items: {
|
|
297
|
+
type: "object";
|
|
298
|
+
properties: {
|
|
299
|
+
kind: {
|
|
300
|
+
type: "string";
|
|
301
|
+
enum: ("http_4xx" | "http_5xx" | "malformed_body" | "network" | "rate_limited" | "timeout")[];
|
|
302
|
+
description: string;
|
|
303
|
+
};
|
|
304
|
+
count: {
|
|
305
|
+
type: "integer";
|
|
306
|
+
minimum: number;
|
|
307
|
+
description: string;
|
|
308
|
+
};
|
|
309
|
+
};
|
|
310
|
+
required: string[];
|
|
311
|
+
additionalProperties: false;
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
unstable: {
|
|
315
|
+
type: "boolean";
|
|
316
|
+
description: string;
|
|
317
|
+
};
|
|
318
|
+
};
|
|
319
|
+
required: string[];
|
|
320
|
+
additionalProperties: false;
|
|
321
|
+
} | {
|
|
322
|
+
type: "null";
|
|
323
|
+
})[];
|
|
324
|
+
description: string;
|
|
325
|
+
};
|
|
268
326
|
citation: {
|
|
269
327
|
type: "string";
|
|
270
328
|
description: string;
|
|
@@ -275,6 +333,7 @@ export declare const PROVENANCE_BLOCK_SCHEMA: {
|
|
|
275
333
|
};
|
|
276
334
|
};
|
|
277
335
|
required: string[];
|
|
336
|
+
additionalProperties: false;
|
|
278
337
|
};
|
|
279
338
|
type SchemaObjeto = Record<string, unknown>;
|
|
280
339
|
/**
|
package/dist/provenance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
|
package/dist/provenance.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bloco de proveniência (contrato v1.
|
|
2
|
+
* Bloco de proveniência (contrato v1.1 do portfólio) — adaptador pt-BR sobre
|
|
3
3
|
* `@sbissoli/mcp-provenance`. O modelo canônico, as projeções
|
|
4
4
|
* `concise`/`detailed`, o determinismo da serialização, o fuso e o texto do
|
|
5
5
|
* rodapé moram no pacote; este módulo o amarra ao servidor do BCB:
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
* - um `ProvenanceContext` para o servidor inteiro (namespace
|
|
8
8
|
* `br.com.sidneybissoli.bcb`, pt-BR, horário de Brasília, modo `concise`);
|
|
9
9
|
* - o registro `FONTES_BCB` — uma entrada por procedência, não por API;
|
|
10
|
-
* - `provenienciaBcb(...)`, o construtor por chamada, que puxa
|
|
11
|
-
*
|
|
10
|
+
* - `provenienciaBcb(...)`, o construtor por chamada, que puxa do coletor
|
|
11
|
+
* aberto no `dispatchTool` (`@sbissoli/mcp-upstream`, via `shared.ts`) o
|
|
12
|
+
* instante REAL da extração e, desde a 1.15.0, o `retrieval` — a contagem
|
|
13
|
+
* real de idas, tentativas e anomalias desta chamada (diagnóstico de origem).
|
|
12
14
|
*
|
|
13
15
|
* ## Por que o registro NÃO é "uma entrada por API"
|
|
14
16
|
*
|
|
@@ -38,8 +40,9 @@
|
|
|
38
40
|
* (`structuredResult`) — anexar rodapé produziria um bloco de texto que não é
|
|
39
41
|
* JSON válido. O bloco já vai no texto, dentro do payload.
|
|
40
42
|
*/
|
|
41
|
-
import { attributionList, createProvenanceContext, renderConcise } from "@sbissoli/mcp-provenance";
|
|
42
|
-
import {
|
|
43
|
+
import { CONCISE_BLOCK_JSON_SCHEMA, attributionList, createProvenanceContext, renderConcise } from "@sbissoli/mcp-provenance";
|
|
44
|
+
import { currentCall } from "@sbissoli/mcp-upstream/als";
|
|
45
|
+
import { DISCLAIMER_PTAX, QUALIFICACAO_PARIDADE, structuredResult } from "./shared.js";
|
|
43
46
|
/** Contexto único do servidor: namespace de `_meta`, idioma, fuso e modo. */
|
|
44
47
|
export const provenanceContext = createProvenanceContext({
|
|
45
48
|
metaNamespace: "br.com.sidneybissoli.bcb",
|
|
@@ -181,11 +184,25 @@ function dataCitacao(instante) {
|
|
|
181
184
|
* filtrados pelos acessos daquela fonte: o instante mais ANTIGO, e cache só se
|
|
182
185
|
* TUDO veio de cache (`bcb/docs/07`, S1 e S4). Sem coletor aberto — chamada
|
|
183
186
|
* direta em teste — degrada para o instante da chamada, nunca quebra.
|
|
187
|
+
*
|
|
188
|
+
* `retrieval` (contrato v1.1) é a contagem REAL de idas, tentativas e anomalias
|
|
189
|
+
* da chamada, medida pelo próprio coletor (`@sbissoli/mcp-upstream`), e sai
|
|
190
|
+
* `null` quando não há o que medir: fonte sem endpoint (o catálogo curado é
|
|
191
|
+
* dado do servidor), resposta servida só de cache, ou coletor não aberto. Nunca
|
|
192
|
+
* um `{requests: 1, attempts: 1}` inventado — `null` é "não medido", não "foi
|
|
193
|
+
* limpo". O bloco é por chamada e nenhuma tool mistura APIs, então o mesmo
|
|
194
|
+
* `retrieval` vale para toda fonte com endpoint da resposta.
|
|
184
195
|
*/
|
|
185
196
|
export function provenienciaBcb(opts) {
|
|
186
197
|
const fonte = FONTES_BCB[opts.fonte];
|
|
187
198
|
const prefixo = fonte.prefixoUrl;
|
|
188
|
-
const
|
|
199
|
+
const call = currentCall();
|
|
200
|
+
const daFonte = prefixo ? (url) => url.startsWith(prefixo) : () => false;
|
|
201
|
+
const extracao = {
|
|
202
|
+
retrievedAt: call ? call.retrievedAt(daFonte) : new Date(),
|
|
203
|
+
servedFromCache: call ? call.servedFromCache(daFonte) : null,
|
|
204
|
+
retrieval: call && prefixo ? call.retrieval() : null
|
|
205
|
+
};
|
|
189
206
|
const data = dataCitacao(extracao.retrievedAt);
|
|
190
207
|
return provenanceContext.build({
|
|
191
208
|
source: {
|
|
@@ -212,6 +229,7 @@ export function provenienciaBcb(opts) {
|
|
|
212
229
|
derived: opts.derivado !== undefined,
|
|
213
230
|
...(opts.derivado !== undefined ? { derivation_note: opts.derivado.nota } : {}),
|
|
214
231
|
served_from_cache: extracao.servedFromCache,
|
|
232
|
+
retrieval: extracao.retrieval,
|
|
215
233
|
...(opts.fontesPorCampo !== undefined
|
|
216
234
|
? {
|
|
217
235
|
field_sources: opts.fontesPorCampo.map(f => ({
|
|
@@ -266,27 +284,16 @@ export function resultadoComProveniencia(payload, proveniencia) {
|
|
|
266
284
|
// A superfície publicada deste servidor é JSON Schema escrito à mão e servido
|
|
267
285
|
// verbatim (`CLAUDE.md`): nada de derivar schema de zod aqui, mesmo com o zod
|
|
268
286
|
// tendo voltado como dependência transitiva do pacote de proveniência.
|
|
287
|
+
//
|
|
288
|
+
// O bloco de proveniência é a EXCEÇÃO, e por um achado medido (26/09/2026):
|
|
289
|
+
// este módulo transcrevia a projeção `concise` à mão, com `additionalProperties:
|
|
290
|
+
// false` aplicado pelo `sealDeep`, e o SDK valida `structuredContent` em
|
|
291
|
+
// runtime — subir o pacote para um contrato com chave nova (v1.1, `retrieval`)
|
|
292
|
+
// sem tocar a transcrição derrubava TODA chamada de tool ("must NOT have
|
|
293
|
+
// additional properties"). O schema do bloco vem do pacote, que o prende à
|
|
294
|
+
// própria projeção por teste; a chave nova entra junto com a lib que a emite.
|
|
269
295
|
/** Projeção `concise` de um bloco — a forma que vai em `structuredContent`/`_meta`. */
|
|
270
|
-
export const PROVENANCE_BLOCK_SCHEMA =
|
|
271
|
-
type: "object",
|
|
272
|
-
description: "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
|
|
273
|
-
properties: {
|
|
274
|
-
source: { type: "string", description: "Fonte oficial do dado" },
|
|
275
|
-
source_url: { type: "string", description: "URL canônica que reproduz a consulta" },
|
|
276
|
-
data_vintage: {
|
|
277
|
-
type: ["string", "null"],
|
|
278
|
-
description: "Competência do dado segundo a fonte; null quando a fonte não expõe"
|
|
279
|
-
},
|
|
280
|
-
retrieved_at: {
|
|
281
|
-
type: "string",
|
|
282
|
-
description: "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida " +
|
|
283
|
-
"de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."
|
|
284
|
-
},
|
|
285
|
-
citation: { type: "string", description: "Citação pronta para uso" },
|
|
286
|
-
license: { type: ["string", "null"], description: "Regime legal do dado" }
|
|
287
|
-
},
|
|
288
|
-
required: ["source", "source_url", "data_vintage", "retrieved_at", "citation", "license"]
|
|
289
|
-
};
|
|
296
|
+
export const PROVENANCE_BLOCK_SCHEMA = CONCISE_BLOCK_JSON_SCHEMA;
|
|
290
297
|
const ATTRIBUTION_SCHEMA = {
|
|
291
298
|
type: "array",
|
|
292
299
|
description: "URLs canônicas das fontes desta resposta (lista de atribuição)",
|
|
@@ -315,7 +322,7 @@ export function comProveniencia(schema) {
|
|
|
315
322
|
export function comProvenienciaMulti(schema) {
|
|
316
323
|
return estender(schema, {
|
|
317
324
|
type: "array",
|
|
318
|
-
description: "Um bloco por procedência que contribuiu com esta resposta (contrato v1.
|
|
325
|
+
description: "Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)",
|
|
319
326
|
items: PROVENANCE_BLOCK_SCHEMA
|
|
320
327
|
});
|
|
321
328
|
}
|
package/dist/provenance.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
|
package/dist/shared.d.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* uma API só (SGS) e passou a falar com três (SGS, Olinda/Expectativas e PTAX).
|
|
6
6
|
* `tools.ts` re-exporta tudo daqui, de propósito: worker e testes importam
|
|
7
7
|
* desses nomes desde a fundação, e o D3 não é hora de mexer em quem importa o
|
|
8
|
-
* quê. A regra de dependência é uma só — `shared.ts` não importa
|
|
9
|
-
* por isso que não há ciclo entre os
|
|
8
|
+
* quê. A regra de dependência é uma só — `shared.ts` não importa nenhum módulo
|
|
9
|
+
* irmão (só pacotes do portfólio), e é por isso que não há ciclo entre os
|
|
10
|
+
* módulos de tool.
|
|
10
11
|
*/
|
|
11
12
|
export declare const CONFIG: {
|
|
12
13
|
TIMEOUT_MS: number;
|
|
@@ -135,36 +136,34 @@ export declare class ErroHttpBcb extends Error {
|
|
|
135
136
|
export declare class ErroSerieInexistente extends Error {
|
|
136
137
|
constructor(mensagem: string);
|
|
137
138
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
139
|
+
import { type Upstream } from "@sbissoli/mcp-upstream";
|
|
140
|
+
/** Backoff do bcb: 1 s, 2 s, 4 s..., sem jitter (os testes contam o relógio). */
|
|
141
|
+
export declare const BACKOFF_BCB: {
|
|
142
|
+
readonly baseMs: number;
|
|
143
|
+
readonly maxMs: 8000;
|
|
144
|
+
readonly jitterMs: 0;
|
|
145
|
+
};
|
|
145
146
|
/**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
147
|
+
* Orçamento TOTAL de uma ida: as N tentativas inteiras mais as esperas entre
|
|
148
|
+
* elas. É o que o código anterior gastava no pior caso — o pacote exige um teto
|
|
149
|
+
* explícito, e o teto honesto é o que já valia (93 s no stdio, 21 s no Worker).
|
|
148
150
|
*/
|
|
149
|
-
export declare function
|
|
150
|
-
/** Registra um acesso a dado da origem. Chamado no ponto de rede e no cache. */
|
|
151
|
-
export declare function registrarAcesso(url: string, instante: Date, deCache?: boolean): void;
|
|
152
|
-
/** Só para os testes: o que foi registrado na chamada corrente. */
|
|
153
|
-
export declare function acessosRegistrados(): AcessoOrigem[];
|
|
154
|
-
export interface ExtracaoAgregada {
|
|
155
|
-
/** Instante mais antigo entre os acessos; a hora da chamada se não houve nenhum. */
|
|
156
|
-
retrievedAt: Date;
|
|
157
|
-
/** `true` só se TODO acesso veio de cache; `null` quando não houve acesso à origem. */
|
|
158
|
-
servedFromCache: boolean | null;
|
|
159
|
-
/** Quantos acessos alimentaram a resposta (0 = respondida só com dado do servidor). */
|
|
160
|
-
acessos: number;
|
|
161
|
-
}
|
|
151
|
+
export declare function orcamentoTotalMs(timeoutMs: number, tentativas: number): number;
|
|
162
152
|
/**
|
|
163
|
-
*
|
|
164
|
-
*
|
|
153
|
+
* A política de rede de UMA chamada de tool. `dispatchTool` abre uma por
|
|
154
|
+
* despacho com os números do transporte (`CONFIG` × `WORKER_CONFIG`).
|
|
155
|
+
* `maxRetries` é o TOTAL de tentativas (nome histórico do servidor), não os
|
|
156
|
+
* retries além da primeira — a tradução para o pacote é feita aqui, uma vez.
|
|
157
|
+
*/
|
|
158
|
+
export declare function upstreamBcb(timeoutMs?: number, maxRetries?: number): Upstream;
|
|
159
|
+
/**
|
|
160
|
+
* Ponto ÚNICO de rede do servidor.
|
|
161
|
+
*
|
|
162
|
+
* Dentro de um despacho, a ida vai pelo coletor da chamada (`currentCall()`),
|
|
163
|
+
* com a política do transporte; fora, por um coletor descartável com a política
|
|
164
|
+
* pedida. `timeoutMs` é honrado nos dois casos, requisição a requisição —
|
|
165
|
+
* é assim que o pedido pequeno recebe 6 s dentro de um despacho de 30 s.
|
|
165
166
|
*/
|
|
166
|
-
export declare function extracaoDaChamada(filtro?: (url: string) => boolean): ExtracaoAgregada;
|
|
167
|
-
export declare function fetchWithTimeout(url: string, timeoutMs: number): Promise<Response>;
|
|
168
167
|
export declare function fetchBcbApi(url: string, timeoutMs?: number, maxRetries?: number): Promise<unknown>;
|
|
169
168
|
export declare function calculateVariation(valorInicial: number, valorFinal: number): number;
|
|
170
169
|
/**
|
package/dist/shared.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
|