ibge-br-mcp 5.7.0 → 5.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/E;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAA6E;IAC9F,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,iBAAiB,GAAE,MAAW,EAEzC;IAED;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAU5B;IAED;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAMtD;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExB;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGxB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED,mFAAmF;IACnF,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAElD;IAED;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAM3B;IAED,0EAA0E;IAC1E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAIlC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAOd;IAED;;OAEG;IACH,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAMxC;CACF;AAGD,eAAO,MAAM,KAAK,cAAuB,CAAC;AAG1C,eAAO,MAAM,SAAS;aACpB,MAAM;aACN,MAAM,EAAE,EAAE;aACV,KAAK,EAAE,EAAE;aACT,QAAQ,EAAE,CAAC;CACH,CAAC;AAEX;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC7D,MAAM,CAUR;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEnE"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/E;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAA6E;IAC9F,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,iBAAiB,GAAE,MAAW,EAEzC;IAED;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAU5B;IAED;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAMtD;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExB;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGxB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;IAED,mFAAmF;IACnF,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAElD;IAED;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAM3B;IAED,0EAA0E;IAC1E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAIlC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAOd;IAED;;OAEG;IACH,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAMxC;CACF;AAGD,eAAO,MAAM,KAAK,cAAuB,CAAC;AAG1C,eAAO,MAAM,SAAS;aACpB,MAAM;aACN,MAAM,EAAE,EAAE;aACV,KAAK,EAAE,EAAE;aACT,QAAQ,EAAE,CAAC;CACH,CAAC;AAEX;;GAEG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC7D,MAAM,CAUR;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEnE"}
package/dist/cache.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Simple in-memory cache with TTL support for IBGE API requests
3
3
  */
4
+ import { currentCall } from "@sbissoli/mcp-upstream/als";
4
5
  import { fetchJson, RecursoAusenteError } from "./retry.js";
5
6
  class RequestCache {
6
7
  cache = new Map();
@@ -127,6 +128,13 @@ export async function cachedFetch(url, cacheKeyStr, ttlMinutes, retryOptions) {
127
128
  const cached = cache.get(cacheKeyStr);
128
129
  if (cached !== null) {
129
130
  cache.recordHit(cacheKeyStr);
131
+ // The hit is part of what this call read: the collector keeps it, with the
132
+ // ORIGINAL extraction instant, so a response that merges several reads can
133
+ // report the oldest one (contract §3). `recordCache` stays out of
134
+ // `retrieval` — a cache hit is not a trip to the source.
135
+ const meta = cache.meta(cacheKeyStr);
136
+ if (meta)
137
+ currentCall()?.recordCache(url, meta.retrievedAt);
130
138
  return cached;
131
139
  }
132
140
  // Fetch from API: retry, timeout and the `retrieval` count live in retry.ts.
@@ -135,9 +143,24 @@ export async function cachedFetch(url, cacheKeyStr, ttlMinutes, retryOptions) {
135
143
  const data = await fetchJson(url, retryOptions);
136
144
  // Store in cache
137
145
  cache.set(cacheKeyStr, data, ttlMinutes);
138
- cache.recordFetch(cacheKeyStr, Date.now());
146
+ cache.recordFetch(cacheKeyStr, instanteDaIda(url));
139
147
  return data;
140
148
  }
149
+ /**
150
+ * The instant the collector recorded for the trip that just brought `url` — the
151
+ * same number later hits replay through `recordCache`, so a fresh read and a
152
+ * cached read of the same extraction never disagree by the milliseconds between
153
+ * the collector's clock and this line. Outside a collector, now.
154
+ */
155
+ function instanteDaIda(url) {
156
+ const acessos = currentCall()?.accesses() ?? [];
157
+ for (let i = acessos.length - 1; i >= 0; i--) {
158
+ const a = acessos[i];
159
+ if (a.url === url && !a.fromCache)
160
+ return a.retrievedAt.getTime();
161
+ }
162
+ return Date.now();
163
+ }
141
164
  /**
142
165
  * `cachedFetch` para endpoint de identificador ÚNICO, onde a resposta esperada
143
166
  * é um objeto.
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance block (portfolio contract v1.1) — pt-BR adapter over
2
+ * Provenance block (portfolio contract; version in `provenanceContext`) — pt-BR adapter over
3
3
  * `@sbissoli/mcp-provenance`. The canonical model, the `concise`/`detailed`
4
4
  * projections, serialization determinism, timezone handling and the footer
5
5
  * wording live in the package; this module binds them to the IBGE server:
@@ -13,7 +13,10 @@
13
13
  * - `provenienciaIbge(...)`, the per-call builder every tool uses. It pulls
14
14
  * the REAL extraction instant (`retrieved_at`) and `served_from_cache` from
15
15
  * the cache layer via `lastFetchMeta` (contract: cache hits keep the
16
- * original fetch instant — it is the legally relevant extraction date), and
16
+ * original fetch instant — it is the legally relevant extraction date) —
17
+ * or, for a response that merges several reads (`partes`, since 5.8.1),
18
+ * from what the call's collector saw of each one: the OLDEST instant on top,
19
+ * cache only if every part was, one `field_sources` entry per part — and
17
20
  * since 5.4.0 the `retrieval` block (v1.1) from the network collector of the
18
21
  * call (`@sbissoli/mcp-upstream`, opened by `withMetrics` — see `retry.ts`):
19
22
  * how many requests went to the IBGE, how many attempts they took and which
@@ -35,7 +38,7 @@ import { z } from "zod";
35
38
  import { ConciseBlockSchema, type CanonicalProvenance, type ConciseBlock } from "@sbissoli/mcp-provenance";
36
39
  /** Single provenance context for the server: `_meta` namespace, locale, timezone, mode. */
37
40
  export declare const provenanceContext: import("@sbissoli/mcp-provenance").ProvenanceContext;
38
- /** Canonical envelope v1.0 (post-validation). */
41
+ /** Canonical envelope (post-validation); its `contract_version` is `provenanceContext.contractVersion`. */
39
42
  export type Provenance = CanonicalProvenance;
40
43
  /** Namespaced `_meta` keys (stable — audit/UI consumers read by these keys). */
41
44
  export declare const PROVENANCE_META_KEY: string;
@@ -53,59 +56,114 @@ export declare const IBGE_LICENSE: {
53
56
  readonly terms_url: "https://www.planalto.gov.br/ccivil_03/_ato2015-2018/2016/decreto/d8777.htm";
54
57
  readonly verified_at: "2026-08-08";
55
58
  };
59
+ /**
60
+ * What the SIDRA does to numbers already published — the same sentence the
61
+ * server instructions carry (`SERVER_INSTRUCTIONS` in `server.ts`; a test keeps
62
+ * the two together). It is the `revision.note` of the two SIDRA-backed sources.
63
+ */
64
+ export declare const NOTA_REVISAO_SIDRA = "O IBGE revisa n\u00FAmeros j\u00E1 divulgados (PIB trimestral a cada divulga\u00E7\u00E3o, repondera\u00E7\u00E3o da PNAD, revis\u00F5es anuais de PIM, PMC e PMS) e a API n\u00E3o guarda a vers\u00E3o anterior.";
56
65
  /**
57
66
  * Source registry — one entry per IBGE API this server consumes. `name` is
58
67
  * what the concise projection shows as `source`; `endpoint` is the base URL
59
- * actually queried. Text only, never the IBGE logo/brand (docs/01).
68
+ * actually queried; `revision` is fixed per source (see `REVISAO_VIGENTE`).
69
+ * Text only, never the IBGE logo/brand (docs/01).
60
70
  */
61
71
  export declare const FONTES_IBGE: {
62
72
  readonly LOCALIDADES: {
63
73
  readonly name: "IBGE — API de Localidades";
64
74
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v1/localidades";
75
+ readonly revision: {
76
+ readonly status: "current";
77
+ readonly note: null;
78
+ };
65
79
  };
66
80
  readonly SIDRA: {
67
81
  readonly name: "IBGE — SIDRA (Banco de Tabelas Estatísticas)";
68
82
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v3/agregados";
83
+ readonly revision: {
84
+ readonly status: "current";
85
+ readonly note: "O IBGE revisa números já divulgados (PIB trimestral a cada divulgação, reponderação da PNAD, revisões anuais de PIM, PMC e PMS) e a API não guarda a versão anterior.";
86
+ };
69
87
  };
70
88
  readonly AGREGADOS: {
71
89
  readonly name: "IBGE — API de Agregados (SIDRA)";
72
90
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v3/agregados";
91
+ readonly revision: {
92
+ readonly status: "current";
93
+ readonly note: "O IBGE revisa números já divulgados (PIB trimestral a cada divulgação, reponderação da PNAD, revisões anuais de PIM, PMC e PMS) e a API não guarda a versão anterior.";
94
+ };
73
95
  };
74
96
  readonly NOMES: {
75
97
  readonly name: "IBGE — API de Nomes (Censo Demográfico 2010)";
76
98
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v2/censos/nomes";
99
+ readonly revision: {
100
+ readonly status: "current";
101
+ readonly note: null;
102
+ };
77
103
  };
78
104
  readonly MALHAS: {
79
105
  readonly name: "IBGE — API de Malhas Geográficas";
80
106
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v3/malhas";
107
+ readonly revision: {
108
+ readonly status: "current";
109
+ readonly note: null;
110
+ };
81
111
  };
82
112
  readonly GEOSERVICOS: {
83
113
  readonly name: "IBGE — Geosserviços (WFS, IBGE Geociências)";
84
114
  readonly endpoint: "https://geoservicos.ibge.gov.br/geoserver/ows";
115
+ readonly revision: {
116
+ readonly status: "current";
117
+ readonly note: null;
118
+ };
85
119
  };
86
120
  readonly NOTICIAS: {
87
121
  readonly name: "IBGE — API de Notícias";
88
122
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v3/noticias";
123
+ readonly revision: {
124
+ readonly status: "current";
125
+ readonly note: null;
126
+ };
89
127
  };
90
128
  readonly POPULACAO: {
91
129
  readonly name: "IBGE — API de Projeções de População";
92
130
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v1/projecoes/populacao";
131
+ readonly revision: {
132
+ readonly status: "current";
133
+ readonly note: null;
134
+ };
93
135
  };
94
136
  readonly CNAE: {
95
137
  readonly name: "IBGE — API CNAE";
96
138
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v2/cnae";
139
+ readonly revision: {
140
+ readonly status: "current";
141
+ readonly note: null;
142
+ };
97
143
  };
98
144
  readonly CALENDARIO: {
99
145
  readonly name: "IBGE — API de Calendário de Divulgações";
100
146
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v3/calendario";
147
+ readonly revision: {
148
+ readonly status: "current";
149
+ readonly note: null;
150
+ };
101
151
  };
102
152
  readonly PAISES: {
103
153
  readonly name: "IBGE — API de Países";
104
154
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v1/paises";
155
+ readonly revision: {
156
+ readonly status: "current";
157
+ readonly note: null;
158
+ };
105
159
  };
106
160
  readonly PESQUISAS: {
107
161
  readonly name: "IBGE — API de Pesquisas (Cidades@)";
108
162
  readonly endpoint: "https://servicodados.ibge.gov.br/api/v1/pesquisas";
163
+ readonly revision: {
164
+ readonly status: "current";
165
+ readonly note: null;
166
+ };
109
167
  };
110
168
  };
111
169
  export type FonteIbge = keyof typeof FONTES_IBGE;
@@ -130,6 +188,48 @@ export interface ProvenienciaIbgeOptions {
130
188
  derivado?: {
131
189
  nota: string;
132
190
  };
191
+ /**
192
+ * The parts of a response that MERGES several reads (endpoints, sources, or
193
+ * the same API at different instants) — one entry per part, the main one
194
+ * included. With `partes`, `chaveCache` is not read: each part's instant and
195
+ * cache status come from what THIS call read (the collector's accesses —
196
+ * network trips and cache hits alike, `cachedFetch` records both), the top
197
+ * `retrieved_at` is the OLDEST of them, `served_from_cache` is true only if
198
+ * every part came from cache, and `field_sources` carries one entry per part
199
+ * (contract §3). A part this call did not read is not in the response and is
200
+ * dropped — the block never points at data it does not carry.
201
+ */
202
+ partes?: ParteDaResposta[];
203
+ /**
204
+ * Extraction already known to the caller — for data the server holds in its
205
+ * own memory beyond the request cache (the deep-research index), whose
206
+ * instant no access of this call can tell. Wins over `chaveCache`.
207
+ */
208
+ extracao?: {
209
+ retrievedAt: Date;
210
+ servedFromCache: boolean | null;
211
+ };
212
+ }
213
+ /** One part of a merged response: the payload fields it produced and where it lives. */
214
+ export interface ParteDaResposta {
215
+ /** Payload fields this part produced (what `field_sources[].fields` names). */
216
+ fields: string[];
217
+ /** The URL of this part (what it reproduces); default filter of the accesses. */
218
+ url: string;
219
+ /** Which accesses of the call belong to this part. Default: URL equal to `url`. */
220
+ filtro?: (url: string) => boolean;
221
+ /** Instant known to the caller instead of the collector (see `extracao`). */
222
+ extracao?: {
223
+ retrievedAt: Date;
224
+ servedFromCache: boolean | null;
225
+ };
226
+ /** Instant known to the caller, used only when the collector did not see this part. */
227
+ reserva?: {
228
+ retrievedAt: Date;
229
+ servedFromCache: boolean | null;
230
+ };
231
+ dataset?: string | null;
232
+ dataVintage?: string | null;
133
233
  }
134
234
  /**
135
235
  * Builds the canonical provenance block for one tool response. Citation
@@ -168,8 +268,8 @@ export declare function extrairPeriodoSidra(colunas: string[], registros: Array<
168
268
  */
169
269
  export declare const provenanceBlockSchema: typeof ConciseBlockSchema;
170
270
  /**
171
- * Extends a tool's output schema with the provenance channel of the contract
172
- * v1.1: the concise block + the `attribution` URL list (MCP RFC #711). Every
271
+ * Extends a tool's output schema with the provenance channel of the contract:
272
+ * the concise block + the `attribution` URL list (MCP RFC #711). Every
173
273
  * successful response carries both (wired in `toMcpResult`).
174
274
  */
175
275
  export declare function comProveniencia<T extends z.ZodObject<z.ZodRawShape>>(schema: T): z.ZodObject<{
@@ -205,6 +305,17 @@ export declare function comProveniencia<T extends z.ZodObject<z.ZodRawShape>>(sc
205
305
  retrieved_at: z.ZodNullable<z.ZodString>;
206
306
  served_from_cache: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
207
307
  }, z.core.$strict>>>;
308
+ notices: z.ZodOptional<z.ZodArray<z.ZodString>>;
309
+ derived: z.ZodOptional<z.ZodBoolean>;
310
+ derivation_note: z.ZodOptional<z.ZodString>;
311
+ revision: z.ZodOptional<z.ZodObject<{
312
+ status: z.ZodEnum<{
313
+ current: "current";
314
+ final: "final";
315
+ provisional: "provisional";
316
+ }>;
317
+ note: z.ZodNullable<z.ZodString>;
318
+ }, z.core.$strict>>;
208
319
  }, z.core.$strict>;
209
320
  attribution: z.ZodArray<z.ZodString>;
210
321
  }, z.core.$strip>;
@@ -213,6 +324,6 @@ export declare function projetarProveniencia(p: Provenance): {
213
324
  provenance: ConciseBlock;
214
325
  attribution: string[];
215
326
  };
216
- /** Compact text footer for the Markdown channel (fixed wording, contract v1.0). */
327
+ /** Compact text footer for the Markdown channel (wording owned by the package). */
217
328
  export declare function rodapeProveniencia(p: Provenance): string;
218
329
  //# sourceMappingURL=provenance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provenance block (portfolio contract v1.1) — pt-BR adapter over
2
+ * Provenance block (portfolio contract; version in `provenanceContext`) — pt-BR adapter over
3
3
  * `@sbissoli/mcp-provenance`. The canonical model, the `concise`/`detailed`
4
4
  * projections, serialization determinism, timezone handling and the footer
5
5
  * wording live in the package; this module binds them to the IBGE server:
@@ -13,7 +13,10 @@
13
13
  * - `provenienciaIbge(...)`, the per-call builder every tool uses. It pulls
14
14
  * the REAL extraction instant (`retrieved_at`) and `served_from_cache` from
15
15
  * the cache layer via `lastFetchMeta` (contract: cache hits keep the
16
- * original fetch instant — it is the legally relevant extraction date), and
16
+ * original fetch instant — it is the legally relevant extraction date) —
17
+ * or, for a response that merges several reads (`partes`, since 5.8.1),
18
+ * from what the call's collector saw of each one: the OLDEST instant on top,
19
+ * cache only if every part was, one `field_sources` entry per part — and
17
20
  * since 5.4.0 the `retrieval` block (v1.1) from the network collector of the
18
21
  * call (`@sbissoli/mcp-upstream`, opened by `withMetrics` — see `retry.ts`):
19
22
  * how many requests went to the IBGE, how many attempts they took and which
@@ -42,6 +45,11 @@ export const provenanceContext = createProvenanceContext({
42
45
  locale: "pt-BR",
43
46
  timezone: { offset: "-03:00", label: "horário de Brasília" },
44
47
  defaultMode: "concise",
48
+ // 1.2: `field_sources` goes out on responses that merge sub-sources — since
49
+ // 5.8.1 the tools that read several endpoints in one answer pass them as
50
+ // `partes` (see `provenienciaIbge`). The 1.3 keys are already declared by the
51
+ // schema; emitting them is the next step.
52
+ contractVersion: "1.2",
45
53
  });
46
54
  /** Namespaced `_meta` keys (stable — audit/UI consumers read by these keys). */
47
55
  export const PROVENANCE_META_KEY = provenanceContext.metaKeys.provenance;
@@ -59,59 +67,87 @@ export const IBGE_LICENSE = {
59
67
  terms_url: "https://www.planalto.gov.br/ccivil_03/_ato2015-2018/2016/decreto/d8777.htm",
60
68
  verified_at: "2026-08-08",
61
69
  };
70
+ /**
71
+ * What the SIDRA does to numbers already published — the same sentence the
72
+ * server instructions carry (`SERVER_INSTRUCTIONS` in `server.ts`; a test keeps
73
+ * the two together). It is the `revision.note` of the two SIDRA-backed sources.
74
+ */
75
+ export const NOTA_REVISAO_SIDRA = "O IBGE revisa números já divulgados (PIB trimestral a cada divulgação, reponderação da PNAD, revisões anuais de PIM, PMC e PMS) e a API não guarda a versão anterior.";
76
+ /**
77
+ * Revision status of the IBGE sources (contract v1.3, owner's decision of
78
+ * 08/10/2026): `current` for every one — the value is the version in force at
79
+ * the extraction instant and the source may revise it. `final` needs proof from
80
+ * the source and nobody uses it yet. The note is the source's own story when the
81
+ * server already tells it (SIDRA), `null` otherwise — never a new claim.
82
+ */
83
+ const REVISAO_VIGENTE = { status: "current", note: null };
84
+ const REVISAO_SIDRA = { status: "current", note: NOTA_REVISAO_SIDRA };
62
85
  /**
63
86
  * Source registry — one entry per IBGE API this server consumes. `name` is
64
87
  * what the concise projection shows as `source`; `endpoint` is the base URL
65
- * actually queried. Text only, never the IBGE logo/brand (docs/01).
88
+ * actually queried; `revision` is fixed per source (see `REVISAO_VIGENTE`).
89
+ * Text only, never the IBGE logo/brand (docs/01).
66
90
  */
67
91
  export const FONTES_IBGE = {
68
92
  LOCALIDADES: {
69
93
  name: "IBGE — API de Localidades",
70
94
  endpoint: API_ENDPOINTS.IBGE.LOCALIDADES,
95
+ revision: REVISAO_VIGENTE,
71
96
  },
72
97
  SIDRA: {
73
98
  name: "IBGE — SIDRA (Banco de Tabelas Estatísticas)",
74
99
  endpoint: API_ENDPOINTS.SIDRA,
100
+ revision: REVISAO_SIDRA,
75
101
  },
76
102
  AGREGADOS: {
77
103
  name: "IBGE — API de Agregados (SIDRA)",
78
104
  endpoint: API_ENDPOINTS.IBGE.AGREGADOS,
105
+ revision: REVISAO_SIDRA,
79
106
  },
80
107
  NOMES: {
81
108
  name: "IBGE — API de Nomes (Censo Demográfico 2010)",
82
109
  endpoint: API_ENDPOINTS.IBGE.NOMES,
110
+ revision: REVISAO_VIGENTE,
83
111
  },
84
112
  MALHAS: {
85
113
  name: "IBGE — API de Malhas Geográficas",
86
114
  endpoint: API_ENDPOINTS.IBGE.MALHAS,
115
+ revision: REVISAO_VIGENTE,
87
116
  },
88
117
  GEOSERVICOS: {
89
118
  name: "IBGE — Geosserviços (WFS, IBGE Geociências)",
90
119
  endpoint: API_ENDPOINTS.IBGE.GEOSERVICOS,
120
+ revision: REVISAO_VIGENTE,
91
121
  },
92
122
  NOTICIAS: {
93
123
  name: "IBGE — API de Notícias",
94
124
  endpoint: API_ENDPOINTS.IBGE.NOTICIAS,
125
+ revision: REVISAO_VIGENTE,
95
126
  },
96
127
  POPULACAO: {
97
128
  name: "IBGE — API de Projeções de População",
98
129
  endpoint: API_ENDPOINTS.IBGE.POPULACAO,
130
+ revision: REVISAO_VIGENTE,
99
131
  },
100
132
  CNAE: {
101
133
  name: "IBGE — API CNAE",
102
134
  endpoint: API_ENDPOINTS.IBGE.CNAE,
135
+ revision: REVISAO_VIGENTE,
103
136
  },
104
137
  CALENDARIO: {
105
138
  name: "IBGE — API de Calendário de Divulgações",
106
139
  endpoint: API_ENDPOINTS.IBGE.CALENDARIO,
140
+ revision: REVISAO_VIGENTE,
107
141
  },
108
142
  PAISES: {
109
143
  name: "IBGE — API de Países",
110
144
  endpoint: API_ENDPOINTS.IBGE.PAISES,
145
+ revision: REVISAO_VIGENTE,
111
146
  },
112
147
  PESQUISAS: {
113
148
  name: "IBGE — API de Pesquisas (Cidades@)",
114
149
  endpoint: API_ENDPOINTS.IBGE.PESQUISAS,
150
+ revision: REVISAO_VIGENTE,
115
151
  },
116
152
  };
117
153
  /** "dd/mm/aaaa" of an instant in Brasília time, for the citation text. */
@@ -123,6 +159,52 @@ function dataCitacao(retrievedAt) {
123
159
  const [ano, mes, dia] = iso.slice(0, 10).split("-");
124
160
  return `${dia}/${mes}/${ano}`;
125
161
  }
162
+ function lerPartes(partes) {
163
+ const call = currentCall();
164
+ const lidas = [];
165
+ for (const p of partes) {
166
+ const base = {
167
+ fields: p.fields,
168
+ source_url: p.url,
169
+ dataset_id: p.dataset ?? null,
170
+ data_vintage: p.dataVintage ?? null,
171
+ };
172
+ const conhecida = (e) => ({
173
+ ...base,
174
+ retrieved_at: e.retrievedAt.toISOString(),
175
+ served_from_cache: e.servedFromCache,
176
+ });
177
+ if (p.extracao) {
178
+ lidas.push(conhecida(p.extracao));
179
+ continue;
180
+ }
181
+ const lida = call?.fieldSource({
182
+ fields: p.fields,
183
+ source_url: p.url,
184
+ filter: p.filtro ?? ((u) => u === p.url),
185
+ });
186
+ if (lida && lida.retrieved_at !== null) {
187
+ lidas.push({
188
+ ...base,
189
+ retrieved_at: lida.retrieved_at,
190
+ served_from_cache: lida.served_from_cache,
191
+ });
192
+ }
193
+ else if (p.reserva) {
194
+ lidas.push(conhecida(p.reserva));
195
+ }
196
+ // Otherwise this call did not read the part: it is not in the response.
197
+ }
198
+ return lidas;
199
+ }
200
+ /** True only if every part came from cache; false if any was fetched now; null if any is unknown. */
201
+ function cacheDasPartes(lidas) {
202
+ if (lidas.some((p) => p.served_from_cache === false))
203
+ return false;
204
+ if (lidas.some((p) => p.served_from_cache === null))
205
+ return null;
206
+ return true;
207
+ }
126
208
  /**
127
209
  * Builds the canonical provenance block for one tool response. Citation
128
210
  * follows the pattern fixed by the verbatim verification (docs/01):
@@ -130,8 +212,27 @@ function dataCitacao(retrievedAt) {
130
212
  */
131
213
  export function provenienciaIbge(opts) {
132
214
  const fonte = FONTES_IBGE[opts.fonte];
133
- const meta = opts.chaveCache ? lastFetchMeta(opts.chaveCache) : null;
215
+ const lidas = opts.partes ? lerPartes(opts.partes) : [];
216
+ let meta;
217
+ if (lidas.length > 0) {
218
+ // The OLDEST part is the top: "nothing here is older than this" (§3) — by
219
+ // construction, so the lib's 1.2 check (top newer than a sub-source is a
220
+ // `ProvenanceContractError`) can never fire.
221
+ meta = {
222
+ retrievedAt: new Date(Math.min(...lidas.map((p) => Date.parse(p.retrieved_at)))),
223
+ servedFromCache: cacheDasPartes(lidas),
224
+ };
225
+ }
226
+ else if (opts.extracao) {
227
+ meta = opts.extracao;
228
+ }
229
+ else {
230
+ meta = opts.chaveCache ? lastFetchMeta(opts.chaveCache) : null;
231
+ }
134
232
  const retrievedAt = meta?.retrievedAt ?? new Date();
233
+ // `field_sources` only when the response really merged sub-sources: a single
234
+ // part read is a single extraction, and the contract leaves the key out then.
235
+ const fieldSources = lidas.length > 1 ? lidas : undefined;
135
236
  return provenanceContext.build({
136
237
  source: { name: fonte.name, agency: "IBGE", database: null, endpoint: fonte.endpoint },
137
238
  source_url: opts.url,
@@ -142,11 +243,15 @@ export function provenienciaIbge(opts) {
142
243
  license: IBGE_LICENSE,
143
244
  derived: opts.derivado !== undefined,
144
245
  ...(opts.derivado !== undefined ? { derivation_note: opts.derivado.nota } : {}),
246
+ // Informed now, on the wire only once the context emits 1.3 (the lib drops
247
+ // it from 1.1/1.2 blocks).
248
+ revision: fonte.revision,
145
249
  served_from_cache: meta ? meta.servedFromCache : null,
146
250
  // The REAL count of this call (requests, attempts, anomalies), measured by
147
251
  // the collector `withMetrics` opened; `null` = not measured (cache only, or
148
252
  // no collector), which the contract prefers over an invented clean block.
149
253
  retrieval: currentCall()?.retrieval() ?? null,
254
+ ...(fieldSources ? { field_sources: fieldSources } : {}),
150
255
  });
151
256
  }
152
257
  /** Fixed derivation note for the D2 statistics modes (estatisticas/agruparPor/topN). */
@@ -206,10 +311,14 @@ const DESCRICOES_IBGE = {
206
311
  source_url: "URL canônica que reproduz a consulta",
207
312
  data_vintage: "Período de referência do dado segundo a fonte; null se a fonte não expõe",
208
313
  retrieved_at: "Instante real da extração no upstream (ISO-8601, horário de Brasília)",
209
- retrieval: "Diagnóstico de origem desta chamada (contrato v1.1): idas à API do IBGE, tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null quando nada foi medido (resposta servida só do cache)",
314
+ retrieval: "Diagnóstico de origem desta chamada: idas à API do IBGE, tentativas somadas e anomalias contornadas; unstable=true quando houve anomalia. null quando nada foi medido (resposta servida só do cache)",
210
315
  citation: "Citação pronta para uso",
211
316
  license: "Regime legal do dado",
212
- field_sources: "Proveniência por sub-fonte (contrato v1.2): presente só quando a resposta junta partes extraídas de origens ou em momentos distintos, uma entrada por grupo de campos; ausente quando a resposta vem de uma única extração",
317
+ field_sources: "Proveniência por sub-fonte: presente só quando a resposta junta partes extraídas de origens ou em momentos distintos, uma entrada por grupo de campos; ausente quando a resposta vem de uma única extração",
318
+ notices: "Avisos que o IBGE publica junto com o dado (quebra de série, unidade, atualização), copiados como vieram; ausente quando não há aviso",
319
+ derived: "Presente (true) só quando o servidor calculou o valor — estatísticas, rankings, comparações — em vez de repassá-lo como veio do IBGE",
320
+ derivation_note: "O que o servidor calculou; presente junto com derived",
321
+ revision: "Se o dado ainda pode mudar no IBGE: current = versão vigente na extração, que o IBGE pode revisar depois; provisional = preliminar; final = não muda mais. note traz o específico da fonte quando há",
213
322
  };
214
323
  /**
215
324
  * Grafts descriptions onto a zod schema, node by node, from the JSON Schema
@@ -225,8 +334,19 @@ texto = no?.description) {
225
334
  const interno = no?.oneOf ? no.oneOf.find((n) => n.type !== "null") : no;
226
335
  saida = descreverPeloJsonSchema(schema.unwrap(), interno, {}, "").nullable();
227
336
  }
337
+ else if (schema instanceof z.ZodOptional) {
338
+ // The keys added after v1.1 (`field_sources`, and the four of v1.3) are
339
+ // optional: walk into them so the package's text reaches their children,
340
+ // and keep them optional — out of `required` in the listed schema.
341
+ saida = descreverPeloJsonSchema(schema.unwrap(), no, {}, "").optional();
342
+ }
228
343
  else if (schema instanceof z.ZodArray) {
229
- saida = z.array(descreverPeloJsonSchema(schema.element, no?.items));
344
+ // `clone` keeps the array's checks (`.min(1)` of field_sources/notices);
345
+ // rebuilding it with `z.array(...)` would drop them.
346
+ saida = schema.clone({
347
+ ...schema.def,
348
+ element: descreverPeloJsonSchema(schema.element, no?.items),
349
+ });
230
350
  }
231
351
  else if (schema instanceof z.ZodObject) {
232
352
  saida = z.strictObject(Object.fromEntries(Object.entries(schema.shape).map(([chave, filho]) => [
@@ -254,13 +374,13 @@ texto = no?.description) {
254
374
  */
255
375
  export const provenanceBlockSchema = descreverPeloJsonSchema(ConciseBlockSchema, CONCISE_BLOCK_JSON_SCHEMA, DESCRICOES_IBGE);
256
376
  /**
257
- * Extends a tool's output schema with the provenance channel of the contract
258
- * v1.1: the concise block + the `attribution` URL list (MCP RFC #711). Every
377
+ * Extends a tool's output schema with the provenance channel of the contract:
378
+ * the concise block + the `attribution` URL list (MCP RFC #711). Every
259
379
  * successful response carries both (wired in `toMcpResult`).
260
380
  */
261
381
  export function comProveniencia(schema) {
262
382
  return schema.extend({
263
- provenance: provenanceBlockSchema.describe("Bloco de proveniência (contrato v1.1): fonte, URL, período, extração, diagnóstico de origem e licença"),
383
+ provenance: provenanceBlockSchema.describe("Bloco de proveniência do portfólio: fonte, URL, período, extração, diagnóstico de origem e licença"),
264
384
  attribution: z
265
385
  .array(z.string())
266
386
  .describe("URLs canônicas das fontes desta resposta (lista de atribuição)"),
@@ -270,7 +390,7 @@ export function comProveniencia(schema) {
270
390
  export function projetarProveniencia(p) {
271
391
  return { provenance: renderConcise(p), attribution: attributionList([p]) };
272
392
  }
273
- /** Compact text footer for the Markdown channel (fixed wording, contract v1.0). */
393
+ /** Compact text footer for the Markdown channel (wording owned by the package). */
274
394
  export function rodapeProveniencia(p) {
275
395
  return provenanceContext.footer(p);
276
396
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}