HumboldtJoker's picture
Upload folder using huggingface_hub
4554903 verified
Raw
History Blame Contribute Delete
2.36 kB
"""BDI runtime models using pure dataclasses."""
from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
from typing import List, Optional
class BeliefStatus(Enum):
ACTIVE = "active"
ARCHIVED = "archived"
CHALLENGED = "challenged"
STALE = "stale"
class DesireStatus(Enum):
ACTIVE = "active"
ACHIEVED = "achieved"
SUSPENDED = "suspended"
ABANDONED = "abandoned"
class IntentionStatus(Enum):
ACTIVE = "active"
COMPLETED = "completed"
SUSPENDED = "suspended"
FAILED = "failed"
@dataclass
class BDIBelief:
id: str
content: str
confidence: float
status: BeliefStatus
source: str
tags: List[str]
created_at: datetime
last_reviewed: Optional[datetime] = None
version: int = 1
evidence: List[str] = field(default_factory=list)
def __post_init__(self) -> None:
if not (0.0 <= self.confidence <= 1.0):
raise ValueError(f"confidence must be 0-1, got {self.confidence}")
if self.version < 1:
raise ValueError(f"version must be >= 1, got {self.version}")
@dataclass
class BDIDesire:
id: str
content: str
priority: float
status: DesireStatus
related_tags: List[str]
measurable: bool
metric: Optional[str]
created_at: datetime
last_reviewed: Optional[datetime] = None
version: int = 1
def __post_init__(self) -> None:
if not (0.0 <= self.priority <= 1.0):
raise ValueError(f"priority must be 0-1, got {self.priority}")
if self.version < 1:
raise ValueError(f"version must be >= 1, got {self.version}")
@dataclass
class BDIIntention:
id: str
goal: str
status: IntentionStatus
belief_ids: List[str]
desire_ids: List[str]
created_at: datetime
last_reviewed: Optional[datetime] = None
version: int = 1
progress: float = 0.0
def __post_init__(self) -> None:
if not (0.0 <= self.progress <= 1.0):
raise ValueError(f"progress must be 0-1, got {self.progress}")
if self.version < 1:
raise ValueError(f"version must be >= 1, got {self.version}")
@dataclass
class BDISnapshot:
org_id: str
beliefs: List[BDIBelief]
desires: List[BDIDesire]
intentions: List[BDIIntention]
snapshot_at: datetime
version: int = 1