app_code = r'''
import os, json, uuid
import streamlit as st
from typing import TypedDict, Checklist, Dict, Any, Optionally available
from pydantic import BaseModel, Subject
from openai import OpenAI
from langgraph.graph import StateGraph, START, END
from langgraph.sorts import Command, interrupt
from langgraph.checkpoint.reminiscence import InMemorySaver
def tool_search_flights(origin: str, vacation spot: str, depart_date: str, return_date: str, budget_usd: int) -> Dict[str, Any]:
choices = [
{"airline": "SkyJet", "route": f"{origin}->{destination}", "depart": depart_date, "return": return_date, "price_usd": int(budget_usd*0.55)},
{"airline": "AeroBlue", "route": f"{origin}->{destination}", "depart": depart_date, "return": return_date, "price_usd": int(budget_usd*0.70)},
{"airline": "Nimbus Air", "route": f"{origin}->{destination}", "depart": depart_date, "return": return_date, "price_usd": int(budget_usd*0.62)},
]
choices = sorted(choices, key=lambda x: x["price_usd"])
return {"device": "search_flights", "top_options": choices[:2]}
def tool_search_hotels(metropolis: str, nights: int, budget_usd: int, preferences: Checklist[str]) -> Dict[str, Any]:
base = max(60, int(budget_usd / max(nights, 1)))
picks = [
{"name": "Central Boutique", "city": city, "nightly_usd": int(base*0.95), "notes": ["walkable", "great reviews"]},
{"title": "Riverside Keep", "metropolis": metropolis, "nightly_usd": int(base*0.80), "notes": ["quiet", "good value"]},
{"title": "Fashionable Loft Resort", "metropolis": metropolis, "nightly_usd": int(base*1.10), "notes": ["new", "gym"]},
]
if "luxurious" in [p.lower() for p in preferences]:
picks = sorted(picks, key=lambda x: -x["nightly_usd"])
else:
picks = sorted(picks, key=lambda x: x["nightly_usd"])
return {"device": "search_hotels", "top_options": picks[:2]}
def tool_build_day_by_day(metropolis: str, days: int, vibe: str) -> Dict[str, Any]:
blocks = []
for d in vary(1, days+1):
blocks.append({
"day": d,
"morning": f"{metropolis}: espresso + a must-see landmark",
"afternoon": f"{metropolis}: {vibe} exercise + native lunch",
"night": f"{metropolis}: sundown spot + dinner + non-obligatory evening stroll"
})
return {"device": "draft_itinerary", "days": blocks}
'''
