from __future__ import annotations """Tiny demonstration harness for CityGrid MVP interop.""" from citygrid.adapters.der_controller import DerControllerAdapter from citygrid.adapters.water_pump_controller import WaterPumpControllerAdapter from citygrid.bridge.energi_bridge import EnergiBridge from citygrid import LocalProblem, SharedVariables from citygrid.registry.registry import GoCRegistry def run_demo(): der = DerControllerAdapter() water = WaterPumpControllerAdapter() lp_der = der.build_local_problem() lp_water = water.build_local_problem() # Instantiate a trivial bridge mapping to canonical form canon_der = EnergiBridge.to_canonical({"id": lp_der.id, "domain": lp_der.domain, "assets": lp_der.assets, "objective": lp_der.objective, "constraints": lp_der.constraints}) canon_water = EnergiBridge.to_canonical({"id": lp_water.id, "domain": lp_water.domain, "assets": lp_water.assets, "objective": lp_water.objective, "constraints": lp_water.constraints}) print("Canonical Der LP:", canon_der) print("Canonical Water LP:", canon_water) # Simple registry usage reg = GoCRegistry() reg.register_adapter("der-controller-1", ["electricity"], "v0.1", repo=None) reg.register_adapter("water-pump-1", ["water"], "v0.1", repo=None) for a in reg.list_adapters(): print("Registered adapter:", a.adapter_id, a.domains) if __name__ == "__main__": run_demo()