novaplan-decentralized-priv.../nova_plan/examples/demo_energi_bridge_demo.py

53 lines
1.8 KiB
Python

"""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()