@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 CHANGED
@@ -1,6 +1,19 @@
1
1
  # Changelog — @crvouga/mockingbird-service-edamam
2
2
 
3
- ## 3.6.0 (2026-10-17)
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