novaplan-decentralized-priv.../nova_plan/contracts.py

50 lines
1.1 KiB
Python

"""Simple data contracts used by NovaPlan MVP.
- PlanDelta: delta between local and global plans.
- SharedSchedule: aggregated schedule signals from agents.
- ResourceUsage: energy, time, or other resource consumptions.
- PrivacyBudget: basic DP-like budget for an agent (simulated).
- AuditLog: lightweight log entries for governance.
"""
from __future__ import annotations
from dataclasses import dataclass, asdict
from typing import Dict, Any, List
import json
@dataclass
class PlanDelta:
agent_id: str
delta: Dict[str, float]
timestamp: float
def to_json(self) -> str:
return json.dumps(asdict(self))
@dataclass
class SharedSchedule:
schedule: Dict[str, Any]
timestamp: float
@dataclass
class ResourceUsage:
agent_id: str
resources: Dict[str, float]
timestamp: float
@dataclass
class PrivacyBudget:
agent_id: str
budget: float
timestamp: float
@dataclass
class AuditLog:
entry_id: str
message: str
timestamp: float
def serialize(obj: object) -> str:
if hasattr(obj, "__dict__"):
return json.dumps(obj.__dict__)
return json.dumps(obj)