| """ |
| ARF UI Components |
| Gradio-first, Hugging Face Spaces safe |
| Compatible with app.py v3.8.0 |
| """ |
|
|
| from __future__ import annotations |
|
|
| import gradio as gr |
| import plotly.graph_objects as go |
| from typing import Dict, Any, List |
|
|
|
|
| |
| |
| |
|
|
| def create_header(version: str, enterprise: bool = False): |
| badge = "ENTERPRISE EDITION" if enterprise else "OSS EDITION" |
| return gr.HTML( |
| f""" |
| <div style="padding:20px;border-bottom:1px solid #eee"> |
| <h1>🚀 Agentic Reliability Framework</h1> |
| <p><b>Version:</b> {version} · <b>{badge}</b></p> |
| </div> |
| """ |
| ) |
|
|
|
|
| def create_footer(): |
| return gr.HTML( |
| """ |
| <div style="padding:20px;border-top:1px solid #eee;text-align:center;color:#666"> |
| ARF © 2025 · Self-Healing Agentic Systems |
| </div> |
| """ |
| ) |
|
|
|
|
| def create_status_bar(): |
| return gr.HTML( |
| """ |
| <div style="padding:10px;background:#f5f7fa;border-radius:8px"> |
| ✅ System Online · 🧠 Agentic Core Active · 📦 OSS Mode |
| </div> |
| """ |
| ) |
|
|
|
|
| |
| |
| |
|
|
| def create_tab1_incident_demo(scenarios: Dict[str, Any], default: str): |
| scenario_dropdown = gr.Dropdown( |
| choices=list(scenarios.keys()), |
| value=default, |
| label="Incident Scenario" |
| ) |
|
|
| scenario_description = gr.Markdown("Select a scenario to begin analysis.") |
| metrics_display = gr.JSON(label="Live Metrics") |
| impact_display = gr.Markdown("### Estimated Business Impact") |
| timeline_output = gr.Markdown("Timeline will render here") |
|
|
| oss_btn = gr.Button("Run OSS Analysis") |
| enterprise_btn = gr.Button("Execute Enterprise Healing", variant="primary") |
| approval_toggle = gr.Checkbox(label="Require Human Approval", value=True) |
|
|
| demo_btn = gr.Button("Run Demo") |
| approval_display = gr.HTML() |
| oss_results_display = gr.JSON(label="OSS Results") |
| enterprise_results_display = gr.JSON(label="Enterprise Results") |
|
|
| return ( |
| scenario_dropdown, |
| scenario_description, |
| metrics_display, |
| impact_display, |
| timeline_output, |
| oss_btn, |
| enterprise_btn, |
| approval_toggle, |
| demo_btn, |
| approval_display, |
| oss_results_display, |
| enterprise_results_display, |
| ) |
|
|
|
|
| |
| |
| |
|
|
| def create_tab2_business_roi(scenarios: Dict[str, Any]): |
| dashboard_output = gr.Plot(label="Executive ROI Dashboard") |
|
|
| roi_scenario_dropdown = gr.Dropdown( |
| choices=list(scenarios.keys()), |
| label="Scenario" |
| ) |
|
|
| monthly_slider = gr.Slider( |
| 1, 100, value=15, step=1, label="Monthly Incidents" |
| ) |
|
|
| team_slider = gr.Slider( |
| 1, 50, value=5, step=1, label="On-call Team Size" |
| ) |
|
|
| calculate_btn = gr.Button("Calculate ROI", variant="primary") |
| roi_output = gr.JSON(label="ROI Breakdown") |
| roi_chart = gr.Plot(label="ROI Multiplier") |
|
|
| return ( |
| dashboard_output, |
| roi_scenario_dropdown, |
| monthly_slider, |
| team_slider, |
| calculate_btn, |
| roi_output, |
| roi_chart, |
| ) |
|
|
|
|
| |
| |
| |
|
|
| def create_tab3_enterprise_features(): |
| license_display = gr.JSON(label="License Status") |
|
|
| validate_btn = gr.Button("Validate License") |
| trial_btn = gr.Button("Start Trial") |
| upgrade_btn = gr.Button("Upgrade") |
|
|
| mcp_mode = gr.Radio( |
| ["advisory", "approval", "autonomous"], |
| value="advisory", |
| label="MCP Execution Mode" |
| ) |
|
|
| mcp_mode_info = gr.JSON(label="Mode Details") |
|
|
| features_table = gr.Dataframe( |
| headers=["Feature", "Available"], |
| value=[ |
| ["Autonomous Healing", "Enterprise"], |
| ["Audit Trail", "Enterprise"], |
| ["Compliance", "Enterprise"], |
| ], |
| interactive=False |
| ) |
|
|
| integrations_table = gr.Dataframe( |
| headers=["Integration", "Status"], |
| value=[ |
| ["Kubernetes", "Ready"], |
| ["AWS", "Ready"], |
| ["GCP", "Ready"], |
| ], |
| interactive=False |
| ) |
|
|
| return ( |
| license_display, |
| validate_btn, |
| trial_btn, |
| upgrade_btn, |
| mcp_mode, |
| mcp_mode_info, |
| features_table, |
| integrations_table, |
| ) |
|
|
|
|
| |
| |
| |
|
|
| def create_tab4_audit_trail(): |
| refresh_btn = gr.Button("Refresh") |
| clear_btn = gr.Button("Clear") |
| export_btn = gr.Button("Export") |
|
|
| execution_table = gr.Dataframe( |
| headers=["Time", "Scenario", "Mode", "Status", "Savings", "Details"], |
| interactive=False |
| ) |
|
|
| incident_table = gr.Dataframe( |
| headers=["Time", "Component", "Scenario", "Severity", "Status"], |
| interactive=False |
| ) |
|
|
| export_text = gr.Textbox( |
| label="Exported Audit JSON", |
| lines=15 |
| ) |
|
|
| return ( |
| refresh_btn, |
| clear_btn, |
| export_btn, |
| execution_table, |
| incident_table, |
| export_text, |
| ) |
|
|
|
|
| |
| |
| |
|
|
| def create_tab5_learning_engine(): |
| learning_graph = gr.Plot(label="Learning Graph") |
|
|
| graph_type = gr.Dropdown( |
| ["patterns", "performance", "confidence"], |
| value="patterns", |
| label="Graph Type" |
| ) |
|
|
| show_labels = gr.Checkbox(value=True, label="Show Labels") |
|
|
| search_query = gr.Textbox(label="Search Incidents") |
| search_btn = gr.Button("Search") |
| clear_btn_search = gr.Button("Clear") |
|
|
| search_results = gr.JSON(label="Search Results") |
| stats_display = gr.JSON(label="Learning Stats") |
| patterns_display = gr.JSON(label="Detected Patterns") |
| performance_display = gr.JSON(label="Performance Metrics") |
|
|
| return ( |
| learning_graph, |
| graph_type, |
| show_labels, |
| search_query, |
| search_btn, |
| clear_btn_search, |
| search_results, |
| stats_display, |
| patterns_display, |
| performance_display, |
| ) |
|
|