66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
"""Minimal DSL primitives for CatOpt Studio MVP.
|
|
|
|
This module provides lightweight, serializable primitives that sketch the
|
|
Domain-Specific Language (DSL) surface described in the plan. It is not a
|
|
full implementation, but serves as a stable foundation for tests and demos.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
|
|
@dataclass
|
|
class LocalProblem:
|
|
id: str
|
|
domain: str
|
|
assets: Dict[str, Any] = field(default_factory=dict)
|
|
objective: str = ""
|
|
constraints: List[str] = field(default_factory=list)
|
|
solver_hint: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class SharedVariables:
|
|
forecasts: Dict[str, Any] = field(default_factory=dict)
|
|
priors: Dict[str, Any] = field(default_factory=dict)
|
|
version: int = 0
|
|
|
|
|
|
@dataclass
|
|
class PlanDelta:
|
|
delta: Dict[str, Any] = field(default_factory=dict)
|
|
timestamp: datetime = field(default_factory=datetime.utcnow)
|
|
author: str = "anonymous"
|
|
contract_id: Optional[str] = None
|
|
signature: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class PrivacyBudget:
|
|
signal: str = ""
|
|
budget: float = 0.0
|
|
expiry: Optional[datetime] = None
|
|
|
|
|
|
@dataclass
|
|
class AuditLog:
|
|
entry: str = ""
|
|
signer: str = "anonymous"
|
|
timestamp: datetime = field(default_factory=datetime.utcnow)
|
|
contract_id: Optional[str] = None
|
|
version: int = 0
|
|
|
|
|
|
@dataclass
|
|
class PolicyBlock:
|
|
safety: Dict[str, Any] = field(default_factory=dict)
|
|
exposure_rules: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class GraphOfContractsEntry:
|
|
adapter_name: str
|
|
canonical_schema: str
|