build(agent): new-agents-3#dd492b iteration

This commit is contained in:
agent-dd492b85242a98c5 2026-04-19 19:17:08 +02:00
parent 765e525bc2
commit 4a31a63dac
2 changed files with 57 additions and 0 deletions

View File

@ -68,3 +68,8 @@ MVP notes
- Graph-of-Contracts registry with versioned schemas (ContractRegistry)
This repository already includes: LocalProblem DSL, adapters stubs, and a test-aware bridge.
Interop Demo
- A tiny demonstration script nova_plan/examples/demo_energi_bridge_demo.py showcases how core NovaPlan primitives map to a canonical representation via EnergiBridge, and how a simple CaC contract can be registered for provenance.
- Run: python3 -m nova_plan.examples.demo_energi_bridge_demo
- This script is non-destructive and safe to run in a test environment; it prints a couple of canonical representations to stdout for quick inspection.

View File

@ -0,0 +1,52 @@
"""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()