bcb-br-mcp 1.7.0 → 1.9.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 +26 -6
- package/README.pt-BR.md +17 -3
- package/dist/cambio.d.ts +3 -4
- package/dist/cambio.d.ts.map +1 -1
- package/dist/cambio.js +34 -13
- package/dist/cambio.js.map +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +11 -2
- package/dist/catalog.js.map +1 -1
- package/dist/focus.d.ts.map +1 -1
- package/dist/focus.js +50 -4
- package/dist/focus.js.map +1 -1
- package/dist/provenance.d.ts +291 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +319 -0
- package/dist/provenance.js.map +1 -0
- package/dist/series.d.ts +1 -0
- package/dist/series.d.ts.map +1 -1
- package/dist/series.js +1 -1
- package/dist/series.js.map +1 -1
- package/dist/shared.d.ts +36 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +80 -4
- package/dist/shared.js.map +1 -1
- package/dist/stats.d.ts +38 -0
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +28 -0
- package/dist/stats.js.map +1 -1
- package/dist/tools.d.ts +1039 -18277
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +306 -57
- package/dist/tools.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bloco de proveniência (contrato v1.0 do portfólio) — adaptador pt-BR sobre
|
|
3
|
+
* `@sbissoli/mcp-provenance`. O modelo canônico, as projeções
|
|
4
|
+
* `concise`/`detailed`, o determinismo da serialização, o fuso e o texto do
|
|
5
|
+
* rodapé moram no pacote; este módulo o amarra ao servidor do BCB:
|
|
6
|
+
*
|
|
7
|
+
* - um `ProvenanceContext` para o servidor inteiro (namespace
|
|
8
|
+
* `br.com.sidneybissoli.bcb`, pt-BR, horário de Brasília, modo `concise`);
|
|
9
|
+
* - o registro `FONTES_BCB` — uma entrada por procedência, não por API;
|
|
10
|
+
* - `provenienciaBcb(...)`, o construtor por chamada, que puxa o instante REAL
|
|
11
|
+
* da extração do coletor aberto no `dispatchTool` (`shared.ts`).
|
|
12
|
+
*
|
|
13
|
+
* ## Por que o registro NÃO é "uma entrada por API"
|
|
14
|
+
*
|
|
15
|
+
* O plano da fase previa multi-fonte como ARRAY por API (receita medical). A
|
|
16
|
+
* medição de abertura do D4 (`bcb/docs/07`) desmentiu a premissa: **nenhuma tool
|
|
17
|
+
* mistura APIs** — cada uma fala com exatamente um host — e a **licença é a
|
|
18
|
+
* mesma nas três** (ODbL, reconferida em 13/08/2026), então segregar por API não
|
|
19
|
+
* segregaria licença nenhuma, que é o motivo de existir do array no contrato.
|
|
20
|
+
*
|
|
21
|
+
* O array continua necessário, por duas fronteiras de PROCEDÊNCIA que a mesma
|
|
22
|
+
* medição expôs:
|
|
23
|
+
*
|
|
24
|
+
* 1. **Servidor × BCB.** `bcb_series_populares` responde com ZERO requisição e
|
|
25
|
+
* `bcb_buscar_serie` mistura o catálogo curado (nosso) com o índice do
|
|
26
|
+
* portal. Anunciar as duas camadas como "extraído do BCB agora" repetiria,
|
|
27
|
+
* na proveniência, o erro que a sessão 07 corrigiu no catálogo: dar a mesma
|
|
28
|
+
* cara a coisas de procedência diferente.
|
|
29
|
+
* 2. **BCB × Refinitiv.** Nas paridades não-USD da PTAX o dado vem de agência
|
|
30
|
+
* de informação e é redistribuído pelo BCB (`bcb/docs/01` §3).
|
|
31
|
+
*
|
|
32
|
+
* ## Canais de emissão
|
|
33
|
+
*
|
|
34
|
+
* `structuredContent.provenance` + `attribution` (legível pelo modelo) e espelho
|
|
35
|
+
* em `_meta` sob o namespace (fora de banda, zero tokens). **O rodapé de texto
|
|
36
|
+
* do contrato não se aplica aqui**, e isso é deliberado: no ibge e no medical o
|
|
37
|
+
* canal de texto é Markdown, e aqui ele é o próprio payload serializado em JSON
|
|
38
|
+
* (`structuredResult`) — anexar rodapé produziria um bloco de texto que não é
|
|
39
|
+
* JSON válido. O bloco já vai no texto, dentro do payload.
|
|
40
|
+
*/
|
|
41
|
+
import { type CanonicalProvenance } from "@sbissoli/mcp-provenance";
|
|
42
|
+
import { type ToolResult } from "./shared.js";
|
|
43
|
+
/** Contexto único do servidor: namespace de `_meta`, idioma, fuso e modo. */
|
|
44
|
+
export declare const provenanceContext: import("@sbissoli/mcp-provenance").ProvenanceContext;
|
|
45
|
+
/** Envelope canônico v1.0 (pós-validação). */
|
|
46
|
+
export type Proveniencia = CanonicalProvenance;
|
|
47
|
+
/** Chaves de `_meta` (estáveis — consumidores de auditoria leem por elas). */
|
|
48
|
+
export declare const PROVENANCE_META_KEY: string;
|
|
49
|
+
export declare const ATTRIBUTION_META_KEY: string;
|
|
50
|
+
/**
|
|
51
|
+
* Licença das três APIs do BCB — **ODbL v1.0**, com share-alike e anti-DRM.
|
|
52
|
+
*
|
|
53
|
+
* Não é CC0, não é CC BY, não é domínio público: 4.259 dos 4.260 datasets do
|
|
54
|
+
* portal declaram `odc-odbl` (medido em 13/08/2026; em 10/08 eram 4.235 de
|
|
55
|
+
* 4.236 — o portal cresceu e a proporção se manteve).
|
|
56
|
+
*
|
|
57
|
+
* O `url` é o CANÔNICO em HTTPS. O que o CKAN declara é
|
|
58
|
+
* `http://www.opendefinition.org/licenses/odc-odbl`, que **resolve** (HTTP 200)
|
|
59
|
+
* mas só sem TLS — medido, e é a resposta à pendência P3 do decisor. Citar como
|
|
60
|
+
* link oficial um endereço sem TLS seria pior; o legado fica registrado no
|
|
61
|
+
* `terms_url` da própria fonte.
|
|
62
|
+
*/
|
|
63
|
+
export declare const LICENCA_ODBL: {
|
|
64
|
+
readonly id: "ODbL-1.0";
|
|
65
|
+
readonly name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM";
|
|
66
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
67
|
+
readonly terms_url: "https://dadosabertos.bcb.gov.br/";
|
|
68
|
+
readonly verified_at: "2026-08-13";
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Licença do que o SERVIDOR mantém (o catálogo curado). O código é MIT; os
|
|
72
|
+
* nomes transcritos do portal seguem sendo dados do BCB sob ODbL, e é por isso
|
|
73
|
+
* que a nota diz as duas coisas em vez de escolher uma.
|
|
74
|
+
*/
|
|
75
|
+
export declare const LICENCA_CATALOGO_CURADO: {
|
|
76
|
+
readonly id: null;
|
|
77
|
+
readonly name: string;
|
|
78
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
79
|
+
readonly terms_url: "https://github.com/SidneyBissoli/bcb-br-mcp";
|
|
80
|
+
readonly verified_at: "2026-08-13";
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Registro de fontes — uma entrada por PROCEDÊNCIA (ver o cabeçalho).
|
|
84
|
+
* A agência difere por API e foi lida do CKAN em 13/08/2026, não inferida.
|
|
85
|
+
*/
|
|
86
|
+
export declare const FONTES_BCB: {
|
|
87
|
+
SGS: {
|
|
88
|
+
name: string;
|
|
89
|
+
agency: string;
|
|
90
|
+
database: string;
|
|
91
|
+
endpoint: string;
|
|
92
|
+
license: {
|
|
93
|
+
readonly id: "ODbL-1.0";
|
|
94
|
+
readonly name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM";
|
|
95
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
96
|
+
readonly terms_url: "https://dadosabertos.bcb.gov.br/";
|
|
97
|
+
readonly verified_at: "2026-08-13";
|
|
98
|
+
};
|
|
99
|
+
notices: never[];
|
|
100
|
+
citation: (data: string, detalhe: string | undefined) => string;
|
|
101
|
+
prefixoUrl: string;
|
|
102
|
+
};
|
|
103
|
+
FOCUS: {
|
|
104
|
+
name: string;
|
|
105
|
+
agency: string;
|
|
106
|
+
database: string;
|
|
107
|
+
endpoint: string;
|
|
108
|
+
license: {
|
|
109
|
+
readonly id: "ODbL-1.0";
|
|
110
|
+
readonly name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM";
|
|
111
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
112
|
+
readonly terms_url: "https://dadosabertos.bcb.gov.br/";
|
|
113
|
+
readonly verified_at: "2026-08-13";
|
|
114
|
+
};
|
|
115
|
+
notices: never[];
|
|
116
|
+
citation: (data: string, detalhe: string | undefined) => string;
|
|
117
|
+
prefixoUrl: string;
|
|
118
|
+
};
|
|
119
|
+
PTAX: {
|
|
120
|
+
name: string;
|
|
121
|
+
agency: string;
|
|
122
|
+
database: string;
|
|
123
|
+
endpoint: string;
|
|
124
|
+
license: {
|
|
125
|
+
readonly id: "ODbL-1.0";
|
|
126
|
+
readonly name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM";
|
|
127
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
128
|
+
readonly terms_url: "https://dadosabertos.bcb.gov.br/";
|
|
129
|
+
readonly verified_at: "2026-08-13";
|
|
130
|
+
};
|
|
131
|
+
notices: string[];
|
|
132
|
+
citation: (data: string, detalhe: string | undefined) => string;
|
|
133
|
+
prefixoUrl: string;
|
|
134
|
+
};
|
|
135
|
+
PARIDADE_REFINITIV: {
|
|
136
|
+
name: string;
|
|
137
|
+
agency: string;
|
|
138
|
+
database: string;
|
|
139
|
+
endpoint: string;
|
|
140
|
+
license: {
|
|
141
|
+
readonly id: "ODbL-1.0";
|
|
142
|
+
readonly name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM";
|
|
143
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
144
|
+
readonly terms_url: "https://dadosabertos.bcb.gov.br/";
|
|
145
|
+
readonly verified_at: "2026-08-13";
|
|
146
|
+
};
|
|
147
|
+
notices: string[];
|
|
148
|
+
citation: (data: string) => string;
|
|
149
|
+
prefixoUrl: string;
|
|
150
|
+
};
|
|
151
|
+
PORTAL: {
|
|
152
|
+
name: string;
|
|
153
|
+
agency: string;
|
|
154
|
+
database: string;
|
|
155
|
+
endpoint: string;
|
|
156
|
+
license: {
|
|
157
|
+
readonly id: "ODbL-1.0";
|
|
158
|
+
readonly name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM";
|
|
159
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
160
|
+
readonly terms_url: "https://dadosabertos.bcb.gov.br/";
|
|
161
|
+
readonly verified_at: "2026-08-13";
|
|
162
|
+
};
|
|
163
|
+
notices: never[];
|
|
164
|
+
citation: (data: string, detalhe: string | undefined) => string;
|
|
165
|
+
prefixoUrl: string;
|
|
166
|
+
};
|
|
167
|
+
CATALOGO_CURADO: {
|
|
168
|
+
name: string;
|
|
169
|
+
agency: null;
|
|
170
|
+
database: null;
|
|
171
|
+
endpoint: null;
|
|
172
|
+
license: {
|
|
173
|
+
readonly id: null;
|
|
174
|
+
readonly name: string;
|
|
175
|
+
readonly url: "https://opendatacommons.org/licenses/odbl/1-0/";
|
|
176
|
+
readonly terms_url: "https://github.com/SidneyBissoli/bcb-br-mcp";
|
|
177
|
+
readonly verified_at: "2026-08-13";
|
|
178
|
+
};
|
|
179
|
+
notices: string[];
|
|
180
|
+
citation: (data: string) => string;
|
|
181
|
+
prefixoUrl: null;
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
export type ChaveFonte = keyof typeof FONTES_BCB;
|
|
185
|
+
export interface OpcoesProveniencia {
|
|
186
|
+
/** Qual procedência respondeu. */
|
|
187
|
+
fonte: ChaveFonte;
|
|
188
|
+
/** URL canônica que reproduz a consulta na fonte. */
|
|
189
|
+
url: string;
|
|
190
|
+
/** Conjunto dentro da fonte (código da série, recurso OData, moeda). */
|
|
191
|
+
dataset?: {
|
|
192
|
+
id?: string | null;
|
|
193
|
+
version?: string | null;
|
|
194
|
+
name?: string | null;
|
|
195
|
+
};
|
|
196
|
+
/** Competência do dado segundo a fonte; null quando a fonte não expõe. */
|
|
197
|
+
dataVintage?: string | null;
|
|
198
|
+
/** Detalhe interpolado na citação (ex.: "série 433 (IPCA)"). */
|
|
199
|
+
detalheCitacao?: string;
|
|
200
|
+
/** O servidor calculou além de filtrar/paginar/reserializar. */
|
|
201
|
+
derivado?: {
|
|
202
|
+
nota: string;
|
|
203
|
+
};
|
|
204
|
+
/** Avisos adicionais desta resposta, além dos fixos da fonte. */
|
|
205
|
+
avisosExtras?: string[];
|
|
206
|
+
/**
|
|
207
|
+
* Proveniência por campo — para as respostas que fundem vários recortes da
|
|
208
|
+
* MESMA fonte numa estrutura só (`bcb_comparar`, `bcb_correlacao`,
|
|
209
|
+
* `bcb_deflacionar`, `bcb_indicadores_atuais`, todas multi-série do SGS).
|
|
210
|
+
*
|
|
211
|
+
* Sem isto, o `source_url` teria de escolher uma série entre várias e mentir
|
|
212
|
+
* por omissão sobre as outras. A projeção `concise` não mostra este campo — é
|
|
213
|
+
* o piso legal —, mas ele vai no modelo canônico e no `detailed`.
|
|
214
|
+
*/
|
|
215
|
+
fontesPorCampo?: Array<{
|
|
216
|
+
fields: string[];
|
|
217
|
+
source_url: string;
|
|
218
|
+
dataset_id?: string | null;
|
|
219
|
+
data_vintage?: string | null;
|
|
220
|
+
}>;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Monta o bloco canônico de UMA fonte de UMA resposta.
|
|
224
|
+
*
|
|
225
|
+
* `retrieved_at` e `served_from_cache` vêm do coletor aberto no `dispatchTool`,
|
|
226
|
+
* filtrados pelos acessos daquela fonte: o instante mais ANTIGO, e cache só se
|
|
227
|
+
* TUDO veio de cache (`bcb/docs/07`, S1 e S4). Sem coletor aberto — chamada
|
|
228
|
+
* direta em teste — degrada para o instante da chamada, nunca quebra.
|
|
229
|
+
*/
|
|
230
|
+
export declare function provenienciaBcb(opts: OpcoesProveniencia): Proveniencia;
|
|
231
|
+
/** Nota fixa das tools que calculam (o motor mora no `@sbissoli/mcp-stats`). */
|
|
232
|
+
export declare const NOTA_DERIVACAO_ESTATISTICA: string;
|
|
233
|
+
/** Nota das tools que ACUMULAM uma série que já é variação (IPCA, IGP-M mensais). */
|
|
234
|
+
export declare const NOTA_DERIVACAO_ENCADEAMENTO: string;
|
|
235
|
+
/** Nota fixa da harmonização de frequência. */
|
|
236
|
+
export declare const NOTA_DERIVACAO_HARMONIZACAO: string;
|
|
237
|
+
/** Nota fixa da deflação (o SGS não publica número-índice — ver `bcb/docs/05`). */
|
|
238
|
+
export declare const NOTA_DERIVACAO_DEFLACAO: string;
|
|
239
|
+
/**
|
|
240
|
+
* Resultado de sucesso com os canais de proveniência.
|
|
241
|
+
*
|
|
242
|
+
* Aceita um bloco ou um ARRAY (multi-procedência). O formato do fio segue o
|
|
243
|
+
* formato da entrada — objeto vira objeto, array vira array —, casando com o
|
|
244
|
+
* `outputSchema` que a tool anuncia (`comProveniencia` × `comProvenienciaMulti`).
|
|
245
|
+
*/
|
|
246
|
+
export declare function resultadoComProveniencia(payload: Record<string, unknown>, proveniencia: Proveniencia | Proveniencia[]): ToolResult;
|
|
247
|
+
/** Projeção `concise` de um bloco — a forma que vai em `structuredContent`/`_meta`. */
|
|
248
|
+
export declare const PROVENANCE_BLOCK_SCHEMA: {
|
|
249
|
+
type: "object";
|
|
250
|
+
description: string;
|
|
251
|
+
properties: {
|
|
252
|
+
source: {
|
|
253
|
+
type: "string";
|
|
254
|
+
description: string;
|
|
255
|
+
};
|
|
256
|
+
source_url: {
|
|
257
|
+
type: "string";
|
|
258
|
+
description: string;
|
|
259
|
+
};
|
|
260
|
+
data_vintage: {
|
|
261
|
+
type: readonly ["string", "null"];
|
|
262
|
+
description: string;
|
|
263
|
+
};
|
|
264
|
+
retrieved_at: {
|
|
265
|
+
type: "string";
|
|
266
|
+
description: string;
|
|
267
|
+
};
|
|
268
|
+
citation: {
|
|
269
|
+
type: "string";
|
|
270
|
+
description: string;
|
|
271
|
+
};
|
|
272
|
+
license: {
|
|
273
|
+
type: readonly ["string", "null"];
|
|
274
|
+
description: string;
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
required: string[];
|
|
278
|
+
};
|
|
279
|
+
type SchemaObjeto = Record<string, unknown>;
|
|
280
|
+
/**
|
|
281
|
+
* Acrescenta o canal de proveniência ao `outputSchema` de uma tool de fonte
|
|
282
|
+
* única. Os dois campos são OBRIGATÓRIOS: toda resposta de sucesso os carrega.
|
|
283
|
+
*/
|
|
284
|
+
export declare function comProveniencia(schema: SchemaObjeto): SchemaObjeto;
|
|
285
|
+
/**
|
|
286
|
+
* Variante multi-procedência: um bloco por procedência que contribuiu com dado.
|
|
287
|
+
* As licenças nunca se fundem — é regra do contrato.
|
|
288
|
+
*/
|
|
289
|
+
export declare function comProvenienciaMulti(schema: SchemaObjeto): SchemaObjeto;
|
|
290
|
+
export {};
|
|
291
|
+
//# sourceMappingURL=provenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,sDAK5B,CAAC;AAEH,8CAA8C;AAC9C,MAAM,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,QAAwC,CAAC;AACzE,eAAO,MAAM,oBAAoB,QAAyC,CAAC;AAK3E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;CAQ1B,CAAC;AAkBX;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Ea,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAYjD,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,KAAK,EAAE,UAAU,CAAC;IAClB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChF,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC,CAAC;CACJ;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,kBAAkB,GAAG,YAAY,CA2CtE;AAED,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,QAEgD,CAAC;AAExF,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,QAE+C,CAAC;AAExF,+CAA+C;AAC/C,eAAO,MAAM,2BAA2B,QAEhB,CAAC;AAEzB,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,QAG8B,CAAC;AAInE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,YAAY,EAAE,YAAY,GAAG,YAAY,EAAE,GAC1C,UAAU,CAgBZ;AAQD,uFAAuF;AACvF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBnC,CAAC;AAQF,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAY5C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAElE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAOvE"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bloco de proveniência (contrato v1.0 do portfólio) — adaptador pt-BR sobre
|
|
3
|
+
* `@sbissoli/mcp-provenance`. O modelo canônico, as projeções
|
|
4
|
+
* `concise`/`detailed`, o determinismo da serialização, o fuso e o texto do
|
|
5
|
+
* rodapé moram no pacote; este módulo o amarra ao servidor do BCB:
|
|
6
|
+
*
|
|
7
|
+
* - um `ProvenanceContext` para o servidor inteiro (namespace
|
|
8
|
+
* `br.com.sidneybissoli.bcb`, pt-BR, horário de Brasília, modo `concise`);
|
|
9
|
+
* - o registro `FONTES_BCB` — uma entrada por procedência, não por API;
|
|
10
|
+
* - `provenienciaBcb(...)`, o construtor por chamada, que puxa o instante REAL
|
|
11
|
+
* da extração do coletor aberto no `dispatchTool` (`shared.ts`).
|
|
12
|
+
*
|
|
13
|
+
* ## Por que o registro NÃO é "uma entrada por API"
|
|
14
|
+
*
|
|
15
|
+
* O plano da fase previa multi-fonte como ARRAY por API (receita medical). A
|
|
16
|
+
* medição de abertura do D4 (`bcb/docs/07`) desmentiu a premissa: **nenhuma tool
|
|
17
|
+
* mistura APIs** — cada uma fala com exatamente um host — e a **licença é a
|
|
18
|
+
* mesma nas três** (ODbL, reconferida em 13/08/2026), então segregar por API não
|
|
19
|
+
* segregaria licença nenhuma, que é o motivo de existir do array no contrato.
|
|
20
|
+
*
|
|
21
|
+
* O array continua necessário, por duas fronteiras de PROCEDÊNCIA que a mesma
|
|
22
|
+
* medição expôs:
|
|
23
|
+
*
|
|
24
|
+
* 1. **Servidor × BCB.** `bcb_series_populares` responde com ZERO requisição e
|
|
25
|
+
* `bcb_buscar_serie` mistura o catálogo curado (nosso) com o índice do
|
|
26
|
+
* portal. Anunciar as duas camadas como "extraído do BCB agora" repetiria,
|
|
27
|
+
* na proveniência, o erro que a sessão 07 corrigiu no catálogo: dar a mesma
|
|
28
|
+
* cara a coisas de procedência diferente.
|
|
29
|
+
* 2. **BCB × Refinitiv.** Nas paridades não-USD da PTAX o dado vem de agência
|
|
30
|
+
* de informação e é redistribuído pelo BCB (`bcb/docs/01` §3).
|
|
31
|
+
*
|
|
32
|
+
* ## Canais de emissão
|
|
33
|
+
*
|
|
34
|
+
* `structuredContent.provenance` + `attribution` (legível pelo modelo) e espelho
|
|
35
|
+
* em `_meta` sob o namespace (fora de banda, zero tokens). **O rodapé de texto
|
|
36
|
+
* do contrato não se aplica aqui**, e isso é deliberado: no ibge e no medical o
|
|
37
|
+
* canal de texto é Markdown, e aqui ele é o próprio payload serializado em JSON
|
|
38
|
+
* (`structuredResult`) — anexar rodapé produziria um bloco de texto que não é
|
|
39
|
+
* JSON válido. O bloco já vai no texto, dentro do payload.
|
|
40
|
+
*/
|
|
41
|
+
import { attributionList, createProvenanceContext, renderConcise } from "@sbissoli/mcp-provenance";
|
|
42
|
+
import { DISCLAIMER_PTAX, QUALIFICACAO_PARIDADE, extracaoDaChamada, structuredResult } from "./shared.js";
|
|
43
|
+
/** Contexto único do servidor: namespace de `_meta`, idioma, fuso e modo. */
|
|
44
|
+
export const provenanceContext = createProvenanceContext({
|
|
45
|
+
metaNamespace: "br.com.sidneybissoli.bcb",
|
|
46
|
+
locale: "pt-BR",
|
|
47
|
+
timezone: { offset: "-03:00", label: "horário de Brasília" },
|
|
48
|
+
defaultMode: "concise"
|
|
49
|
+
});
|
|
50
|
+
/** Chaves de `_meta` (estáveis — consumidores de auditoria leem por elas). */
|
|
51
|
+
export const PROVENANCE_META_KEY = provenanceContext.metaKeys.provenance;
|
|
52
|
+
export const ATTRIBUTION_META_KEY = provenanceContext.metaKeys.attribution;
|
|
53
|
+
/** Data da última verificação verbatim da licença (`bcb/docs/07`, reconferida). */
|
|
54
|
+
const VERIFICADO_EM = "2026-08-13";
|
|
55
|
+
/**
|
|
56
|
+
* Licença das três APIs do BCB — **ODbL v1.0**, com share-alike e anti-DRM.
|
|
57
|
+
*
|
|
58
|
+
* Não é CC0, não é CC BY, não é domínio público: 4.259 dos 4.260 datasets do
|
|
59
|
+
* portal declaram `odc-odbl` (medido em 13/08/2026; em 10/08 eram 4.235 de
|
|
60
|
+
* 4.236 — o portal cresceu e a proporção se manteve).
|
|
61
|
+
*
|
|
62
|
+
* O `url` é o CANÔNICO em HTTPS. O que o CKAN declara é
|
|
63
|
+
* `http://www.opendefinition.org/licenses/odc-odbl`, que **resolve** (HTTP 200)
|
|
64
|
+
* mas só sem TLS — medido, e é a resposta à pendência P3 do decisor. Citar como
|
|
65
|
+
* link oficial um endereço sem TLS seria pior; o legado fica registrado no
|
|
66
|
+
* `terms_url` da própria fonte.
|
|
67
|
+
*/
|
|
68
|
+
export const LICENCA_ODBL = {
|
|
69
|
+
id: "ODbL-1.0",
|
|
70
|
+
name: "Open Data Commons Open Database License (ODbL) v1.0 — atribuição, share-alike e anti-DRM",
|
|
71
|
+
url: "https://opendatacommons.org/licenses/odbl/1-0/",
|
|
72
|
+
terms_url: "https://dadosabertos.bcb.gov.br/",
|
|
73
|
+
verified_at: VERIFICADO_EM
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Licença do que o SERVIDOR mantém (o catálogo curado). O código é MIT; os
|
|
77
|
+
* nomes transcritos do portal seguem sendo dados do BCB sob ODbL, e é por isso
|
|
78
|
+
* que a nota diz as duas coisas em vez de escolher uma.
|
|
79
|
+
*/
|
|
80
|
+
export const LICENCA_CATALOGO_CURADO = {
|
|
81
|
+
id: null,
|
|
82
|
+
name: "Catálogo curado mantido pelo servidor (código sob MIT); os nomes transcritos do " +
|
|
83
|
+
"Portal de Dados Abertos do BCB permanecem dados do BCB sob ODbL v1.0",
|
|
84
|
+
url: "https://opendatacommons.org/licenses/odbl/1-0/",
|
|
85
|
+
terms_url: "https://github.com/SidneyBissoli/bcb-br-mcp",
|
|
86
|
+
verified_at: VERIFICADO_EM
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Registro de fontes — uma entrada por PROCEDÊNCIA (ver o cabeçalho).
|
|
90
|
+
* A agência difere por API e foi lida do CKAN em 13/08/2026, não inferida.
|
|
91
|
+
*/
|
|
92
|
+
export const FONTES_BCB = {
|
|
93
|
+
SGS: {
|
|
94
|
+
name: "Banco Central do Brasil — SGS (Sistema Gerenciador de Séries Temporais)",
|
|
95
|
+
agency: "Banco Central do Brasil / Departamento Econômico (Depec)",
|
|
96
|
+
database: "SGS",
|
|
97
|
+
endpoint: "https://api.bcb.gov.br/dados/serie",
|
|
98
|
+
license: LICENCA_ODBL,
|
|
99
|
+
notices: [],
|
|
100
|
+
citation: (data, detalhe) => `Fonte: Banco Central do Brasil — SGS${detalhe ? `, ${detalhe}` : ""}. ` +
|
|
101
|
+
`Dados sob ODbL v1.0. Extraído em ${data}.`,
|
|
102
|
+
prefixoUrl: "https://api.bcb.gov.br"
|
|
103
|
+
},
|
|
104
|
+
FOCUS: {
|
|
105
|
+
name: "Banco Central do Brasil — Expectativas de Mercado (Focus), via Olinda OData",
|
|
106
|
+
agency: "Banco Central do Brasil / Departamento de Estatísticas (Dstat)",
|
|
107
|
+
database: "Expectativas de Mercado",
|
|
108
|
+
endpoint: "https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata",
|
|
109
|
+
license: LICENCA_ODBL,
|
|
110
|
+
notices: [],
|
|
111
|
+
citation: (data, detalhe) => `Fonte: Banco Central do Brasil — Expectativas de Mercado (Focus)${detalhe ? `, ${detalhe}` : ""}. ` +
|
|
112
|
+
`Dados sob ODbL v1.0. Extraído em ${data}.`,
|
|
113
|
+
prefixoUrl: "https://olinda.bcb.gov.br/olinda/servico/Expectativas"
|
|
114
|
+
},
|
|
115
|
+
PTAX: {
|
|
116
|
+
name: "Banco Central do Brasil — PTAX / Cotações e boletins de câmbio, via Olinda OData",
|
|
117
|
+
agency: "Banco Central do Brasil / Departamento das Reservas Internacionais (Depin)",
|
|
118
|
+
database: "PTAX",
|
|
119
|
+
endpoint: "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata",
|
|
120
|
+
license: LICENCA_ODBL,
|
|
121
|
+
notices: [DISCLAIMER_PTAX],
|
|
122
|
+
citation: (data, detalhe) => `Fonte: Banco Central do Brasil — PTAX${detalhe ? `, ${detalhe}` : ""}. ` +
|
|
123
|
+
`Dados sob ODbL v1.0. Extraído em ${data}.`,
|
|
124
|
+
prefixoUrl: "https://olinda.bcb.gov.br/olinda/servico/PTAX"
|
|
125
|
+
},
|
|
126
|
+
PARIDADE_REFINITIV: {
|
|
127
|
+
name: "Paridades não-USD do boletim do BCB — apuradas por agência de informação (Refinitiv)",
|
|
128
|
+
agency: "Refinitiv (redistribuído pelo Banco Central do Brasil)",
|
|
129
|
+
database: "PTAX — paridades",
|
|
130
|
+
endpoint: "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata",
|
|
131
|
+
license: LICENCA_ODBL,
|
|
132
|
+
notices: [QUALIFICACAO_PARIDADE, DISCLAIMER_PTAX],
|
|
133
|
+
citation: data => "Fonte: paridade obtida junto a agência de informação (Refinitiv) e redistribuída pelo " +
|
|
134
|
+
`Banco Central do Brasil no boletim de câmbio, sob ODbL v1.0. Extraído em ${data}.`,
|
|
135
|
+
prefixoUrl: "https://olinda.bcb.gov.br/olinda/servico/PTAX"
|
|
136
|
+
},
|
|
137
|
+
PORTAL: {
|
|
138
|
+
name: "Banco Central do Brasil — Portal de Dados Abertos (índice CKAN)",
|
|
139
|
+
agency: "Banco Central do Brasil",
|
|
140
|
+
database: "Portal de Dados Abertos",
|
|
141
|
+
endpoint: "https://dadosabertos.bcb.gov.br/api/3/action",
|
|
142
|
+
license: LICENCA_ODBL,
|
|
143
|
+
notices: [],
|
|
144
|
+
citation: (data, detalhe) => `Fonte: Banco Central do Brasil — Portal de Dados Abertos${detalhe ? `, ${detalhe}` : ""}. ` +
|
|
145
|
+
`Só metadados (código e nome), sob ODbL v1.0. Obtido em ${data}.`,
|
|
146
|
+
prefixoUrl: "https://dadosabertos.bcb.gov.br"
|
|
147
|
+
},
|
|
148
|
+
CATALOGO_CURADO: {
|
|
149
|
+
name: "bcb-br-mcp — catálogo curado do servidor (139 séries verificadas contra a origem)",
|
|
150
|
+
agency: null,
|
|
151
|
+
database: null,
|
|
152
|
+
// Sem extração upstream: é dado mantido no próprio servidor.
|
|
153
|
+
endpoint: null,
|
|
154
|
+
license: LICENCA_CATALOGO_CURADO,
|
|
155
|
+
notices: [
|
|
156
|
+
"Cada série do catálogo foi verificada contra a origem em 13/08/2026: 82 nomes são " +
|
|
157
|
+
"transcritos do dataset do BCB no Portal de Dados Abertos e 57 são herdados, com " +
|
|
158
|
+
"apenas periodicidade e magnitude medidas. O campo `fonteNome` diz qual é qual."
|
|
159
|
+
],
|
|
160
|
+
citation: data => "Fonte: bcb-br-mcp — catálogo curado do servidor, verificado série a série contra a " +
|
|
161
|
+
`origem; nomes transcritos do Portal de Dados Abertos do BCB (ODbL v1.0). Consultado em ${data}.`,
|
|
162
|
+
prefixoUrl: null
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
/** "dd/mm/aaaa" de um instante em horário de Brasília, para o texto da citação. */
|
|
166
|
+
function dataCitacao(instante) {
|
|
167
|
+
// Offset fixo -03:00: o Brasil não tem horário de verão desde 2019.
|
|
168
|
+
const [ano, mes, dia] = new Date(instante.getTime() - 3 * 60 * 60 * 1000)
|
|
169
|
+
.toISOString()
|
|
170
|
+
.slice(0, 10)
|
|
171
|
+
.split("-");
|
|
172
|
+
return `${dia}/${mes}/${ano}`;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Monta o bloco canônico de UMA fonte de UMA resposta.
|
|
176
|
+
*
|
|
177
|
+
* `retrieved_at` e `served_from_cache` vêm do coletor aberto no `dispatchTool`,
|
|
178
|
+
* filtrados pelos acessos daquela fonte: o instante mais ANTIGO, e cache só se
|
|
179
|
+
* TUDO veio de cache (`bcb/docs/07`, S1 e S4). Sem coletor aberto — chamada
|
|
180
|
+
* direta em teste — degrada para o instante da chamada, nunca quebra.
|
|
181
|
+
*/
|
|
182
|
+
export function provenienciaBcb(opts) {
|
|
183
|
+
const fonte = FONTES_BCB[opts.fonte];
|
|
184
|
+
const prefixo = fonte.prefixoUrl;
|
|
185
|
+
const extracao = extracaoDaChamada(prefixo ? url => url.startsWith(prefixo) : () => false);
|
|
186
|
+
const data = dataCitacao(extracao.retrievedAt);
|
|
187
|
+
return provenanceContext.build({
|
|
188
|
+
source: {
|
|
189
|
+
name: fonte.name,
|
|
190
|
+
agency: fonte.agency,
|
|
191
|
+
database: fonte.database,
|
|
192
|
+
endpoint: fonte.endpoint
|
|
193
|
+
},
|
|
194
|
+
source_url: opts.url,
|
|
195
|
+
...(opts.dataset !== undefined
|
|
196
|
+
? {
|
|
197
|
+
dataset: {
|
|
198
|
+
id: opts.dataset.id ?? null,
|
|
199
|
+
version: opts.dataset.version ?? null,
|
|
200
|
+
name: opts.dataset.name ?? null
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
: {}),
|
|
204
|
+
data_vintage: opts.dataVintage ?? null,
|
|
205
|
+
retrieved_at: extracao.retrievedAt,
|
|
206
|
+
citation: fonte.citation(data, opts.detalheCitacao),
|
|
207
|
+
license: fonte.license,
|
|
208
|
+
notices: [...fonte.notices, ...(opts.avisosExtras ?? [])],
|
|
209
|
+
derived: opts.derivado !== undefined,
|
|
210
|
+
...(opts.derivado !== undefined ? { derivation_note: opts.derivado.nota } : {}),
|
|
211
|
+
served_from_cache: extracao.servedFromCache,
|
|
212
|
+
...(opts.fontesPorCampo !== undefined
|
|
213
|
+
? {
|
|
214
|
+
field_sources: opts.fontesPorCampo.map(f => ({
|
|
215
|
+
fields: f.fields,
|
|
216
|
+
source_url: f.source_url,
|
|
217
|
+
dataset_id: f.dataset_id ?? null,
|
|
218
|
+
data_vintage: f.data_vintage ?? null,
|
|
219
|
+
retrieved_at: extracao.retrievedAt.toISOString()
|
|
220
|
+
}))
|
|
221
|
+
}
|
|
222
|
+
: {})
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
/** Nota fixa das tools que calculam (o motor mora no `@sbissoli/mcp-stats`). */
|
|
226
|
+
export const NOTA_DERIVACAO_ESTATISTICA = "Estatísticas calculadas pelo servidor a partir das observações brutas da fonte " +
|
|
227
|
+
"(motor: @sbissoli/mcp-stats); os valores observados permanecem os originais do BCB.";
|
|
228
|
+
/** Nota das tools que ACUMULAM uma série que já é variação (IPCA, IGP-M mensais). */
|
|
229
|
+
export const NOTA_DERIVACAO_ENCADEAMENTO = "Variação acumulada por encadeamento das variações por período publicadas pela fonte " +
|
|
230
|
+
"(motor: @sbissoli/mcp-stats); os valores observados permanecem os originais do BCB.";
|
|
231
|
+
/** Nota fixa da harmonização de frequência. */
|
|
232
|
+
export const NOTA_DERIVACAO_HARMONIZACAO = "Observações agregadas pelo servidor para a periodicidade pedida; os valores de origem " +
|
|
233
|
+
"não foram alterados.";
|
|
234
|
+
/** Nota fixa da deflação (o SGS não publica número-índice — ver `bcb/docs/05`). */
|
|
235
|
+
export const NOTA_DERIVACAO_DEFLACAO = "Valores convertidos para moeda constante pelo servidor: o SGS não publica número-índice " +
|
|
236
|
+
"de preço, então o índice é reconstruído encadeando as variações mensais da série " +
|
|
237
|
+
"deflatora. Os valores nominais permanecem os originais do BCB.";
|
|
238
|
+
// ==================== EMISSÃO ====================
|
|
239
|
+
/**
|
|
240
|
+
* Resultado de sucesso com os canais de proveniência.
|
|
241
|
+
*
|
|
242
|
+
* Aceita um bloco ou um ARRAY (multi-procedência). O formato do fio segue o
|
|
243
|
+
* formato da entrada — objeto vira objeto, array vira array —, casando com o
|
|
244
|
+
* `outputSchema` que a tool anuncia (`comProveniencia` × `comProvenienciaMulti`).
|
|
245
|
+
*/
|
|
246
|
+
export function resultadoComProveniencia(payload, proveniencia) {
|
|
247
|
+
const blocos = Array.isArray(proveniencia) ? proveniencia : [proveniencia];
|
|
248
|
+
if (blocos.length === 0) {
|
|
249
|
+
throw new Error("resultadoComProveniencia exige ao menos um bloco de proveniência");
|
|
250
|
+
}
|
|
251
|
+
const projetados = blocos.map(b => renderConcise(b));
|
|
252
|
+
const saida = Array.isArray(proveniencia) ? projetados : projetados[0];
|
|
253
|
+
const attribution = attributionList(blocos);
|
|
254
|
+
const resultado = structuredResult({ ...payload, provenance: saida, attribution });
|
|
255
|
+
resultado._meta = {
|
|
256
|
+
[PROVENANCE_META_KEY]: saida,
|
|
257
|
+
[ATTRIBUTION_META_KEY]: attribution
|
|
258
|
+
};
|
|
259
|
+
return resultado;
|
|
260
|
+
}
|
|
261
|
+
// ==================== SCHEMA (JSON Schema verbatim) ====================
|
|
262
|
+
//
|
|
263
|
+
// A superfície publicada deste servidor é JSON Schema escrito à mão e servido
|
|
264
|
+
// verbatim (`CLAUDE.md`): nada de derivar schema de zod aqui, mesmo com o zod
|
|
265
|
+
// tendo voltado como dependência transitiva do pacote de proveniência.
|
|
266
|
+
/** Projeção `concise` de um bloco — a forma que vai em `structuredContent`/`_meta`. */
|
|
267
|
+
export const PROVENANCE_BLOCK_SCHEMA = {
|
|
268
|
+
type: "object",
|
|
269
|
+
description: "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
|
|
270
|
+
properties: {
|
|
271
|
+
source: { type: "string", description: "Fonte oficial do dado" },
|
|
272
|
+
source_url: { type: "string", description: "URL canônica que reproduz a consulta" },
|
|
273
|
+
data_vintage: {
|
|
274
|
+
type: ["string", "null"],
|
|
275
|
+
description: "Competência do dado segundo a fonte; null quando a fonte não expõe"
|
|
276
|
+
},
|
|
277
|
+
retrieved_at: {
|
|
278
|
+
type: "string",
|
|
279
|
+
description: "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida " +
|
|
280
|
+
"de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."
|
|
281
|
+
},
|
|
282
|
+
citation: { type: "string", description: "Citação pronta para uso" },
|
|
283
|
+
license: { type: ["string", "null"], description: "Regime legal do dado" }
|
|
284
|
+
},
|
|
285
|
+
required: ["source", "source_url", "data_vintage", "retrieved_at", "citation", "license"]
|
|
286
|
+
};
|
|
287
|
+
const ATTRIBUTION_SCHEMA = {
|
|
288
|
+
type: "array",
|
|
289
|
+
description: "URLs canônicas das fontes desta resposta (lista de atribuição)",
|
|
290
|
+
items: { type: "string" }
|
|
291
|
+
};
|
|
292
|
+
function estender(schema, blocoProvenance) {
|
|
293
|
+
const properties = (schema.properties ?? {});
|
|
294
|
+
const required = (schema.required ?? []);
|
|
295
|
+
return {
|
|
296
|
+
...schema,
|
|
297
|
+
properties: { ...properties, provenance: blocoProvenance, attribution: ATTRIBUTION_SCHEMA },
|
|
298
|
+
required: [...required, "provenance", "attribution"]
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Acrescenta o canal de proveniência ao `outputSchema` de uma tool de fonte
|
|
303
|
+
* única. Os dois campos são OBRIGATÓRIOS: toda resposta de sucesso os carrega.
|
|
304
|
+
*/
|
|
305
|
+
export function comProveniencia(schema) {
|
|
306
|
+
return estender(schema, PROVENANCE_BLOCK_SCHEMA);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Variante multi-procedência: um bloco por procedência que contribuiu com dado.
|
|
310
|
+
* As licenças nunca se fundem — é regra do contrato.
|
|
311
|
+
*/
|
|
312
|
+
export function comProvenienciaMulti(schema) {
|
|
313
|
+
return estender(schema, {
|
|
314
|
+
type: "array",
|
|
315
|
+
description: "Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)",
|
|
316
|
+
items: PROVENANCE_BLOCK_SCHEMA
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
|
package/dist/series.d.ts
CHANGED
|
@@ -124,6 +124,7 @@ export interface ResultadoSerie {
|
|
|
124
124
|
/** Requisições gastas à origem, contando a sonda. */
|
|
125
125
|
requisicoes: number;
|
|
126
126
|
}
|
|
127
|
+
export declare function urlSerie(codigo: number, inicio?: string, fim?: string): string;
|
|
127
128
|
/** `dd/MM/yyyy` de hoje — a origem usa este formato e o fuso do BCB é -03:00. */
|
|
128
129
|
export declare function hojeSgs(): string;
|
|
129
130
|
/**
|
package/dist/series.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../src/series.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAExE,eAAO,MAAM,YAAY,kDAAkD,CAAC;AAE5E,6EAA6E;AAC7E,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,yDAAyD;AACzD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,+EAA+E;AAC/E,eAAO,MAAM,YAAY,IAAI,CAAC;AAiB9B,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;AAEnG,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAO9D,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMxD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD;AAID;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,aAAa,GAAG,IAAI,CAqB/F;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAS/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAYtE;AAcD,MAAM,WAAW,MAAM;IACrB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAUD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAmB,GAAG,MAAM,EAAE,CAqB7F;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,mEAAmE;IACnE,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,iDAAiD;IACjD,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,8EAA8E;IAC9E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../src/series.ts"],"names":[],"mappings":"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"}
|