from pydantic import BaseModel, Field from typing import List, Dict, Optional, Any class State(BaseModel): """Enhanced state model for geospatial analysis workflow""" query: str = Field(description="The initial query sent by the user") tasks: List[str] = Field(default=[], description="Detailed breakdown of the tasks") output_files: List[Dict[str, str]] = Field(default=[], description="Generated files with metadata") bbox: Optional[List[float]] = Field(default=None, description="Bounding box [minx, miny, maxx, maxy]") place_name: Optional[str] = Field(default=None, description="Place name for analysis") working_directory: str = Field(default="output", description="Working directory for outputs") analysis_type: Optional[str] = Field(default=None, description="Type of analysis (flood, slope, etc.)") parameters: Dict[str, Any] = Field(default={}, description="Analysis parameters") error_log: List[str] = Field(default=[], description="Error messages during processing") status: str = Field(default="initialized", description="Current processing status")