Spaces:
Sleeping
Sleeping
| """ | |
| Centralized AgentState for the StateGraph pipeline. | |
| Every node reads from and writes to this shared state dict. | |
| """ | |
| from __future__ import annotations | |
| from typing import Any, Dict, List, Optional, TypedDict | |
| class AgentState(TypedDict, total=False): | |
| # --- Input --- | |
| messages: List[Dict[str, Any]] # Raw conversation messages from the gateway | |
| user_id: str | |
| conversation_id: str | |
| wallet_address: Optional[str] # EVM wallet address (from HTTP request) | |
| # --- Windowed context --- | |
| windowed_messages: List[Dict[str, Any]] # After context windowing | |
| langchain_messages: List[Any] # LangChain message objects | |
| # --- Routing --- | |
| last_user_message: str | |
| route_intent: Optional[str] # IntentCategory value | |
| route_confidence: float | |
| route_agent: Optional[str] # Target agent name | |
| needs_llm_confirmation: bool | |
| has_active_defi: bool # In-progress DeFi flow detected | |
| # --- Pre-processing --- | |
| pre_extracted_hint: Optional[str] # Pre-extracted parameter hint | |
| preflight_errors: List[str] # Validation errors (empty = valid) | |
| # --- DeFi state --- | |
| swap_state: Optional[Dict[str, Any]] | |
| lending_state: Optional[Dict[str, Any]] | |
| staking_state: Optional[Dict[str, Any]] | |
| liquidity_state: Optional[Dict[str, Any]] | |
| dca_state: Optional[Dict[str, Any]] | |
| strategy_state: Optional[Dict[str, Any]] | |
| strategy_preferences: Optional[Dict[str, Any]] | |
| awaiting_swap: bool | |
| awaiting_dca: bool | |
| awaiting_liquidity: bool | |
| # --- Output --- | |
| final_response: str | |
| response_agent: str | |
| response_metadata: Dict[str, Any] | |
| raw_agent_messages: List[Any] # Raw messages from agent invocation | |
| # --- Dual-path control --- | |
| response_mode: str # "fast" | "reasoning" | |
| # --- File attachments --- | |
| file_attachments: Optional[List[Dict[str, Any]]] | |
| # --- Observability --- | |
| nodes_executed: List[str] # Trace of executed node names | |