28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
"""``GET /sessions/{id}`` snapshot — the frontend's only fact source before SSE."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.report_collaboration.contracts.agent_runs import AgentRun
|
|
from app.report_collaboration.contracts.commands import CollaborationCommand
|
|
from app.report_collaboration.contracts.messages import CollaborationMessage
|
|
from app.report_collaboration.contracts.nodes import CollaborationNodeState
|
|
from app.report_collaboration.contracts.plans import ReportPlanCandidate
|
|
from app.report_collaboration.contracts.reports import ReportVersion
|
|
from app.report_collaboration.contracts.runs import ReportRun, ReportSession
|
|
|
|
|
|
class SessionSnapshot(BaseModel):
|
|
model_config = ConfigDict(extra="forbid")
|
|
|
|
session: ReportSession
|
|
messages: list[CollaborationMessage] = Field(default_factory=list)
|
|
plans: list[ReportPlanCandidate] = Field(default_factory=list)
|
|
run: ReportRun | None = None
|
|
nodes: list[CollaborationNodeState] = Field(default_factory=list)
|
|
agent_runs: list[AgentRun] = Field(default_factory=list)
|
|
commands: list[CollaborationCommand] = Field(default_factory=list)
|
|
report_versions: list[ReportVersion] = Field(default_factory=list)
|
|
last_seq: int = 0
|