@crvouga/mockingbird-service-edamam 3.6.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -1
- package/README.md +13 -1
- package/dist/{chunk-B7LFHJQU.js → chunk-3UCNVLYD.js} +119 -25
- package/dist/chunk-3UCNVLYD.js.map +7 -0
- package/dist/{chunk-TNJNSKOI.js → chunk-PQ26ZG3B.js} +115 -15
- package/dist/chunk-PQ26ZG3B.js.map +7 -0
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +28 -0
- package/dist/index.js +1 -1
- package/dist/server.d.ts +71 -0
- package/dist/server.js +2 -2
- package/openapi.yaml +10 -0
- package/package.json +1 -1
- package/dist/chunk-B7LFHJQU.js.map +0 -7
- package/dist/chunk-TNJNSKOI.js.map +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
# Changelog — @crvouga/mockingbird-service-edamam
|
|
2
2
|
|
|
3
|
-
## 3.
|
|
3
|
+
## 3.8.0 (2026-10-21)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- raise the serve and fleet body limit to the S3 maximum ([86b9e2b](https://github.com/crvouga/mockingbird/commit/86b9e2b80bcaaaef57f52edbac50b27da0b42f33))
|
|
8
|
+
- validate block limits, filter nutrients, list block children ([2acb823](https://github.com/crvouga/mockingbird/commit/2acb823ba66b30f3d03221996e015c127b0f72c6))
|
|
9
|
+
|
|
10
|
+
## 3.7.0 (2026-10-18)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- resolve the agent-reported issue queue in one batch ([25c52b6](https://github.com/crvouga/mockingbird/commit/25c52b668a53ddb80b968419601a20abf33f956b))
|
|
15
|
+
|
|
16
|
+
## 3.6.0 (2026-10-16)
|
|
4
17
|
|
|
5
18
|
### Features
|
|
6
19
|
|
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ also accept `Authorization: Basic app_id:app_key`, which our adapter sends).
|
|
|
64
64
|
|
|
65
65
|
| Route | Behaviour |
|
|
66
66
|
| --- | --- |
|
|
67
|
-
| `GET /api/food-database/v2/parser` | `ingr` is parsed into a leading quantity ("2", "1/2", "a", "two"), a measure the food has ("cup", "large", "slice", "g", "oz") and the best-matching food → `parsed[]`; every food sharing a word → `hints[]` with `measures`. Filters: `categoryLabel` (`food` drops meals), `category`, `health` (repeatable), `calories` (per 100 g). `upc` looks up a packaged food (unknown UPC 404). |
|
|
67
|
+
| `GET /api/food-database/v2/parser` | `ingr` is parsed into a leading quantity ("2", "1/2", "a", "two"), a measure the food has ("cup", "large", "slice", "g", "oz") and the best-matching food → `parsed[]`; every food sharing a word → `hints[]` with `measures`. Filters: `categoryLabel` (`food` drops meals), `category`, `health` (repeatable), `calories` (per 100 g), `nutrients[CODE]` (per 100 g, see below). `upc` looks up a packaged food (unknown UPC 404). |
|
|
68
68
|
| `POST /api/food-database/v2/nutrients` | `{ingredients: [{quantity, measureURI, foodId}]}` → `calories`, `totalWeight`, `totalNutrients`, `totalDaily`, `dietLabels`, `healthLabels`, `ingredients[].parsed[]`; an unknown food or measure is 422. |
|
|
69
69
|
| `POST /api/food-database/nutrients-from-image?beta=true` | `{image: data URL or http URL}` → `{parsed: {food, quantity, measure}, recipe: {label, calories, totalNutrients}}`, deterministic per image (or pinned with `PUT /__admin/vision`). |
|
|
70
70
|
| `GET /api/nutrition-data?ingr=` | One ingredient line; unparsable is 422. |
|
|
@@ -108,6 +108,18 @@ and the Python client, which concatenate paths; the meal adapter resolves paths
|
|
|
108
108
|
|
|
109
109
|
- Edamam's NLP and databases: the parser understands leading quantities, known measures and
|
|
110
110
|
corpus food names only; real food and recipe content needs a recorded corpus.
|
|
111
|
+
- Parser `nutrients[CODE]` is a **best guess, not oracle-verified** (vendor docs only say the
|
|
112
|
+
Food Database can "search for food by given nutrient quantity"; the query syntax, the error for a
|
|
113
|
+
malformed range and any plan restriction were never observed live). The emulator reads
|
|
114
|
+
`nutrients[PROCNT]=20+`, `=5` (at most) and `=5-15` (inclusive) like `calories`, against the
|
|
115
|
+
food's per-100 g `nutrients`, and a raw `+` that decoded to a space still means "or more".
|
|
116
|
+
Several codes, a repeated code and `health` / `calories` / `category` / `categoryLabel` all must
|
|
117
|
+
hold; nothing matching is `200` with `hints: []` and `parsed: []`. A food with no value for the
|
|
118
|
+
code never matches. Any code shaped like a nutrient code is accepted, but the built-in corpus
|
|
119
|
+
carries only `ENERC_KCAL`, `PROCNT`, `FAT`, `CHOCDF`, `FIBTG` and `SUGAR`, so codes such as `NA` or
|
|
120
|
+
`FE` match only foods seeded with `POST /__admin/foods` that carry them (an emulator limitation,
|
|
121
|
+
not a vendor answer). A malformed range or code is `400 bad_request`. The `upc` lookup ignores the
|
|
122
|
+
filters, as it does for `calories`.
|
|
111
123
|
- Food Database autocomplete, brand search and `nutrients` qualifiers; Recipe Search user
|
|
112
124
|
recipes (`type=user`), `field=` projection and images other than the URL.
|
|
113
125
|
- Meal Planner plan-level `fit` beyond a day-calorie check, `mark` weighting, nested
|