53 lines
1.8 KiB
Python
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()
|