SurfSense/surfsense_backend/app/agents/researcher/state.py
2025-04-19 23:25:06 -07:00

30 lines
1.1 KiB
Python

"""Define the state structures for the agent."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import List, Optional, Any, Dict, Annotated
from sqlalchemy.ext.asyncio import AsyncSession, AsyncEngine
from langchain_core.messages import BaseMessage, HumanMessage
from pydantic import BaseModel
@dataclass
class State:
"""Defines the dynamic state for the agent during execution.
This state tracks the database session and the outputs generated by the agent's nodes.
See: https://langchain-ai.github.io/langgraph/concepts/low_level/#state
for more information.
"""
# Runtime context (not part of actual graph state)
db_session: AsyncSession
engine: Optional[AsyncEngine] = None
# Intermediate state - populated during workflow
# Using field to explicitly mark as part of state
answer_outline: Optional[Any] = field(default=None)
# OUTPUT: Populated by agent nodes
# Using field to explicitly mark as part of state
final_written_report: Optional[str] = field(default=None)