wellness-nourish 0.1.8 → 0.2.1
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 +22 -0
- package/CONTRIBUTING.md +31 -0
- package/README.md +64 -12
- package/assets/banner.png +0 -0
- package/dist/cli/hermes.js +7 -2
- package/dist/cli/hermes.js.map +1 -1
- package/dist/constants.d.ts +3 -3
- package/dist/constants.js +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts/nourish-prompts.js +1 -1
- package/dist/prompts/nourish-prompts.js.map +1 -1
- package/dist/providers/br-local.d.ts +7 -0
- package/dist/providers/br-local.js +97 -0
- package/dist/providers/br-local.js.map +1 -0
- package/dist/providers/open-food-facts.d.ts +6 -0
- package/dist/providers/open-food-facts.js +54 -0
- package/dist/providers/open-food-facts.js.map +1 -1
- package/dist/schemas/common.d.ts +81 -0
- package/dist/schemas/common.js +59 -1
- package/dist/schemas/common.js.map +1 -1
- package/dist/services/agent-manifest.js +19 -0
- package/dist/services/agent-manifest.js.map +1 -1
- package/dist/services/capabilities.d.ts +3 -0
- package/dist/services/capabilities.js +9 -1
- package/dist/services/capabilities.js.map +1 -1
- package/dist/services/coach.d.ts +51 -0
- package/dist/services/coach.js +157 -0
- package/dist/services/coach.js.map +1 -0
- package/dist/services/food-image-analysis.d.ts +14 -0
- package/dist/services/food-image-analysis.js +179 -0
- package/dist/services/food-image-analysis.js.map +1 -0
- package/dist/services/meal-estimator.d.ts +7 -0
- package/dist/services/meal-estimator.js +3 -0
- package/dist/services/meal-estimator.js.map +1 -1
- package/dist/services/personal-memory.d.ts +46 -0
- package/dist/services/personal-memory.js +197 -0
- package/dist/services/personal-memory.js.map +1 -0
- package/dist/services/usage-guide.js +29 -0
- package/dist/services/usage-guide.js.map +1 -1
- package/dist/tools/nourish-tools.js +183 -8
- package/dist/tools/nourish-tools.js.map +1 -1
- package/examples/hermes-skill.md +7 -2
- package/examples/hermes.md +7 -4
- package/package.json +4 -1
- package/server.json +2 -2
package/AGENTS.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Agent Development Notes
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
This repo is the local-first Nourish MCP server for nutrition search, barcode lookup, intake logging, hydration and meal summaries.
|
|
6
|
+
|
|
7
|
+
## Commands
|
|
8
|
+
|
|
9
|
+
- Install: `npm ci`
|
|
10
|
+
- Typecheck: `npm run typecheck`
|
|
11
|
+
- Build: `npm run build`
|
|
12
|
+
- HTTP smoke: `npm run smoke:http`
|
|
13
|
+
- Metadata check: `npm run test:metadata`
|
|
14
|
+
- Full gate: `npm test`
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- Never commit user food logs, photos, generated local stores, API keys, or private health context.
|
|
19
|
+
- Keep fixture mode available for CI and agent verification.
|
|
20
|
+
- Preserve pt-BR quantity parsing and explicit gram/unit behavior.
|
|
21
|
+
- Preserve agent-ready surfaces: manifest, connection status, privacy audit, CLI UX, Hermes agent manifest, and metadata checks.
|
|
22
|
+
- Keep nutrition outputs informational, not medical advice.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Contributions are welcome, especially around nutrition normalization, barcode lookup, intake workflows, pt-BR parsing, privacy-safe summaries and agent setup examples.
|
|
4
|
+
|
|
5
|
+
## Local development
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm ci
|
|
9
|
+
npm run typecheck
|
|
10
|
+
npm run build
|
|
11
|
+
npm run smoke
|
|
12
|
+
npm run smoke:http
|
|
13
|
+
npm run test:metadata
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Design rules
|
|
17
|
+
|
|
18
|
+
- Never commit food logs, photos, generated local stores, API keys or private health context.
|
|
19
|
+
- Keep fixture mode available for tests and agent verification.
|
|
20
|
+
- Preserve explicit quantities and gram/unit handling.
|
|
21
|
+
- Prefer dry, structured errors that help agents recover without exposing sensitive payloads.
|
|
22
|
+
- Keep nutrition outputs informational, not medical advice.
|
|
23
|
+
|
|
24
|
+
## Pull request checklist
|
|
25
|
+
|
|
26
|
+
- `npm run typecheck` passes.
|
|
27
|
+
- `npm run build` passes.
|
|
28
|
+
- Relevant targeted tests pass.
|
|
29
|
+
- `npm run smoke:http` passes when HTTP behavior changes.
|
|
30
|
+
- `npm run test:metadata` passes when package metadata changes.
|
|
31
|
+
- README/tools docs are updated when behavior changes.
|
package/README.md
CHANGED
|
@@ -1,18 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
<!-- delx-wellness header v2 -->
|
|
2
|
+
<h1 align="center">Wellness Nourish</h1>
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
<div align="center">
|
|
5
|
+
<img src="assets/banner.png" alt="Wellness Nourish — Nourish MCP for AI agents" width="85%" />
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<h3 align="center">
|
|
9
|
+
Local-first nutrition MCP — food search, barcode lookup, intake logging, hydration. Works without OAuth.<br>
|
|
10
|
+
Local-first MCP server — <strong>tokens never leave your machine</strong>.
|
|
11
|
+
</h3>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://www.npmjs.com/package/wellness-nourish"><img src="https://img.shields.io/npm/v/wellness-nourish?style=for-the-badge&labelColor=0F172A&color=10B981&logo=npm&logoColor=white" alt="npm version" /></a>
|
|
15
|
+
<a href="https://www.npmjs.com/package/wellness-nourish"><img src="https://img.shields.io/npm/dm/wellness-nourish?style=for-the-badge&labelColor=0F172A&color=0EA5A3&logo=npm&logoColor=white" alt="npm downloads" /></a>
|
|
16
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/LICENSE-MIT-22C55E?style=for-the-badge&labelColor=0F172A" alt="License MIT" /></a>
|
|
17
|
+
<a href="https://wellness.delx.ai/nutrition"><img src="https://img.shields.io/badge/SITE-wellness.delx.ai-0EA5A3?style=for-the-badge&labelColor=0F172A" alt="Site" /></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="https://github.com/davidmosiah/wellness-nourish/stargazers"><img src="https://img.shields.io/github/stars/davidmosiah/wellness-nourish?style=for-the-badge&labelColor=0F172A&color=FBBF24&logo=github" alt="GitHub stars" /></a>
|
|
22
|
+
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/BUILT_FOR-MCP-7C3AED?style=for-the-badge&labelColor=0F172A" alt="Built for MCP" /></a>
|
|
23
|
+
<a href="https://github.com/davidmosiah/delx-wellness-hermes"><img src="https://img.shields.io/badge/HERMES-one--command_setup-10B981?style=for-the-badge&labelColor=0F172A" alt="Hermes one-command setup" /></a>
|
|
24
|
+
<a href="https://github.com/davidmosiah/delx-wellness"><img src="https://img.shields.io/badge/Nourish-10B981?style=for-the-badge&labelColor=0F172A&logoColor=white" alt="Nourish" /></a>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
> ⚡ **One-command install** with [Delx Wellness for Hermes](https://github.com/davidmosiah/delx-wellness-hermes):
|
|
28
|
+
> `npx -y delx-wellness-hermes setup` — preconfigures this connector and the other 8 in a dedicated Hermes profile.
|
|
29
|
+
>
|
|
30
|
+
> Or wire it standalone into Claude Desktop / Cursor / ChatGPT Desktop — see the install section below.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
<!-- /delx-wellness header v2 -->
|
|
8
35
|
|
|
9
36
|
## Overview
|
|
10
37
|
|
|
11
|
-
Wellness Nourish is a local MCP server for nutrition search, barcode lookup, barcode photo lookup, photo-assisted meal estimation, intake logging, hydration, goals, exports,
|
|
38
|
+
Wellness Nourish is a local MCP server for nutrition search, barcode lookup, barcode photo lookup, photo-assisted meal estimation, intake logging, hydration, goals, exports, daily or weekly summaries, personal meal memory, and coach-style nutrition workflows. It runs over stdio by default for MCP clients and can also run a Streamable HTTP endpoint at `POST /mcp`.
|
|
12
39
|
|
|
13
40
|
> If this nutrition layer helps your agent workflow, please star the repo. Stars make the project easier for other AI builders to discover and help Delx keep shipping local-first wellness infrastructure.
|
|
14
41
|
|
|
15
|
-
The connector uses USDA FoodData Central as the primary food search provider. Open Food Facts is used for packaged-food barcode lookup when enabled. Local barcode image decoding is supported with ZXing. Meal photos are estimated only from an agent-provided visual observation and always require confirmation before logging. The local estimator includes a
|
|
42
|
+
The connector uses USDA FoodData Central as the primary food search provider. Open Food Facts is used for packaged-food barcode lookup and product-name search when enabled. Local barcode image decoding is supported with ZXing. Meal photos are estimated only from an agent-provided visual observation and always require confirmation before logging. The local estimator includes a pt-BR/Brazilian-food catalog for common meals, kitchen units, and shortcuts such as arroz, feijão, frango, ovos, banana, tapioca, picanha, feijoada and salada. It does not provide hosted sync, autonomous photo upload, recipe generation, or medical advice.
|
|
16
43
|
|
|
17
44
|
## Install
|
|
18
45
|
|
|
@@ -120,10 +147,13 @@ Recommended Telegram flow:
|
|
|
120
147
|
1. User says what they ate.
|
|
121
148
|
2. Hermes calls `nourish_estimate_meal` and replies with calories, protein, confidence and warnings.
|
|
122
149
|
3. For barcode photos, Hermes calls `nourish_lookup_barcode_image` when it has an image path, base64 image, or data URI.
|
|
123
|
-
4. For
|
|
124
|
-
5.
|
|
125
|
-
6. Hermes calls `
|
|
126
|
-
7.
|
|
150
|
+
4. For mixed food photos, Hermes calls `nourish_analyze_food_image` with barcode observations, label OCR, detected items, or image description.
|
|
151
|
+
5. For meal photos, Hermes describes visible food and portions, calls `nourish_estimate_meal_photo`, and asks for portion confirmation.
|
|
152
|
+
6. For "what should I eat now?" questions, Hermes calls `nourish_daily_coach` or `nourish_suggest_next_meal`, optionally passing wearable context from WHOOP/Garmin/Oura.
|
|
153
|
+
7. For repeated meals, Hermes can call `nourish_remember_meal` after explicit user intent so future phrases like "meu café normal" expand locally.
|
|
154
|
+
8. User confirms saving.
|
|
155
|
+
9. Hermes calls `nourish_log_intake` with `explicit_user_intent: true`.
|
|
156
|
+
10. User can ask for `today`, weekly summaries, goals, hydration, edits, deletes or exports.
|
|
127
157
|
|
|
128
158
|
Local build:
|
|
129
159
|
|
|
@@ -177,3 +207,25 @@ NOURISH_FIXTURE_MODE=1 NOURISH_FIXTURE_DIR=fixtures npm run test:cli-ux
|
|
|
177
207
|
## Delx Wellness
|
|
178
208
|
|
|
179
209
|
Project page: <https://wellness.delx.ai/nutrition>
|
|
210
|
+
|
|
211
|
+
<!-- delx-wellness see-also -->
|
|
212
|
+
|
|
213
|
+
## See also
|
|
214
|
+
|
|
215
|
+
The full [Delx Wellness](https://wellness.delx.ai) connector library:
|
|
216
|
+
|
|
217
|
+
| Provider | Package | Repo |
|
|
218
|
+
|---|---|---|
|
|
219
|
+
| WHOOP | [`whoop-mcp-unofficial`](https://www.npmjs.com/package/whoop-mcp-unofficial) | [whoop-mcp](https://github.com/davidmosiah/whoop-mcp) |
|
|
220
|
+
| Oura | [`oura-mcp-unofficial`](https://www.npmjs.com/package/oura-mcp-unofficial) | [ouramcp](https://github.com/davidmosiah/ouramcp) |
|
|
221
|
+
| Garmin | [`garmin-mcp-unofficial`](https://www.npmjs.com/package/garmin-mcp-unofficial) | [garminmcp](https://github.com/davidmosiah/garminmcp) |
|
|
222
|
+
| Strava | [`strava-mcp-unofficial`](https://www.npmjs.com/package/strava-mcp-unofficial) | [strava-mcp](https://github.com/davidmosiah/strava-mcp) |
|
|
223
|
+
| Fitbit | [`fitbit-mcp-unofficial`](https://www.npmjs.com/package/fitbit-mcp-unofficial) | [fitbitmcp](https://github.com/davidmosiah/fitbitmcp) |
|
|
224
|
+
| Withings | [`withings-mcp-unofficial`](https://www.npmjs.com/package/withings-mcp-unofficial) | [withingsmcp](https://github.com/davidmosiah/withingsmcp) |
|
|
225
|
+
| Apple Health | [`apple-health-mcp-unofficial`](https://www.npmjs.com/package/apple-health-mcp-unofficial) | [apple-health-mcp](https://github.com/davidmosiah/apple-health-mcp) |
|
|
226
|
+
| Polar | [`polar-mcp-unofficial`](https://www.npmjs.com/package/polar-mcp-unofficial) | [polarmcp](https://github.com/davidmosiah/polarmcp) |
|
|
227
|
+
| Nourish (nutrition) | [`wellness-nourish`](https://www.npmjs.com/package/wellness-nourish) | [wellness-nourish](https://github.com/davidmosiah/wellness-nourish) |
|
|
228
|
+
|
|
229
|
+
**One-command setup for Hermes** — preconfigures every connector above plus wellness skills + onboarding: [`delx-wellness-hermes`](https://github.com/davidmosiah/delx-wellness-hermes).
|
|
230
|
+
|
|
231
|
+
<!-- /delx-wellness see-also -->
|
|
Binary file
|
package/dist/cli/hermes.js
CHANGED
|
@@ -89,7 +89,10 @@ export function hermesSkillMarkdown(localDir = "~/.wellness-nourish") {
|
|
|
89
89
|
"- If the user says `registra`, `anota`, `log`, `salva`, or otherwise clearly asks to save a meal, call `mcp_nourish_nourish_log_intake` with `explicit_user_intent: true`.",
|
|
90
90
|
"- If the user only says what they ate, first call `mcp_nourish_nourish_estimate_meal`, return a compact preview with calories, protein, confidence and warnings, then ask whether to save it.",
|
|
91
91
|
"- If the user sends a barcode photo and Hermes has an image path, base64 image, or data URI, call `mcp_nourish_nourish_lookup_barcode_image`; if only visible digits are available, call `mcp_nourish_nourish_lookup_barcode`.",
|
|
92
|
+
"- If a food image could be a barcode, nutrition label, or meal photo, call `mcp_nourish_nourish_analyze_food_image` with the visual/OCR observations and follow its route.",
|
|
92
93
|
"- If the user sends a meal photo, describe the visible food and portions as `detected_items`, call `mcp_nourish_nourish_estimate_meal_photo`, then ask the user to confirm portions before logging.",
|
|
94
|
+
"- If the user asks what to eat next, call `mcp_nourish_nourish_daily_coach` or `mcp_nourish_nourish_suggest_next_meal`, passing WHOOP/Garmin/Oura context if already available.",
|
|
95
|
+
"- If the user asks Hermes to remember a recurring meal, call `mcp_nourish_nourish_remember_meal` with `explicit_user_intent: true`.",
|
|
93
96
|
"- For Portuguese/Brazilian meals, preserve explicit quantities such as `200g arroz`, `120g feijão`, `150g frango`, call estimate with `locale: pt-BR`, and ask one concise clarification only for unresolved foods.",
|
|
94
97
|
"- If a tool returns `USER_ACTION_REQUIRED`, treat it as a normal confirmation guard, not as a server outage.",
|
|
95
98
|
"- Preserve uncertainty. Include confidence and unresolved items instead of pretending estimates are exact.",
|
|
@@ -102,8 +105,10 @@ export function hermesSkillMarkdown(localDir = "~/.wellness-nourish") {
|
|
|
102
105
|
"3. `mcp_nourish_nourish_estimate_meal` for natural-language meals",
|
|
103
106
|
"4. `mcp_nourish_nourish_lookup_barcode_image` for barcode photos",
|
|
104
107
|
"5. `mcp_nourish_nourish_estimate_meal_photo` for meal photo previews",
|
|
105
|
-
"6. `
|
|
106
|
-
"7. `
|
|
108
|
+
"6. `mcp_nourish_nourish_analyze_food_image` for mixed image routing",
|
|
109
|
+
"7. `mcp_nourish_nourish_daily_coach` for what-to-eat-next questions",
|
|
110
|
+
"8. `mcp_nourish_nourish_log_intake` only after explicit save intent",
|
|
111
|
+
"9. `mcp_nourish_nourish_daily_summary` for today's Telegram summary",
|
|
107
112
|
"",
|
|
108
113
|
"## Personal Store",
|
|
109
114
|
"",
|
package/dist/cli/hermes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/cli/hermes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/cli/hermes.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AA+BvE,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAElF,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3B,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAElE,aAAa,CAAC,WAAW,EAAE,GAAG,oBAAoB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACxE,aAAa,CAAC,SAAS,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5B,MAAM,QAAQ,GAAG;QACf,oJAAoJ;QACpJ,sBAAsB,kBAAkB,qCAAqC;QAC7E,0HAA0H;QAC1H,mGAAmG;KACpG,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,QAAQ;QAChB,kBAAkB,EAAE,UAAU;QAC9B,iBAAiB,EAAE,SAAS;QAC5B,oBAAoB,EAAE,WAAW;QACjC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;QAC9E,iBAAiB,EAAE,QAAQ;QAC3B,uBAAuB,EAAE,IAAI;QAC7B,QAAQ;QACR,UAAU,EAAE;YACV,uDAAuD;YACvD,oEAAoE;YACpE,mGAAmG;SACpG;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAA8B,EAAE;IAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,KAAK,GAA+C;QACxD,aAAa,EAAE,YAAY;QAC3B,yBAAyB,EACvB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChH,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC3F,eAAe,EAAE,cAAc;QAC/B,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;QAClE,wBAAwB,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC5F,CAAC;IAEF,OAAO;QACL,GAAG,KAAK;QACR,eAAe,EAAE,0BAA0B,CAAC,KAAK,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAQ,GAAG,qBAAqB;IAClE,OAAO;QACL,eAAe;QACf,EAAE;QACF,yMAAyM;QACzM,EAAE;QACF,qBAAqB;QACrB,EAAE;QACF,8CAA8C;QAC9C,uHAAuH;QACvH,wIAAwI;QACxI,2HAA2H;QAC3H,qIAAqI;QACrI,8HAA8H;QAC9H,iHAAiH;QACjH,oGAAoG;QACpG,4FAA4F;QAC5F,EAAE;QACF,0BAA0B;QAC1B,EAAE;QACF,4KAA4K;QAC5K,+LAA+L;QAC/L,gOAAgO;QAChO,4KAA4K;QAC5K,qMAAqM;QACrM,iLAAiL;QACjL,qIAAqI;QACrI,qNAAqN;QACrN,8GAA8G;QAC9G,4GAA4G;QAC5G,iFAAiF;QACjF,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,4CAA4C;QAC5C,uCAAuC;QACvC,mEAAmE;QACnE,kEAAkE;QAClE,sEAAsE;QACtE,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,6BAA6B,QAAQ,KAAK;KAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAE,WAAmB;IAClF,MAAM,OAAO,GAAG,iBAAiB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvG,aAAa,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,QAAgB,EAAE,WAAmB;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,gBAAgB,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7G,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACxC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7E,MAAM;QACR,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;IAC3C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IAC/D,OAAO;QACL,YAAY;QACZ,gBAAgB,WAAW,EAAE;QAC7B,UAAU;QACV,4BAA4B,QAAQ,EAAE;QACtC,gCAAgC;KACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL,qBAAqB;QACrB,mBAAmB;QACnB,sFAAsF;QACtF,gCAAgC;QAChC,UAAU;QACV,oBAAoB;QACpB,UAAU;QACV,IAAI;QACJ,wDAAwD;QACxD,eAAe,kBAAkB,OAAO;KACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,UAAU,GAAG,GAAG,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IACnH,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7B,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7B,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,iCAAiC,CAAC;IAC5D,CAAC;IAED,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,+CAA+C,CAAC;AAC1E,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAiD;IACnF,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;QAC7D,eAAe,CAAC,IAAI,CAAC,uHAAuH,CAAC,CAAC;IAChJ,CAAC;IACD,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC7D,eAAe,CAAC,IAAI,CAAC,mCAAmC,kBAAkB,uCAAuC,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC,iHAAiH,CAAC,CAAC;IAC1I,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;QAC7E,eAAe,CAAC,IAAI,CAAC,0DAA0D,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC;IAC/G,CAAC;IAED,eAAe,CAAC,IAAI,CAAC,yIAAyI,CAAC,CAAC;IAChK,eAAe,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IAC9G,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/G,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;AACxF,CAAC"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const SERVER_NAME = "nourish-mcp";
|
|
2
|
-
export declare const SERVER_VERSION = "0.1
|
|
2
|
+
export declare const SERVER_VERSION = "0.2.1";
|
|
3
3
|
export declare const NPM_PACKAGE_NAME = "wellness-nourish";
|
|
4
|
-
export declare const PINNED_NPM_PACKAGE = "wellness-nourish@0.1
|
|
4
|
+
export declare const PINNED_NPM_PACKAGE = "wellness-nourish@0.2.1";
|
|
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.1
|
|
8
|
+
export declare const USER_AGENT = "wellness-nourish/0.2.1 (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.1
|
|
2
|
+
export const SERVER_VERSION = "0.2.1";
|
|
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";
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,9 @@ function serverInstructions() {
|
|
|
30
30
|
"For Portuguese/Brazilian meals, pass locale pt-BR and do not silently replace unknown food terms with unrelated English defaults.",
|
|
31
31
|
"Only log intake, water, goals, or clear-day after explicit user save intent. Then pass explicit_user_intent: true; otherwise these tools return USER_ACTION_REQUIRED.",
|
|
32
32
|
"For photos, the agent must describe visible foods/portions and call nourish_estimate_meal_photo, then ask for confirmation before logging.",
|
|
33
|
+
"For Telegram food images with barcode, label OCR, or meal observations, call nourish_analyze_food_image to route safely without logging.",
|
|
34
|
+
"For 'what should I eat' questions, use nourish_daily_coach or nourish_suggest_next_meal with optional wearable_context from WHOOP/Garmin/Oura tools.",
|
|
35
|
+
"For recurring meals, use nourish_remember_meal only after explicit user intent; future estimates can expand saved labels locally.",
|
|
33
36
|
"This is not medical advice and local storage may contain personal nutrition data.",
|
|
34
37
|
].join(" ");
|
|
35
38
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export function registerNourishPrompts(server) {
|
|
|
22
22
|
role: "user",
|
|
23
23
|
content: {
|
|
24
24
|
type: "text",
|
|
25
|
-
text: "For a Telegram meal message, call nourish_connection_status if needed. For plain text meals, use nourish_estimate_meal first. For barcode photos with image_path, image_base64, or image_data_uri, use nourish_lookup_barcode_image. For meal photos, describe the visible food/portions as detected_items and call nourish_estimate_meal_photo. Reply with
|
|
25
|
+
text: "For a Telegram meal message, call nourish_connection_status if needed. For plain text meals, use nourish_estimate_meal first; saved personal labels are expanded locally. For barcode photos with image_path, image_base64, or image_data_uri, use nourish_lookup_barcode_image. For mixed image observations with barcode text, nutrition label OCR, or visible foods, use nourish_analyze_food_image. For meal photos, describe the visible food/portions as detected_items and call nourish_estimate_meal_photo. For 'what should I eat now?' questions, call nourish_daily_coach or nourish_suggest_next_meal and pass wearable context if another MCP supplied it. Reply with compact Markdown: calories, protein, confidence, unresolved items, warnings, and the confirmation question. If the user clearly asked to save/register/log and the estimate is already confirmed, call nourish_log_intake with explicit_user_intent true. Otherwise ask for confirmation before logging. Do not provide medical advice.",
|
|
26
26
|
},
|
|
27
27
|
},
|
|
28
28
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nourish-prompts.js","sourceRoot":"","sources":["../../src/prompts/nourish-prompts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,cAAc,CACnB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,mFAAmF;KACjG,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,sSAAsS;iBACzS;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,2BAA2B,EAC3B;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,kEAAkE;KAChF,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,
|
|
1
|
+
{"version":3,"file":"nourish-prompts.js","sourceRoot":"","sources":["../../src/prompts/nourish-prompts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,cAAc,CACnB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,mFAAmF;KACjG,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,sSAAsS;iBACzS;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,2BAA2B,EAC3B;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,kEAAkE;KAChF,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,49BAA49B;iBAC/9B;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FoodItem } from "../types.js";
|
|
2
|
+
export interface BrazilianLocalSearchResult {
|
|
3
|
+
provider: "br_local";
|
|
4
|
+
foods: FoodItem[];
|
|
5
|
+
warnings: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function searchBrazilianLocalFoods(query: string, limit?: number): Promise<BrazilianLocalSearchResult>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { foodCompleteness, makeFoodId } from "../services/food-normalization.js";
|
|
2
|
+
import { listSimpleFoods } from "../services/meal-estimator.js";
|
|
3
|
+
import { nutrientsForGrams } from "../services/portion-engine.js";
|
|
4
|
+
const BR_LOCAL_LICENSE = {
|
|
5
|
+
name: "Nourish local Brazilian estimates",
|
|
6
|
+
attribution: "Nourish local Brazilian food estimates. Values are approximate and should be confirmed for critical use.",
|
|
7
|
+
share_alike: false,
|
|
8
|
+
url: "https://wellness.delx.ai/nutrition",
|
|
9
|
+
};
|
|
10
|
+
export async function searchBrazilianLocalFoods(query, limit = 10) {
|
|
11
|
+
const normalizedQuery = normalizeForSearch(query);
|
|
12
|
+
const foods = listSimpleFoods()
|
|
13
|
+
.map((food) => ({
|
|
14
|
+
food,
|
|
15
|
+
score: localFoodScore(normalizedQuery, food),
|
|
16
|
+
}))
|
|
17
|
+
.filter((entry) => entry.score < 100)
|
|
18
|
+
.sort((left, right) => left.score - right.score)
|
|
19
|
+
.slice(0, limit)
|
|
20
|
+
.map((entry) => mapSimpleFood(entry.food));
|
|
21
|
+
return {
|
|
22
|
+
provider: "br_local",
|
|
23
|
+
foods,
|
|
24
|
+
warnings: [
|
|
25
|
+
"Brazilian local catalog values are deterministic estimates, not a full TBCA/TACO import.",
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function mapSimpleFood(food) {
|
|
30
|
+
const sourceId = `br-local:${normalizeForId(food.canonical)}`;
|
|
31
|
+
const itemBase = {
|
|
32
|
+
id: makeFoodId("estimate", sourceId),
|
|
33
|
+
source: "estimate",
|
|
34
|
+
source_id: sourceId,
|
|
35
|
+
source_url: "https://wellness.delx.ai/nutrition",
|
|
36
|
+
name: food.canonical,
|
|
37
|
+
locale: "pt-BR",
|
|
38
|
+
serving: {
|
|
39
|
+
quantity: 1,
|
|
40
|
+
unit: "serving",
|
|
41
|
+
grams: food.servingGrams,
|
|
42
|
+
},
|
|
43
|
+
available_portions: [
|
|
44
|
+
{
|
|
45
|
+
label: "100g",
|
|
46
|
+
quantity: 100,
|
|
47
|
+
unit: "g",
|
|
48
|
+
grams: 100,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: "serving",
|
|
52
|
+
quantity: 1,
|
|
53
|
+
unit: "serving",
|
|
54
|
+
grams: food.servingGrams,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
nutrients_per_100g: food.nutrientsPer100g,
|
|
58
|
+
nutrients_per_serving: nutrientsForGrams(food.nutrientsPer100g, food.servingGrams),
|
|
59
|
+
license: BR_LOCAL_LICENSE,
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
...itemBase,
|
|
63
|
+
data_quality: {
|
|
64
|
+
completeness: foodCompleteness(itemBase),
|
|
65
|
+
confidence: 0.65,
|
|
66
|
+
warnings: [
|
|
67
|
+
"Local Brazilian estimate; prefer barcode, label, USDA, or confirmed nutrition data when available.",
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function localFoodScore(normalizedQuery, food) {
|
|
73
|
+
const names = [food.canonical, ...food.aliases].map(normalizeForSearch);
|
|
74
|
+
if (names.includes(normalizedQuery)) {
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
if (names.some((name) => name.startsWith(normalizedQuery))) {
|
|
78
|
+
return 10;
|
|
79
|
+
}
|
|
80
|
+
if (names.some((name) => name.includes(normalizedQuery) || normalizedQuery.includes(name))) {
|
|
81
|
+
return 25;
|
|
82
|
+
}
|
|
83
|
+
return 100;
|
|
84
|
+
}
|
|
85
|
+
function normalizeForSearch(value) {
|
|
86
|
+
return value
|
|
87
|
+
.toLowerCase()
|
|
88
|
+
.normalize("NFD")
|
|
89
|
+
.replace(/\p{Diacritic}/gu, "")
|
|
90
|
+
.replace(/[^\p{L}\p{N}]+/gu, " ")
|
|
91
|
+
.trim()
|
|
92
|
+
.replace(/\s+/gu, " ");
|
|
93
|
+
}
|
|
94
|
+
function normalizeForId(value) {
|
|
95
|
+
return normalizeForSearch(value).replace(/\s+/gu, "-");
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=br-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"br-local.js","sourceRoot":"","sources":["../../src/providers/br-local.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,11 @@ type OpenFoodFactsLookupResult = {
|
|
|
3
3
|
food: FoodItem;
|
|
4
4
|
provider: "open_food_facts";
|
|
5
5
|
};
|
|
6
|
+
type OpenFoodFactsSearchResult = {
|
|
7
|
+
foods: FoodItem[];
|
|
8
|
+
provider: "open_food_facts";
|
|
9
|
+
warnings: string[];
|
|
10
|
+
};
|
|
6
11
|
export declare function lookupOpenFoodFactsBarcode(barcode: string): Promise<OpenFoodFactsLookupResult>;
|
|
12
|
+
export declare function searchOpenFoodFactsByName(query: string, limit?: number): Promise<OpenFoodFactsSearchResult>;
|
|
7
13
|
export {};
|
|
@@ -56,6 +56,28 @@ async function fetchBarcode(barcode) {
|
|
|
56
56
|
}
|
|
57
57
|
return (await response.json());
|
|
58
58
|
}
|
|
59
|
+
async function fetchSearch(query, limit) {
|
|
60
|
+
const url = new URL(`${OFF_BASE_URL}/cgi/search.pl`);
|
|
61
|
+
url.searchParams.set("search_terms", query);
|
|
62
|
+
url.searchParams.set("search_simple", "1");
|
|
63
|
+
url.searchParams.set("action", "process");
|
|
64
|
+
url.searchParams.set("json", "1");
|
|
65
|
+
url.searchParams.set("page_size", String(limit));
|
|
66
|
+
url.searchParams.set("fields", "code,product_name,brands,url,quantity,serving_size,serving_quantity,nutriments");
|
|
67
|
+
const response = await fetch(url, {
|
|
68
|
+
headers: {
|
|
69
|
+
"user-agent": USER_AGENT,
|
|
70
|
+
accept: "application/json",
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
if (!response.ok) {
|
|
74
|
+
if (response.status === 429) {
|
|
75
|
+
throw new Error("Open Food Facts is rate limiting requests right now. Try again in a few minutes, or provide the product name, label photo, or visible nutrition facts manually.");
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`Open Food Facts search failed: ${response.status} ${response.statusText}`);
|
|
78
|
+
}
|
|
79
|
+
return (await response.json());
|
|
80
|
+
}
|
|
59
81
|
function mapNutrients(nutriments = {}) {
|
|
60
82
|
const nutrients = {};
|
|
61
83
|
for (const [offKey, nutrientKey] of Object.entries(NUTRIENT_KEYS)) {
|
|
@@ -154,6 +176,38 @@ export async function lookupOpenFoodFactsBarcode(barcode) {
|
|
|
154
176
|
setCachedLookup(barcode, result, config.cache_ttl_seconds);
|
|
155
177
|
return cloneLookupResult(result);
|
|
156
178
|
}
|
|
179
|
+
export async function searchOpenFoodFactsByName(query, limit = 10) {
|
|
180
|
+
const config = getConfig();
|
|
181
|
+
if (!config.off_enabled) {
|
|
182
|
+
throw new Error("Open Food Facts provider is disabled");
|
|
183
|
+
}
|
|
184
|
+
const response = config.fixture_mode
|
|
185
|
+
? await fixtureSearch(query)
|
|
186
|
+
: await fetchSearch(query, Math.min(limit, config.max_results));
|
|
187
|
+
const foods = (response.products ?? [])
|
|
188
|
+
.flatMap((product) => {
|
|
189
|
+
if (product.product_name === undefined || product.code === undefined) {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
return [mapProduct({ product, code: product.code }, product.code)];
|
|
193
|
+
})
|
|
194
|
+
.slice(0, limit);
|
|
195
|
+
return {
|
|
196
|
+
provider: "open_food_facts",
|
|
197
|
+
foods,
|
|
198
|
+
warnings: foods.length === 0 ? ["No Open Food Facts products matched this name search."] : [],
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
async function fixtureSearch(query) {
|
|
202
|
+
const fixture = await readFixture("737628064502");
|
|
203
|
+
const normalizedQuery = query.toLowerCase();
|
|
204
|
+
const productName = fixture.product?.product_name?.toLowerCase() ?? "";
|
|
205
|
+
const brands = fixture.product?.brands?.toLowerCase() ?? "";
|
|
206
|
+
if (productName.includes(normalizedQuery) || brands.includes(normalizedQuery) || normalizedQuery.includes("peanut")) {
|
|
207
|
+
return { products: fixture.product === undefined ? [] : [fixture.product] };
|
|
208
|
+
}
|
|
209
|
+
return { products: [] };
|
|
210
|
+
}
|
|
157
211
|
function getCachedLookup(barcode) {
|
|
158
212
|
const cached = OFF_CACHE.get(barcode);
|
|
159
213
|
if (cached === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-food-facts.js","sourceRoot":"","sources":["../../src/providers/open-food-facts.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"open-food-facts.js","sourceRoot":"","sources":["../../src/providers/open-food-facts.ts"],"names":[],"mappings":"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"}
|