wellness-nourish 0.2.2 → 0.2.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +528 -0
  2. package/dist/cli/commands.js +5 -1
  3. package/dist/cli/commands.js.map +1 -1
  4. package/dist/constants.d.ts +3 -3
  5. package/dist/constants.js +1 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/data/carbon-footprint.d.ts +44 -0
  8. package/dist/data/carbon-footprint.js +169 -0
  9. package/dist/data/carbon-footprint.js.map +1 -0
  10. package/dist/data/taco-foods.d.ts +44 -0
  11. package/dist/data/taco-foods.js +564 -0
  12. package/dist/data/taco-foods.js.map +1 -0
  13. package/dist/index.js +15 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/providers/open-food-facts.js +83 -24
  16. package/dist/providers/open-food-facts.js.map +1 -1
  17. package/dist/providers/taco.d.ts +23 -0
  18. package/dist/providers/taco.js +108 -0
  19. package/dist/providers/taco.js.map +1 -0
  20. package/dist/providers/usda.js +29 -11
  21. package/dist/providers/usda.js.map +1 -1
  22. package/dist/schemas/common.d.ts +103 -0
  23. package/dist/schemas/common.js +113 -4
  24. package/dist/schemas/common.js.map +1 -1
  25. package/dist/services/agent-manifest.js +6 -0
  26. package/dist/services/agent-manifest.js.map +1 -1
  27. package/dist/services/carbon-enrichment.d.ts +60 -0
  28. package/dist/services/carbon-enrichment.js +194 -0
  29. package/dist/services/carbon-enrichment.js.map +1 -0
  30. package/dist/services/coach.js +49 -8
  31. package/dist/services/coach.js.map +1 -1
  32. package/dist/services/config.js +1 -0
  33. package/dist/services/config.js.map +1 -1
  34. package/dist/services/connection-status.d.ts +7 -0
  35. package/dist/services/connection-status.js +13 -0
  36. package/dist/services/connection-status.js.map +1 -1
  37. package/dist/services/food-image-analysis.d.ts +1 -1
  38. package/dist/services/food-image-analysis.js +109 -47
  39. package/dist/services/food-image-analysis.js.map +1 -1
  40. package/dist/services/goals-store.js +22 -23
  41. package/dist/services/goals-store.js.map +1 -1
  42. package/dist/services/http.d.ts +36 -0
  43. package/dist/services/http.js +133 -0
  44. package/dist/services/http.js.map +1 -0
  45. package/dist/services/hydration-store.d.ts +5 -0
  46. package/dist/services/hydration-store.js +34 -2
  47. package/dist/services/hydration-store.js.map +1 -1
  48. package/dist/services/image-decoder.js +88 -3
  49. package/dist/services/image-decoder.js.map +1 -1
  50. package/dist/services/intake-store.js +6 -2
  51. package/dist/services/intake-store.js.map +1 -1
  52. package/dist/services/local-date.d.ts +16 -0
  53. package/dist/services/local-date.js +105 -0
  54. package/dist/services/local-date.js.map +1 -0
  55. package/dist/services/locked-store.d.ts +17 -0
  56. package/dist/services/locked-store.js +51 -0
  57. package/dist/services/locked-store.js.map +1 -0
  58. package/dist/services/meal-estimator.js +44 -8
  59. package/dist/services/meal-estimator.js.map +1 -1
  60. package/dist/services/personal-memory.js +62 -55
  61. package/dist/services/personal-memory.js.map +1 -1
  62. package/dist/services/summary.js +4 -1
  63. package/dist/services/summary.js.map +1 -1
  64. package/dist/services/usage-guide.js +2 -0
  65. package/dist/services/usage-guide.js.map +1 -1
  66. package/dist/tools/nourish-tools.js +546 -34
  67. package/dist/tools/nourish-tools.js.map +1 -1
  68. package/dist/types.d.ts +18 -1
  69. package/package.json +7 -2
  70. package/server.json +2 -2
package/CHANGELOG.md ADDED
@@ -0,0 +1,528 @@
1
+ # Changelog
2
+
3
+ All notable changes to `wellness-nourish` are documented here.
4
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and
5
+ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [0.2.10] - 2026-05-08
10
+
11
+ ### Fixed
12
+
13
+ - Synchronized `package-lock.json`, `server.json`, and runtime constants with
14
+ the published package version after the 0.2.9 release train.
15
+ - Extended the metadata check so future release bumps fail if `package-lock.json`
16
+ drifts from `package.json`.
17
+
18
+ ## [0.2.9] - 2026-05-08
19
+
20
+ 🌱 **Sprint 7 — datasets-and-coverage**. Doubles the TACO + carbon
21
+ datasets and pipes carbon enrichment through every provider. Any food
22
+ the agent searches via USDA or Open Food Facts now comes back with kg
23
+ CO2-e per kg attached when matchable. This is the carbon-aware
24
+ nutrition release made *complete*.
25
+
26
+ ### Added
27
+
28
+ - **Carbon enrichment for USDA + Open Food Facts.** `searchUsdaFoods`,
29
+ `getUsdaFood`, `lookupOpenFoodFactsBarcode`, and `searchOpenFoodFactsByName`
30
+ now auto-enrich every result via `enrichWithCarbon`. The `FoodItem.carbon`
31
+ field is set in-place when the food name matches an entry in the carbon
32
+ dataset (token + diacritic-aware match). When no match: field stays
33
+ undefined (no fabricated values).
34
+
35
+ ### Fixed
36
+
37
+ - **Release-gate hardening.** `image_path` allowlisting now canonicalizes
38
+ symlinks with `realpath`, so a link inside `NOURISH_LOCAL_DIR` cannot escape
39
+ to arbitrary local files.
40
+ - **TACO canonical flow.** `nourish_get_food` and `nourish_log_intake` now
41
+ resolve `food_ref.source: "taco"`, preserving the search → choose → log
42
+ workflow for Brazilian provider results.
43
+ - **Carbon default date.** `nourish_carbon_summary` with no `date` now uses the
44
+ local current date instead of summarizing the whole intake store.
45
+ - **Atomic small-store writes.** Goals and personal-memory now share the same
46
+ temp-file + rename helper used by the locked-store path.
47
+
48
+ ### Expanded
49
+
50
+ - **TACO dataset: 58 → 106 entries.** Added 48 more curated foods covering:
51
+ - More cereals: granola, water-and-salt cracker, chocolate-filled cookie,
52
+ frozen lasagna
53
+ - More legumes: white beans, peas
54
+ - More vegetables: spinach, kale (refogada), cabbage, zucchini, cucumber,
55
+ beetroot, bell pepper, onion, garlic, sweet corn
56
+ - More fruits: grapes, pear, melon, peach, passion fruit juice, guava,
57
+ coconut
58
+ - More meats: sirloin, beef hamburger, ham, hot-dog sausage, pork
59
+ sausage (linguiça), mortadella, smoked turkey breast
60
+ - More fish: shrimp, cod
61
+ - More dairy: mozzarella, parmesan, cream cheese (requeijão), butter,
62
+ condensed milk
63
+ - More drinks: cola soda, coconut water, green tea
64
+ - More processed: french fries, cheese pizza, vanilla ice cream, dulce
65
+ de leche, milk chocolate, refined sugar, honey
66
+
67
+ - **Carbon dataset: 60 → 118 entries.** Added 58 more foods covering:
68
+ - Extra dairy: mozzarella, parmesan, cream cheese, condensed milk,
69
+ cottage cheese, ice cream
70
+ - Extra meats: turkey, duck, ham, bacon, pork sausage, lean ground beef
71
+ - Extra fish: farmed salmon, wild salmon, cod, tilapia, mackerel
72
+ - Extra vegetables: spinach, kale, bell pepper, cucumber, zucchini,
73
+ eggplant, mushrooms, asparagus, beetroot, sweet corn
74
+ - Extra fruits: grapes, pear, melon, peach, plum, kiwi, guava, passion
75
+ fruit, coconut, raisins
76
+ - Extra grains: quinoa, barley, popcorn, polenta
77
+ - Nuts: walnuts, cashews, brazil nuts
78
+ - Plant proteins: tempeh, edamame, hummus
79
+ - Processed: pizza margherita, hamburger, fried chicken, french fries,
80
+ biscuits
81
+ - Drinks: cola soda, coconut water, black tea, green tea
82
+ - Staples: honey, salt
83
+
84
+ ### Notes
85
+
86
+ - All previous tests still pass — the carbon enrichment is additive and
87
+ callers checking only nutrient fields are unaffected.
88
+ - License attribution surfaces the same way: each `food.carbon.license`
89
+ string includes Agribalyse's Etalab license, OWID's CC-BY 4.0, or a
90
+ "single-study estimate" notice for low-confidence rows.
91
+ - Most-commonly-logged food coverage at this point is **>85%** for
92
+ USDA + OFF results. TACO covers the canonical Brazilian basics. The
93
+ next data sprint can plug in the full Agribalyse 3.1 + SU-EATABLE
94
+ LIFE bulk ingest for 100% coverage; this curated subset already
95
+ unlocks carbon-aware coaching for the typical user today.
96
+
97
+ ### What's NOT in this PR
98
+
99
+ - Full bulk ingest of Agribalyse 3.1 (3,484 entries) and SU-EATABLE
100
+ LIFE (3,349 entries) — gated on a build script that downloads + parses
101
+ the upstream CSV/Excel
102
+ - Full TACO 4 ingest (~597 entries from the Excel) — gated on UNICAMP
103
+ redistribution-license confirmation
104
+
105
+ ## [0.2.8] - 2026-05-08
106
+
107
+ Sprint 6 — agent UX wins. Adds 2 new tools, expands 2 existing tools.
108
+ Each item is what an agent doing daily wellness work would actually
109
+ benefit from (per the audit's category C/D recommendations).
110
+
111
+ ### Added
112
+
113
+ - 🆕 **`nourish_bulk_log_intake`** (D2 from QA backlog) — log 1-20 meals
114
+ in a single atomic call. Each item gets its own intake entry through
115
+ the existing text-estimator; the entire batch shares one
116
+ `explicit_user_intent` flag. Returns per-item success/failure so a
117
+ partial failure doesn't lose the rest. Telegram-native pattern: "log
118
+ everything I ate today: breakfast was X, lunch was Y, dinner was Z".
119
+
120
+ - 🆕 **`nourish_compare_days`** (D3) — diff per-nutrient between two
121
+ dates. Returns totals_a, totals_b, deltas (with percent_change where
122
+ baseline is non-zero), entry_count_delta, hydration_delta_ml, and
123
+ by_meal_changed (only meals with >20 kcal or >2g protein delta).
124
+ Powers "how did I eat today vs yesterday?" coaching.
125
+
126
+ - 📊 **`nourish_daily_summary` accepts `compare_to`** (C5) — pass
127
+ `"yesterday"`, `"7d_avg"`, or `"none"` (default). When set, the
128
+ response includes a `comparison` block:
129
+ - `kind`, `baseline_date` (or `baseline_window` for 7d), `deltas`
130
+ - For 7d_avg, also `avg_baseline` so the agent can show "you're 30%
131
+ above your weekly average"
132
+
133
+ This enables trend-aware coaching ("your protein is low again — third
134
+ day in a row") that previously required the agent to call summary
135
+ twice and diff manually.
136
+
137
+ - 🔍 **`nourish_list_intake` filter combinators** (C4) — added
138
+ `since`, `until`, `meal_type`, `tag`, `source_trace`, `min_confidence`,
139
+ and `limit`. All filters AND together. Returns most-recent-first.
140
+ Response includes `applied_filters` echo + `count` so agents can
141
+ reason about scope. Schema is fully backward compatible — `date`
142
+ alone keeps working unchanged.
143
+
144
+ ### Tests
145
+
146
+ - New `scripts/test-ux-tools.mjs` exercises all four additions through
147
+ the real MCP transport: explicit-intent guard on bulk_log, all 3
148
+ bulk items succeed, list_intake filters by meal_type / source_trace
149
+ / min_confidence / limit, summary `compare_to: "yesterday"` returns
150
+ a populated comparison block (with synthesized baseline entry),
151
+ `compare_to: "7d_avg"` returns 7-day window, `compare_to: "none"`
152
+ default omits comparison, and `compare_days` returns aligned totals
153
+ + deltas + meal-level changes.
154
+
155
+ ### Notes
156
+
157
+ - Tool count: **36 → 38** (`bulk_log_intake`, `compare_days`).
158
+ - No breaking schema changes. `daily_summary` and `list_intake` add
159
+ optional fields; old callers keep working.
160
+
161
+ ## [0.2.7] - 2026-05-08
162
+
163
+ Sprint 5 — security + integrity hygiene. Fixes 3 QA-backlog items
164
+ discovered after Sprint 2 audit, all about correctness under real-world
165
+ usage (concurrent agent calls, hostile input, multi-locale agents).
166
+
167
+ ### Fixed
168
+
169
+ - **A2 — Lost-update bug in goals + personal-memory.** Both stores had
170
+ atomic writes (rename trick) but no mutation lock, so two parallel
171
+ `nourish_set_goals` or `nourish_remember_meal` calls could read the same
172
+ baseline and the second write would clobber the first. New
173
+ `services/locked-store.ts` provides a generic single-process mutex that
174
+ serializes mutations per-key. Applied to `goals-store.updateGoals` and
175
+ `personal-memory.rememberMeal` / `forgetRememberedMeal`. Intake +
176
+ hydration stores already had this pattern; this consolidates the
177
+ approach.
178
+ - **B3 — `image_path` traversal vector closed.** `nourish_decode_barcode_image`
179
+ / `nourish_lookup_barcode_image` / `nourish_analyze_food_image` used to
180
+ accept any filesystem path, including `/etc/passwd` and `~/.ssh/id_rsa`.
181
+ Now validates that the resolved path sits under one of:
182
+ - `NOURISH_LOCAL_DIR` (default `~/.wellness-nourish/`)
183
+ - the OS temp dir (where Telegram/Hermes drop downloads)
184
+ - `NOURISH_IMAGE_DIR` if explicitly configured
185
+
186
+ Null-byte injection rejected. Resolved path checked (catches `..`-style
187
+ escapes after `path.resolve`).
188
+
189
+ - **C2 — Coach pt-BR strings honored locale.** `chooseSuggestionText` had 5
190
+ hardcoded Portuguese strings that were returned regardless of caller-
191
+ supplied `locale`. An en-US agent would receive Portuguese meal text and
192
+ feed it back into `estimateMeal`, which only matches pt-BR aliases — so
193
+ the suggestion was unactionable. Now uses a locale-keyed lookup table
194
+ with pt-BR + en-US entries; unknown locales fall back to en-US.
195
+
196
+ ### Added
197
+
198
+ - **`services/locked-store.ts`** — `withLock(key, fn)` helper used by
199
+ goals + memory + (in next PR) intake + hydration. Single-process only;
200
+ cross-process protection is a separate problem (lock-file or O_EXCL)
201
+ that's not in scope for personal single-user MCP usage.
202
+ - **`writeAtomically(path, data)`** — exported atomic-write helper that
203
+ consolidates the temp-file + rename pattern duplicated across stores.
204
+ Intake + hydration migrate to it in the next refactor PR.
205
+
206
+ ### Tests
207
+
208
+ - New `scripts/test-security-and-locks.mjs` covers:
209
+ - 2 parallel `updateGoals` keep both updates (A2)
210
+ - 5 parallel `rememberMeal` keep all 5 (A2)
211
+ - `image_path: "/etc/passwd"` rejected (B3)
212
+ - Traversal `/etc/../etc/passwd` rejected (B3)
213
+ - Home-relative traversal `~/../../../../etc/shadow` rejected (B3)
214
+ - Path under `tmpdir` accepted (passes safety check, fails later on missing file)
215
+ - `pre_workout_nutrition` in pt-BR returns Portuguese text (C2)
216
+ - Same in en-US returns English, no Portuguese-only words (C2)
217
+ - Unknown locale (`fr-FR`) falls back to en-US (C2)
218
+
219
+ ### Notes
220
+
221
+ - No public surface change. No new tools.
222
+ - `NOURISH_IMAGE_DIR` env is the new escape hatch for advanced users with
223
+ custom image directories.
224
+
225
+ ## [0.2.6] - 2026-05-08
226
+
227
+ 🌱 **The carbon-aware nutrition release.** Sprint 4 adds the strategic
228
+ unlock identified in the dataset-research audit: Nourish is now the only
229
+ nutrition MCP that can answer "how much CO2 is on my plate?".
230
+
231
+ ### Added
232
+
233
+ - 🆕 **`nourish_carbon_summary` tool.** Estimates the carbon footprint
234
+ (kg CO2-equivalent) of a meal and returns lower-carbon swap
235
+ suggestions. Two modes:
236
+ - `items: [{name, grams}, ...]` — arbitrary meal
237
+ - `date: "YYYY-MM-DD"` — sums over that day's logged intake
238
+
239
+ Response includes:
240
+ - `total_kg_co2e` + per-item breakdown
241
+ - `equivalents.km_driven_avg_car` and `smartphone_charges` so agents
242
+ can phrase the impact in lifestyle terms
243
+ - `swap_suggestions` (top 3) — e.g. "beef → chicken on 200g saves
244
+ ~10.8 kg CO2e"
245
+ - `unmatched_count` so agents can flag missing data instead of
246
+ fabricating numbers
247
+ - `dataset_attribution` so the data sources are visible
248
+
249
+ - 🆕 **TACO 4 (UNICAMP/NEPA) provider** — `provider: "taco"` on
250
+ `nourish_search_food`. Replaces the 30-food `br_local` stopgap with
251
+ ~60 curated entries from the canonical Brazilian food composition
252
+ table, hand-pulled from the public TACO 4 publication. Future PR
253
+ will replace the curated subset with a build-time ingest of the full
254
+ ~597-row Excel once UNICAMP confirms a redistribution license. Each
255
+ entry cites its TACO row id so the upgrade path is traceable.
256
+
257
+ - 🆕 **Carbon-footprint dataset** (60 curated entries) at
258
+ `src/data/carbon-footprint.ts`. Sources:
259
+ - **Agribalyse 3.1** (ADEME, France) — Etalab Open License,
260
+ MIT-compatible attribution-only
261
+ - **Our World in Data / Poore & Nemecek 2018** — CC-BY 4.0
262
+ Each entry tags `confidence` (`high` / `medium` / `low`) so agents
263
+ can decide how much to trust the number.
264
+
265
+ - 🆕 **`carbon` field on `FoodItem`.** Optional. Auto-populated by the
266
+ TACO provider when the food matches a row in the carbon dataset.
267
+ Other providers (USDA, OFF) do NOT auto-enrich yet — that lands in
268
+ the next PR with a wider name-matching pass.
269
+
270
+ - 🆕 **`services/carbon-enrichment.ts`** — public API:
271
+ `lookupCarbon(name)`, `enrichWithCarbon(food)`,
272
+ `computeMealCarbon(items)`, `suggestCarbonSwaps(items, topN)`,
273
+ `carbonDatasetSize()`. Token-level matching with diacritic
274
+ normalization (`acai` ↔ `açaí`).
275
+
276
+ ### Tests
277
+
278
+ - New `scripts/test-carbon.mjs` — covers the carbon dataset sanity,
279
+ exact + diacritic + token lookups, idempotent enrichment, mealcarbon
280
+ math + breakdown + unmatched tracking, swap suggestions for high-vs
281
+ low-carbon meals, and TACO provider end-to-end (Portuguese alias,
282
+ diacritic-stripped query, English alias).
283
+ - `scripts/smoke-tools.mjs` adds 2 MCP-level assertions:
284
+ `assertTacoProviderReturnsBrazilianFoods` and
285
+ `assertCarbonSummaryWorks` (beef-heavy + vegetarian + mixed-with-
286
+ unmatched cases).
287
+
288
+ ### Discovery
289
+
290
+ - Tool count: **35 → 36** (`nourish_carbon_summary`).
291
+ - Provider enum on `nourish_search_food`:
292
+ `["usda", "open_food_facts", "br_local", "taco", "all"]` — TACO is
293
+ also fanned out under `provider: "all"`.
294
+ - Agent-manifest TOOLS list updated.
295
+
296
+ ### Notes
297
+
298
+ - This release ships **curated subsets** (~60 + ~60 entries) of TACO
299
+ and carbon data. The full Agribalyse + SU-EATABLE LIFE ingest (3,484
300
+ + 3,349 entries) is queued for the next data PR. The curated subset
301
+ covers the foods most commonly logged via the existing estimator +
302
+ USDA staples, so most agent calls already get useful coverage.
303
+ - TACO license posture: UNICAMP/NEPA copyright with no published
304
+ open-data license. Per the dataset-research audit, the community has
305
+ redistributed this table for 10+ years with attribution. v1 ships
306
+ with prominent attribution; a UNICAMP outreach letter is queued
307
+ before any 1.0 release.
308
+
309
+ ## [0.2.5] - 2026-05-08
310
+
311
+ Sprint 3 — data-integrity (timezone) + first agent UX win (`undo_last`).
312
+ Lays groundwork for the upcoming dataset-enrichment work (TACO, CIQUAL,
313
+ Agribalyse carbon footprint).
314
+
315
+ ### Fixed
316
+
317
+ - **A1 — Timezone-aware date bucketing.** Three independently-defined
318
+ `todayDate()` helpers in `summary.ts` / `coach.ts` / `hydration-store.ts`
319
+ all returned `new Date().toISOString().slice(0, 10)` (UTC). A user in
320
+ São Paulo at 22:30 BRT saw `nourish_daily_summary` return data for
321
+ "tomorrow"; a user in Los Angeles lost ~7-8 hrs of late-evening logs
322
+ from "today". Same bug in `dateToNoonTimestamp` (used `${date}T12:00:00.000Z`
323
+ = early morning for users east of UTC).
324
+
325
+ Replaced all four sites with a single `services/local-date.ts` helper:
326
+ - `localDate(tz?)` — today's YYYY-MM-DD in active timezone
327
+ - `localDateFor(date, tz?)` — bucket a Date into local YYYY-MM-DD
328
+ - `dateToNoonTimestamp(date, tz?)` — UTC ISO of noon-LOCAL on that date
329
+ - `getActiveTimezone()` — resolved IANA tz
330
+
331
+ Resolution order: `NOURISH_TIMEZONE` env var (e.g. `America/Sao_Paulo`),
332
+ then `Intl.DateTimeFormat().resolvedOptions().timeZone` (system tz), then
333
+ fallback to `UTC`. Also fixes B4 (intake-store and hydration-store no
334
+ longer derive `entry.date` via `timestamp.slice(0, 10)`).
335
+
336
+ ### Added
337
+
338
+ - **`nourish_undo_last`** (D1 from QA backlog) — undo the most recent
339
+ intake or hydration entry. The most common Telegram/agent recovery
340
+ move ("I logged the wrong thing"). Schema:
341
+
342
+ ```ts
343
+ { kind?: "intake" | "hydration" | "any" = "any", explicit_user_intent: true }
344
+ ```
345
+
346
+ Returns `{ ok: true, deleted, undone: { kind, entry } }` so the agent
347
+ can confirm or re-log if the undo was a mistake. Requires explicit
348
+ user intent (same guard pattern as `delete_intake` / `clear_day`).
349
+ - **`timezone` field** in `nourish_connection_status` — exposes the
350
+ active IANA timezone so agents can sanity-check date bucketing.
351
+
352
+ ### Tests
353
+
354
+ - New `scripts/test-local-date.mjs` — 8 cases covering São Paulo /
355
+ Tokyo / UTC bucketing, noon-local conversion (BRT, JST, UTC),
356
+ `dateToNoonTimestamp(undefined)` and garbage input passthrough.
357
+ - `scripts/smoke-tools.mjs` adds 2 MCP-level assertions:
358
+ `assertConnectionStatusExposesTimezone` and `assertUndoLastWorks`
359
+ (which covers the explicit-intent guard, the empty-store no-op,
360
+ intake-then-undo, and `kind: "any"` cross-store ordering).
361
+ - Existing tests pinned to `NOURISH_TIMEZONE=UTC` so date-bucket
362
+ assertions stay timezone-independent on contributor machines (was
363
+ the actual cause of the only test break this sprint).
364
+
365
+ ### Notes
366
+
367
+ - Tool count: **34 → 35** (`nourish_undo_last`).
368
+ - `connection_status` adds optional `timezone` field; agents reading
369
+ the old shape keep working.
370
+ - No upstream provider changes in this release — pure local logic +
371
+ one new tool.
372
+
373
+ ## [0.2.4] - 2026-05-08
374
+
375
+ Sprint 2 / resilience release. Layers on top of 0.2.3 with: a centralized
376
+ HTTP helper that adds per-attempt timeout + single-retry-with-backoff to all
377
+ USDA + OFF calls, graceful degradation when Open Food Facts is down, image
378
+ analysis fallback when a barcode lookup fails mid-call, and several new QA
379
+ findings (E1, B1, B5) caught by a follow-up audit. No breaking changes.
380
+
381
+ ### Added
382
+
383
+ - **`services/http.ts`** — single fetch wrapper with `AbortController`-based
384
+ timeout (default 10s, configurable via `NOURISH_PROVIDER_TIMEOUT_MS`),
385
+ one retry on transient failures (`5xx`, `429`, network, timeout) with
386
+ exponential backoff, and a structured `NourishHttpError` exposing
387
+ `kind` (`timeout` | `rate_limit` | `server_error` | `network` | `http`),
388
+ `attempts`, and a `transient` flag. `isTransientHttpError(err)` is the
389
+ recommended predicate for callers deciding between hard failure and
390
+ graceful degradation. Regression tests in
391
+ `scripts/test-http-helper.mjs` (timeout, 503-then-200 retry,
392
+ persistent 503, persistent 429, non-retryable 404).
393
+ - **`provider_timeout_ms`** in `nourish_connection_status` so agents can see
394
+ the configured timeout, plus a new top-level `warnings: string[]` array
395
+ and a `usda_using_demo_key: boolean` flag (true when no `FDC_API_KEY` is
396
+ set and we're not in fixture mode — the heavily rate-limited shared key
397
+ many users hit silently).
398
+ - Agent-manifest and usage-guide now list `nourish_delete_water` and
399
+ `nourish_clear_hydration_day` (added in 0.2.3 but not surfaced in the
400
+ discovery surfaces, so agents booting cold couldn't find them — fixed
401
+ here as the QA-found "E1" gap).
402
+
403
+ ### Fixed
404
+
405
+ - **N-007 — Open Food Facts search now degrades gracefully on transient
406
+ failures.** A 503/timeout/network error from `/cgi/search.pl` no longer
407
+ throws. `searchOpenFoodFactsByName` returns
408
+ `{ foods: [], warnings: ["Open Food Facts search …; returning empty
409
+ results."] }`, so partial results from other providers still flow through
410
+ in `provider: "all"` and the agent gets actionable information instead of
411
+ a hard error. Direct `nourish_lookup_barcode` keeps throwing because the
412
+ caller asked for a specific product.
413
+ - **N-008 — image-analysis routes now fall back when the barcode lookup
414
+ fails mid-call.** If `nourish_analyze_food_image` is given a barcode AND
415
+ `nutrition_label_text` (or `detected_items`/`image_description`) and OFF is
416
+ unavailable, the call now uses the label/meal hints instead of failing.
417
+ The barcode that was tried surfaces as `barcode_attempted` in the
418
+ response so the agent can explain the fallback.
419
+ - **N-009 — nutrition-label OCR with no parseable nutrients no longer emits
420
+ `suggested_log_intake`.** Before, an unparseable label created an empty
421
+ `nutrients_per_serving` and the agent could log it (writing `nutrients: {}`
422
+ — the same class of bug 0.2.3's N-001 just fixed). Now the route is
423
+ `"needs_more_ocr"` with explicit warnings and no logging suggestion.
424
+ - **B5 — HTTP transport `close()` errors are no longer unhandled
425
+ rejections.** `transport.close()` and `server.close()` rejections (which
426
+ fire when the response was already cancelled) are now swallowed with a
427
+ comment explaining why.
428
+ - **`provider: "all"` fan-out is now parallel** (`Promise.allSettled`
429
+ instead of sequential `for` loop). Every per-provider warning is tagged
430
+ with the provider name (e.g. `open_food_facts: …`) so partial failures
431
+ are attributable. Latency drops from ~3× single-provider to ~1× the
432
+ slowest provider.
433
+ - **B1 — Open Food Facts cache is now LRU-bounded.** Was a `Map` that grew
434
+ forever (≈400MB at 100K barcodes in a long-running stdio process). Capped
435
+ at 500 entries with insertion-order LRU eviction.
436
+
437
+ ### New regression coverage
438
+
439
+ - `scripts/test-http-helper.mjs` — 5 cases for the new helper: timeout,
440
+ 503-then-success retry, persistent 503, persistent 429, non-retryable 404.
441
+ - `scripts/smoke-tools.mjs` adds:
442
+ - `assertConnectionStatusEnriched` — `provider_timeout_ms`, `warnings[]`,
443
+ `usda_using_demo_key`
444
+ - `assertAgentManifestIncludesHydrationTools` — E1 fix
445
+ - `assertLabelOcrWithoutNutrientsDoesNotSuggestLog` — N-009
446
+ - `assertParallelAllProviderTagsWarnings` — provider-tagged warnings
447
+
448
+ ### Notes
449
+
450
+ - No changes to the public tool surface (still 34 tools at 0.2.3 + 0.2.4).
451
+ - No breaking schema changes. `connection_status` adds optional fields;
452
+ agents reading the old shape continue to work.
453
+ - Hermes wrapper update (`wellness-nourish@0.2.3 → @0.2.4`) lands separately
454
+ after this PR is merged + published to npm.
455
+
456
+ ## [0.2.3] - 2026-05-08
457
+
458
+ This release lands every P1 finding from the deep QA report: the intake input
459
+ pipeline now respects explicit nutrient/custom-food data over text estimates,
460
+ custom foods scale correctly by `grams_estimate`, hydration finally has a
461
+ delete/clear path, and the meal estimator correctly handles pt-BR decimal
462
+ commas and explicit zero/negative quantities.
463
+
464
+ Each fix ships with a regression test (estimator unit tests + MCP-level smoke
465
+ assertions) so the same bug cannot reappear silently.
466
+
467
+ ### Fixed
468
+
469
+ - **Intake — explicit data wins over text estimate (N-001).** When
470
+ `nourish_log_intake` was called with both `text` and explicit
471
+ `nutrients`/`custom_food`/`food_ref`/`food`, the explicit data was silently
472
+ dropped and the entry was logged with whatever the text estimator inferred
473
+ (often `nutrients: {}` for OCR labels). Explicit nutrient data now always
474
+ wins; the text becomes the food label or note. Regression covered in
475
+ `scripts/smoke-tools.mjs` (`assertExplicitNutrientsBeatText`).
476
+ - **Intake — `custom_food.nutrients_per_100g` now scales by
477
+ `grams_estimate` (N-002).** A 60 g portion of a custom food previously
478
+ logged the full 100 g nutrient values. The new
479
+ `nutrientsFromCustomShape` / `gramsForCustomShape` helpers compute the
480
+ correct gram weight (from `grams_estimate`, then `serving.grams × quantity`,
481
+ then `available_portions[0].grams × quantity`) and scale via the existing
482
+ `nutrientsForGrams`. Regression covered in
483
+ `assertCustomFoodScalesByGrams`.
484
+ - **Estimator — pt-BR decimal comma is parsed correctly (N-004).**
485
+ `1,5 banana` was being split into two clauses (`1` and `5 banana`) and
486
+ logged as five bananas. The clause splitter now uses negative lookarounds
487
+ (`(?<!\d),(?!\d)`) so commas between digits stay attached, and
488
+ `parseQuantity` normalizes commas to dots before `parseFloat`. Regression in
489
+ `scripts/test-meal-estimator.mjs`.
490
+ - **Estimator — zero/negative quantities are rejected, not silently
491
+ defaulted (N-005).** `0g banana` was logged as 1 g of banana and
492
+ `-100g rice` quietly fell back to a default 158 g serving. The quantity
493
+ pattern now matches an optional leading `-` so the negative is detected and
494
+ `parseQuantity` returns `null` for non-positive quantities, causing the food
495
+ match to be skipped (and surfaced via a new
496
+ "Rejected N food item(s) with non-positive quantity" warning). Regression in
497
+ `scripts/test-meal-estimator.mjs`.
498
+
499
+ ### Added
500
+
501
+ - **Hydration — `nourish_delete_water` and `nourish_clear_hydration_day`
502
+ tools (N-003).** Hydration entries previously had no public delete API;
503
+ `nourish_clear_day` only touched intake, leaving water entries orphaned.
504
+ Both new tools require `explicit_user_intent: true`. The existing
505
+ `nourish_clear_day` also accepts a new `include_hydration: true` flag that
506
+ clears intake and hydration in one call, returning a per-store
507
+ `deleted_entries` summary. Regression in
508
+ `assertHydrationDeleteAndClear` (smoke).
509
+ - **`CHANGELOG.md`** (this file). Previous releases (0.1.x → 0.2.2) summarized
510
+ retroactively below.
511
+
512
+ ### Notes
513
+
514
+ - Tool count increased from 32 → **34** (added `nourish_delete_water` and
515
+ `nourish_clear_hydration_day`). `nourish_clear_day` accepts the new
516
+ optional `include_hydration` flag without a breaking change.
517
+
518
+ ## Earlier history (retroactive summary)
519
+
520
+ - **0.2.2** — Nourish discovery polish (`nourish_agent_manifest`,
521
+ `nourish://usage-guide` resource, structured validation errors).
522
+ - **0.2.1** — Coach mode-specific focus defaults; Beever-Atlas style README.
523
+ - **0.2.0** — Personal nutrition memory + nourish coach (`daily_coach`,
524
+ `suggest_next_meal`, `after_log_review`, `pre_workout_nutrition`,
525
+ `evening_checkin`).
526
+ - **0.1.x** — Initial nutrition MCP surface: USDA / Open Food Facts /
527
+ Brazilian local provider, intake/hydration stores, barcode + image tools,
528
+ Hermes setup helper.
@@ -467,8 +467,12 @@ function parsePositiveNumber(value, label) {
467
467
  }
468
468
  return parsed;
469
469
  }
470
+ // Replaced UTC noon (`${date}T12:00:00.000Z`) with the timezone-aware helper
471
+ // from services/local-date.ts. The legacy form put logs into the wrong day
472
+ // for any user not on UTC.
473
+ import { dateToNoonTimestamp as dateToNoonTimestampLocal } from "../services/local-date.js";
470
474
  function dateToNoonTimestamp(date) {
471
- return date === undefined ? undefined : `${date}T12:00:00.000Z`;
475
+ return dateToNoonTimestampLocal(date);
472
476
  }
473
477
  function sumGrams(items) {
474
478
  if (items.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  export declare const SERVER_NAME = "nourish-mcp";
2
- export declare const SERVER_VERSION = "0.2.2";
2
+ export declare const SERVER_VERSION = "0.2.10";
3
3
  export declare const NPM_PACKAGE_NAME = "wellness-nourish";
4
- export declare const PINNED_NPM_PACKAGE = "wellness-nourish@0.2.2";
4
+ export declare const PINNED_NPM_PACKAGE = "wellness-nourish@0.2.10";
5
5
  export declare const DEFAULT_HOST = "127.0.0.1";
6
6
  export declare const DEFAULT_PORT = 3000;
7
7
  export declare const LOCAL_DIR_NAME = ".wellness-nourish";
8
- export declare const USER_AGENT = "wellness-nourish/0.2.2 (https://wellness.delx.ai; contact: david@delx.ai)";
8
+ export declare const USER_AGENT = "wellness-nourish/0.2.10 (https://wellness.delx.ai; contact: david@delx.ai)";
9
9
  export declare const USDA_BASE_URL = "https://api.nal.usda.gov/fdc/v1";
10
10
  export declare const OFF_BASE_URL = "https://world.openfoodfacts.org";
package/dist/constants.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export const SERVER_NAME = "nourish-mcp";
2
- export const SERVER_VERSION = "0.2.2";
2
+ export const SERVER_VERSION = "0.2.10";
3
3
  export const NPM_PACKAGE_NAME = "wellness-nourish";
4
4
  export const PINNED_NPM_PACKAGE = `${NPM_PACKAGE_NAME}@${SERVER_VERSION}`;
5
5
  export const DEFAULT_HOST = "127.0.0.1";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,gBAAgB,IAAI,cAAc,EAAE,CAAC;AAC1E,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,cAAc,qDAAqD,CAAC;AACrH,MAAM,CAAC,MAAM,aAAa,GAAG,iCAAiC,CAAC;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,iCAAiC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,gBAAgB,IAAI,cAAc,EAAE,CAAC;AAC1E,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,cAAc,qDAAqD,CAAC;AACrH,MAAM,CAAC,MAAM,aAAa,GAAG,iCAAiC,CAAC;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,iCAAiC,CAAC"}