deerflow-code/offline-backend-20260512/backend/app/report_collaboration/contracts/messages.py
2026-09-07 18:24:55 +08:00

37 lines
1006 B
Python

"""Conversation-replica message rows (snake_case wire fields)."""
from __future__ import annotations
from typing import Any
from pydantic import BaseModel, ConfigDict, Field
from app.report_collaboration.contracts.enums import CollaborationMessageRole, MessageVisibility
class CollaborationToolCall(BaseModel):
model_config = ConfigDict(extra="forbid")
id: str
name: str
args: str | dict[str, Any]
class CollaborationMessage(BaseModel):
model_config = ConfigDict(extra="forbid")
message_id: str
role: CollaborationMessageRole
content: str = ""
name: str | None = None
tool_calls: list[CollaborationToolCall] = Field(default_factory=list)
tool_call_id: str | None = None
agent_run_id: str | None = None
node_run_id: str | None = None
phase_id: str | None = None
visibility: MessageVisibility = "visible"
metadata: dict[str, Any] | None = None
command_id: str | None = None
created_at: str
completed_at: str | None = None