Home_Design_Agent / state.py
wangzerui's picture
init
10b617b
from typing import Dict, List, Optional, Any
from typing_extensions import TypedDict
class UserRequirements(TypedDict):
"""User's home design requirements"""
budget: Optional[float]
location: Optional[str]
family_size: Optional[int]
lifestyle_preferences: List[str]
special_needs: List[str]
class FloorplanRequirements(TypedDict):
"""Floorplan-specific requirements"""
num_floors: Optional[int]
total_sqft: Optional[int]
lot_shape: Optional[str]
lot_dimensions: Optional[str]
rooms: List[Dict[str, Any]] # [{"type": "bedroom", "count": 3, "min_size": 120}]
class DetailedFloorplan(TypedDict):
"""Detailed floorplan design from architectural analysis"""
design_analysis: Optional[Dict[str, Any]]
detailed_rooms: List[Dict[str, Any]] # Each room with exact dimensions, placement, features
structural_elements: List[Dict[str, Any]] # Walls, doors, windows
circulation_plan: Dict[str, Any] # Hallways, stairs, traffic flow
lot_utilization: Dict[str, Any] # How the building sits on the lot
architectural_features: List[str] # Special design elements
class BudgetBreakdown(TypedDict):
"""Detailed construction cost breakdown"""
site_preparation: Optional[float]
foundation: Optional[float]
framing: Optional[float]
roofing: Optional[float]
exterior_finishes: Optional[float]
interior_finishes: Optional[float]
mechanical_systems: Optional[float]
electrical_systems: Optional[float]
plumbing_systems: Optional[float]
permits_fees: Optional[float]
professional_services: Optional[float]
contingency: Optional[float]
total_construction_cost: Optional[float]
cost_per_sqft: Optional[float]
budget_analysis: Optional[str]
class ConversationState(TypedDict):
"""Overall conversation state with enhanced multi-agent memory"""
messages: List[Dict[str, str]]
current_topic: Optional[str] # "general", "budget", "floorplan"
user_requirements: UserRequirements
floorplan_requirements: FloorplanRequirements
detailed_floorplan: DetailedFloorplan
budget_breakdown: BudgetBreakdown
conversation_history: List[str]
agent_recommendations: List[str]
agent_memory: Dict[str, Any] # Shared memory between agents
next_agent: Optional[str]
floorplan_ready: bool
budget_ready: bool