"""Agent 领域对象。

这些 dataclass 描述会话、消息和一次运行的稳定业务字段，
不包含数据库或 HTTP 细节。
"""

from dataclasses import dataclass
from datetime import datetime
from typing import Any


@dataclass(frozen=True)
class AgentThread:
    """一段属于某个登录用户、固定使用一种人格的会话。"""

    id: str
    owner_type: str
    owner_id: str
    persona: str
    title: str
    status: str
    created_at: datetime
    updated_at: datetime


@dataclass(frozen=True)
class AgentMessage:
    """会话中的一条用户或助手消息。"""

    id: str
    thread_id: str
    role: str
    content: str
    metadata: dict[str, Any]
    created_at: datetime


@dataclass(frozen=True)
class AgentRun:
    """处理一条用户消息产生的一次 Agent 运行记录。"""

    id: str
    request_id: str
    thread_id: str
    trace_id: str | None
    persona: str
    status: str
    input: dict[str, Any]
    output: dict[str, Any] | None
    error_code: str | None
    created_at: datetime
    completed_at: datetime | None
