/// Demo runner.
pub struct DemoRunner {
    server: Arc<StatelessTemplateServer>,
    execution_log: Vec<DemoStep>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
/// Demo step.
pub struct DemoStep {
    pub name: String,
    pub capability: &'static str,
    pub request: McpRequest,
    pub response: McpResponse,
    pub elapsed_ms: u64,
    pub success: bool,
    pub output: Option<Value>,
}

#[derive(Debug, Serialize)]
/// Report containing demo data.
pub struct DemoReport {
    pub repository: String,
    pub total_time_ms: u64,
    pub steps: Vec<DemoStep>,
    pub system_diagram: Option<String>,
    pub analysis: DemoAnalysisResult,
    pub execution_time_ms: u64,
}

#[derive(Debug, Serialize)]
/// Result of demo analysis operation.
pub struct DemoAnalysisResult {
    pub files_analyzed: usize,
    pub functions_analyzed: usize,
    pub avg_complexity: f64,
    pub hotspot_functions: usize,
    pub quality_score: f64,
    pub tech_debt_hours: u32,
    pub qa_verification: Option<String>,
    pub language_stats: Option<HashMap<String, Value>>,
    pub complexity_metrics: Option<HashMap<String, Value>>,
}

#[derive(Debug, Clone)]
struct Component {
    id: String,
    label: String,
    color: String,
    connections: Vec<(String, String)>,
}
