from typing import Any, Dict, List from pydantic import BaseModel, Field class HeroResearchOutput(BaseModel): hero_user: str = Field(description="The identified hero user who will benefit most from the app.") hero_use_case: str = Field(description="The primary use case explaining why the hero user would use the app and what they aim to achieve.") hero_journey: List[str] = Field(description="A list of steps outlining the journey the hero user will take within the app.") # app_name: str = Field(description="Given App Name") # app_idea: str = Field(description="Given App Idea") class FeatureMapping(BaseModel): step: str = Field(description="A specific step in the hero user's journey.") features: List[Dict[str, Any]] = Field(description="A list of features from the buildcard that correspond to the journey step.") class FeatureIntegrationOutput(BaseModel): journey_features_mapping: List[FeatureMapping] class ContentPlanStep(BaseModel): step_description: str features: List[Dict[str, Any]] class ContentPlanOutput(BaseModel): content_plan: List[ContentPlanStep] class ScriptStep(BaseModel): step_description: str narrator: str action: str features: List[Dict[str, Any]] class ScriptOutput(BaseModel): sizzle_reel_script: List[ScriptStep] class VideoGenerationOutput(BaseModel): video_path: str = Field(description="Path to the generated sizzle reel video") video_duration: float = Field(description="Duration of the generated video in seconds") app_name: str = Field(description="Name of the app for which video was generated")