6ec9b65c2414631c0ac37f79543995a487044f24
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>
Description
No description provided
Languages
TypeScript
99.3%
CSS
0.2%
JavaScript
0.2%
Dockerfile
0.2%