build(agent): molt-d#cb502d iteration
This commit is contained in:
parent
bf27f8aa1f
commit
e59304b7d5
|
|
@ -0,0 +1,91 @@
|
|||
"""EnergiBridge: minimal IR translator for CosmosMesh privacy-preserving federation
|
||||
|
||||
This module provides a lightweight translator (to_ir) that converts a LocalProblemEP
|
||||
and associated signals (SharedVariableEP, DualVariableEP, PlanDeltaEP) into a CatOpt-
|
||||
style intermediate representation (IR) suitable for MVP testing and adapter wiring.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Dict, List
|
||||
|
||||
|
||||
@dataclass
|
||||
class LocalProblemEP:
|
||||
problem_id: str
|
||||
assets: List[str]
|
||||
objective: Any
|
||||
constraints: Any
|
||||
data_contracts: Dict[str, Any]
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"problem_id": self.problem_id,
|
||||
"assets": self.assets,
|
||||
"objective": self.objective,
|
||||
"constraints": self.constraints,
|
||||
"data_contracts": self.data_contracts,
|
||||
}
|
||||
|
||||
|
||||
@dataclass
|
||||
class SharedVariableEP:
|
||||
channel: str
|
||||
version: int
|
||||
payload: Dict[str, Any]
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {"channel": self.channel, "version": self.version, "payload": self.payload}
|
||||
|
||||
|
||||
@dataclass
|
||||
class DualVariableEP:
|
||||
channel: str
|
||||
version: int
|
||||
payload: Dict[str, Any]
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {"channel": self.channel, "version": self.version, "payload": self.payload}
|
||||
|
||||
|
||||
@dataclass
|
||||
class PlanDeltaEP:
|
||||
delta_id: str
|
||||
changes: Dict[str, Any]
|
||||
timestamp: float | None = None
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
return {"delta_id": self.delta_id, "changes": self.changes, "timestamp": self.timestamp}
|
||||
|
||||
|
||||
class EnergiBridge:
|
||||
"""Small translator that emits a CatOpt-like IR for a given problem and signals."""
|
||||
|
||||
def to_ir(
|
||||
self,
|
||||
lp: LocalProblemEP,
|
||||
sv: List[SharedVariableEP],
|
||||
dv: List[DualVariableEP],
|
||||
deltas: List[PlanDeltaEP],
|
||||
) -> Dict[str, Any]:
|
||||
# Build morphisms: one entry per signal (SharedVariable or DualVariable)
|
||||
morphisms: List[Dict[str, Any]] = []
|
||||
for s in sv:
|
||||
morphisms.append({"Morphisms": {"SharedVariable": s.to_dict()}})
|
||||
for d in dv:
|
||||
morphisms.append({"Morphisms": {"DualVariable": d.to_dict()}})
|
||||
|
||||
ir: Dict[str, Any] = {
|
||||
"Version": "0.1",
|
||||
"Objects": {
|
||||
"LocalProblem": lp.to_dict(),
|
||||
# Plan deltas are kept as a list for audit/replay in the IR
|
||||
"PlanDeltas": [delta.to_dict() for delta in deltas],
|
||||
},
|
||||
"Morphisms": morphisms,
|
||||
}
|
||||
return ir
|
||||
|
||||
|
||||
__all__ = ["LocalProblemEP", "SharedVariableEP", "DualVariableEP", "PlanDeltaEP", "EnergiBridge"]
|
||||
Loading…
Reference in New Issue