@cyanheads/eurostat-mcp-server 0.11.0 → 0.11.2

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.
Files changed (69) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +11 -8
  4. package/changelog/0.11.x/0.11.1.md +23 -0
  5. package/changelog/0.11.x/0.11.2.md +27 -0
  6. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts +14 -1
  7. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts.map +1 -1
  8. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js +17 -0
  9. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js.map +1 -1
  10. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.d.ts +1 -1
  11. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +1 -1
  12. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +14 -12
  14. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +98 -41
  16. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts +1 -1
  18. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +10 -1
  20. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +4 -4
  22. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +25 -4
  24. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +6 -4
  26. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +88 -24
  28. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  29. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +4 -4
  30. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +18 -6
  32. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
  33. package/dist/mcp-server/tools/hoist-dimensions.d.ts +18 -0
  34. package/dist/mcp-server/tools/hoist-dimensions.d.ts.map +1 -0
  35. package/dist/mcp-server/tools/hoist-dimensions.js +29 -0
  36. package/dist/mcp-server/tools/hoist-dimensions.js.map +1 -0
  37. package/dist/mcp-server/tools/narrowing-advice.d.ts +8 -7
  38. package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/narrowing-advice.js +16 -9
  40. package/dist/mcp-server/tools/narrowing-advice.js.map +1 -1
  41. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +5 -4
  42. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
  43. package/dist/services/eurostat-bulk/eurostat-bulk-service.js +96 -18
  44. package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
  45. package/dist/services/eurostat-bulk/types.d.ts +21 -4
  46. package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
  47. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +14 -8
  48. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
  49. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +34 -17
  50. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
  51. package/dist/services/eurostat-codelists.d.ts +2 -1
  52. package/dist/services/eurostat-codelists.d.ts.map +1 -1
  53. package/dist/services/eurostat-codelists.js +2 -1
  54. package/dist/services/eurostat-codelists.js.map +1 -1
  55. package/dist/services/eurostat-data/eurostat-data-service.d.ts +12 -1
  56. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  57. package/dist/services/eurostat-data/eurostat-data-service.js +129 -26
  58. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  59. package/dist/services/eurostat-data/types.d.ts +22 -11
  60. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  61. package/dist/services/eurostat-data/types.js.map +1 -1
  62. package/dist/services/eurostat-periods.d.ts +107 -1
  63. package/dist/services/eurostat-periods.d.ts.map +1 -1
  64. package/dist/services/eurostat-periods.js +182 -7
  65. package/dist/services/eurostat-periods.js.map +1 -1
  66. package/package.json +4 -4
  67. package/server.json +3 -3
  68. package/skills/eurostat-guide/SKILL.md +4 -3
  69. package/skills/eurostat-guide/references/sql-analysis.md +18 -2
@@ -7,13 +7,15 @@ 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
9
  import { clampReadLimit } from '../clamp-read-limit.js';
10
+ import { hoistDimensions } from '../hoist-dimensions.js';
10
11
  import { dimensionsToNarrow, narrowingAdvice } from '../narrowing-advice.js';
11
12
  import { acquireCanvas, getCanvas, isCanvasFailure, newTableName, } from '../../../services/canvas-accessor.js';
12
13
  import { bulkRowSchema, getEurostatBulkService, } from '../../../services/eurostat-bulk/eurostat-bulk-service.js';
14
+ import { TIME_COLUMN } from '../../../services/eurostat-bulk/types.js';
13
15
  import { getEurostatDataService } from '../../../services/eurostat-data/eurostat-data-service.js';
14
16
  import { dropUnsetFilters } from '../../../services/eurostat-filters.js';
15
17
  import { outageAnswer } from '../../../services/eurostat-outage.js';
16
- import { PERIOD_FORMS, resolvePeriods } from '../../../services/eurostat-periods.js';
18
+ import { cutNotice, frequenciesOf, PERIOD_FORMS, periodCuts, resolvePeriods, } from '../../../services/eurostat-periods.js';
17
19
  /** Upper bound on rows echoed inline, whatever preview_limit asks for. */
18
20
  const PREVIEW_MAX = 500;
19
21
  /**
@@ -37,7 +39,7 @@ async function* prepend(first, rest) {
37
39
  /** Selects the advertised limit policy before registration. */
38
40
  export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_download_dataset', {
39
41
  title: 'Download Eurostat Dataset',
40
- description: 'Download a Eurostat dataset in bulk through the SDMX 2.1 TSV endpoint and stage every observation 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 observation. 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 observations within the allowed prefix are retained with budgetExceeded set; a budget too small for a usable observation 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.',
42
+ 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.',
41
43
  annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
42
44
  input: z.object({
43
45
  dataset_code: z
@@ -51,17 +53,17 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
51
53
  since_period: z
52
54
  .string()
53
55
  .optional()
54
- .describe(`Start of the period range, inclusive, sent as startPeriod. Accepted forms: ${PERIOD_FORMS} (e.g., "2020", "2023-Q1", "2024-01"). Extra leading zeros after the letter are dropped ("2020-W001" is sent as "2020-W01"), a day of the year is sent as three digits ("2026-D1" as "2026-D001"), YYYY-A1 is sent as YYYY, and a period of another frequency is mapped onto the dataset's own. A malformed or non-existent period (e.g., "2020-13") is rejected as invalid_period. The most effective way to shrink a bulk response: it removes period columns from the TSV rather than blanking their cells.`),
56
+ .describe(`Start of the period range, inclusive, sent as startPeriod. Accepted forms: ${PERIOD_FORMS} (e.g., "2020", "2023-Q1", "2024-01"). Extra leading zeros after the letter are dropped ("2020-W001" is sent as "2020-W01"), a day of the year is sent as three digits ("2026-D1" as "2026-D001"), and YYYY-A1 is sent as YYYY. Any form works on any dataset, read as a span of days, but Eurostat keeps only periods wholly inside the range, per frequency: "2022-06" on annual data excludes 2022, which starts before the bound, and a notice names that period when the TSV header shows its frequency. A range whose first and last day are the same day is requested as that day and the next, and the next day is dropped before anything is counted or staged. A malformed or non-existent period (e.g., "2020-13") is rejected as invalid_period. The most effective way to shrink a bulk response: it removes period columns from the TSV rather than blanking their cells.`),
55
57
  until_period: z
56
58
  .string()
57
59
  .optional()
58
- .describe('End of the period range, inclusive (e.g., "2024"), sent as endPeriod, in the same forms as since_period. Omit for data through the latest available period. The range must hold at least one day: a since_period that starts after until_period ends is rejected as invalid_period, while pairs of different frequencies are fine ("2020-06" to "2020").'),
60
+ .describe('End of the period range, inclusive (e.g., "2024"), sent as endPeriod, in the same forms as since_period. Omit for data through the latest available period. A bound that falls inside a period excludes it here too: "2023-06" on annual data excludes 2023, which ends after the bound. The range must hold at least one day: a since_period that starts after until_period ends is rejected as invalid_period, and bounds of different frequencies are compared by day.'),
59
61
  preview_limit: (clampLimits
60
62
  ? z.number().multipleOf(1).min(1)
61
63
  : z.number().int().min(1).max(PREVIEW_MAX))
62
64
  .default(25)
63
- .describe(`How many observations 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.`),
64
- 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 carries no observations fails as no_results and leaves the canvas untouched.'),
65
+ .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.`),
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 yields no row (a header-only table) fails as no_results and leaves the canvas untouched.'),
65
67
  }),
66
68
  output: z.object({
67
69
  datasetCode: z.string().describe('Dataset code as provided.'),
@@ -70,22 +72,25 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
70
72
  .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.'),
71
73
  rowCount: z
72
74
  .number()
73
- .describe('Observations expanded from the download — one per populated cell, counting those Eurostat reports as unavailable.'),
75
+ .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) or a period of a frequency its series has no observation of.'),
74
76
  missingCount: z
75
77
  .number()
76
- .describe('Downloaded observations carrying no numeric value (obs_value is null).'),
78
+ .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 or a period of a frequency its series has no observation of.'),
79
+ absentCellCount: z
80
+ .number()
81
+ .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. 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.'),
77
82
  periodRange: z
78
83
  .object({
79
84
  start: z
80
85
  .string()
81
86
  .optional()
82
- .describe('Earliest period carrying an observation. Omitted when nothing was downloaded.'),
87
+ .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.'),
83
88
  end: z
84
89
  .string()
85
90
  .optional()
86
- .describe('Latest period carrying an observation. Omitted when nothing was downloaded.'),
91
+ .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.'),
87
92
  })
88
- .describe('Period coverage of the rows actually downloaded. Narrower than the dataset when budgetExceeded is true or a period range was applied.'),
93
+ .describe('Period coverage of the observations actually downloaded. Narrower than the dataset when budgetExceeded is true or a period range was applied.'),
89
94
  bytesRead: z
90
95
  .number()
91
96
  .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.'),
@@ -98,8 +103,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
98
103
  observations: z
99
104
  .array(z
100
105
  .record(z.string(), z.union([z.string(), z.number(), z.null()]))
101
- .describe('One observation as a flat 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.'))
102
- .describe('The first preview_limit observations of the download, in the order Eurostat streamed them. A prefix of the staged table, not a sample.'),
106
+ .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.'))
107
+ .describe('The first preview_limit rows of the download, in the order Eurostat streamed them. A prefix of the staged table, not a sample.'),
103
108
  canvasId: z
104
109
  .string()
105
110
  .optional()
@@ -107,7 +112,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
107
112
  tableName: z
108
113
  .string()
109
114
  .optional()
110
- .describe('Canvas table holding every downloaded observation. 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.'),
115
+ .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.'),
111
116
  stagedRowCount: z
112
117
  .number()
113
118
  .optional()
@@ -116,21 +121,23 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
116
121
  enrichment: {
117
122
  totalCount: z
118
123
  .number()
119
- .describe('Observations the download produced — equal to rowCount. The inline observations array holds only the first preview_limit of them; budgetExceeded, not this count, says whether the download is the whole dataset.'),
124
+ .describe('Rows the download produced — equal to rowCount, unflagged ":" rows included: a period their series lacks (absentCellCount) 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.'),
120
125
  appliedQuery: z
121
126
  .object({
122
127
  filters: z
123
128
  .record(z.string(), z.array(z.string()))
124
129
  .describe('Dimension filters sent to Eurostat. Blank values and dimensions left with no value are dropped.'),
125
- sincePeriod: z.string().optional().describe('startPeriod applied, if any.'),
126
- untilPeriod: z.string().optional().describe('endPeriod applied, if any.'),
127
- url: z.string().describe('The SDMX request URL, so the download can be reproduced.'),
130
+ sincePeriod: z.string().optional().describe('since_period applied, if any.'),
131
+ untilPeriod: z.string().optional().describe('until_period applied, if any.'),
132
+ url: z
133
+ .string()
134
+ .describe('The SDMX request URL, so the download can be reproduced. A one-day range goes out as that day and the next, so its endPeriod is a day past untilPeriod.'),
128
135
  })
129
136
  .describe('The bulk request as the server built it.'),
130
137
  notice: z
131
138
  .string()
132
139
  .optional()
133
- .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 byte-budget disclosure when the budget stopped the transfer and by the inline-preview length when preview_limit returns fewer rows than were downloaded.'),
140
+ .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 when a series lacks periods or the slice mixes frequencies, and by the inline-preview length when preview_limit returns fewer rows than were downloaded.'),
134
141
  },
135
142
  enrichmentTrailer: {
136
143
  appliedQuery: {
@@ -152,7 +159,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
152
159
  {
153
160
  reason: 'byte_budget_exceeded',
154
161
  code: JsonRpcErrorCode.ValidationError,
155
- when: 'The decoded TSV byte budget was exhausted before a complete header and usable observation could be read.',
162
+ when: 'The decoded TSV byte budget was exhausted before a complete header and usable row could be read.',
156
163
  recovery: 'Add dimension filters or narrow since_period/until_period to reduce the transfer, or raise EUROSTAT_BULK_MAX_BYTES.',
157
164
  thrownBy: 'service',
158
165
  },
@@ -166,8 +173,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
166
173
  {
167
174
  reason: 'invalid_dimension',
168
175
  code: JsonRpcErrorCode.ValidationError,
169
- when: 'A filter names a dimension the dataset does not have, or a value or period range Eurostat rejects (SDMX faultcode 150).',
170
- 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.',
176
+ when: 'A filter names a dimension the dataset does not have, or a value Eurostat rejects, 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 all of these; its TIME_PERIOD clause tells the period range apart.',
177
+ 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.',
171
178
  thrownBy: 'service',
172
179
  },
173
180
  {
@@ -194,8 +201,8 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
194
201
  {
195
202
  reason: 'no_results',
196
203
  code: JsonRpcErrorCode.NotFound,
197
- when: 'The download completed but carried no populated observation cells. Nothing is staged, and no canvas is created or touched.',
198
- recovery: "Verify the filter values with eurostat_get_dimension_values and keep since_period/until_period inside the series' coverage — a combination that exists in no cell and a range that misses the series both download as an empty table.",
204
+ 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.',
205
+ 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.",
199
206
  },
200
207
  {
201
208
  reason: 'extraction_too_big',
@@ -208,7 +215,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
208
215
  {
209
216
  reason: 'upstream_fault',
210
217
  code: JsonRpcErrorCode.ServiceUnavailable,
211
- when: 'The SDMX data endpoint returned a fault this server does not model, or a body that is not a TSV table; or the data endpoint — or, for a filtered download, the structure endpoint — answered HTTP 5xx or could not be reached on every retry, which the error marks retryable.',
218
+ 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.',
212
219
  recovery: 'Retry in a few minutes, or narrow the request with dimension filters.',
213
220
  thrownBy: 'service',
214
221
  },
@@ -224,11 +231,12 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
224
231
  const input = { ...request, preview_limit: previewLimit.value };
225
232
  const bulk = getEurostatBulkService();
226
233
  // Trimmed, checked, and rewritten to canonical form: this is both what is sent and
227
- // what appliedQuery echoes.
228
- const periods = resolvePeriods({
234
+ // what appliedQuery echoes. The period notice quotes the literals as written.
235
+ const written = {
229
236
  since_period: input.since_period?.trim() || undefined,
230
237
  until_period: input.until_period?.trim() || undefined,
231
- });
238
+ };
239
+ const periods = resolvePeriods(written);
232
240
  if (!periods.ok) {
233
241
  throw ctx.fail('invalid_period', periods.message);
234
242
  }
@@ -291,10 +299,10 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
291
299
  ...(sinceP ? [`since_period "${sinceP}"`] : []),
292
300
  ...(untilP ? [`until_period "${untilP}"`] : []),
293
301
  ].join(' and ');
294
- throw ctx.fail('no_results', `The download of "${input.dataset_code}" carried no observations.`, {
302
+ throw ctx.fail('no_results', `The download of "${input.dataset_code}" yielded no row.`, {
295
303
  recovery: {
296
304
  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
297
- ? ` Also check that ${range} overlaps the series: a range outside the series' own coverage downloads as an empty table too.`
305
+ ? ` 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.`
298
306
  : ''}`,
299
307
  },
300
308
  });
@@ -362,11 +370,32 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
362
370
  */
363
371
  ctx.enrich.total(stats.rowCount);
364
372
  const notices = previewLimit.notice ? [previewLimit.notice] : [];
373
+ // The header is the only frequency signal: it shows a frequency only when a period
374
+ // of it is in range, so one it hides gets no notice. No coverage reaches the TSV.
375
+ const frequencies = frequenciesOf(download.header.periods);
376
+ if (sinceP || untilP) {
377
+ const cuts = periodCuts({ since_period: sinceP, until_period: untilP }, frequencies);
378
+ if (cuts.length > 0)
379
+ notices.push(cutNotice(cuts, written));
380
+ }
365
381
  if (stats.budgetExceeded) {
366
- notices.push(`The byte budget stopped this transfer after ${stats.bytesRead.toLocaleString()} bytes, so these ${stats.rowCount.toLocaleString()} observations are the start of "${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.`);
382
+ notices.push(`The byte budget stopped this transfer after ${stats.bytesRead.toLocaleString()} bytes, so these ${stats.rowCount.toLocaleString()} rows are the start of "${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.`);
383
+ }
384
+ if (stats.absentCellCount > 0) {
385
+ notices.push(`${stats.absentCellCount.toLocaleString()} of the ${stats.rowCount.toLocaleString()} downloaded rows (absentCellCount) ${stats.absentCellCount === 1
386
+ ? 'is a period its series lacks, not an observation: an unflagged ":" cell'
387
+ : 'are periods their series lacks, not observations: unflagged ":" cells'}, obs_value null with no flag, status or text.`);
388
+ }
389
+ if (stats.periodsSeen.length === 0) {
390
+ notices.push(`No downloaded row carries an observation: ${stats.rowCount === 1
391
+ ? 'the row is an unflagged ":" cell'
392
+ : `all ${stats.rowCount.toLocaleString()} rows are unflagged ":" cells`} (obs_value null with no flag, status or text), so periodRange has no bound.`);
393
+ }
394
+ if (frequencies.size > 1) {
395
+ 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.');
367
396
  }
368
397
  if (stats.rowCount > preview.length) {
369
- notices.push(`preview_limit=${input.preview_limit.toLocaleString()} returns the first ${preview.length.toLocaleString()} of ${stats.rowCount.toLocaleString()} downloaded observations inline; it does not reduce the download.`);
398
+ notices.push(`preview_limit=${input.preview_limit.toLocaleString()} returns the first ${preview.length.toLocaleString()} of ${stats.rowCount.toLocaleString()} downloaded rows inline; it does not reduce the download.`);
370
399
  }
371
400
  if (!staged) {
372
401
  /**
@@ -376,13 +405,13 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
376
405
  */
377
406
  const discarded = stats.rowCount - preview.length;
378
407
  notices.push(discarded === 0
379
- ? `This deployment runs without a dataframe canvas, so nothing was staged; all ${stats.rowCount.toLocaleString()} downloaded observations are returned inline.`
380
- : `This deployment runs without a dataframe canvas, so nothing was staged: only the ${preview.length.toLocaleString()} observations returned inline are retained, and the other ${discarded.toLocaleString()} were counted and discarded. ${stats.rowCount <= PREVIEW_MAX
408
+ ? `This deployment runs without a dataframe canvas, so nothing was staged; all ${stats.rowCount.toLocaleString()} downloaded rows are returned inline.`
409
+ : `This deployment runs without a dataframe canvas, so nothing was staged: only the ${preview.length.toLocaleString()} rows returned inline are retained, and the other ${discarded.toLocaleString()} were counted and discarded. ${stats.rowCount <= PREVIEW_MAX
381
410
  ? `Raise preview_limit to ${stats.rowCount.toLocaleString()} to return every one inline, or set CANVAS_PROVIDER_TYPE=duckdb to keep the download.`
382
411
  : '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.'}`);
383
412
  }
384
413
  else {
385
- notices.push(`All ${staged.stagedRowCount.toLocaleString()} downloaded observations 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.`);
414
+ notices.push(`All ${staged.stagedRowCount.toLocaleString()} 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.`);
386
415
  }
387
416
  ctx.enrich.notice(notices.join(' '));
388
417
  return {
@@ -390,6 +419,7 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
390
419
  dimensionsUsed: download.header.dimensions,
391
420
  rowCount: stats.rowCount,
392
421
  missingCount: stats.missingCount,
422
+ absentCellCount: stats.absentCellCount,
393
423
  periodRange: {
394
424
  ...(firstPeriod && { start: firstPeriod }),
395
425
  ...(lastPeriod && { end: lastPeriod }),
@@ -403,20 +433,25 @@ export const createEurostatDownloadDataset = (clampLimits) => tool('eurostat_dow
403
433
  },
404
434
  format: (result) => {
405
435
  const { start, end } = result.periodRange;
406
- const UNREPORTED = 'not reported by Eurostat';
407
- const period = start || end ? `${start ?? UNREPORTED} – ${end ?? UNREPORTED}` : UNREPORTED;
436
+ const period = start && end ? `${start} – ${end}` : 'none — no row carries an observation';
408
437
  const lines = [
409
438
  `# Bulk download \`${result.datasetCode}\``,
410
- `**Observations:** ${result.rowCount} (${result.missingCount} missing) | **Period:** ${period}`,
439
+ `**Rows:** ${result.rowCount} (${result.missingCount} missing) | **Absent cells:** ${result.absentCellCount} | **Period:** ${period}`,
411
440
  `**Dimensions:** ${result.dimensionsUsed.join(', ')}`,
412
441
  `**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' : ''}`,
413
442
  ];
414
443
  lines.push(result.tableName
415
444
  ? `**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`
416
445
  : '**Staged:** nothing — this deployment runs without a dataframe canvas, so only the rows below are retained');
417
- lines.push('', `## First ${result.observations.length} observations`);
446
+ lines.push('', `## First ${result.observations.length} rows (\`observations\`)`);
447
+ // dimensionsUsed leaves out the period column, which hoists like any other dimension.
448
+ // The value and flag columns are not candidates, so they stay on every row.
449
+ const { header, hoisted } = hoistDimensions(result.observations, [...result.dimensionsUsed, TIME_COLUMN], (row, col) => (row[col] == null ? undefined : `${col}=${row[col]}`));
450
+ if (header)
451
+ lines.push(header, '');
418
452
  for (const row of result.observations) {
419
453
  lines.push(Object.entries(row)
454
+ .filter(([col]) => !hoisted.has(col))
420
455
  .map(([col, value]) => `${col}=${value === null ? 'NULL' : value}`)
421
456
  .join(' | '));
422
457
  }
@@ -437,7 +472,8 @@ export const eurostatDownloadDataset = createEurostatDownloadDataset(true);
437
472
  * `request.dimensions` is the dataset's dimension list, when known, and
438
473
  * `request.filtered` the dimensions the request already filtered — together they let
439
474
  * a too-large refusal name the dimensions still open to filter. `request.endpoint` is
440
- * the endpoint the failed read went to, which an outage hint names.
475
+ * the endpoint the failed read went to: each `upstream_fault` hint names it, and on the
476
+ * structure read a fault with no HTTP status is a structure the order cannot be read from.
441
477
  */
442
478
  function mapBulkFailure(err, datasetCode, request) {
443
479
  const data = err.data;
@@ -460,7 +496,10 @@ function mapBulkFailure(err, datasetCode, request) {
460
496
  return {
461
497
  reason,
462
498
  message,
463
- hint: `Check the dimension codes for "${datasetCode}" with eurostat_get_dataset_info and their values with eurostat_get_dimension_values, and keep since_period/until_period inside the dataset's coverage.`,
499
+ // The fault carries no frequency and no coverage, so this states the rule and names no bound.
500
+ hint: data?.periodRange === true
501
+ ? `Eurostat keeps only periods wholly inside the range, so a bound that falls inside a period excludes it, and a range outside the dataset's coverage selects nothing. List the periods "${datasetCode}" publishes with eurostat_get_dimension_values, dimension "time", then set since_period/until_period on them.`
502
+ : `Check the dimension codes for "${datasetCode}" with eurostat_get_dataset_info and their values with eurostat_get_dimension_values, and keep since_period/until_period inside the dataset's coverage.`,
464
503
  };
465
504
  case 'filter_arity':
466
505
  return {
@@ -493,6 +532,24 @@ function mapBulkFailure(err, datasetCode, request) {
493
532
  : `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.`,
494
533
  };
495
534
  }
535
+ // An HTTP status the fetch layer does not retry (a 501): an answer, not a body to read.
536
+ if (typeof data?.status === 'number') {
537
+ return {
538
+ reason,
539
+ message,
540
+ hint: request.endpoint === 'structure'
541
+ ? `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, and a download without filters skips the read.`
542
+ : `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.`,
543
+ };
544
+ }
545
+ // The structure read answered, but with no dimension order to key a filter on.
546
+ if (request.endpoint === 'structure') {
547
+ return {
548
+ reason,
549
+ message,
550
+ 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, and a download without filters skips the read.`,
551
+ };
552
+ }
496
553
  return {
497
554
  reason,
498
555
  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":"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"}
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,06CAA06C;IAC56C,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,6EAA6E,WAAW,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,yCAAyC,0GAA0G,CAChT;QACH,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3C,gZAAgZ,CACjZ;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,8cAA8c,CAC/c;QACH,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,CACP,mPAAmP,CACpP;QACH,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,CACP,wjBAAwjB,CACzjB;QACH,WAAW,EAAE,CAAC;aACX,MAAM,CAAC;YACN,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sMAAsM,CACvM;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gJAAgJ,CACjJ;SACJ,CAAC;aACD,QAAQ,CACP,+IAA+I,CAChJ;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,4cAA4c,CAC7c,CACJ;aACA,QAAQ,CACP,gIAAgI,CACjI;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,yRAAyR,CAC1R;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,qVAAqV,CACtV;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,4hBAA4hB,CAC7hB;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,kGAAkG;YACxG,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,uRAAuR;YAC7R,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,qbAAqb;YAC3b,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,CAAC,YAAY,EAAE,oBAAoB,KAAK,CAAC,YAAY,mBAAmB,EAAE;oBACtF,QAAQ,EAAE;wBACR,IAAI,EAAE,0DAA0D,KAAK,CAAC,YAAY,gIAChF,KAAK;4BACH,CAAC,CAAC,oBAAoB,KAAK,6MAA6M;4BACxO,CAAC,CAAC,EACN,EAAE;qBACH;iBACF,CAAC,CAAC;YACL,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,mFAAmF;QACnF,kFAAkF;QAClF,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC;YACrF,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,2BAA2B,KAAK,CAAC,YAAY,yJAAyJ,CACzU,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,sCACjF,KAAK,CAAC,eAAe,KAAK,CAAC;gBACzB,CAAC,CAAC,yEAAyE;gBAC3E,CAAC,CAAC,uEACN,gDAAgD,CACjD,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,6CACE,KAAK,CAAC,QAAQ,KAAK,CAAC;gBAClB,CAAC,CAAC,kCAAkC;gBACpC,CAAC,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,+BAC5C,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,0TAA0T,CAC3T,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,2DAA2D,CAC5M,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,uCAAuC;gBACvJ,CAAC,CAAC,oFAAoF,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,qDAAqD,SAAS,CAAC,cAAc,EAAE,gCAChM,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,yCAAyC,MAAM,CAAC,SAAS,gBAAgB,MAAM,CAAC,QAAQ,qIAAqI,CAC3Q,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,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,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,MAAM,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC;QAC3F,MAAM,KAAK,GAAa;YACtB,qBAAqB,MAAM,CAAC,WAAW,IAAI;YAC3C,aAAa,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,YAAY,iCAAiC,MAAM,CAAC,eAAe,kBAAkB,MAAM,EAAE;YACrI,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,0BAA0B,CAAC,CAAC;QACjF,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;;;;;;;;;;;;;;GAcG;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,wFAAwF;YACxF,IAAI,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO;oBACL,MAAM;oBACN,OAAO;oBACP,IAAI,EACF,OAAO,CAAC,QAAQ,KAAK,WAAW;wBAC9B,CAAC,CAAC,oDAAoD,IAAI,CAAC,MAAM,SAAS,WAAW,4UAA4U;wBACja,CAAC,CAAC,+CAA+C,IAAI,CAAC,MAAM,SAAS,WAAW,yOAAyO;iBAC9T,CAAC;YACJ,CAAC;YACD,+EAA+E;YAC/E,IAAI,OAAO,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACrC,OAAO;oBACL,MAAM;oBACN,OAAO;oBACP,IAAI,EAAE,iDAAiD,WAAW,0TAA0T;iBAC7X,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,qDAAqD,WAAW,0EAA0E;aACjJ,CAAC;QACJ;YACE,OAAO;IACX,CAAC;AACH,CAAC"}
@@ -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 — or the structure endpoint answered HTTP 5xx or could not be reached on every retry, which the error marks retryable.";
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgLjC,CAAC"}
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"}
@@ -77,7 +77,7 @@ export const eurostatGetDatasetInfo = tool('eurostat_get_dataset_info', {
77
77
  {
78
78
  reason: 'upstream_fault',
79
79
  code: JsonRpcErrorCode.ServiceUnavailable,
80
- when: "Eurostat returned a dataset structure or content constraint this server cannot read — malformed, truncated, not XML, or missing the requested dataset's dataflow — or the structure endpoint answered HTTP 5xx or could not be reached on every retry, which the error marks retryable.",
80
+ 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.",
81
81
  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.',
82
82
  },
83
83
  ],
@@ -104,6 +104,15 @@ export const eurostatGetDatasetInfo = tool('eurostat_get_dataset_info', {
104
104
  },
105
105
  });
106
106
  }
107
+ const status = err.data?.status;
108
+ if (reason === 'upstream_fault' && typeof status === 'number') {
109
+ // An HTTP status the fetch layer does not retry (a 501): an answer, not a body to read.
110
+ throw ctx.fail('upstream_fault', err.message, {
111
+ recovery: {
112
+ hint: `Eurostat's SDMX structure endpoint answered HTTP ${status} for "${input.dataset_code}", a status this server does not retry on its own. A failed read is not cached, so retry in a few minutes. If it fails the same way, eurostat_query_dataset reads the dataset's observations, with their dimension codes and labels, from the Statistics API, which does not depend on this structure; start with last_n_periods: 1 to keep the match small.`,
113
+ },
114
+ });
115
+ }
107
116
  if (reason === 'upstream_fault') {
108
117
  throw ctx.fail('upstream_fault', err.message, {
109
118
  recovery: {
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-get-dataset-info.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,2BAA2B,EAAE;IACtE,KAAK,EAAE,2BAA2B;IAClC,WAAW,EACT,64BAA64B;IAC/4B,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,mJAAmJ,CACpJ;KACJ,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC3D,UAAU,EAAE,CAAC;aACV,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CACP,oIAAoI,CACrI;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACtF,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,+MAA+M,CAChN;YACH,YAAY,EAAE,CAAC;iBACZ,KAAK,CACJ,CAAC;iBACE,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;aACnE,CAAC;iBACD,QAAQ,CAAC,wCAAwC,CAAC,CACtD;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,yMAAyM,CAC1M;SACJ,CAAC;aACD,QAAQ,CAAC,4CAA4C,CAAC,CAC1D;aACA,QAAQ,CAAC,kEAAkE,CAAC;QAC/E,SAAS,EAAE,CAAC;aACT,MAAM,CAAC;YACN,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,qFAAqF,CACtF;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wFAAwF,CACzF;SACJ,CAAC;aACD,QAAQ,CACP,iJAAiJ,CAClJ;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,mJAAmJ,CACpJ;QACH,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8FAA8F,CAC/F;QACH,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,6FAA6F,CAC9F;KACJ,CAAC;IACF,MAAM,EAAE;QACN;YACE,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,wEAAwE;YAC9E,QAAQ,EACN,sFAAsF;SACzF;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,yRAAyR;YAC/R,QAAQ,EACN,0MAA0M;SAC7M;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;QACrC,IAAI,IAAoD,CAAC;QACzD,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAI,GAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;YAC9C,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAG,GAAa,CAAC,OAAO,EAAE;oBAClD,QAAQ,EAAE;wBACR,IAAI,EAAE,YAAY,KAAK,CAAC,YAAY,2FAA2F;qBAChI;iBACF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,KAAK,gBAAgB,IAAK,GAAgB,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;gBAC9E,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAG,GAAa,CAAC,OAAO,EAAE;oBACvD,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE;wBACR,IAAI,EAAE,sCAAsC,YAAY,CAAE,GAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,CAAC,YAAY,8HAA8H;qBAClP;iBACF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAChC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAG,GAAa,CAAC,OAAO,EAAE;oBACvD,QAAQ,EAAE;wBACR,IAAI,EAAE,sCAAsC,KAAK,CAAC,YAAY,2UAA2U;qBAC1Y;iBACF,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACnC,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,qFAAqF;QACrF,qFAAqF;QACrF,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAa;YACtB,KAAK,MAAM,CAAC,KAAK,EAAE;YACnB,aAAa,MAAM,CAAC,IAAI,EAAE;YAC1B,eAAe,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,UAAU,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE;YAC5F,qBAAqB,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,UAAU,EAAE;YACtE,qBAAqB,MAAM,CAAC,WAAW,IAAI,UAAU,EAAE;SACxD,CAAC;QACF,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,KAAK,GACT,GAAG,CAAC,WAAW,KAAK,SAAS;gBAC3B,CAAC,CAAC,eAAe,UAAU,EAAE;gBAC7B,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,SAAS,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,GAAG,CAAC,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnF,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;oBACtE,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,+DAA+D,CACrG,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YACtF,CAAC;QACH,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"}
1
+ {"version":3,"file":"eurostat-get-dataset-info.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,7 @@ export declare const createEurostatGetDimensionValues: (clampLimits: boolean) =>
47
47
  readonly reason: "no_results";
48
48
  readonly code: JsonRpcErrorCode.NotFound;
49
49
  readonly when: "The dataset has no geo values at the effective geo_level.";
50
- readonly recovery: "Choose a different geo_level. Omitted geo_level means country.";
50
+ readonly recovery: "Choose a geo_level the error names, each holding at least one code of this dataset; when it names none, eurostat_get_dataset_info lists sample geo codes.";
51
51
  }, {
52
52
  readonly reason: "conflicting_params";
53
53
  readonly code: JsonRpcErrorCode.ValidationError;
@@ -61,7 +61,7 @@ export declare const createEurostatGetDimensionValues: (clampLimits: boolean) =>
61
61
  }, {
62
62
  readonly reason: "upstream_fault";
63
63
  readonly code: JsonRpcErrorCode.ServiceUnavailable;
64
- 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 — or the structure endpoint answered HTTP 5xx or could not be reached on every retry, which the error marks retryable.";
64
+ 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.";
65
65
  readonly recovery: "Retry in a few minutes, since a failed structure read is not cached. If it fails the same way, filter eurostat_query_dataset on the code in question: a code the dataset lacks comes back in unmatchedValues.";
66
66
  }, {
67
67
  readonly reason: "canvas_not_found";
@@ -115,7 +115,7 @@ export declare const eurostatGetDimensionValues: import("@cyanheads/mcp-ts-core"
115
115
  readonly reason: "no_results";
116
116
  readonly code: JsonRpcErrorCode.NotFound;
117
117
  readonly when: "The dataset has no geo values at the effective geo_level.";
118
- readonly recovery: "Choose a different geo_level. Omitted geo_level means country.";
118
+ readonly recovery: "Choose a geo_level the error names, each holding at least one code of this dataset; when it names none, eurostat_get_dataset_info lists sample geo codes.";
119
119
  }, {
120
120
  readonly reason: "conflicting_params";
121
121
  readonly code: JsonRpcErrorCode.ValidationError;
@@ -129,7 +129,7 @@ export declare const eurostatGetDimensionValues: import("@cyanheads/mcp-ts-core"
129
129
  }, {
130
130
  readonly reason: "upstream_fault";
131
131
  readonly code: JsonRpcErrorCode.ServiceUnavailable;
132
- 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 — or the structure endpoint answered HTTP 5xx or could not be reached on every retry, which the error marks retryable.";
132
+ 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.";
133
133
  readonly recovery: "Retry in a few minutes, since a failed structure read is not cached. If it fails the same way, filter eurostat_query_dataset on the code in question: a code the dataset lacks comes back in unmatchedValues.";
134
134
  }, {
135
135
  readonly reason: "canvas_not_found";
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-get-dimension-values.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAkIhF,iEAAiE;AACjE,eAAO,MAAM,gCAAgC,gBAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwXjE,CAAC;AAEL,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC"}
1
+ {"version":3,"file":"eurostat-get-dimension-values.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAsB,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAiB,MAAM,+BAA+B,CAAC;AAgJhF,iEAAiE;AACjE,eAAO,MAAM,gCAAgC,gBAAiB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqYjE,CAAC;AAEL,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC"}