| say | Yes | One true line about what the plan did for the cook, read off the list ("Three dinners share one bunch of cilantro and one onion"): say it with the plan | |
| asks | No | At most one question for the cook, with a home in preferences | |
| cost | Yes | What the plan's list costs (#245), an estimate; a replay without a saved list labels a fresh estimate using the current pantry in line. say uses the savings when there are real ones | |
| list | No | The merged shopping list for the plan, pantry already off (with_shopping_list, the default): the same shape build_shopping_list returns, so "yes, make the list" needs no second call. Show it after the cook answers the plan's one question; lead with it when offer_shopping_list is always, leave it out of your reply when never. Delivery is offered then too, through order_groceries with its id (the order page is url + "/order") | |
| plan | Yes | The whole plan after the change, by day: the cook's other days as they were | |
| guide | No | How to answer this turn: rules for you, the assistant, not words for the cook. Follow them before anything else here (#258) | |
| changed | Yes | What this call changed, one line per day: say these, then the new list line | |
| notices | No | At most one note about Strega to pass on when there's room (one per cook per week; off with workflow whats_new: off) | |
| plan_id | Yes | The same plan: it was changed in place, never replaced | |
| relaxed | No | The time limit was too tight, so the plan used the nearest one that fits: tell the cook | |
| adjusted | No | Defaults this call took instead of failing (#243): an unknown units word, a number out of range, a diet word read as the closest one Strega knows. Mention it when it changes what the cook gets | |
| nutrition | Yes | The plan's nutrition per serving (#244), an estimate | |
| next_steps | No | Suggestions, best first, each with its tool, args and effect. Strega suggests the top one in one sentence; whether any runs is decided by what the cook asks in the conversation and your confirmation rules, never by the wording here | |
| prep_order | Yes | What to cook first and why, from perishables, tags and servings. A suggestion the cook can ignore | |
| substitutions | Yes | Swaps for ingredients the cook's preferences flagged in the plan's recipes, the same swaps get_recipe({ substitute }) returns; empty when none. A version still needs the cook's yes (fork_recipe) | |