Spaces:
Sleeping
Sleeping
File size: 1,780 Bytes
a60c0af | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | """State models used by the deep research workflow."""
import operator
from dataclasses import dataclass, field
from typing import List, Optional
from typing_extensions import Annotated
@dataclass(kw_only=True)
class TodoItem:
"""A single todo task item."""
id: int
title: str
intent: str
query: str
status: str = field(default="pending")
summary: Optional[str] = field(default=None)
sources_summary: Optional[str] = field(default=None)
notices: list[str] = field(default_factory=list)
note_id: Optional[str] = field(default=None)
note_path: Optional[str] = field(default=None)
stream_token: Optional[str] = field(default=None)
@dataclass(kw_only=True)
class SummaryState:
research_topic: str = field(default=None) # Report topic
search_query: str = field(default=None) # Deprecated placeholder
web_research_results: Annotated[list, operator.add] = field(default_factory=list)
sources_gathered: Annotated[list, operator.add] = field(default_factory=list)
research_loop_count: int = field(default=0) # Research loop count
running_summary: str = field(default=None) # Legacy summary field
todo_items: Annotated[list, operator.add] = field(default_factory=list)
structured_report: Optional[str] = field(default=None)
report_note_id: Optional[str] = field(default=None)
report_note_path: Optional[str] = field(default=None)
@dataclass(kw_only=True)
class SummaryStateInput:
research_topic: str = field(default=None) # Report topic
@dataclass(kw_only=True)
class SummaryStateOutput:
running_summary: str = field(default=None) # Backward-compatible text
report_markdown: Optional[str] = field(default=None)
todo_items: List[TodoItem] = field(default_factory=list)
|