@cyanheads/openfoodfacts-mcp-server 0.1.9 → 0.1.10
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 +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +7 -5
- package/changelog/0.1.x/0.1.10.md +22 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +10 -1
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-products.tool.d.ts +10 -1
- package/dist/mcp-server/tools/definitions/search-products.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-products.tool.js +66 -9
- package/dist/mcp-server/tools/definitions/search-products.tool.js.map +1 -1
- package/dist/services/openfoodfacts/openfoodfacts-service.d.ts +13 -8
- package/dist/services/openfoodfacts/openfoodfacts-service.d.ts.map +1 -1
- package/dist/services/openfoodfacts/openfoodfacts-service.js +26 -0
- package/dist/services/openfoodfacts/openfoodfacts-service.js.map +1 -1
- package/dist/services/openfoodfacts/types.d.ts +30 -0
- package/dist/services/openfoodfacts/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** openfoodfacts-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
4
|
+
**Version:** 0.1.10
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** openfoodfacts-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
4
|
+
**Version:** 0.1.10
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/openfoodfacts-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/openfoodfacts-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -34,7 +34,7 @@ Four tools for working with [Open Food Facts](https://world.openfoodfacts.org/)
|
|
|
34
34
|
| Tool | Description |
|
|
35
35
|
|:-----|:------------|
|
|
36
36
|
| `off_get_product` | Fetch a packaged food product by barcode. Returns name, brand, quantity, ingredients, allergens, additives, Nutri-Score, NOVA group, Green-Score, nutrition per 100g/serving, categories, labels, and data completeness. |
|
|
37
|
-
| `off_search_products` | Search by text query and/or structured tag filters (category, brand, label, Nutri-Score grade, NOVA group, country). Returns summary rows with barcodes for follow-up lookups. |
|
|
37
|
+
| `off_search_products` | Search by text query and/or structured tag filters (category, brand, label, allergen, additive, Nutri-Score grade, NOVA group, country). Returns summary rows with barcodes for follow-up lookups. |
|
|
38
38
|
| `off_compare_products` | Side-by-side nutrition and scoring comparison for 2–10 products by barcode. Returns a normalized table of energy, macros, salt, Nutri-Score, NOVA, and Green-Score. |
|
|
39
39
|
| `off_browse_taxonomy` | Browse and search the canonical tag vocabulary (categories, labels, allergens, additives, countries, NOVA groups, Nutri-Score grades) for use as filter values in `off_search_products`. |
|
|
40
40
|
|
|
@@ -55,10 +55,12 @@ Fetch a packaged food product by barcode (EAN-13 or UPC).
|
|
|
55
55
|
Search Open Food Facts by text and/or structured tag filters.
|
|
56
56
|
|
|
57
57
|
- Full-text search across product names, brands, and ingredients
|
|
58
|
-
- Structured filters: `categories_tag`, `brands_tag`, `labels_tag`, `nutrition_grade` (a–e), `nova_group` (1–4), `countries_tag`
|
|
58
|
+
- Structured filters: `categories_tag`, `brands_tag`, `labels_tag`, `allergens_tag`, `additives_tag`, `nutrition_grade` (a–e), `nova_group` (1–4), `countries_tag`
|
|
59
59
|
- Text query and tag filters combine — a query with filters returns products that match the text *and* satisfy every filter (e.g., `query: "dark chocolate"` + `labels_tag: en:organic` + `countries_tag: en:france`)
|
|
60
|
-
- All filter values are canonical tag IDs — use `off_browse_taxonomy` to resolve human terms (e.g., "organic" → `en:organic`)
|
|
61
|
-
-
|
|
60
|
+
- All filter values are canonical tag IDs — use `off_browse_taxonomy` to resolve human terms (e.g., "organic" → `en:organic`). `brands_tag` takes a brand slug and matches it exactly; open-ended brand wording belongs in `query`
|
|
61
|
+
- `additives_tag` filters only on searches with no text query — the text backend does not index additives, so pairing the two is rejected up front rather than returning an empty result set that looks like "no such product"
|
|
62
|
+
- Pagination via `page` (1-based) and `page_size` (1–50, default 20)
|
|
63
|
+
- `total` is exact on tag-only searches. Text searches stop counting at 10,000 matches, and when that ceiling is hit the response says so with `total_is_lower_bound: true` and renders the count as `10000+` — add filters for an exact figure
|
|
62
64
|
- Searches carrying a text query serve only the first 10,000 results — a deeper `page * page_size` is rejected up front with the highest reachable page, not sent and retried. Tag-only searches publish no window, but deep pages are refused unpredictably, so narrowing the filters beats paging far in
|
|
63
65
|
- Returns summary rows (barcode, name, brand, Nutri-Score, NOVA, categories) — use `off_get_product` for full label data
|
|
64
66
|
- Result counts reflect contributed products, not total products on the market
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Add allergens_tag/additives_tag search filters, correct the brands_tag exact-match description, and stop reporting the text backend's clipped 10,000-result count as an exact total."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.1.10 — 2026-07-26
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`off_search_products`** — `allergens_tag` and `additives_tag` structured filters. `allergens_tag` filters on both the tag and text routing paths; `additives_tag` filters only on tag-only searches, because the text-search backend does not index that facet — pairing it with `query` raises a new `additives_filter_needs_tag_search` validation error instead of silently returning zero results. ([#10](https://github.com/cyanheads/openfoodfacts-mcp-server/issues/10))
|
|
12
|
+
- **`off_search_products`** — a required `total_is_lower_bound` output field. The text-search backend clips its reported hit count at 10,000 and exposes an `is_count_exact` flag when it does; the tool now reads that flag instead of comparing `total` against a local constant. `format()` renders `10000+ total products` when the flag is set. ([#18](https://github.com/cyanheads/openfoodfacts-mcp-server/issues/18))
|
|
13
|
+
|
|
14
|
+
## Changed
|
|
15
|
+
|
|
16
|
+
- **`off_search_products`** — truncation guidance for a clipped text search now states the reachable page bound and that the backend stopped counting, instead of computing a page total from the capped count.
|
|
17
|
+
- **`SearchResult`** (`src/services/openfoodfacts/types.ts`) — new normalized envelope shared by both search backends, replacing the ad hoc inline return types on `searchProducts`/`searchProductsByText`/`searchProductsByTags`.
|
|
18
|
+
|
|
19
|
+
## Fixed
|
|
20
|
+
|
|
21
|
+
- **`off_search_products`** — `brands_tag`'s description no longer claims fuzzy/partial matching; both routing paths match the normalized brand slug exactly. ([#13](https://github.com/cyanheads/openfoodfacts-mcp-server/issues/13))
|
|
22
|
+
- **`off_search_products`** — a text query with more than 10,000 matches no longer reports `total: 10000` as an exact database count.
|
|
@@ -125,6 +125,8 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
125
125
|
categories_tag: import("zod").ZodOptional<import("zod").ZodString>;
|
|
126
126
|
brands_tag: import("zod").ZodOptional<import("zod").ZodString>;
|
|
127
127
|
labels_tag: import("zod").ZodOptional<import("zod").ZodString>;
|
|
128
|
+
allergens_tag: import("zod").ZodOptional<import("zod").ZodString>;
|
|
129
|
+
additives_tag: import("zod").ZodOptional<import("zod").ZodString>;
|
|
128
130
|
nutrition_grade: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
129
131
|
a: "a";
|
|
130
132
|
b: "b";
|
|
@@ -149,6 +151,7 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
149
151
|
page_size: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
150
152
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
151
153
|
total: import("zod").ZodNumber;
|
|
154
|
+
total_is_lower_bound: import("zod").ZodBoolean;
|
|
152
155
|
page: import("zod").ZodNumber;
|
|
153
156
|
page_count: import("zod").ZodNumber;
|
|
154
157
|
products: import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -164,7 +167,13 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
164
167
|
readonly reason: "no_filters";
|
|
165
168
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
166
169
|
readonly when: "No search query or filter was provided";
|
|
167
|
-
readonly recovery: "Provide at least one of: query, categories_tag, brands_tag, labels_tag, nutrition_grade, nova_group, or countries_tag.";
|
|
170
|
+
readonly recovery: "Provide at least one of: query, categories_tag, brands_tag, labels_tag, allergens_tag, additives_tag, nutrition_grade, nova_group, or countries_tag.";
|
|
171
|
+
}, {
|
|
172
|
+
readonly reason: "additives_filter_needs_tag_search";
|
|
173
|
+
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
174
|
+
readonly when: "additives_tag was combined with a text query, which the text backend cannot filter on";
|
|
175
|
+
readonly retryable: false;
|
|
176
|
+
readonly recovery: "Drop query and search by tags alone to keep the additive filter, or drop additives_tag to keep the text query. Every other filter combines with a text query.";
|
|
168
177
|
}, {
|
|
169
178
|
readonly reason: "page_out_of_range";
|
|
170
179
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK9B,CAAC"}
|
|
@@ -9,6 +9,8 @@ export declare const offSearchProductsTool: import("@cyanheads/mcp-ts-core").Too
|
|
|
9
9
|
categories_tag: z.ZodOptional<z.ZodString>;
|
|
10
10
|
brands_tag: z.ZodOptional<z.ZodString>;
|
|
11
11
|
labels_tag: z.ZodOptional<z.ZodString>;
|
|
12
|
+
allergens_tag: z.ZodOptional<z.ZodString>;
|
|
13
|
+
additives_tag: z.ZodOptional<z.ZodString>;
|
|
12
14
|
nutrition_grade: z.ZodOptional<z.ZodEnum<{
|
|
13
15
|
a: "a";
|
|
14
16
|
b: "b";
|
|
@@ -33,6 +35,7 @@ export declare const offSearchProductsTool: import("@cyanheads/mcp-ts-core").Too
|
|
|
33
35
|
page_size: z.ZodDefault<z.ZodNumber>;
|
|
34
36
|
}, z.core.$strip>, z.ZodObject<{
|
|
35
37
|
total: z.ZodNumber;
|
|
38
|
+
total_is_lower_bound: z.ZodBoolean;
|
|
36
39
|
page: z.ZodNumber;
|
|
37
40
|
page_count: z.ZodNumber;
|
|
38
41
|
products: z.ZodArray<z.ZodObject<{
|
|
@@ -48,7 +51,13 @@ export declare const offSearchProductsTool: import("@cyanheads/mcp-ts-core").Too
|
|
|
48
51
|
readonly reason: "no_filters";
|
|
49
52
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
50
53
|
readonly when: "No search query or filter was provided";
|
|
51
|
-
readonly recovery: "Provide at least one of: query, categories_tag, brands_tag, labels_tag, nutrition_grade, nova_group, or countries_tag.";
|
|
54
|
+
readonly recovery: "Provide at least one of: query, categories_tag, brands_tag, labels_tag, allergens_tag, additives_tag, nutrition_grade, nova_group, or countries_tag.";
|
|
55
|
+
}, {
|
|
56
|
+
readonly reason: "additives_filter_needs_tag_search";
|
|
57
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
58
|
+
readonly when: "additives_tag was combined with a text query, which the text backend cannot filter on";
|
|
59
|
+
readonly retryable: false;
|
|
60
|
+
readonly recovery: "Drop query and search by tags alone to keep the additive filter, or drop additives_tag to keep the text query. Every other filter combines with a text query.";
|
|
52
61
|
}, {
|
|
53
62
|
readonly reason: "page_out_of_range";
|
|
54
63
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-products.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-products.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOjE,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"search-products.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-products.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAOjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgahC,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
|
7
7
|
import { getOpenFoodFactsService, TEXT_SEARCH_RESULT_WINDOW, } from '../../../services/openfoodfacts/openfoodfacts-service.js';
|
|
8
8
|
export const offSearchProductsTool = tool('off_search_products', {
|
|
9
9
|
title: 'Search Food Products',
|
|
10
|
-
description: 'Search Open Food Facts by full-text query, structured tag filters, or both at once. Returns a summary list with barcodes, product names, brands, Nutri-Score, NOVA group, and categories — enough for triage and selection, not full label data. Use off_get_product on the returned barcodes for complete details. A text query and tag filters combine: results match the query text and satisfy every filter provided (e.g. query "dark chocolate" with labels_tag "en:organic" and countries_tag "en:france" returns organic chocolate sold in France). Tag filter values must be canonical tag IDs (e.g. "en:organic", "en:gluten-free") — use off_browse_taxonomy to resolve human terms to tag IDs. At least one search parameter is required. Data is crowd-sourced; result count reflects contributed products, not all products in the market. Data under ODbL 1.0 — cite Open Food Facts in downstream use.',
|
|
10
|
+
description: 'Search Open Food Facts by full-text query, structured tag filters, or both at once. Returns a summary list with barcodes, product names, brands, Nutri-Score, NOVA group, and categories — enough for triage and selection, not full label data. Use off_get_product on the returned barcodes for complete details. A text query and tag filters combine: results match the query text and satisfy every filter provided (e.g. query "dark chocolate" with labels_tag "en:organic" and countries_tag "en:france" returns organic chocolate sold in France); additives_tag is the one exception, filtering only on searches with no text query. Tag filter values must be canonical tag IDs (e.g. "en:organic", "en:gluten-free") — use off_browse_taxonomy to resolve human terms to tag IDs. At least one search parameter is required. Data is crowd-sourced; result count reflects contributed products, not all products in the market. Data under ODbL 1.0 — cite Open Food Facts in downstream use.',
|
|
11
11
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
12
12
|
input: z.object({
|
|
13
13
|
query: z
|
|
@@ -21,11 +21,19 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
21
21
|
brands_tag: z
|
|
22
22
|
.string()
|
|
23
23
|
.optional()
|
|
24
|
-
.describe('Brand slug (lowercased, hyphenated). Example: "nutella", "kelloggs".
|
|
24
|
+
.describe('Brand slug (lowercased, hyphenated). Example: "nutella", "kelloggs". Matched exactly against the normalized slug — a partial or misspelled slug matches nothing rather than falling back to a near match, so put open-ended brand wording in query instead.'),
|
|
25
25
|
labels_tag: z
|
|
26
26
|
.string()
|
|
27
27
|
.optional()
|
|
28
28
|
.describe('Canonical label/certification tag ID. Example: "en:organic", "en:fair-trade", "en:no-gluten". Use off_browse_taxonomy with facet="labels".'),
|
|
29
|
+
allergens_tag: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe('Canonical allergen tag ID. Example: "en:milk", "en:gluten". Use off_browse_taxonomy with facet="allergens". Selects products that declare this allergen; it cannot select allergen-free products, because a product with no allergen tags may simply have none entered yet.'),
|
|
33
|
+
additives_tag: z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe('Canonical additive (E-number) tag ID. Example: "en:e322", "en:e330". Use off_browse_taxonomy with facet="additives". Available only on searches with no query — the text backend does not index additives, so combining the two is rejected instead of silently returning nothing.'),
|
|
29
37
|
nutrition_grade: z
|
|
30
38
|
.enum(['a', 'b', 'c', 'd', 'e'])
|
|
31
39
|
.optional()
|
|
@@ -57,7 +65,12 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
57
65
|
.describe('Results per page (1–50, default 20). Keep low for initial exploration; increase for comparison workflows.'),
|
|
58
66
|
}),
|
|
59
67
|
output: z.object({
|
|
60
|
-
total: z
|
|
68
|
+
total: z
|
|
69
|
+
.number()
|
|
70
|
+
.describe('Matching products in the database for this search. Exact unless total_is_lower_bound is true, in which case at least this many match and the real figure is unknown.'),
|
|
71
|
+
total_is_lower_bound: z
|
|
72
|
+
.boolean()
|
|
73
|
+
.describe('True when the backend stopped counting at its ceiling and total is a floor, not the match total. Only text searches can hit it; add filters to bring the result set under the ceiling and get an exact count.'),
|
|
61
74
|
page: z.number().describe('Current page number (1-based).'),
|
|
62
75
|
page_count: z
|
|
63
76
|
.number()
|
|
@@ -110,7 +123,14 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
110
123
|
reason: 'no_filters',
|
|
111
124
|
code: JsonRpcErrorCode.ValidationError,
|
|
112
125
|
when: 'No search query or filter was provided',
|
|
113
|
-
recovery: 'Provide at least one of: query, categories_tag, brands_tag, labels_tag, nutrition_grade, nova_group, or countries_tag.',
|
|
126
|
+
recovery: 'Provide at least one of: query, categories_tag, brands_tag, labels_tag, allergens_tag, additives_tag, nutrition_grade, nova_group, or countries_tag.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
reason: 'additives_filter_needs_tag_search',
|
|
130
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
131
|
+
when: 'additives_tag was combined with a text query, which the text backend cannot filter on',
|
|
132
|
+
retryable: false,
|
|
133
|
+
recovery: 'Drop query and search by tags alone to keep the additive filter, or drop additives_tag to keep the text query. Every other filter combines with a text query.',
|
|
114
134
|
},
|
|
115
135
|
{
|
|
116
136
|
reason: 'page_out_of_range',
|
|
@@ -154,6 +174,8 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
154
174
|
Boolean(input.categories_tag?.trim()) ||
|
|
155
175
|
Boolean(input.brands_tag?.trim()) ||
|
|
156
176
|
Boolean(input.labels_tag?.trim()) ||
|
|
177
|
+
Boolean(input.allergens_tag?.trim()) ||
|
|
178
|
+
Boolean(input.additives_tag?.trim()) ||
|
|
157
179
|
Boolean(input.nutrition_grade) ||
|
|
158
180
|
Boolean(input.nova_group) ||
|
|
159
181
|
Boolean(input.countries_tag?.trim());
|
|
@@ -162,6 +184,15 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
162
184
|
...ctx.recoveryFor('no_filters'),
|
|
163
185
|
});
|
|
164
186
|
}
|
|
187
|
+
// Only the tag-filter backend indexes additives. The text backend accepts an additives clause
|
|
188
|
+
// and answers zero hits for every value, so honoring the combination would report "no such
|
|
189
|
+
// product" about products that plainly exist. Refuse it instead of returning that lie.
|
|
190
|
+
if (isTextSearch && input.additives_tag?.trim()) {
|
|
191
|
+
throw ctx.fail('additives_filter_needs_tag_search', 'additives_tag filters only on searches with no text query — the text backend does not index additives, so pairing the two would match nothing regardless of the additive.', {
|
|
192
|
+
additives_tag: input.additives_tag,
|
|
193
|
+
...ctx.recoveryFor('additives_filter_needs_tag_search'),
|
|
194
|
+
});
|
|
195
|
+
}
|
|
165
196
|
// The text backend refuses page * page_size beyond its result window with an HTTP 400 that no
|
|
166
197
|
// retry can clear. Reject it here so the caller gets the reachable page bound instead of a
|
|
167
198
|
// backoff sequence. Scoped to the text path — the tag-only backend publishes no such window.
|
|
@@ -190,6 +221,10 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
190
221
|
searchParams.brands_tag = input.brands_tag.trim();
|
|
191
222
|
if (input.labels_tag?.trim())
|
|
192
223
|
searchParams.labels_tag = input.labels_tag.trim();
|
|
224
|
+
if (input.allergens_tag?.trim())
|
|
225
|
+
searchParams.allergens_tag = input.allergens_tag.trim();
|
|
226
|
+
if (input.additives_tag?.trim())
|
|
227
|
+
searchParams.additives_tag = input.additives_tag.trim();
|
|
193
228
|
if (input.nutrition_grade)
|
|
194
229
|
searchParams.nutrition_grade = input.nutrition_grade;
|
|
195
230
|
if (input.nova_group)
|
|
@@ -201,6 +236,7 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
201
236
|
const response = await svc.searchProducts(searchParams, ctx);
|
|
202
237
|
ctx.log.info('Product search completed', {
|
|
203
238
|
total: response.count,
|
|
239
|
+
total_is_lower_bound: !response.count_is_exact,
|
|
204
240
|
returned: response.products.length,
|
|
205
241
|
page: response.page,
|
|
206
242
|
});
|
|
@@ -214,6 +250,10 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
214
250
|
filterParts.push(`brand="${input.brands_tag}"`);
|
|
215
251
|
if (input.labels_tag)
|
|
216
252
|
filterParts.push(`label="${input.labels_tag}"`);
|
|
253
|
+
if (input.allergens_tag)
|
|
254
|
+
filterParts.push(`allergen="${input.allergens_tag}"`);
|
|
255
|
+
if (input.additives_tag)
|
|
256
|
+
filterParts.push(`additive="${input.additives_tag}"`);
|
|
217
257
|
if (input.nutrition_grade)
|
|
218
258
|
filterParts.push(`nutriscore="${input.nutrition_grade}"`);
|
|
219
259
|
if (input.nova_group)
|
|
@@ -234,10 +274,22 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
234
274
|
const reachablePages = isTextSearch
|
|
235
275
|
? Math.min(totalPages, Math.floor(TEXT_SEARCH_RESULT_WINDOW / input.page_size))
|
|
236
276
|
: totalPages;
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
277
|
+
let position;
|
|
278
|
+
if (!response.count_is_exact) {
|
|
279
|
+
// totalPages is derived from a count the backend stopped incrementing, so stating it would
|
|
280
|
+
// dress the ceiling up as a measured figure. Only the reachable bound is knowable here.
|
|
281
|
+
position =
|
|
282
|
+
`Page ${response.page} of ${reachablePages} reachable pages — the backend stopped counting at ` +
|
|
283
|
+
`${response.count} matches, so more exist than it will either count or serve.`;
|
|
284
|
+
}
|
|
285
|
+
else if (reachablePages < totalPages) {
|
|
286
|
+
position =
|
|
287
|
+
`Page ${response.page} of ${reachablePages} reachable pages — ${totalPages} pages of matches exist, ` +
|
|
288
|
+
`but text search serves only the first ${TEXT_SEARCH_RESULT_WINDOW} results.`;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
position = `Page ${response.page} of ${totalPages}.`;
|
|
292
|
+
}
|
|
241
293
|
let nextStep;
|
|
242
294
|
if (response.page >= reachablePages) {
|
|
243
295
|
// Already at the deepest page this backend serves. Pointing at the page parameter here
|
|
@@ -271,6 +323,7 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
271
323
|
}));
|
|
272
324
|
return {
|
|
273
325
|
total: response.count,
|
|
326
|
+
total_is_lower_bound: !response.count_is_exact,
|
|
274
327
|
page: response.page,
|
|
275
328
|
page_count: response.page_count,
|
|
276
329
|
products,
|
|
@@ -286,8 +339,12 @@ export const offSearchProductsTool = tool('off_search_products', {
|
|
|
286
339
|
];
|
|
287
340
|
}
|
|
288
341
|
const lines = [
|
|
289
|
-
`**${result.total} total products** (page ${result.page}, showing ${result.page_count})
|
|
342
|
+
`**${result.total}${result.total_is_lower_bound ? '+' : ''} total products** (page ${result.page}, showing ${result.page_count})`,
|
|
290
343
|
];
|
|
344
|
+
if (result.total_is_lower_bound) {
|
|
345
|
+
lines.push(`*At least ${result.total} products match — the search backend stops counting there and does not report the true total. Add filters for an exact count.*`);
|
|
346
|
+
}
|
|
347
|
+
lines.push('');
|
|
291
348
|
for (const p of result.products) {
|
|
292
349
|
lines.push(`### ${p.product_name ?? 'Unknown product'}`);
|
|
293
350
|
lines.push(`**Barcode:** ${p.barcode}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-products.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-products.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search-products.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-products.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { Context } from '@cyanheads/mcp-ts-core';
|
|
7
7
|
import { type ServerConfig } from '../../config/server-config.js';
|
|
8
|
-
import type { RawProduct, SearchParams } from './types.js';
|
|
8
|
+
import type { RawProduct, SearchParams, SearchResult } from './types.js';
|
|
9
9
|
/**
|
|
10
10
|
* search.openfoodfacts.org (search-a-licious) refuses any request whose `page * page_size` exceeds
|
|
11
11
|
* this many results, with an HTTP 400 naming the window. Exported so the search tool can reject
|
|
12
12
|
* those requests before they are sent. The tag-only backend (`/api/v2/search`) publishes no
|
|
13
13
|
* equivalent ceiling, so this bound is scoped to the text path.
|
|
14
|
+
*
|
|
15
|
+
* This bounds how deep a request may page — it is deliberately not reused to detect a clipped hit
|
|
16
|
+
* count. That ceiling is a separate limit in the same backend that happens to sit at the same
|
|
17
|
+
* number today, and the response reports it directly via `is_count_exact`, so reading the flag
|
|
18
|
+
* survives either limit moving independently.
|
|
14
19
|
*/
|
|
15
20
|
export declare const TEXT_SEARCH_RESULT_WINDOW = 10000;
|
|
16
21
|
export declare class OpenFoodFactsService {
|
|
@@ -52,13 +57,7 @@ export declare class OpenFoodFactsService {
|
|
|
52
57
|
* so it cannot serve a text query.
|
|
53
58
|
* - Tag filters only (no query): /api/v2/search (structured facet filtering).
|
|
54
59
|
*/
|
|
55
|
-
searchProducts(params: SearchParams, ctx: Context): Promise<
|
|
56
|
-
count: number;
|
|
57
|
-
page: number;
|
|
58
|
-
page_count: number;
|
|
59
|
-
page_size: number;
|
|
60
|
-
products: RawProduct[];
|
|
61
|
-
}>;
|
|
60
|
+
searchProducts(params: SearchParams, ctx: Context): Promise<SearchResult>;
|
|
62
61
|
/**
|
|
63
62
|
* Text search via search.openfoodfacts.org (search-a-licious). Handles both text-only queries and
|
|
64
63
|
* combined text + tag filtering: recognized tag facets are ANDed into the Lucene `q` as hard
|
|
@@ -82,6 +81,12 @@ export declare class OpenFoodFactsService {
|
|
|
82
81
|
* can't smuggle in its own field:value clauses — an unescaped colon would otherwise let caller
|
|
83
82
|
* text override facets, including ones this tool never exposes as filters (see
|
|
84
83
|
* LUCENE_RESERVED_CHARS).
|
|
84
|
+
*
|
|
85
|
+
* `additives_tag` has no clause here on purpose. The search-a-licious index carries no
|
|
86
|
+
* `additives_tags` field, so a clause naming it is parsed as a phrase match against a field that
|
|
87
|
+
* does not exist and returns zero hits with no error — live-verified across several E-numbers
|
|
88
|
+
* that match hundreds of thousands of products on the tag path. The tool rejects that
|
|
89
|
+
* combination up front rather than sending a filter that silently empties the result set.
|
|
85
90
|
*/
|
|
86
91
|
private buildTextSearchQuery;
|
|
87
92
|
private buildSearchUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openfoodfacts-service.d.ts","sourceRoot":"","sources":["../../../src/services/openfoodfacts/openfoodfacts-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EACV,UAAU,EAKV,YAAY,EACb,MAAM,YAAY,CAAC;AAwBpB
|
|
1
|
+
{"version":3,"file":"openfoodfacts-service.d.ts","sourceRoot":"","sources":["../../../src/services/openfoodfacts/openfoodfacts-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EACV,UAAU,EAKV,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAyOhD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,YAAY,MAAM,EAAE,YAAY,EAI/B;IAED;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB1E;IAED;;;OAGG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB5B;IAED;;;;;OAKG;YACW,YAAY;IAgC1B;;;OAGG;YACW,WAAW;IAgBzB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAMxE;IAED;;;;OAIG;YACW,oBAAoB;IAmElC;;;;OAIG;YACW,oBAAoB;IAyClC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,cAAc;CAoBvB;AAMD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CAO9D"}
|
|
@@ -28,6 +28,11 @@ const REQUEST_HEADERS = {
|
|
|
28
28
|
* this many results, with an HTTP 400 naming the window. Exported so the search tool can reject
|
|
29
29
|
* those requests before they are sent. The tag-only backend (`/api/v2/search`) publishes no
|
|
30
30
|
* equivalent ceiling, so this bound is scoped to the text path.
|
|
31
|
+
*
|
|
32
|
+
* This bounds how deep a request may page — it is deliberately not reused to detect a clipped hit
|
|
33
|
+
* count. That ceiling is a separate limit in the same backend that happens to sit at the same
|
|
34
|
+
* number today, and the response reports it directly via `is_count_exact`, so reading the flag
|
|
35
|
+
* survives either limit moving independently.
|
|
31
36
|
*/
|
|
32
37
|
export const TEXT_SEARCH_RESULT_WINDOW = 10_000;
|
|
33
38
|
/**
|
|
@@ -343,6 +348,7 @@ export class OpenFoodFactsService {
|
|
|
343
348
|
const pageSize = params.page_size ?? 20;
|
|
344
349
|
ctx.log.debug('Text search response received', {
|
|
345
350
|
count: data.count,
|
|
351
|
+
count_is_exact: data.is_count_exact,
|
|
346
352
|
page: data.page,
|
|
347
353
|
returned: data.hits?.length ?? 0,
|
|
348
354
|
});
|
|
@@ -363,6 +369,11 @@ export class OpenFoodFactsService {
|
|
|
363
369
|
});
|
|
364
370
|
return {
|
|
365
371
|
count: data.count ?? 0,
|
|
372
|
+
// The backend stops counting hits at a ceiling and reports which side of it this count
|
|
373
|
+
// fell on. Read the flag rather than comparing the count against a local constant: the
|
|
374
|
+
// two are different limits, and only the backend knows when it stopped counting. A
|
|
375
|
+
// response that omits the flag makes no clipping claim, so none is manufactured here.
|
|
376
|
+
count_is_exact: data.is_count_exact ?? true,
|
|
366
377
|
page: data.page ?? 1,
|
|
367
378
|
// page_count in text search response is TOTAL PAGES; normalize to products-on-page
|
|
368
379
|
page_count: products.length,
|
|
@@ -399,6 +410,9 @@ export class OpenFoodFactsService {
|
|
|
399
410
|
});
|
|
400
411
|
return {
|
|
401
412
|
count: data.count ?? 0,
|
|
413
|
+
// This endpoint counts every match — live-verified returning totals more than twenty
|
|
414
|
+
// times the ceiling the text backend stops counting at — so its count is never a floor.
|
|
415
|
+
count_is_exact: true,
|
|
402
416
|
page: data.page ?? 1,
|
|
403
417
|
page_count: data.page_count ?? data.products?.length ?? 0,
|
|
404
418
|
page_size: data.page_size ?? params.page_size ?? 20,
|
|
@@ -422,6 +436,12 @@ export class OpenFoodFactsService {
|
|
|
422
436
|
* can't smuggle in its own field:value clauses — an unescaped colon would otherwise let caller
|
|
423
437
|
* text override facets, including ones this tool never exposes as filters (see
|
|
424
438
|
* LUCENE_RESERVED_CHARS).
|
|
439
|
+
*
|
|
440
|
+
* `additives_tag` has no clause here on purpose. The search-a-licious index carries no
|
|
441
|
+
* `additives_tags` field, so a clause naming it is parsed as a phrase match against a field that
|
|
442
|
+
* does not exist and returns zero hits with no error — live-verified across several E-numbers
|
|
443
|
+
* that match hundreds of thousands of products on the tag path. The tool rejects that
|
|
444
|
+
* combination up front rather than sending a filter that silently empties the result set.
|
|
425
445
|
*/
|
|
426
446
|
buildTextSearchQuery(params) {
|
|
427
447
|
const clauses = [];
|
|
@@ -431,6 +451,8 @@ export class OpenFoodFactsService {
|
|
|
431
451
|
clauses.push(`brands_tags:"${params.brands_tag}"`);
|
|
432
452
|
if (params.labels_tag)
|
|
433
453
|
clauses.push(`labels_tags:"${params.labels_tag}"`);
|
|
454
|
+
if (params.allergens_tag)
|
|
455
|
+
clauses.push(`allergens_tags:"${params.allergens_tag}"`);
|
|
434
456
|
if (params.nutrition_grade)
|
|
435
457
|
clauses.push(`nutriscore_grade:${params.nutrition_grade}`);
|
|
436
458
|
if (params.nova_group)
|
|
@@ -450,6 +472,10 @@ export class OpenFoodFactsService {
|
|
|
450
472
|
url.searchParams.set('brands_tags', params.brands_tag);
|
|
451
473
|
if (params.labels_tag)
|
|
452
474
|
url.searchParams.set('labels_tags', params.labels_tag);
|
|
475
|
+
if (params.allergens_tag)
|
|
476
|
+
url.searchParams.set('allergens_tags', params.allergens_tag);
|
|
477
|
+
if (params.additives_tag)
|
|
478
|
+
url.searchParams.set('additives_tags', params.additives_tag);
|
|
453
479
|
// Score filters use the *_tags param keys — the bare nutrition_grades / nova_groups keys are
|
|
454
480
|
// silently ignored by /api/v2/search and return unfiltered rows. Values pass through bare:
|
|
455
481
|
// nutrition_grades_tags accepts only the plain grade letter ("a", not "en:a").
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openfoodfacts-service.js","sourceRoot":"","sources":["../../../src/services/openfoodfacts/openfoodfacts-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openfoodfacts-service.js","sourceRoot":"","sources":["../../../src/services/openfoodfacts/openfoodfacts-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAC7C,YAAY,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACjD,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,GAAG,4BAA4B,eAAe,yBAAyB,CAAC;AAExF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,mGAAmG;AACnG,MAAM,eAAe,GAA2B;IAC9C,YAAY,EAAE,UAAU;IACxB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;;GAIG;AACH,MAAM,YAAY,GAAG;IACnB,cAAc,EAAE,gBAAgB,CAAC,kBAAkB;IACnD,gBAAgB,EAAE,gBAAgB,CAAC,OAAO;IAC1C,iBAAiB,EAAE,gBAAgB,CAAC,aAAa;IACjD,YAAY,EAAE,gBAAgB,CAAC,WAAW;CAClC,CAAC;AAIX,sGAAsG;AACtG,MAAM,eAAe,GAAmC;IACtD,cAAc,EAAE,gCAAgC;IAChD,gBAAgB,EAAE,6DAA6D;IAC/E,iBAAiB,EAAE,qCAAqC;IACxD,YAAY,EAAE,8CAA8C;CAC7D,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,IAAsB;IAC3C,IAAI,IAAI,KAAK,gBAAgB,CAAC,OAAO;QAAE,OAAO,kBAAkB,CAAC;IACjE,IAAI,IAAI,KAAK,gBAAgB,CAAC,WAAW;QAAE,OAAO,cAAc,CAAC;IACjE,IAAI,IAAI,KAAK,gBAAgB,CAAC,kBAAkB,IAAI,IAAI,KAAK,gBAAgB,CAAC,aAAa,EAAE,CAAC;QAC5F,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,IAAa;IACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;QACxD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;IAC7E,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,6HAA6H,CAAC;IACvI,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,QAAkB,EAClB,GAAY,EACZ,IAA6B;IAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9E,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,aAAa,CACjB,gBAAgB,EAChB,yGAAyG,EACzG,GAAG,EACH,IAAI,CACL,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAY,EAAE,SAAiB;IACtD,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CACpB,MAAsB,EACtB,OAAe,EACf,GAAY,EACZ,IAA6B,EAC7B,KAAe;IAEf,OAAO,IAAI,QAAQ,CACjB,YAAY,CAAC,MAAM,CAAC,EACpB,OAAO,EACP;QACE,GAAG,IAAI;QACP,MAAM;QACN,SAAS,EAAE,MAAM,KAAK,mBAAmB;QACzC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;KAC3B,EACD,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAC5C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc,EAAE,GAAY,EAAE,IAA6B;IAClF,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,8EAA8E;IAC9E,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IAE7D,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GACX,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpF,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAEpC,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,+FAA+F;AAC/F,MAAM,cAAc,GAClB,0FAA0F;IAC1F,oFAAoF;IACpF,sEAAsE,CAAC;AAEzE,kGAAkG;AAClG,MAAM,aAAa,GACjB,qFAAqF,CAAC;AAExF;;;GAGG;AACH,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAE7D,0GAA0G;AAC1G,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,0FAA0F;AAC1F,MAAM,WAAW;IACE,QAAQ,GAAG,MAAM,CAAC;IAClB,WAAW,CAAS;IACpB,UAAU,GAAa,EAAE,CAAC;IAE3C,YAAY,iBAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAgB,EAAE,GAAY;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,sCAAsC;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC;YAC7E,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CACtE,CAAC;YACF,MAAM,WAAW,CACf,0CAA0C,QAAQ,0CAA0C;gBAC1F,GAAG,IAAI,CAAC,WAAW,IAAI,QAAQ,2DAA2D;gBAC1F,gCAAgC,UAAU,IAAI,EAChD;gBACE,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,UAAU;gBACV,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,IAAI;gBACf,GAAG,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC;aACnC,CACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,oBAAoB;IACd,OAAO,CAAS;IAChB,cAAc,CAAc;IAC5B,aAAa,CAAc;IAE5C,YAAY,MAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,GAAY;QAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE1C,OAAO,MAAM,SAAS,CACpB,GAAG,EAAE;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,cAAc,EAAE,CAAC;YAC1G,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC,EACD;YACE,SAAS,EAAE,kBAAkB,OAAO,EAAE;YACtC,OAAO,EAAE,GAAyB;YAClC,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAAe,EACf,MAAc,EACd,GAAY;QAEZ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE1C,OAAO,MAAM,SAAS,CACpB,GAAG,EAAE;YACH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,MAAM,EAAE,CAAC;YAClG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC,EACD;YACE,SAAS,EAAE,wBAAwB,OAAO,EAAE;YAC5C,OAAO,EAAE,GAAyB;YAClC,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,YAAY,CACxB,GAAW,EACX,OAAe,EACf,GAAY;QAEZ,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,gBAAgB,CAC/B,GAAG,EACH,kBAAkB,EAClB,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,EACnC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBAC1E,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAqB,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAE7E,0EAA0E;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CACvB,GAAW,EACX,GAAY,EACZ,SAAiB,EACjB,IAA6B;QAE7B,IAAI,CAAC;YACH,OAAO,MAAM,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,EAAE,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE;gBACtF,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,eAAe;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc,CAAC,MAAoB,EAAE,GAAY;QAC/C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC,KAAK;YACjB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,oBAAoB,CAAC,MAAoB,EAAE,GAAY;QACnE,OAAO,MAAM,SAAS,CACpB,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,oBAAoB,SAAS,CAAC,CAAC;YACtD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC9C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;YAElE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE;gBACvF,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;gBACtB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;aAClC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAwB,QAAQ,EAAE,GAAG,EAAE;gBACrE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;aACvB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAExC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;aACjC,CAAC,CAAC;YAEH,qFAAqF;YACrF,2EAA2E;YAC3E,MAAM,QAAQ,GAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAqB,EAAE,EAAE;gBAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9E,OAAO;oBACL,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;oBACzE,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;oBACvC,GAAG,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBACrF,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;oBACnE,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;oBAC/E,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC;oBAClF,mFAAmF;oBACnF,GAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAqC;iBAC1D,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;gBACtB,uFAAuF;gBACvF,uFAAuF;gBACvF,mFAAmF;gBACnF,sFAAsF;gBACtF,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;gBAC3C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;gBACpB,mFAAmF;gBACnF,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,SAAS,EAAE,QAAQ;gBACnB,QAAQ;aACT,CAAC;QACJ,CAAC,EACD;YACE,SAAS,EAAE,0BAA0B;YACrC,OAAO,EAAE,GAAyB;YAClC,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,oBAAoB,CAAC,MAAoB,EAAE,GAAY;QACnE,OAAO,MAAM,SAAS,CACpB,KAAK,IAAI,EAAE;YACT,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACxC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAE7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,0BAA0B,EAAE;gBAC5E,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;gBACtB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;aAClC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAoB,QAAQ,EAAE,GAAG,EAAE;gBACjE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;aACvB,CAAC,CAAC;YAEH,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;aACrC,CAAC,CAAC;YAEH,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;gBACtB,qFAAqF;gBACrF,wFAAwF;gBACxF,cAAc,EAAE,IAAI;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;gBACpB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;gBACzD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE;gBACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;aAC9B,CAAC;QACJ,CAAC,EACD;YACE,SAAS,EAAE,0BAA0B;YACrC,OAAO,EAAE,GAAyB;YAClC,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,oBAAoB,CAAC,MAAoB;QAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,cAAc;YAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,eAAe;YAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QACvF,IAAI,MAAM,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEO,cAAc,CAAC,MAAoB;QACzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC;QACrD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,cAAc;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,aAAa;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACvF,IAAI,MAAM,CAAC,aAAa;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACvF,6FAA6F;QAC7F,2FAA2F;QAC3F,+EAA+E;QAC/E,IAAI,MAAM,CAAC,eAAe;YACxB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,UAAU;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,aAAa;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACvF,IAAI,MAAM,CAAC,OAAO;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;CACF;AAED,mCAAmC;AAEnC,IAAI,QAA0C,CAAC;AAE/C,MAAM,UAAU,wBAAwB;IACtC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -58,6 +58,12 @@ export type RawSearchResponse = {
|
|
|
58
58
|
*/
|
|
59
59
|
export type RawTextSearchResponse = {
|
|
60
60
|
count?: number;
|
|
61
|
+
/**
|
|
62
|
+
* False when `count` is the backend's hit-tracking ceiling rather than the real match total —
|
|
63
|
+
* search-a-licious stops counting at 10,000 and says so here. Required by its response schema;
|
|
64
|
+
* typed optional to match this file's convention that no upstream field is assumed present.
|
|
65
|
+
*/
|
|
66
|
+
is_count_exact?: boolean;
|
|
61
67
|
page?: number;
|
|
62
68
|
page_size?: number;
|
|
63
69
|
/** Total number of pages (not products on this page — differs from /api/v2/search). */
|
|
@@ -85,6 +91,13 @@ export type SearchParams = {
|
|
|
85
91
|
categories_tag?: string;
|
|
86
92
|
brands_tag?: string;
|
|
87
93
|
labels_tag?: string;
|
|
94
|
+
allergens_tag?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Applied only on the tag-filter path (/api/v2/search). search-a-licious does not index
|
|
97
|
+
* `additives_tags`, so the tool rejects this filter alongside a text query rather than sending a
|
|
98
|
+
* clause that would silently match nothing.
|
|
99
|
+
*/
|
|
100
|
+
additives_tag?: string;
|
|
88
101
|
nutrition_grade?: string;
|
|
89
102
|
nova_group?: string;
|
|
90
103
|
countries_tag?: string;
|
|
@@ -93,4 +106,21 @@ export type SearchParams = {
|
|
|
93
106
|
page?: number;
|
|
94
107
|
page_size?: number;
|
|
95
108
|
};
|
|
109
|
+
/**
|
|
110
|
+
* Normalized envelope both search paths return. `page_count` is products on this page on both
|
|
111
|
+
* paths — the text backend's own `page_count` means total pages and is converted before it gets
|
|
112
|
+
* here.
|
|
113
|
+
*/
|
|
114
|
+
export type SearchResult = {
|
|
115
|
+
count: number;
|
|
116
|
+
/**
|
|
117
|
+
* False when `count` is a floor rather than the match total. Only the text backend clips; the
|
|
118
|
+
* tag-filter path reports real totals well past the text ceiling, so it always reports true.
|
|
119
|
+
*/
|
|
120
|
+
count_is_exact: boolean;
|
|
121
|
+
page: number;
|
|
122
|
+
page_count: number;
|
|
123
|
+
page_size: number;
|
|
124
|
+
products: RawProduct[];
|
|
125
|
+
};
|
|
96
126
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/openfoodfacts/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/openfoodfacts/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qGAAqG;AACrG,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAExE,gDAAgD;AAChD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,sFAAsF;AACtF,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;CACzB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC3B,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iGAAiG;IACjG,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,WAAW,GAAG,gBAAgB,CAAC;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/openfoodfacts-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"mcpName": "io.github.cyanheads/openfoodfacts-mcp-server",
|
|
5
5
|
"description": "Look up food products by barcode, search by ingredient or nutrition filter, compare products side-by-side, and browse the canonical tag vocabulary via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/openfoodfacts-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.10",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/openfoodfacts-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.1.
|
|
22
|
+
"version": "0.1.10",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
70
70
|
"identifier": "@cyanheads/openfoodfacts-mcp-server",
|
|
71
71
|
"runtimeHint": "bun",
|
|
72
|
-
"version": "0.1.
|
|
72
|
+
"version": "0.1.10",
|
|
73
73
|
"packageArguments": [
|
|
74
74
|
{
|
|
75
75
|
"type": "positional",
|