paperhawk / graph /states /chat_state.py
Nándorfi Vince
Initial paperhawk push to HF Space (LFS for binaries)
7ff7119
raw
history blame
1.52 kB
"""ChatState — global state of the chat_graph.
For ``messages`` we use the LangGraph built-in ``add_messages`` reducer:
every new BaseMessage is appended, never overwritten. This is the foundation
of the ReAct agent loop.
"""
from __future__ import annotations
from operator import add
from typing import Annotated, TypedDict
from langchain_core.messages import BaseMessage
from langgraph.graph.message import add_messages
class ChatState(TypedDict, total=False):
"""The chat_graph state. messages, trace, and intent are persisted."""
messages: Annotated[list[BaseMessage], add_messages]
"""Full conversation history. add_messages reducer appends."""
intent: str
"""One of 6 values: list | extract | search | compare | validate | chat.
Set by the intent_classifier_node."""
plan: list[str]
"""Output of the planner_node: tool-order hint for the system prompt."""
iteration_count: int
"""Number of agent ↔ tools loop iterations. Capped at
settings.chat_max_iterations (10) — beyond that we force-end."""
validator_retry_count: int
"""Number of validator → agent retries. Capped at settings.validator_max_retries (2)."""
final_answer: str
"""Output of the synthesizer_node. The chat's reply to the user."""
sources_cited: list[str]
"""Source filenames detected by the validator_node (anti-hallucination check)."""
trace: Annotated[list[str], add]
"""Step-by-step log for the UI sidebar. ``add`` reducer appends node calls."""