31 lines
720 B
Python
31 lines
720 B
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class MessagePart(BaseModel):
|
|
type: str
|
|
text: str | None = None
|
|
data: dict[str, Any] | None = None
|
|
|
|
|
|
class ChatMessage(BaseModel):
|
|
id: str
|
|
role: Literal["user", "assistant"]
|
|
parts: list[MessagePart]
|
|
|
|
|
|
class ChatRequest(BaseModel):
|
|
conversation_id: str | None = None
|
|
selected_task_id: str | None = None
|
|
messages: list[ChatMessage] = Field(default_factory=list)
|
|
provider_id: str | None = None
|
|
model_id: str | None = None
|
|
viewer_context: list[dict[str, Any]] = Field(default_factory=list)
|
|
|
|
|
|
class ConversationPatch(BaseModel):
|
|
current_task_id: str | None = None
|