"""Illustrative local prefix comparison only; no API, signatures, or thinking blocks."""
from copy import deepcopy
import json

# This represents only context before a hypothetical later thinking block.
baseline = {
    "system": "Help plan a website.",
    "tools": [{"name": "read_brief", "description": "Read the example brief."}],
    "messages": [{"role": "user", "content": "Plan a three-page site."}],
    "effort": "medium",
}

def changed_prefix_fields(previous, following):
    changed = [key for key in ("system", "tools")
               if previous[key] != following[key]]
    count = len(previous["messages"])
    if following["messages"][:count] != previous["messages"]:
        changed.append("earlier_messages")
    return changed

cases = {}
cases["append_new_request"] = deepcopy(baseline)
cases["append_new_request"]["messages"].append(
    {"role": "user", "content": "Add a fourth page."})
cases["rewrite_earlier_request"] = deepcopy(baseline)
cases["rewrite_earlier_request"]["messages"][0]["content"] = "Plan a four-page site."
cases["change_tools"] = deepcopy(baseline)
cases["change_tools"]["tools"][0]["description"] = "Read and update the example brief."
cases["change_system"] = deepcopy(baseline)
cases["change_system"]["system"] = "Help plan and publish a website."
cases["effort_only"] = deepcopy(baseline)
cases["effort_only"]["effort"] = "high"
expected = {"append_new_request": [],
            "rewrite_earlier_request": ["earlier_messages"],
            "change_tools": ["tools"], "change_system": ["system"],
            "effort_only": []}
observed = {name: changed_prefix_fields(baseline, request)
            for name, request in cases.items()}
assert observed == expected
print(json.dumps({"illustrative_only": True, "changed_prefix_fields": observed}, indent=2))
