"""Graph-of-Contracts registry: minimal schema and adapter registration. This registry stores contract descriptors and adapter metadata. It's intentionally lightweight and uses JSON-serializable structures so adapters can be validated. """ from typing import Dict, Any import time import uuid class Registry: def __init__(self): # contracts keyed by name -> metadata self._contracts: Dict[str, Dict[str, Any]] = {} self._adapters: Dict[str, Dict[str, Any]] = {} def register_contract(self, name: str, schema: Dict[str, Any], version: str = "0.1") -> str: contract_id = f"{name}:{version}" self._contracts[contract_id] = { "name": name, "version": version, "schema": schema, "registered_at": time.time(), "id": contract_id, } return contract_id def get_contract(self, contract_id: str) -> Dict[str, Any]: return self._contracts[contract_id] def register_adapter(self, adapter_name: str, contract_id: str, meta: Dict[str, Any]) -> str: adapter_id = f"{adapter_name}:{str(uuid.uuid4())[:8]}" self._adapters[adapter_id] = { "name": adapter_name, "contract_id": contract_id, "meta": meta, "registered_at": time.time(), "id": adapter_id, } return adapter_id def list_adapters(self): return list(self._adapters.values())