"""Fictional, deterministic agent-concepts example. Python standard library only.
No model, network, credentials or live customer data. Not Roy's confirmed class project.
Run: python agent-example.py
"""
import json

ORDERS = {"DEMO-1042": {"status": "in transit", "eta": "28 October"},
          "DEMO-1043": {"status": "delivered", "delivered": "20 October"}}
KNOWLEDGE = {"POLICY-01": "Returns are accepted within 30 days after delivery."}


def lookup_order(order_id):
    return ORDERS.get(order_id)


def retrieve_policy():
    # A tiny lookup illustrating retrieval; production RAG needs indexing and retrieval evaluation.
    return {"id": "POLICY-01", "text": KNOWLEDGE["POLICY-01"]}


def respond(order_id):
    trace = ["Validate the request", "Call lookup_order"]
    order = lookup_order(order_id)
    if not order:
        return {"answer": "I could not find that order. Please check the order ID; a support team member can help.",
                "sources": [], "tool": None, "trace": trace + ["Stop: unknown order; do not invent a delivery date"]}
    trace.append("Retrieve POLICY-01")
    policy = retrieve_policy()
    if order["status"] == "in transit":
        answer = f"Order {order_id} is in transit. Delivery is estimated for {order['eta']}. Your return window is 30 days after delivery. [POLICY-01]"
    else:
        answer = f"Order {order_id} was delivered on {order['delivered']}. Your return window is 30 days after delivery. Contact support to check the return process. [POLICY-01]"
    return {"answer": answer, "sources": [policy], "tool": order,
            "trace": trace + ["Compose a response from tool data and retrieved policy", "Check source attribution"]}


def evaluate():
    known = respond("DEMO-1042")
    unknown = respond("DEMO-9999")
    checks = {"uses_tool_eta": "28 October" in known["answer"],
              "cites_retrieved_policy": "[POLICY-01]" in known["answer"],
              "unknown_order_has_no_fabricated_eta": "October" not in unknown["answer"],
              "unknown_order_has_no_sources": unknown["sources"] == []}
    return checks


if __name__ == "__main__":
    print(json.dumps({"disclosure": "Fictional local fixture; no live AI calls",
                      "examples": {key: respond(key) for key in ["DEMO-1042", "DEMO-1043", "DEMO-9999"]},
                      "evals": evaluate()}, indent=2))
