"""Toy example to demonstrate CatOpt bridge usage for a two-asset NovaPlan setup.""" from __future__ import annotations import time from nova_plan.planner import LocalProblem from nova_plan.contracts import PlanDelta from nova_plan.catopt_bridge import to_object, delta_to_morphism def demo_two_asset_catopt_bridge(): # Asset 1: local problem for agent A lp1 = LocalProblem( id="asset-A", objective=lambda v, s: sum(v.values()) + sum(s.values()), variables={"x": 1.0}, constraints={}, ) obj1 = to_object(lp1) # Create a delta from asset-A to global objective delta = {"x": 0.25} d = PlanDelta(agent_id=lp1.id, delta=delta, timestamp=time.time()) morph = delta_to_morphism(d, source=lp1.id, target="global", contract_id="toy-contract") return obj1, morph if __name__ == "__main__": obj, morph = demo_two_asset_catopt_bridge() print("Object:", obj) print("Morphism:", morph)