mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-18 15:48:04 +02:00
working chat mode
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, Field, field_serializer
|
||||
from typing import Any, Optional, List
|
||||
from backend.core.shared_structs.agent.MessageLog import MessageLog
|
||||
from backend.core.shared_structs.agent.ApprovalRequest import ApprovalRequest
|
||||
@@ -9,6 +9,9 @@ class AgentSnapshot(BaseModel):
|
||||
model: str
|
||||
mode: str
|
||||
status: str
|
||||
name: str = "New chat"
|
||||
created_at: str = ""
|
||||
cost_usd: float = 0
|
||||
dashboard_id: Optional[str] = None
|
||||
branch_id: str = "main"
|
||||
parent_id: Optional[str] = None
|
||||
@@ -17,6 +20,15 @@ class AgentSnapshot(BaseModel):
|
||||
sub_agents: list = Field(default_factory=list)
|
||||
sub_branches: list = Field(default_factory=list)
|
||||
|
||||
# Flatten MessageLog -> list[Message] on the wire so consumers (frontend,
|
||||
# WS clients) get a plain array instead of {"messages": [...]}. Using a
|
||||
# field_serializer ensures this works whether AgentSnapshot is dumped
|
||||
# directly or as a nested field of a parent model (e.g. AgentStatusEvent),
|
||||
# which a custom model_dump override does not handle.
|
||||
@field_serializer("messages")
|
||||
def _serialize_messages(self, messages: MessageLog, _info: Any) -> list[dict[str, Any]]:
|
||||
return [m.model_dump(mode="json") for m in messages.messages]
|
||||
|
||||
def model_dump(self, **kwargs: Any) -> dict[str, Any]:
|
||||
kwargs.setdefault("by_alias", True)
|
||||
return super().model_dump(**kwargs)
|
||||
return super().model_dump(**kwargs)
|
||||
|
||||
Reference in New Issue
Block a user