build(agent): new-agents#a6e6ec iteration
This commit is contained in:
parent
02b832d7c0
commit
5f4c88b528
|
|
@ -0,0 +1,127 @@
|
||||||
|
"""EnergiBridge IR (Interoperability) primitives.
|
||||||
|
|
||||||
|
This module provides a canonical, vendor-agnostic IR representation to map
|
||||||
|
CosmosMesh LocalProblems, Shared/Dual Variables, and PlanDeltas into a
|
||||||
|
structured, versioned interchange format. It is designed to complement the
|
||||||
|
existing EnergiBridge (to_ir) translator by offering a stable, serializable
|
||||||
|
schema that can be used by adapters and governance tooling.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class IRObject:
|
||||||
|
"""Canonical object representation (e.g., a LocalProblem).
|
||||||
|
|
||||||
|
type field indicates the kind (e.g., "LocalProblem").
|
||||||
|
data contains the payload specific to the object kind.
|
||||||
|
"""
|
||||||
|
|
||||||
|
type: str
|
||||||
|
data: Dict[str, Any]
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {"type": self.type, "data": self.data}
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class IRMorphism:
|
||||||
|
"""Canonical morphism (e.g., SharedVariable or DualVariable updates)."""
|
||||||
|
|
||||||
|
kind: str
|
||||||
|
data: Dict[str, Any]
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {"kind": self.kind, "data": self.data}
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class IRPlanDelta:
|
||||||
|
"""Incremental plan delta with provenance."""
|
||||||
|
|
||||||
|
delta_id: str
|
||||||
|
changes: Dict[str, Any]
|
||||||
|
timestamp: float | None = None
|
||||||
|
author: str | None = None
|
||||||
|
contract_id: str | None = None
|
||||||
|
signature: str | None = None
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"delta_id": self.delta_id,
|
||||||
|
"changes": self.changes,
|
||||||
|
"timestamp": self.timestamp,
|
||||||
|
"author": self.author,
|
||||||
|
"contract_id": self.contract_id,
|
||||||
|
"signature": self.signature,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class IR:
|
||||||
|
"""Top-level IR container for a given exchange cycle."""
|
||||||
|
|
||||||
|
version: str
|
||||||
|
objects: List[IRObject]
|
||||||
|
morphisms: List[IRMorphism]
|
||||||
|
plan_deltas: List[IRPlanDelta]
|
||||||
|
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"version": self.version,
|
||||||
|
"objects": [o.to_dict() for o in self.objects],
|
||||||
|
"morphisms": [m.to_dict() for m in self.morphisms],
|
||||||
|
"plan_deltas": [d.to_dict() for d in self.plan_deltas],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def to_ir(
|
||||||
|
lp: Dict[str, Any] | None,
|
||||||
|
sv: List[Dict[str, Any]] | None,
|
||||||
|
dv: List[Dict[str, Any]] | None,
|
||||||
|
deltas: List[Dict[str, Any]] | None,
|
||||||
|
) -> IR:
|
||||||
|
"""Convert EnergiBridge-style EP dicts to the canonical IR structure.
|
||||||
|
|
||||||
|
This function accepts pre-serialized dictionaries (as used by the
|
||||||
|
EnergiBridge.to_ir path) and normalizes them into a stable IR format.
|
||||||
|
"""
|
||||||
|
|
||||||
|
objects: List[IRObject] = []
|
||||||
|
morphisms: List[IRMorphism] = []
|
||||||
|
plan_deltas: List[IRPlanDelta] = []
|
||||||
|
|
||||||
|
if lp:
|
||||||
|
objects.append(IRObject(type="LocalProblem", data=lp))
|
||||||
|
|
||||||
|
for s in (sv or []):
|
||||||
|
morphisms.append(IRMorphism(kind="SharedVariable", data=s))
|
||||||
|
for d in (dv or []):
|
||||||
|
morphisms.append(IRMorphism(kind="DualVariable", data=d))
|
||||||
|
|
||||||
|
for delta in (deltas or []):
|
||||||
|
plan_deltas.append(
|
||||||
|
IRPlanDelta(
|
||||||
|
delta_id=delta.get("delta_id"),
|
||||||
|
changes=delta.get("changes", {}),
|
||||||
|
timestamp=delta.get("timestamp"),
|
||||||
|
author=delta.get("author"),
|
||||||
|
contract_id=delta.get("contract_id"),
|
||||||
|
signature=delta.get("signature"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return IR(version="0.1", objects=objects, morphisms=morphisms, plan_deltas=plan_deltas)
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"IRObject",
|
||||||
|
"IRMorphism",
|
||||||
|
"IRPlanDelta",
|
||||||
|
"IR",
|
||||||
|
"to_ir",
|
||||||
|
]
|
||||||
Loading…
Reference in New Issue