mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-06-10 09:25:57 +00:00
77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
"""Application output DTOs for run use cases."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import AsyncIterator
|
|
from dataclasses import dataclass, field
|
|
from typing import Any
|
|
|
|
from ..domain import AssistantId, EventSeq, Run, RunId, RunStatus, ThreadId
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RunSnapshot:
|
|
run_id: RunId
|
|
thread_id: ThreadId
|
|
assistant_id: AssistantId | None = None
|
|
status: RunStatus = RunStatus.pending
|
|
metadata: dict[str, Any] = field(default_factory=dict)
|
|
kwargs: dict[str, Any] = field(default_factory=dict)
|
|
created_at: str = ""
|
|
updated_at: str = ""
|
|
error: str | None = None
|
|
model_name: str | None = None
|
|
|
|
@classmethod
|
|
def from_run(cls, run: Run) -> RunSnapshot:
|
|
return cls(
|
|
run_id=run.run_id,
|
|
thread_id=run.thread_id,
|
|
assistant_id=run.assistant_id,
|
|
status=run.status,
|
|
metadata=dict(run.metadata),
|
|
kwargs=dict(run.kwargs),
|
|
created_at=run.created_at,
|
|
updated_at=run.updated_at,
|
|
error=run.error,
|
|
model_name=run.model_name,
|
|
)
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RunMessageView:
|
|
thread_id: ThreadId
|
|
run_id: RunId
|
|
seq: EventSeq
|
|
event_type: str
|
|
content: str | dict[str, Any] = ""
|
|
metadata: dict[str, Any] = field(default_factory=dict)
|
|
created_at: str = ""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class StoredRunEvent:
|
|
thread_id: ThreadId
|
|
run_id: RunId
|
|
seq: EventSeq
|
|
event_type: str
|
|
category: str
|
|
content: str | dict[str, Any] = ""
|
|
metadata: dict[str, Any] = field(default_factory=dict)
|
|
created_at: str = ""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RunStreamHandle:
|
|
run_id: RunId
|
|
thread_id: ThreadId
|
|
events: AsyncIterator[Any]
|
|
|
|
|
|
__all__ = [
|
|
"RunMessageView",
|
|
"RunSnapshot",
|
|
"RunStreamHandle",
|
|
"StoredRunEvent",
|
|
]
|