gridverse-open-low-code-pla.../gridverse/go_c_registry_seed.py

44 lines
2.0 KiB
Python

"""GoC Registry Seed Helpers
Small, composable helpers to seed a GraphContractRegistry with a minimal
contract set. Designed to support Phase 0 MVP wiring of the GraphContract
Registry and EnergiBridge go-to-IR flow without introducing heavy dependencies.
"""
from typing import Any, Dict
def seed_registry_with_meta(registry) -> None:
"""Seed a registry with minimal, metadata-enabled contracts.
This function uses the registry's per-message metadata support when
available (register_contract_with_meta); otherwise it falls back to the
legacy register_contract API. The seeded contracts form a tiny baseline for
cross-domain interoperability and auditing.
"""
contract_type = "LocalProblem"
version = "0.2"
payload_local: Dict[str, Any] = {"id": "lp-bootstrap", "name": "Bootstrap LocalProblem"}
metadata_local: Dict[str, Any] = {"source": "GoC seed", "contract_type": contract_type, "version": version}
contract_type_shared = "SharedVariables"
payload_shared: Dict[str, Any] = {"signals": {}}
metadata_shared: Dict[str, Any] = {"source": "GoC seed", "contract_type": contract_type_shared, "version": version}
contract_type_delta = "PlanDelta"
payload_delta: Dict[str, Any] = {"delta_id": "pd-bootstrap", "changes": {}}
metadata_delta: Dict[str, Any] = {"source": "GoC seed", "contract_type": contract_type_delta, "version": version}
if hasattr(registry, "register_contract_with_meta"):
registry.register_contract_with_meta(contract_type, version, payload_local, metadata_local)
registry.register_contract_with_meta(contract_type_shared, version, payload_shared, metadata_shared)
registry.register_contract_with_meta(contract_type_delta, version, payload_delta, metadata_delta)
else:
# Fallback to legacy API
registry.register_contract(contract_type, version, payload_local)
registry.register_contract(contract_type_shared, version, payload_shared)
registry.register_contract(contract_type_delta, version, payload_delta)
__all__ = ["seed_registry_with_meta"]