"""A stand-in model. It shows the seam, not a language model."""

from __future__ import annotations

import re


def _last_user(messages):
    for msg in reversed(messages):
        if msg.get("role") == "user":
            return msg.get("content") or ""
    return ""


def _tool_results(messages):
    return [m for m in messages if m.get("role") == "tool"]


def order_agent(messages, tool_names):
    """Lookup once, then answer from the tool payload. Never invent a state."""
    results = _tool_results(messages)
    if results:
        payload = results[-1]["content"]
        if payload.get("error"):
            return {
                "content": f"I could not find that order ({payload.get('error')}).",
                "tool_calls": [],
            }
        state = payload.get("state")
        carrier = payload.get("carrier")
        extra = f" Carrier: {carrier}." if carrier else ""
        return {
            "content": f"Order {payload.get('id')} is {state}.{extra}",
            "tool_calls": [],
        }
    text = _last_user(messages)
    match = re.search(r"\b(\d{4})\b", text)
    if match and "lookup_order" in tool_names:
        return {
            "content": None,
            "tool_calls": [
                {
                    "id": "call_lookup_1",
                    "name": "lookup_order",
                    "arguments": {"order_id": match.group(1)},
                }
            ],
        }
    return {
        "content": "I need an order id before I can look anything up.",
        "tool_calls": [],
    }


def looping_agent(messages, tool_names):
    """Always calls a tool. Used to prove the step budget stops the loop."""
    if "lookup_order" not in tool_names:
        return {"content": "no tool", "tool_calls": []}
    return {
        "content": None,
        "tool_calls": [
            {
                "id": f"call_{len(messages)}",
                "name": "lookup_order",
                "arguments": {"order_id": "1042"},
            }
        ],
    }
