import time from nova_plan.planner import LocalProblem from nova_plan.contracts import PlanDelta from nova_plan.interop_catopt import local_to_canon, canon_delta_to_morphism from nova_plan.catopt_bridge import ObjectI, Morphism def test_local_to_canon_wrapper_returns_objectI(): lp = LocalProblem( id="interop-agent", objective=lambda v, s: sum(v.values()) + sum(s.values()), variables={"x": 3.0}, constraints={}, ) obj = local_to_canon(lp) assert isinstance(obj, ObjectI) assert obj.id == "interop-agent" assert "variables" in obj.payload def test_canon_delta_from_plan_delta(): d = PlanDelta(agent_id="interop-agent", delta={"x": 0.25}, timestamp=time.time()) m = canon_delta_to_morphism(d) assert isinstance(m, Morphism) assert m.source == "interop-agent" assert m.target == "global" assert m.data == {"x": 0.25} assert m.contract_id == "default"