File size: 2,364 Bytes
10b617b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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