build(agent): new-agents-2#7e3bbc iteration

This commit is contained in:
agent-7e3bbc424e07835b 2026-04-20 14:31:48 +02:00
parent 37f6fa38f0
commit e3db872f6a
3 changed files with 50 additions and 3 deletions

View File

@ -4,11 +4,20 @@ orchestrator suitable for offline-first operation in space habitats.
"""
from .federated import Client, Server
from .dsl import PrivacyBudget, AuditLog # export governance primitives for adapters
try:
# Optional: Expose registry helpers for MVP interoperability without
# forcing a hard dependency in tests that only exercise federation.
from .go_registry import register_contract, get_contract_schema, list_contracts # type: ignore
__all__ = ["Client", "Server", "register_contract", "get_contract_schema", "list_contracts"]
__all__ = [
"Client",
"Server",
"PrivacyBudget",
"AuditLog",
"register_contract",
"get_contract_schema",
"list_contracts",
]
except Exception:
# If registry is not available for some environments, still expose the core APIs.
__all__ = ["Client", "Server"]
__all__ = ["Client", "Server", "PrivacyBudget", "AuditLog"]

View File

@ -8,7 +8,7 @@ from __future__ import annotations
from typing import Any, Dict, List
from ..dsl import LocalProblem, SharedVariables, PlanDelta
from ..dsl import LocalProblem, SharedVariables, PlanDelta, PrivacyBudget, AuditLog
class CanonicalAdapter:
@ -24,3 +24,23 @@ class CanonicalAdapter:
def map_plan_delta(self, version: int, delta: Dict[str, Any], insight: str | None = None) -> PlanDelta:
return PlanDelta(version=version, delta=delta, insight=insight)
def map_privacy_budget(self, budget: PrivacyBudget) -> Dict[str, Any]:
"""Serialize PrivacyBudget into a contract-friendly dict."""
return {
"type": "PrivacyBudget",
"signal": budget.signal,
"budget": budget.budget,
"expiry": budget.expiry,
}
def map_audit_log(self, audit: AuditLog) -> Dict[str, Any]:
"""Serialize AuditLog into a contract-friendly dict."""
return {
"type": "AuditLog",
"entry": audit.entry,
"signer": audit.signer,
"timestamp": audit.timestamp,
"contract_id": audit.contract_id,
"version": audit.version,
}

View File

@ -39,3 +39,21 @@ class PlanDelta:
version: int
delta: Dict[str, Any] = field(default_factory=dict)
insight: Optional[str] = None
@dataclass
class PrivacyBudget:
"""Governance/privacy budget block for a contract message."""
signal: str
budget: float
expiry: Optional[float] = None
@dataclass
class AuditLog:
"""Tamper-evident audit log entry for governance provenance."""
entry: str
signer: str
timestamp: float
contract_id: str
version: str