"""``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