"""Demo: EnergiBridge Interop Sketch (Non-breaking, MVP-friendly). This tiny script demonstrates how core NovaPlan primitives can be mapped to a canonical representation via EnergiBridge, and how a simple CaC contract artifact can be registered for governance/provenance. It is intentionally small and side-effect free for unit-test safety, but serves as a concrete demonstration for developers extending adapters and contracts. """ from __future__ import annotations import time from nova_plan.energi_bridge import EnergiBridge from nova_plan.contracts import PlanDelta, ContractRegistry def run_demo(): eb = EnergiBridge(signer_key=None) # unused in this tiny demo, but kept for API parity # Minimal LocalProblem-like input and canonical object mapping local_problem = { "id": "lp-demo-rover-1", "domain": "rover", "assets": ["rover-1"], "objective": "collect-sample", } canonical_object = eb.to_object(local_problem) # Minimal PlanDelta and its canonical morphism delta = PlanDelta(agent_id="demo-agent", delta={"task": 1.0}, timestamp=time.time(), contract_id="lp-demo-rover-1") canonical_morphism = eb.to_morphism(delta, contract_id="lp-demo-rover-1") # Print representations for quick inspection in a REPL print("Canonical Object:", canonical_object) print("Canonical Morphism:", canonical_morphism) # Register a tiny CaC contract artifact (non-persistent in this demo) contract = ContractRegistry.register_contract( contract_id="demo-contract", version=1, content={"type": "DemoContract", "payload": {"notes": "EnergiBridge demo"}}, signer_id=None, ) print("Registered CaCContrato:", contract) if __name__ == "__main__": run_demo()