from typing import TypedDict, Annotated from langgraph.graph.message import add_messages class AgentState(TypedDict, total=False): messages: Annotated[list, add_messages] # Fields that the agent node can set to request a tool web_search_query: str ocr_path: str excel_path: str excel_sheet_name: str # Fields to hold the tool outputs web_search_result: str ocr_result: str excel_result: str # A “final_answer” field that the last agent node will fill final_answer: str# (Keep Constants as is)