"""记忆记录的数据模型。"""

from __future__ import annotations

from dataclasses import dataclass, field
from enum import Enum


class MemoryKind(str, Enum):
    OBSERVATION = "observation"  # 感知到的事件
    DIALOGUE = "dialogue"  # 对话
    REFLECTION = "reflection"  # 高阶反思(L2 接入)
    PLAN = "plan"  # 计划/目标


@dataclass
class MemoryRecord:
    """一条记忆。created_at/last_accessed 用模拟时间(sim-hours),由 Clock 注入。"""

    agent_id: str
    content: str
    created_at: float
    kind: MemoryKind = MemoryKind.OBSERVATION
    importance: float = 0.5  # [0,1]
    last_accessed: float | None = None  # None → 落到 created_at
    id: str | None = None  # 存储后回填

    def __post_init__(self) -> None:
        if self.last_accessed is None:
            self.last_accessed = self.created_at
