@cyanheads/eurostat-mcp-server 0.11.1 → 0.11.3
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/AGENTS.md +6 -4
- package/CLAUDE.md +6 -4
- package/README.md +20 -17
- package/changelog/0.11.x/0.11.2.md +27 -0
- package/changelog/0.11.x/0.11.3.md +45 -0
- package/changelog/template.md +10 -3
- package/dist/config/server-config.js +1 -1
- package/dist/config/server-config.js.map +1 -1
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts +14 -1
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js +17 -0
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-drop.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-drop.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +26 -12
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +181 -47
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +11 -2
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +8 -6
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +149 -54
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +22 -8
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +215 -43
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +16 -6
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +67 -16
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
- package/dist/mcp-server/tools/narrowing-advice.d.ts +64 -3
- package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -1
- package/dist/mcp-server/tools/narrowing-advice.js +160 -4
- package/dist/mcp-server/tools/narrowing-advice.js.map +1 -1
- package/dist/mcp-server/tools/notice-text.d.ts +18 -0
- package/dist/mcp-server/tools/notice-text.d.ts.map +1 -0
- package/dist/mcp-server/tools/notice-text.js +40 -0
- package/dist/mcp-server/tools/notice-text.js.map +1 -0
- package/dist/mcp-server/tools/value-list-paging.d.ts +11 -1
- package/dist/mcp-server/tools/value-list-paging.d.ts.map +1 -1
- package/dist/mcp-server/tools/value-list-paging.js +13 -1
- package/dist/mcp-server/tools/value-list-paging.js.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +7 -5
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js +145 -40
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
- package/dist/services/eurostat-bulk/types.d.ts +44 -4
- package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
- package/dist/services/eurostat-bulk/types.js.map +1 -1
- package/dist/services/eurostat-catalogue/dimension-value-index.d.ts +81 -0
- package/dist/services/eurostat-catalogue/dimension-value-index.d.ts.map +1 -0
- package/dist/services/eurostat-catalogue/dimension-value-index.js +410 -0
- package/dist/services/eurostat-catalogue/dimension-value-index.js.map +1 -0
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +100 -14
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +359 -90
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
- package/dist/services/eurostat-catalogue/search-text.d.ts +12 -0
- package/dist/services/eurostat-catalogue/search-text.d.ts.map +1 -0
- package/dist/services/eurostat-catalogue/search-text.js +31 -0
- package/dist/services/eurostat-catalogue/search-text.js.map +1 -0
- package/dist/services/eurostat-catalogue/types.d.ts +11 -0
- package/dist/services/eurostat-catalogue/types.d.ts.map +1 -1
- package/dist/services/eurostat-codelists.d.ts +2 -1
- package/dist/services/eurostat-codelists.d.ts.map +1 -1
- package/dist/services/eurostat-codelists.js +2 -1
- package/dist/services/eurostat-codelists.js.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.d.ts +30 -2
- package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.js +209 -19
- package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
- package/dist/services/eurostat-data/sdmx-metadata.d.ts.map +1 -1
- package/dist/services/eurostat-data/sdmx-metadata.js +4 -20
- package/dist/services/eurostat-data/sdmx-metadata.js.map +1 -1
- package/dist/services/eurostat-data/types.d.ts +108 -4
- package/dist/services/eurostat-data/types.d.ts.map +1 -1
- package/dist/services/eurostat-data/types.js.map +1 -1
- package/dist/services/eurostat-filters.d.ts +18 -6
- package/dist/services/eurostat-filters.d.ts.map +1 -1
- package/dist/services/eurostat-filters.js +24 -7
- package/dist/services/eurostat-filters.js.map +1 -1
- package/dist/services/eurostat-periods.d.ts +54 -1
- package/dist/services/eurostat-periods.d.ts.map +1 -1
- package/dist/services/eurostat-periods.js +101 -1
- package/dist/services/eurostat-periods.js.map +1 -1
- package/dist/services/xml-entities.d.ts +13 -0
- package/dist/services/xml-entities.d.ts.map +1 -0
- package/dist/services/xml-entities.js +31 -0
- package/dist/services/xml-entities.js.map +1 -0
- package/package.json +7 -7
- package/server.json +5 -5
- package/skills/eurostat-guide/SKILL.md +6 -5
- package/skills/eurostat-guide/references/sql-analysis.md +21 -5
|
@@ -6,14 +6,17 @@
|
|
|
6
6
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
7
7
|
import { CanvasIdSchema } from '@cyanheads/mcp-ts-core/canvas';
|
|
8
8
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
9
|
+
import { escapeMarkdownInline } from '@cyanheads/mcp-ts-core/utils';
|
|
9
10
|
import { clampReadLimit } from '../clamp-read-limit.js';
|
|
10
11
|
import { hoistDimensions } from '../hoist-dimensions.js';
|
|
11
|
-
import { dimensionsToNarrow, narrowingAdvice } from '../narrowing-advice.js';
|
|
12
|
+
import { dimensionsToNarrow, dottedValueAdvice, formatValues, narrowingAdvice, RENAME_FILTER_KEYS_HINT, UNKNOWN_FILTER_KEY_WHEN, } from '../narrowing-advice.js';
|
|
13
|
+
import { countOf, listEmptyValues, spanOf } from '../notice-text.js';
|
|
12
14
|
import { acquireCanvas, getCanvas, isCanvasFailure, newTableName, } from '../../../services/canvas-accessor.js';
|
|
13
15
|
import { bulkRowSchema, getEurostatBulkService, } from '../../../services/eurostat-bulk/eurostat-bulk-service.js';
|
|
14
16
|
import { TIME_COLUMN } from '../../../services/eurostat-bulk/types.js';
|
|
15
17
|
import { getEurostatDataService } from '../../../services/eurostat-data/eurostat-data-service.js';
|
|
16
|
-
import {
|
|
18
|
+
import { normalizeFilters } from '../../../services/eurostat-filters.js';
|
|
19
|
+
import { isComextDataset } from '../../../services/eurostat-hosts.js';
|
|
17
20
|
import { outageAnswer } from '../../../services/eurostat-outage.js';
|
|
18
21
|
import { cutNotice, frequenciesOf, PERIOD_FORMS, periodCuts, resolvePeriods, } from '../../../services/eurostat-periods.js';
|
|
19
22
|
/** Upper bound on rows echoed inline, whatever preview_limit asks for. */
|
|
@@ -39,7 +42,7 @@ async function* prepend(first, rest) {
|
|
|
39
42
|
/** Selects the advertised limit policy before registration. */
|
|
40
43
|
export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_download_dataset', {
|
|
41
44
|
title: 'Download Eurostat Dataset',
|
|
42
|
-
description: 'Download a Eurostat dataset in bulk through the SDMX 2.1 TSV endpoint and stage
|
|
45
|
+
description: 'Download a Eurostat dataset in bulk through the SDMX 2.1 TSV endpoint and stage it as a SQL table on the dataframe canvas — the route to a whole dataset, where eurostat_query_dataset is the route to a slice of one. The TSV wire format is roughly half the bytes of the JSON-stat body eurostat_query_dataset reads, so it reaches datasets that would otherwise time out, and it is expanded here into one row per non-blank TSV cell, including the unflagged ":" cells that mark a period a series lacks or a period of a frequency it has no observation of. Filters take the same dimension-code map eurostat_query_dataset uses and are applied server-side by Eurostat; call eurostat_get_dataset_info first for the dimension codes and eurostat_get_dimension_values for their values. Narrow with since_period/until_period rather than asking for the most recent N periods — the TSV layout keeps a column for every period whichever is requested, so a period range is what actually shrinks the response. Transfers are bounded by a decoded-byte budget enforced while streaming: complete rows within the allowed prefix are retained with budgetExceeded set; a budget too small for a usable row fails as byte_budget_exceeded with narrowing guidance. Only preview_limit rows come back inline. When a table is staged, call eurostat_dataframe_describe first to confirm its columns, then eurostat_dataframe_query; without a canvas, rows past the preview are not retained.',
|
|
43
46
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
44
47
|
input: z.object({
|
|
45
48
|
dataset_code: z
|
|
@@ -49,7 +52,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
49
52
|
filters: z
|
|
50
53
|
.record(z.string(), z.array(z.string()))
|
|
51
54
|
.default({})
|
|
52
|
-
.describe('Dimension filters as a map of dimension code → array of accepted values, applied by Eurostat before the body is sent. Example: {"unit": ["CP_MEUR"], "na_item": ["B1G"], "geo": ["DE", "FR"]}. Omit a dimension or pass an empty array to accept every value for it; a blank or whitespace-only value is likewise unset and dropped ([""] accepts every value, ["", "DE"] is ["DE"]). Dimension codes match in any case ("GEO" is geo). Do not put "time" here — use since_period/until_period. Naming a dimension the dataset does not have is rejected with the dataset\'s dimension list rather than silently ignored.'),
|
|
55
|
+
.describe('Dimension filters as a map of dimension code → array of accepted values, applied by Eurostat before the body is sent. Example: {"unit": ["CP_MEUR"], "na_item": ["B1G"], "geo": ["DE", "FR"]}. Omit a dimension or pass an empty array to accept every value for it; a blank or whitespace-only value is likewise unset and dropped ([""] accepts every value, ["", "DE"] is ["DE"]). A value holding "+" is split into separate values (OR): ["DE+FR"] is ["DE", "FR"]. A value holding "." is rejected as invalid_dimension before any request: no Eurostat code contains one. Dimension codes match in any case ("GEO" is geo). Do not put "time" here — use since_period/until_period. Naming a dimension the dataset does not have is rejected with the dataset\'s dimension list rather than silently ignored. A value Eurostat does not know fails the download as invalid_dimension; a valid value with no observation in the selected periods adds none, and the response names it in emptyValues.'),
|
|
53
56
|
since_period: z
|
|
54
57
|
.string()
|
|
55
58
|
.optional()
|
|
@@ -62,8 +65,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
62
65
|
? z.number().multipleOf(1).min(1)
|
|
63
66
|
: z.number().int().min(1).max(PREVIEW_MAX))
|
|
64
67
|
.default(25)
|
|
65
|
-
.describe(`How many
|
|
66
|
-
canvas_id: CanvasIdSchema.optional().describe('Reuse an existing dataframe canvas so this download lands beside earlier results and can be joined against them. Pass the canvasId a previous eurostat_download_dataset or eurostat_query_dataset response returned; omit to start a fresh canvas. Ignored on deployments without a dataframe canvas. A download that
|
|
68
|
+
.describe(`How many rows to echo inline, from the start of the download. Default 25; ${clampLimits ? 'positive integers above 500 are clamped to 500 with a notice' : 'maximum 500; larger values are rejected'}. The full download is on the canvas table when one was staged; this is orientation, not the result set.`),
|
|
69
|
+
canvas_id: CanvasIdSchema.optional().describe('Reuse an existing dataframe canvas so this download lands beside earlier results and can be joined against them. Pass the canvasId a previous eurostat_download_dataset or eurostat_query_dataset response returned; omit to start a fresh canvas. Ignored on deployments without a dataframe canvas. A download that yields no row (a header-only table) fails as no_results and leaves the canvas untouched.'),
|
|
67
70
|
}),
|
|
68
71
|
output: z.object({
|
|
69
72
|
datasetCode: z.string().describe('Dataset code as provided.'),
|
|
@@ -72,22 +75,29 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
72
75
|
.describe('Dimension codes carried by the downloaded rows, in the order Eurostat keys them (e.g., ["freq", "unit", "na_item", "geo"]). Read from the TSV header, so it reflects the response rather than metadata. The period lives in the separate "time" column.'),
|
|
73
76
|
rowCount: z
|
|
74
77
|
.number()
|
|
75
|
-
.describe('
|
|
78
|
+
.describe('Rows expanded from the download, one per non-blank cell. A row carrying a value, a flag, a status or a text value is an observation, a flagged ":" (a value Eurostat reports as unavailable) included. A row holding an unflagged ":" — obs_value null with no flag, status or text — is not: it is a period its series lacks (counted in absentCellCount when the series has an observation of that frequency and the period lies inside that frequency\'s span, from its first to its latest period any downloaded row has an observation in; counted in the notice when it lies outside) or a period of a frequency its series has no observation of.'),
|
|
76
79
|
missingCount: z
|
|
77
80
|
.number()
|
|
78
|
-
.describe('
|
|
81
|
+
.describe('Rows carrying no numeric value (obs_value is null): observations published without a number — a flagged ":" or a text value — and every unflagged ":" row, a period its series lacks (inside or outside the span absentCellCount counts) or a period of a frequency its series has no observation of.'),
|
|
82
|
+
absentCellCount: z
|
|
83
|
+
.number()
|
|
84
|
+
.describe('Unflagged ":" rows — obs_value null with no flag, status or text — at a period of a frequency the same series carries in another downloaded row: periods that series lacks, where Eurostat publishes no observation. Only periods inside that frequency\'s span count: from its first to its latest period any downloaded row has an observation in. The rows at a period before or after the span, which no downloaded row has an observation in, are counted and named in the notice instead. Unflagged rows at the periods of a frequency the series has no observation of (the padding of a mixed-frequency slice, or a series that is ":" throughout) are left out, and a flagged ":" or a text value is an observation, never counted. Part of rowCount and missingCount, and counted over the rows downloaded, so a budget-cut download counts its prefix and settles the span over it.'),
|
|
85
|
+
emptyValues: z
|
|
86
|
+
.record(z.string(), z.array(z.string()))
|
|
87
|
+
.optional()
|
|
88
|
+
.describe('Filter values the dataset has but no downloaded row carries an observation for — no value, flag, status or text in the selected periods — keyed by filter key, spelled as sent (matching ignores case). Eurostat fails a download naming a code it does not know, so each is a valid value; it can carry data in other periods or beside other filter values. Never a period. Omitted when every filter value has an observation, and when budgetExceeded is true, since the rows not downloaded could hold any of them.'),
|
|
79
89
|
periodRange: z
|
|
80
90
|
.object({
|
|
81
91
|
start: z
|
|
82
92
|
.string()
|
|
83
93
|
.optional()
|
|
84
|
-
.describe('Earliest period carrying an observation. Omitted when
|
|
94
|
+
.describe('Earliest period of a row carrying an observation — a value, a flag, a status or a text value; an unflagged ":" row sets no bound. Omitted, with the other bound, when no row carries an observation.'),
|
|
85
95
|
end: z
|
|
86
96
|
.string()
|
|
87
97
|
.optional()
|
|
88
|
-
.describe('Latest period carrying an observation. Omitted when
|
|
98
|
+
.describe('Latest period of a row carrying an observation, read the same way as start. Omitted, with the other bound, when no row carries an observation.'),
|
|
89
99
|
})
|
|
90
|
-
.describe('Period coverage of the
|
|
100
|
+
.describe('Period coverage of the observations actually downloaded. Narrower than the dataset when budgetExceeded is true or a period range was applied.'),
|
|
91
101
|
bytesRead: z
|
|
92
102
|
.number()
|
|
93
103
|
.describe('Decoded TSV bytes accepted for parsing, after decompression when applicable; never more than EUROSTAT_BULK_MAX_BYTES, including an incomplete trailing line that is discarded.'),
|
|
@@ -100,8 +110,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
100
110
|
observations: z
|
|
101
111
|
.array(z
|
|
102
112
|
.record(z.string(), z.union([z.string(), z.number(), z.null()]))
|
|
103
|
-
.describe('One
|
|
104
|
-
.describe('The first preview_limit
|
|
113
|
+
.describe('One downloaded row: one column per dimension holding its code, "time" for the period, then obs_value, obs_flag, obs_flag_label, conf_status, conf_status_label. A label column is null when Eurostat publishes no label for that code. Rows of a DS-* dataset also carry obs_value_text after obs_value: a value Eurostat published as text, such as a PRODCOM quantity unit ("KG"), kept verbatim with obs_value null; a PRODCOM ":C" arrives as conf_status "C" instead.'))
|
|
114
|
+
.describe('The first preview_limit rows of the download, in the order Eurostat streamed them. A prefix of the staged table, not a sample.'),
|
|
105
115
|
canvasId: z
|
|
106
116
|
.string()
|
|
107
117
|
.optional()
|
|
@@ -109,7 +119,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
109
119
|
tableName: z
|
|
110
120
|
.string()
|
|
111
121
|
.optional()
|
|
112
|
-
.describe('Canvas table holding every downloaded
|
|
122
|
+
.describe('Canvas table holding every downloaded row. Call eurostat_dataframe_describe with canvasId first to confirm the table and columns, then eurostat_dataframe_query. Omitted when this deployment runs without a dataframe canvas, in which case only the inline preview survives the call.'),
|
|
113
123
|
stagedRowCount: z
|
|
114
124
|
.number()
|
|
115
125
|
.optional()
|
|
@@ -118,12 +128,12 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
118
128
|
enrichment: {
|
|
119
129
|
totalCount: z
|
|
120
130
|
.number()
|
|
121
|
-
.describe('
|
|
131
|
+
.describe('Rows the download produced — equal to rowCount, unflagged ":" rows included: a period their series lacks (absentCellCount inside its frequency\'s span of periods with an observation, the notice outside it) or a period of a frequency their series has no observation of. The inline observations array holds only the first preview_limit of them; budgetExceeded, not this count, says whether the download is the whole dataset.'),
|
|
122
132
|
appliedQuery: z
|
|
123
133
|
.object({
|
|
124
134
|
filters: z
|
|
125
135
|
.record(z.string(), z.array(z.string()))
|
|
126
|
-
.describe('Dimension filters sent to Eurostat.
|
|
136
|
+
.describe('Dimension filters sent to Eurostat. A value holding "+" appears as its pieces; blank values and dimensions left with no value are dropped.'),
|
|
127
137
|
sincePeriod: z.string().optional().describe('since_period applied, if any.'),
|
|
128
138
|
untilPeriod: z.string().optional().describe('until_period applied, if any.'),
|
|
129
139
|
url: z
|
|
@@ -134,20 +144,19 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
134
144
|
notice: z
|
|
135
145
|
.string()
|
|
136
146
|
.optional()
|
|
137
|
-
.describe('Guidance on every download: the staged table with the required eurostat_dataframe_describe then eurostat_dataframe_query sequence (or, without a canvas, what was returned inline and what was discarded), preceded by a period a bound falls inside when the TSV header shows that frequency, by byte-budget disclosure when the budget stopped the transfer, and by the inline-preview length when preview_limit returns fewer rows than were downloaded.'),
|
|
147
|
+
.describe('Guidance on every download: the staged table with the required eurostat_dataframe_describe then eurostat_dataframe_query sequence (or, without a canvas, what was returned inline and what was discarded), preceded by a period a bound falls inside when the TSV header shows that frequency, by byte-budget disclosure when the budget stopped the transfer, by what the unflagged ":" rows are — the rows at periods no downloaded row has an observation in, before or after a frequency\'s span of periods with one, counted and named per frequency; periods a series lacks inside that span (absentCellCount); the padding of a mixed-frequency slice — by the filter values with no observation (emptyValues), up to 24 named with an omitted count, and by the inline-preview length when preview_limit returns fewer rows than were downloaded.'),
|
|
138
148
|
},
|
|
139
149
|
enrichmentTrailer: {
|
|
140
150
|
appliedQuery: {
|
|
141
151
|
render: (q) => {
|
|
142
152
|
const parts = [];
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
? `- **Filters:** ${keys.map((k) => `${k}=[${(q.filters[k] ?? []).join(', ')}]`).join('; ')}`
|
|
153
|
+
parts.push(Object.keys(q.filters).length > 0
|
|
154
|
+
? `- **Filters:** ${formatValues(q.filters, escapeMarkdownInline)}`
|
|
146
155
|
: '- **Filters:** none (whole dataset)');
|
|
147
156
|
if (q.sincePeriod || q.untilPeriod) {
|
|
148
157
|
parts.push(`- **Period:** ${q.sincePeriod ?? '…'} – ${q.untilPeriod ?? 'latest'}`);
|
|
149
158
|
}
|
|
150
|
-
parts.push(`- **URL:** ${q.url}`);
|
|
159
|
+
parts.push(`- **URL:** ${escapeMarkdownInline(q.url)}`);
|
|
151
160
|
return `**Bulk Request:**\n${parts.join('\n')}`;
|
|
152
161
|
},
|
|
153
162
|
},
|
|
@@ -156,7 +165,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
156
165
|
{
|
|
157
166
|
reason: 'byte_budget_exceeded',
|
|
158
167
|
code: JsonRpcErrorCode.ValidationError,
|
|
159
|
-
when: 'The decoded TSV byte budget was exhausted before a complete header and usable
|
|
168
|
+
when: 'The decoded TSV byte budget was exhausted before a complete header and usable row could be read.',
|
|
160
169
|
recovery: 'Add dimension filters or narrow since_period/until_period to reduce the transfer, or raise EUROSTAT_BULK_MAX_BYTES.',
|
|
161
170
|
thrownBy: 'service',
|
|
162
171
|
},
|
|
@@ -170,15 +179,14 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
170
179
|
{
|
|
171
180
|
reason: 'invalid_dimension',
|
|
172
181
|
code: JsonRpcErrorCode.ValidationError,
|
|
173
|
-
when:
|
|
182
|
+
when: `${UNKNOWN_FILTER_KEY_WHEN}; a filter value contains "." (rejected before any request); or Eurostat rejects a filter value, or the period range selects no period of the dataset (SDMX faultcode 150): it misses the coverage, or holds no whole period. The fault covers both; its TIME_PERIOD clause tells the period range apart.`,
|
|
174
183
|
recovery: 'Check dimension codes with eurostat_get_dataset_info and their values with eurostat_get_dimension_values, and keep the period range inside the dataset coverage, holding a whole period.',
|
|
175
|
-
thrownBy: 'service',
|
|
176
184
|
},
|
|
177
185
|
{
|
|
178
186
|
reason: 'filter_arity',
|
|
179
187
|
code: JsonRpcErrorCode.ValidationError,
|
|
180
188
|
when: 'Eurostat rejected the positional dimension key because it carried the wrong number of positions (SDMX faultcode 140, INVALID_QUERY_NB_FILTERS), meaning the dataset structure has changed since the metadata call.',
|
|
181
|
-
recovery: '
|
|
189
|
+
recovery: 'Re-read the dimensions with eurostat_get_dataset_info and rebuild the filters on them, or retry without filters to download the whole dataset, except a DS-* Comext collection, which Eurostat serves only filtered.',
|
|
182
190
|
thrownBy: 'service',
|
|
183
191
|
},
|
|
184
192
|
{
|
|
@@ -198,7 +206,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
198
206
|
{
|
|
199
207
|
reason: 'no_results',
|
|
200
208
|
code: JsonRpcErrorCode.NotFound,
|
|
201
|
-
when: 'The download completed but
|
|
209
|
+
when: 'The download completed but yielded no row: a header-only table, or a one-day reply whose only cells fall on the next day. Nothing is staged, and no canvas is created or touched. A table whose only rows are unflagged ":" cells succeeds with those rows, with periodRange omitted.',
|
|
202
210
|
recovery: "Verify the filter values with eurostat_get_dimension_values and keep since_period/until_period inside the series' coverage, holding a whole period — a combination that exists in no cell and a range that misses the series both download as an empty table.",
|
|
203
211
|
},
|
|
204
212
|
{
|
|
@@ -212,10 +220,17 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
212
220
|
{
|
|
213
221
|
reason: 'upstream_fault',
|
|
214
222
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
215
|
-
when: 'The SDMX data endpoint returned a fault this server does not model, or a body that is not a TSV table;
|
|
223
|
+
when: 'The SDMX data endpoint returned a fault this server does not model, or a body that is not a TSV table; for a filtered download, the structure endpoint returned a structure this server cannot build a filter key from; the data endpoint — or, for a filtered download, the structure endpoint — answered HTTP 501, which is not retried; or it answered another HTTP 5xx or could not be reached on every retry, which the error marks retryable.',
|
|
216
224
|
recovery: 'Retry in a few minutes, or narrow the request with dimension filters.',
|
|
217
225
|
thrownBy: 'service',
|
|
218
226
|
},
|
|
227
|
+
{
|
|
228
|
+
reason: 'retry_deadline_exceeded',
|
|
229
|
+
code: JsonRpcErrorCode.Timeout,
|
|
230
|
+
when: 'The download did not complete within EUROSTAT_BULK_TIMEOUT_MS (120 s by default), every attempt, backoff and the streamed body included; or, for a filtered download, the structure read that orders its filter key did not answer within the request deadline.',
|
|
231
|
+
recovery: 'Add dimension filters or a narrower since_period/until_period range to shrink the transfer, retry a structure read that timed out in a few minutes, or read a slice small enough to return with eurostat_query_dataset.',
|
|
232
|
+
thrownBy: 'service',
|
|
233
|
+
},
|
|
219
234
|
{
|
|
220
235
|
reason: 'canvas_not_found',
|
|
221
236
|
code: JsonRpcErrorCode.NotFound,
|
|
@@ -238,7 +253,21 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
238
253
|
throw ctx.fail('invalid_period', periods.message);
|
|
239
254
|
}
|
|
240
255
|
const { since_period: sinceP, until_period: untilP } = periods;
|
|
241
|
-
const filters =
|
|
256
|
+
const filters = normalizeFilters(input.filters);
|
|
257
|
+
/**
|
|
258
|
+
* No Eurostat code contains ".", and in the positional key a dotted value would add a
|
|
259
|
+
* position, so one is refused here, before the structure read: nothing is sent. Every
|
|
260
|
+
* dotted value is named at once, each with its own advice.
|
|
261
|
+
*/
|
|
262
|
+
const dotted = Object.entries(filters).flatMap(([key, values]) => values.filter((value) => value.includes('.')).map((value) => ({ key, value })));
|
|
263
|
+
const [firstDotted, ...otherDotted] = dotted;
|
|
264
|
+
if (firstDotted) {
|
|
265
|
+
const advice = dottedValueAdvice(input.dataset_code, [
|
|
266
|
+
{ dimension: firstDotted.key, value: firstDotted.value },
|
|
267
|
+
...otherDotted.map(({ key, value }) => ({ dimension: key, value })),
|
|
268
|
+
]);
|
|
269
|
+
throw ctx.fail('invalid_dimension', `${dotted.length === 1 ? 'A filter value contains' : `${dotted.length} filter values contain`} ".", so nothing was sent to Eurostat: ${dotted.map(({ key, value }) => `"${value}" in filters.${key}`).join(', ')}.`, { recovery: { hint: advice.hint } }, { literals: [...new Set(advice.literals)] });
|
|
270
|
+
}
|
|
242
271
|
/**
|
|
243
272
|
* The positional key needs every dimension in order, not just the filtered
|
|
244
273
|
* ones, so a filtered download first reads the dataset's structure
|
|
@@ -266,6 +295,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
266
295
|
throw err;
|
|
267
296
|
throw ctx.fail(mapped.reason, mapped.message, {
|
|
268
297
|
...(mapped.retryable && { retryable: true }),
|
|
298
|
+
...mapped.data,
|
|
269
299
|
recovery: { hint: mapped.hint },
|
|
270
300
|
});
|
|
271
301
|
}
|
|
@@ -296,7 +326,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
296
326
|
...(sinceP ? [`since_period "${sinceP}"`] : []),
|
|
297
327
|
...(untilP ? [`until_period "${untilP}"`] : []),
|
|
298
328
|
].join(' and ');
|
|
299
|
-
throw ctx.fail('no_results', `The download of "${input.dataset_code}"
|
|
329
|
+
throw ctx.fail('no_results', `The download of "${input.dataset_code}" yielded no row.`, {
|
|
300
330
|
recovery: {
|
|
301
331
|
hint: `Eurostat returned a table with no populated cells for "${input.dataset_code}". Verify the filter values with eurostat_get_dimension_values — a combination present in no cell downloads as an empty body.${range
|
|
302
332
|
? ` Also check that ${range} overlaps the series and holds a whole period of it: Eurostat keeps only periods wholly inside the range, so a range outside the series' own coverage or inside one period downloads as an empty table too.`
|
|
@@ -367,18 +397,38 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
367
397
|
*/
|
|
368
398
|
ctx.enrich.total(stats.rowCount);
|
|
369
399
|
const notices = previewLimit.notice ? [previewLimit.notice] : [];
|
|
400
|
+
// The header is the only frequency signal: it shows a frequency only when a period
|
|
401
|
+
// of it is in range, so one it hides gets no notice. No coverage reaches the TSV.
|
|
402
|
+
const frequencies = frequenciesOf(download.header.periods);
|
|
370
403
|
if (sinceP || untilP) {
|
|
371
|
-
|
|
372
|
-
// of it is in range, so one it hides gets no notice. No coverage reaches the TSV.
|
|
373
|
-
const cuts = periodCuts({ since_period: sinceP, until_period: untilP }, frequenciesOf(download.header.periods));
|
|
404
|
+
const cuts = periodCuts({ since_period: sinceP, until_period: untilP }, frequencies);
|
|
374
405
|
if (cuts.length > 0)
|
|
375
406
|
notices.push(cutNotice(cuts, written));
|
|
376
407
|
}
|
|
377
408
|
if (stats.budgetExceeded) {
|
|
378
|
-
notices.push(`The byte budget stopped this transfer after ${stats.bytesRead.toLocaleString()} bytes, so these ${stats.rowCount.toLocaleString()}
|
|
409
|
+
notices.push(`The byte budget stopped this transfer after ${stats.bytesRead.toLocaleString('en-US')} bytes, so these ${stats.rowCount.toLocaleString('en-US')} rows are the start of "${escapeMarkdownInline(input.dataset_code)}" and not all of it. Add dimension filters or a since_period/until_period range to fit the dataset inside the budget, or raise EUROSTAT_BULK_MAX_BYTES.`);
|
|
410
|
+
}
|
|
411
|
+
// With no observation at all every period lies outside a span, which the sentence below says.
|
|
412
|
+
if (stats.outsideSpans?.rowCount && stats.periodsSeen.length > 0) {
|
|
413
|
+
notices.push(outsideSpanNotice(stats.outsideSpans, stats.rowCount));
|
|
379
414
|
}
|
|
415
|
+
if (stats.absentCellCount > 0) {
|
|
416
|
+
notices.push(`${stats.absentCellCount.toLocaleString('en-US')} of the ${stats.rowCount.toLocaleString('en-US')} downloaded rows (absentCellCount) ${stats.absentCellCount === 1
|
|
417
|
+
? 'is a period its series lacks, not an observation: an unflagged ":" cell'
|
|
418
|
+
: 'are periods their series lacks, not observations: unflagged ":" cells'}, obs_value null with no flag, status or text.`);
|
|
419
|
+
}
|
|
420
|
+
if (stats.periodsSeen.length === 0) {
|
|
421
|
+
notices.push(`No downloaded row carries an observation: ${stats.rowCount === 1
|
|
422
|
+
? 'the row is an unflagged ":" cell'
|
|
423
|
+
: `all ${stats.rowCount.toLocaleString('en-US')} rows are unflagged ":" cells`} (obs_value null with no flag, status or text), so periodRange has no bound.`);
|
|
424
|
+
}
|
|
425
|
+
if (frequencies.size > 1) {
|
|
426
|
+
notices.push('Frequencies are mixed in this slice, and the TSV gives every series a column for each period of each frequency, so a series also holds unflagged ":" rows (obs_value null with no flag, status or text) at the periods of a frequency it does not carry: they are not observations, and absentCellCount leaves them out.');
|
|
427
|
+
}
|
|
428
|
+
if (stats.emptyValues)
|
|
429
|
+
notices.push(emptyValuesNotice(stats.emptyValues));
|
|
380
430
|
if (stats.rowCount > preview.length) {
|
|
381
|
-
notices.push(`preview_limit=${input.preview_limit.toLocaleString()} returns the first ${preview.length.toLocaleString()} of ${stats.rowCount.toLocaleString()} downloaded
|
|
431
|
+
notices.push(`preview_limit=${input.preview_limit.toLocaleString('en-US')} returns the first ${preview.length.toLocaleString('en-US')} of ${stats.rowCount.toLocaleString('en-US')} downloaded rows inline; it does not reduce the download.`);
|
|
382
432
|
}
|
|
383
433
|
if (!staged) {
|
|
384
434
|
/**
|
|
@@ -388,13 +438,13 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
388
438
|
*/
|
|
389
439
|
const discarded = stats.rowCount - preview.length;
|
|
390
440
|
notices.push(discarded === 0
|
|
391
|
-
? `This deployment runs without a dataframe canvas, so nothing was staged; all ${stats.rowCount.toLocaleString()} downloaded
|
|
392
|
-
: `This deployment runs without a dataframe canvas, so nothing was staged: only the ${preview.length.toLocaleString()}
|
|
393
|
-
? `Raise preview_limit to ${stats.rowCount.toLocaleString()} to return every one inline, or set CANVAS_PROVIDER_TYPE=duckdb to keep the download.`
|
|
441
|
+
? `This deployment runs without a dataframe canvas, so nothing was staged; all ${stats.rowCount.toLocaleString('en-US')} downloaded rows are returned inline.`
|
|
442
|
+
: `This deployment runs without a dataframe canvas, so nothing was staged: only the ${preview.length.toLocaleString('en-US')} rows returned inline are retained, and the other ${discarded.toLocaleString('en-US')} were counted and discarded. ${stats.rowCount <= PREVIEW_MAX
|
|
443
|
+
? `Raise preview_limit to ${stats.rowCount.toLocaleString('en-US')} to return every one inline, or set CANVAS_PROVIDER_TYPE=duckdb to keep the download.`
|
|
394
444
|
: 'Set CANVAS_PROVIDER_TYPE=duckdb to keep the download, or use eurostat_query_dataset with dimension filters to fetch a slice small enough to return whole.'}`);
|
|
395
445
|
}
|
|
396
446
|
else {
|
|
397
|
-
notices.push(`All ${staged.stagedRowCount.toLocaleString()} downloaded
|
|
447
|
+
notices.push(`All ${staged.stagedRowCount.toLocaleString('en-US')} downloaded rows are staged as table \`${staged.tableName}\` on canvas \`${staged.canvasId}\`. Call eurostat_dataframe_describe with that canvas_id first to confirm the table and columns, then call eurostat_dataframe_query.`);
|
|
398
448
|
}
|
|
399
449
|
ctx.enrich.notice(notices.join(' '));
|
|
400
450
|
return {
|
|
@@ -402,6 +452,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
402
452
|
dimensionsUsed: download.header.dimensions,
|
|
403
453
|
rowCount: stats.rowCount,
|
|
404
454
|
missingCount: stats.missingCount,
|
|
455
|
+
absentCellCount: stats.absentCellCount,
|
|
456
|
+
...(stats.emptyValues && { emptyValues: stats.emptyValues }),
|
|
405
457
|
periodRange: {
|
|
406
458
|
...(firstPeriod && { start: firstPeriod }),
|
|
407
459
|
...(lastPeriod && { end: lastPeriod }),
|
|
@@ -415,27 +467,34 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
415
467
|
},
|
|
416
468
|
format: (result) => {
|
|
417
469
|
const { start, end } = result.periodRange;
|
|
418
|
-
const
|
|
419
|
-
const period = start || end ? `${start ?? UNREPORTED} – ${end ?? UNREPORTED}` : UNREPORTED;
|
|
470
|
+
const period = start && end ? `${start} – ${end}` : 'none — no row carries an observation';
|
|
420
471
|
const lines = [
|
|
421
472
|
`# Bulk download \`${result.datasetCode}\``,
|
|
422
|
-
`**
|
|
423
|
-
`**Dimensions:** ${result.dimensionsUsed.join(', ')}`,
|
|
473
|
+
`**Rows:** ${result.rowCount} (${result.missingCount} missing) | **Absent cells:** ${result.absentCellCount} | **Period:** ${period}`,
|
|
474
|
+
`**Dimensions:** ${result.dimensionsUsed.map(escapeMarkdownInline).join(', ')}`,
|
|
424
475
|
`**Transfer:** ${result.bytesRead} bytes decoded | **Compressed:** ${result.compressed} | **Budget exceeded:** ${result.budgetExceeded}${result.budgetExceeded ? ' — these rows are the start of the dataset, not all of it' : ''}`,
|
|
425
476
|
];
|
|
477
|
+
if (result.emptyValues) {
|
|
478
|
+
lines.push(`**Values with no observation:** ${formatValues(result.emptyValues, escapeMarkdownInline)} — in the dataset but with no value, flag, status or text in this download`);
|
|
479
|
+
}
|
|
426
480
|
lines.push(result.tableName
|
|
427
481
|
? `**Staged:** table \`${result.tableName}\` on canvas \`${result.canvasId}\` (stagedRowCount ${result.stagedRowCount}) — inspect it with eurostat_dataframe_describe first, then query it with eurostat_dataframe_query`
|
|
428
482
|
: '**Staged:** nothing — this deployment runs without a dataframe canvas, so only the rows below are retained');
|
|
429
|
-
lines.push('', `## First ${result.observations.length} observations`);
|
|
483
|
+
lines.push('', `## First ${result.observations.length} rows (\`observations\`)`);
|
|
430
484
|
// dimensionsUsed leaves out the period column, which hoists like any other dimension.
|
|
431
485
|
// The value and flag columns are not candidates, so they stay on every row.
|
|
432
|
-
|
|
486
|
+
// Column names come from the TSV header and codes from its rows, so both are escaped.
|
|
487
|
+
const cell = (col, value) => `${escapeMarkdownInline(col)}=${escapeMarkdownInline(String(value))}`;
|
|
488
|
+
const { header, hoisted } = hoistDimensions(result.observations, [...result.dimensionsUsed, TIME_COLUMN], (row, col) => {
|
|
489
|
+
const value = row[col];
|
|
490
|
+
return value == null ? undefined : cell(col, value);
|
|
491
|
+
});
|
|
433
492
|
if (header)
|
|
434
493
|
lines.push(header, '');
|
|
435
494
|
for (const row of result.observations) {
|
|
436
495
|
lines.push(Object.entries(row)
|
|
437
496
|
.filter(([col]) => !hoisted.has(col))
|
|
438
|
-
.map(([col, value]) =>
|
|
497
|
+
.map(([col, value]) => cell(col, value === null ? 'NULL' : value))
|
|
439
498
|
.join(' | '));
|
|
440
499
|
}
|
|
441
500
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
@@ -443,6 +502,38 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
|
|
|
443
502
|
});
|
|
444
503
|
/** Default-on read-limit policy; startup selects the deployment policy explicitly. */
|
|
445
504
|
export const eurostatDownloadDataset = createEurostatDownloadDataset(true);
|
|
505
|
+
/** The filter values with no observation in the download. */
|
|
506
|
+
function emptyValuesNotice(values) {
|
|
507
|
+
const { list, total } = listEmptyValues(values);
|
|
508
|
+
const one = total === 1;
|
|
509
|
+
return `${countOf(total, 'value')} the download selects ${one ? 'exists' : 'exist'} in the dataset but ${one ? 'has' : 'have'} no observation in this download: ${list}. A value can still carry data in other periods or beside other filter values.`;
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Count and name the rows at each frequency's periods that no downloaded row has an
|
|
513
|
+
* observation in, outside the span from its first to its latest period with one: the
|
|
514
|
+
* unflagged ":" rows `absentCellCount` leaves out.
|
|
515
|
+
*/
|
|
516
|
+
function outsideSpanNotice(outside, rowCount) {
|
|
517
|
+
let periods = 0;
|
|
518
|
+
const clauses = outside.spans.flatMap((span) => {
|
|
519
|
+
if (span.kind === 'empty') {
|
|
520
|
+
periods += span.periods.length;
|
|
521
|
+
return [
|
|
522
|
+
`${spanOf(span.periods)}, the only ${span.periods.length === 1 ? 'period' : 'periods'} of its frequency in this download`,
|
|
523
|
+
];
|
|
524
|
+
}
|
|
525
|
+
periods += span.before.length + span.after.length;
|
|
526
|
+
return [
|
|
527
|
+
...(span.before.length > 0
|
|
528
|
+
? [`${spanOf(span.before)}, before the first period with one (${span.first})`]
|
|
529
|
+
: []),
|
|
530
|
+
...(span.after.length > 0
|
|
531
|
+
? [`${spanOf(span.after)}, after the latest period with one (${span.last})`]
|
|
532
|
+
: []),
|
|
533
|
+
];
|
|
534
|
+
});
|
|
535
|
+
return `${outside.rowCount.toLocaleString('en-US')} of the ${rowCount.toLocaleString('en-US')} downloaded rows ${outside.rowCount === 1 ? 'is an unflagged ":" cell' : 'are unflagged ":" cells'} in ${periods === 1 ? 'a period' : 'periods'} no downloaded row has an observation in: ${clauses.join('; ')}. absentCellCount leaves them out: it counts only periods from a frequency's first to its latest period with an observation.`;
|
|
536
|
+
}
|
|
446
537
|
/**
|
|
447
538
|
* Translate a service-layer failure into the tool's declared contract.
|
|
448
539
|
*
|
|
@@ -455,12 +546,16 @@ export const eurostatDownloadDataset = createEurostatDownloadDataset(true);
|
|
|
455
546
|
* `request.dimensions` is the dataset's dimension list, when known, and
|
|
456
547
|
* `request.filtered` the dimensions the request already filtered — together they let
|
|
457
548
|
* a too-large refusal name the dimensions still open to filter. `request.endpoint` is
|
|
458
|
-
* the endpoint the failed read went to
|
|
549
|
+
* the endpoint the failed read went to: each `upstream_fault` hint names it, and on the
|
|
550
|
+
* structure read a fault with no HTTP status is a structure the order cannot be read from.
|
|
551
|
+
* `data` is the failure's own detail the caller acts on, for the error data.
|
|
459
552
|
*/
|
|
460
553
|
function mapBulkFailure(err, datasetCode, request) {
|
|
461
554
|
const data = err.data;
|
|
462
555
|
const reason = data?.reason;
|
|
463
556
|
const message = err.message;
|
|
557
|
+
// A DS-* collection refuses an unfiltered download as too large, so no hint offers one there.
|
|
558
|
+
const offerUnfiltered = !isComextDataset(datasetCode);
|
|
464
559
|
switch (reason) {
|
|
465
560
|
case 'extraction_too_big':
|
|
466
561
|
return {
|
|
@@ -475,6 +570,18 @@ function mapBulkFailure(err, datasetCode, request) {
|
|
|
475
570
|
hint: `Dataset "${datasetCode}" is not available for dissemination. Use eurostat_search_datasets or eurostat_browse_themes to find a valid code.`,
|
|
476
571
|
};
|
|
477
572
|
case 'invalid_dimension':
|
|
573
|
+
// The key builder names every filter key the structure lacks, and the key order.
|
|
574
|
+
if (Array.isArray(data?.unknownDimensions)) {
|
|
575
|
+
return {
|
|
576
|
+
reason,
|
|
577
|
+
message,
|
|
578
|
+
hint: RENAME_FILTER_KEYS_HINT,
|
|
579
|
+
data: {
|
|
580
|
+
unknownDimensions: data.unknownDimensions,
|
|
581
|
+
dimensionOrder: data.dimensionOrder,
|
|
582
|
+
},
|
|
583
|
+
};
|
|
584
|
+
}
|
|
478
585
|
return {
|
|
479
586
|
reason,
|
|
480
587
|
message,
|
|
@@ -487,7 +594,7 @@ function mapBulkFailure(err, datasetCode, request) {
|
|
|
487
594
|
return {
|
|
488
595
|
reason,
|
|
489
596
|
message,
|
|
490
|
-
hint: `Eurostat expected a different number of filter positions for "${datasetCode}" than its metadata reports. Re-read the dimensions with eurostat_get_dataset_info, or retry without filters.`,
|
|
597
|
+
hint: `Eurostat expected a different number of filter positions for "${datasetCode}" than its metadata reports. Re-read the dimensions with eurostat_get_dataset_info${offerUnfiltered ? ', or retry without filters' : ''}.`,
|
|
491
598
|
};
|
|
492
599
|
case 'invalid_period':
|
|
493
600
|
return {
|
|
@@ -501,6 +608,15 @@ function mapBulkFailure(err, datasetCode, request) {
|
|
|
501
608
|
message,
|
|
502
609
|
hint: `Eurostat queued this extraction rather than serving it. Add dimension filters or a since_period/until_period range to make the request cheap enough for "${datasetCode}" to stream inline.`,
|
|
503
610
|
};
|
|
611
|
+
case 'retry_deadline_exceeded':
|
|
612
|
+
return {
|
|
613
|
+
reason,
|
|
614
|
+
message,
|
|
615
|
+
data: { deadlineMs: data?.deadlineMs, elapsedMs: data?.elapsedMs },
|
|
616
|
+
hint: request.endpoint === 'structure'
|
|
617
|
+
? `Eurostat's SDMX structure endpoint did not answer for "${datasetCode}" within the request deadline, every attempt included, so the dimension order a filtered download needs could not be read. Retry in a few minutes, or read the same filters through the Statistics API with eurostat_query_dataset.`
|
|
618
|
+
: `The download of "${datasetCode}" did not finish within the server's bulk allowance, every attempt and the streamed body included. Narrow it with dimension filters or a shorter since_period/until_period range, or read a slice small enough to return with eurostat_query_dataset.`,
|
|
619
|
+
};
|
|
504
620
|
case 'upstream_fault':
|
|
505
621
|
// The services mark an endpoint that was down, not one that answered badly.
|
|
506
622
|
if (data?.retryable === true) {
|
|
@@ -514,6 +630,24 @@ function mapBulkFailure(err, datasetCode, request) {
|
|
|
514
630
|
: `Eurostat's SDMX data endpoint ${answer} for "${datasetCode}" on every attempt — an upstream outage, not a fault in the request. Retry in a few minutes.`,
|
|
515
631
|
};
|
|
516
632
|
}
|
|
633
|
+
// An HTTP status the fetch layer does not retry (a 501): an answer, not a body to read.
|
|
634
|
+
if (typeof data?.status === 'number') {
|
|
635
|
+
return {
|
|
636
|
+
reason,
|
|
637
|
+
message,
|
|
638
|
+
hint: request.endpoint === 'structure'
|
|
639
|
+
? `Eurostat's SDMX structure endpoint answered HTTP ${data.status} for "${datasetCode}", a status this server does not retry on its own, so the dimension order a filtered download needs could not be read. Retry in a few minutes. If it fails the same way, eurostat_query_dataset takes the same filters through the Statistics API, which does not depend on this structure${offerUnfiltered ? ', and a download without filters skips the read' : ''}.`
|
|
640
|
+
: `Eurostat's SDMX data endpoint answered HTTP ${data.status} for "${datasetCode}", a status this server does not retry on its own. Retry in a few minutes. If it fails the same way, eurostat_query_dataset reads the observations through the Statistics API, a separate endpoint, for a slice small enough to return.`,
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
// The structure read answered, but with no dimension order to key a filter on.
|
|
644
|
+
if (request.endpoint === 'structure') {
|
|
645
|
+
return {
|
|
646
|
+
reason,
|
|
647
|
+
message,
|
|
648
|
+
hint: `Eurostat returned a structure definition for "${datasetCode}" that this server cannot build a positional filter key from, so the filtered download was not sent. Retry in a few minutes. If it fails the same way, eurostat_query_dataset takes the same filters through the Statistics API, which does not depend on this structure${offerUnfiltered ? ', and a download without filters skips the read' : ''}.`,
|
|
649
|
+
};
|
|
650
|
+
}
|
|
517
651
|
return {
|
|
518
652
|
reason,
|
|
519
653
|
message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurostat-download-dataset.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-download-dataset.tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EACL,aAAa,EACb,SAAS,EACT,eAAe,EACf,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,EACb,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAgB,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,gCAAgC,CAAC;AAExC,0EAA0E;AAC1E,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;;;GAKG;AACH,KAAK,SAAS,CAAC,CAAC,UAAU,CACxB,IAA6B,EAC7B,OAAkB,EAClB,KAAa;IAEb,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,KAAc,EAAE,IAA6B;IACnE,MAAM,KAAK,CAAC;IACZ,KAAK,CAAC,CAAC,IAAI,CAAC;AACd,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,WAAoB,EAAE,EAAE,CACpE,IAAI,CAAC,2BAA2B,EAAE;IAChC,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,y0CAAy0C;IAC30C,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,mTAAmT,CACpT;QACH,OAAO,EAAE,CAAC;aACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACvC,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,2lBAA2lB,CAC5lB;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8EAA8E,YAAY,y1BAAy1B,CACp7B;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2cAA2c,CAC5c;QACH,aAAa,EAAE,CAAC,WAAW;YACzB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAC3C;aACE,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,qFAAqF,WAAW,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,yCAAyC,0GAA0G,CACxT;QACH,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3C,oYAAoY,CACrY;KACF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC7D,cAAc,EAAE,CAAC;aACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,CACP,yPAAyP,CAC1P;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,CACP,mHAAmH,CACpH;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,CAAC,wEAAwE,CAAC;QACrF,WAAW,EAAE,CAAC;aACX,MAAM,CAAC;YACN,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,+EAA+E,CAChF;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,6EAA6E,CAC9E;SACJ,CAAC;aACD,QAAQ,CACP,uIAAuI,CACxI;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,CACP,gLAAgL,CACjL;QACH,UAAU,EAAE,CAAC;aACV,OAAO,EAAE;aACT,QAAQ,CACP,sKAAsK,CACvK;QACH,cAAc,EAAE,CAAC;aACd,OAAO,EAAE;aACT,QAAQ,CACP,yMAAyM,CAC1M;QACH,YAAY,EAAE,CAAC;aACZ,KAAK,CACJ,CAAC;aACE,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC/D,QAAQ,CACP,udAAud,CACxd,CACJ;aACA,QAAQ,CACP,wIAAwI,CACzI;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wKAAwK,CACzK;QACH,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,iSAAiS,CAClS;QACH,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,kFAAkF,CACnF;KACJ,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,CACP,mNAAmN,CACpN;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,CAAC;YACN,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;iBACvC,QAAQ,CACP,iGAAiG,CAClG;YACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC5E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC5E,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CACP,yJAAyJ,CAC1J;SACJ,CAAC;aACD,QAAQ,CAAC,0CAA0C,CAAC;QACvD,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,6bAA6b,CAC9b;KACJ;IAED,iBAAiB,EAAE;QACjB,YAAY,EAAE;YACZ,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACpC,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,MAAM,GAAG,CAAC;oBACb,CAAC,CAAC,kBAAkB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC7F,CAAC,CAAC,qCAAqC,CAC1C,CAAC;gBACF,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACnC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC,CAAC;gBACrF,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAClC,OAAO,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,CAAC;SACF;KACF;IAED,MAAM,EAAE;QACN;YACE,MAAM,EAAE,sBAAsB;YAC9B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,0GAA0G;YAChH,QAAQ,EACN,qHAAqH;YACvH,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,qFAAqF;YAC3F,QAAQ,EACN,sFAAsF;YACxF,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,qSAAqS;YAC3S,QAAQ,EACN,0LAA0L;YAC5L,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,oNAAoN;YAC1N,QAAQ,EACN,gHAAgH;YAClH,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,uaAAua;YAC7a,QAAQ,EAAE,sCAAsC,YAAY,2GAA2G;SACxK;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,oKAAoK;YAC1K,SAAS,EAAE,KAAK;YAChB,QAAQ,EACN,+HAA+H;YACjI,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,4HAA4H;YAClI,QAAQ,EACN,+PAA+P;SAClQ;QACD;YACE,MAAM,EAAE,oBAAoB;YAC5B,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,+PAA+P;YACrQ,SAAS,EAAE,KAAK;YAChB,QAAQ,EACN,mJAAmJ;YACrJ,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,gRAAgR;YACtR,QAAQ,EAAE,uEAAuE;YACjF,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,kFAAkF;YACxF,QAAQ,EAAE,gFAAgF;SAC3F;KACF;IAED,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG;QACxB,MAAM,YAAY,GAAG,cAAc,CACjC,OAAO,CAAC,aAAa,EACrB,WAAW,EACX,eAAe,EACf,2BAA2B,EAC3B,GAAG,CACJ,CAAC;QACF,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,sBAAsB,EAAE,CAAC;QACtC,mFAAmF;QACnF,8EAA8E;QAC9E,MAAM,OAAO,GAAG;YACd,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,SAAS;YACrD,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,SAAS;SACtD,CAAC;QACF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhD;;;;;WAKG;QACH,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC;;;WAGG;QACH,MAAM,UAAU,GAAG,KAAK,EAAK,QAAwB,EAAE,GAAqB,EAAc,EAAE;YAC1F,IAAI,CAAC;gBACH,OAAO,MAAM,GAAG,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE;oBACrD,UAAU,EACP,GAAgB,CAAC,IAAI,EAAE,MAAM,KAAK,oBAAoB;wBACrD,CAAC,CAAC,MAAM,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,EAAE,GAAG,CAAC;wBACnE,CAAC,CAAC,SAAS;oBACf,QAAQ;oBACR,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC/B,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM;oBAAE,MAAM,GAAG,CAAC;gBACvB,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;oBAC5C,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,cAAc,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,CAClD,sBAAsB,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CACrF,CAAC;QAEF,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAEvE,IAAI,MAAmF,CAAC;QACxF;;;;;WAKG;QACH,IAAI,CAAC;YACH;;;;;eAKG;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG;oBACZ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChB,MAAM,GAAG,CAAC,IAAI,CACZ,YAAY,EACZ,oBAAoB,KAAK,CAAC,YAAY,4BAA4B,EAClE;oBACE,QAAQ,EAAE;wBACR,IAAI,EAAE,0DAA0D,KAAK,CAAC,YAAY,gIAChF,KAAK;4BACH,CAAC,CAAC,oBAAoB,KAAK,6MAA6M;4BACxO,CAAC,CAAC,EACN,EAAE;qBACH;iBACF,CACF,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,MAAM,EAAE,CAAC;gBACX,gFAAgF;gBAChF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,CACtE,CAAC,GAAY,EAAE,EAAE;oBACf,IAAI,eAAe,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC;wBAC7C,MAAM,GAAG,CAAC,IAAI,CACZ,kBAAkB,EAClB,GAAG,CAAC,OAAO,EACX,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAC7B,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;oBACJ,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC,CACF,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;oBACtF,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;oBACrE,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;gBACH,MAAM,GAAG;oBACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,cAAc,EAAE,MAAM,CAAC,QAAQ;oBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN;;;;;;;mBAOG;gBACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;oBAC9B,kEAAkE;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACrC,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,GAAG,CAAC,MAAM,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;SAC1E,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC;YACT,YAAY,EAAE;gBACZ,OAAO;gBACP,GAAG,CAAC,MAAM,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACtC,GAAG,CAAC,MAAM,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACtC,GAAG,EAAE,QAAQ,CAAC,GAAG;aAClB;SACF,CAAC,CAAC;QACH;;;;;WAKG;QACH,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,OAAO,GAAa,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,mFAAmF;YACnF,kFAAkF;YAClF,MAAM,IAAI,GAAG,UAAU,CACrB,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAC9C,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CACvC,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,+CAA+C,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,oBAAoB,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,mCAAmC,KAAK,CAAC,YAAY,yJAAyJ,CACjV,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CACV,iBAAiB,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,sBAAsB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,mEAAmE,CACpN,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ;;;;eAIG;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAClD,OAAO,CAAC,IAAI,CACV,SAAS,KAAK,CAAC;gBACb,CAAC,CAAC,+EAA+E,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,+CAA+C;gBAC/J,CAAC,CAAC,oFAAoF,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,6DAA6D,SAAS,CAAC,cAAc,EAAE,gCACxM,KAAK,CAAC,QAAQ,IAAI,WAAW;oBAC3B,CAAC,CAAC,0BAA0B,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,uFAAuF;oBAClJ,CAAC,CAAC,2JACN,EAAE,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,OAAO,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,iDAAiD,MAAM,CAAC,SAAS,gBAAgB,MAAM,CAAC,QAAQ,qIAAqI,CACnR,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAErC,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU;YAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE;gBACX,GAAG,CAAC,WAAW,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;gBAC1C,GAAG,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;aACvC;YACD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,YAAY,EAAE,OAAO;YACrB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;QAC1C,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3F,MAAM,KAAK,GAAa;YACtB,qBAAqB,MAAM,CAAC,WAAW,IAAI;YAC3C,qBAAqB,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,YAAY,2BAA2B,MAAM,EAAE;YAC/F,mBAAmB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrD,iBAAiB,MAAM,CAAC,SAAS,oCAAoC,MAAM,CAAC,UAAU,2BAA2B,MAAM,CAAC,cAAc,GACpI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,EACxF,EAAE;SACH,CAAC;QACF,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,SAAS;YACd,CAAC,CAAC,uBAAuB,MAAM,CAAC,SAAS,kBAAkB,MAAM,CAAC,QAAQ,sBAAsB,MAAM,CAAC,cAAc,oGAAoG;YACzN,CAAC,CAAC,4GAA4G,CACjH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,MAAM,CAAC,YAAY,CAAC,MAAM,eAAe,CAAC,CAAC;QACtE,sFAAsF;QACtF,4EAA4E;QAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CACzC,MAAM,CAAC,YAAY,EACnB,CAAC,GAAG,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,EACvC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACpE,CAAC;QACF,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;iBAChB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAClE,IAAI,CAAC,KAAK,CAAC,CACf,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC;AAEL,sFAAsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;AAe3E;;;;;;;;;;;;;GAaG;AACH,SAAS,cAAc,CACrB,GAAY,EACZ,WAAmB,EACnB,OAA2F;IAE3F,MAAM,IAAI,GAAI,GAAgB,CAAC,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;IAC5B,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;IACvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB;YACvB,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,+CAA+C,WAAW,8CAA8C,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;aACnL,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,YAAY,WAAW,oHAAoH;aAClJ,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,8FAA8F;gBAC9F,IAAI,EACF,IAAI,EAAE,WAAW,KAAK,IAAI;oBACxB,CAAC,CAAC,yLAAyL,WAAW,+GAA+G;oBACrT,CAAC,CAAC,kCAAkC,WAAW,yJAAyJ;aAC7M,CAAC;QACJ,KAAK,cAAc;YACjB,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,iEAAiE,WAAW,+GAA+G;aAClM,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,iDAAiD,WAAW,yCAAyC,YAAY,+CAA+C;aACvK,CAAC;QACJ,KAAK,cAAc;YACjB,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,4JAA4J,WAAW,qBAAqB;aACnM,CAAC;QACJ,KAAK,gBAAgB;YACnB,4EAA4E;YAC5E,IAAI,IAAI,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO;oBACL,MAAM;oBACN,OAAO;oBACP,SAAS,EAAE,IAAI;oBACf,IAAI,EACF,OAAO,CAAC,QAAQ,KAAK,WAAW;wBAC9B,CAAC,CAAC,sCAAsC,MAAM,SAAS,WAAW,kKAAkK;wBACpO,CAAC,CAAC,iCAAiC,MAAM,SAAS,WAAW,8FAA8F;iBAChK,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,qDAAqD,WAAW,0EAA0E;aACjJ,CAAC;QACJ;YACE,OAAO;IACX,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"eurostat-download-dataset.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-download-dataset.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export declare const eurostatGetDatasetInfo: import("@cyanheads/mcp-ts-core").To
|
|
|
33
33
|
}, {
|
|
34
34
|
readonly reason: "upstream_fault";
|
|
35
35
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
36
|
-
readonly when: "Eurostat returned a dataset structure or content constraint this server cannot read — malformed, truncated, not XML, or missing the requested dataset's dataflow
|
|
36
|
+
readonly when: "Eurostat returned a dataset structure or content constraint this server cannot read — malformed, truncated, not XML, or missing the requested dataset's dataflow; the structure endpoint answered HTTP 501, which is not retried; or it answered another HTTP 5xx or could not be reached on every retry, which the error marks retryable.";
|
|
37
37
|
readonly recovery: "Retry in a few minutes, since a failed structure read is not cached. If it fails the same way, eurostat_query_dataset reads the observations, with dimension codes and labels, from a separate endpoint.";
|
|
38
38
|
}], undefined>;
|
|
39
39
|
//# sourceMappingURL=eurostat-get-dataset-info.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurostat-get-dataset-info.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAIhF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"eurostat-get-dataset-info.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAIhF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyLjC,CAAC"}
|