6ec9b65c24
The system prompt already told the model to MUST call createRecipe instead of writing the recipe out — that's a soft rule some models (especially free-tier ones) still ignore. There was no fallback: if the model answered in prose, that's just what got returned, no draft card. Added a detector (looksLikeUnstructuredRecipe: 3+ numbered/bulleted lines with no tool call) and a forced-tool retry when it fires — same system+prompt, but toolChoice forced to createRecipe so the model can't opt out on the second pass. Falls back to a short localized line if the provider returns no text alongside a forced tool call (some do this by design). Retry failure just keeps the original prose answer rather than erroring the whole request. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
632 B
JSON
24 lines
632 B
JSON
{
|
|
"name": "epicure",
|
|
"version": "0.57.1",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "pnpm --filter web dev",
|
|
"build": "pnpm --filter web build",
|
|
"lint": "pnpm -r lint",
|
|
"typecheck": "pnpm -r typecheck",
|
|
"db:generate": "pnpm --filter @epicure/db generate",
|
|
"db:migrate": "pnpm --filter @epicure/db migrate",
|
|
"db:seed": "pnpm --filter @epicure/db seed",
|
|
"db:backfill-usernames": "pnpm --filter @epicure/db backfill-usernames",
|
|
"db:studio": "pnpm --filter @epicure/db studio"
|
|
},
|
|
"devDependencies": {
|
|
"typescript": "^5.8.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=22",
|
|
"pnpm": ">=11"
|
|
}
|
|
}
|