Spaces:
Runtime error
Runtime error
| """ | |
| Installation helper utilities for ARF Demo - FIXED VERSION | |
| Updated to v3.3.9 (actual PyPI version) - SURGICAL FIX | |
| """ | |
| import subprocess | |
| import sys | |
| import logging | |
| from typing import Dict, Any, List, Optional | |
| logger = logging.getLogger(__name__) | |
| class InstallationHelper: | |
| """Helper class for ARF package installation - FIXED: No attempt to import non-existent packages""" | |
| def install_arf_oss() -> Dict[str, Any]: | |
| """Install ARF OSS package - FIXED: Updated to v3.3.9""" | |
| try: | |
| logger.info("Installing ARF OSS v3.3.9...") # FIXED: v3.3.7 β v3.3.9 | |
| result = subprocess.run( | |
| [sys.executable, "-m", "pip", "install", "agentic-reliability-framework==3.3.9"], # FIXED: v3.3.9 | |
| capture_output=True, | |
| text=True, | |
| check=True | |
| ) | |
| return { | |
| "success": True, | |
| "message": "β ARF OSS v3.3.9 installed successfully", # FIXED: v3.3.9 | |
| "output": result.stdout | |
| } | |
| except subprocess.CalledProcessError as e: | |
| return { | |
| "success": False, | |
| "message": "β Failed to install ARF OSS", | |
| "error": e.stderr | |
| } | |
| except Exception as e: | |
| return { | |
| "success": False, | |
| "message": f"β Installation error: {str(e)}", | |
| "error": str(e) | |
| } | |
| def check_installation() -> Dict[str, Any]: | |
| """ | |
| FIXED: Check ARF package installation - no attempt to import non-existent arf_enterprise | |
| Enterprise is always simulated in this demo | |
| """ | |
| try: | |
| import agentic_reliability_framework as arf_oss | |
| oss_version = getattr(arf_oss, '__version__', 'unknown') | |
| oss_installed = True | |
| logger.info(f"β ARF OSS v{oss_version} detected") | |
| except ImportError: | |
| oss_installed = False | |
| oss_version = None | |
| logger.info("β οΈ ARF OSS not installed - using mock mode") | |
| # FIXED: Enterprise is ALWAYS simulated - package doesn't exist | |
| enterprise_installed = False | |
| enterprise_version = "simulated" | |
| logger.info("β οΈ ARF Enterprise not installed - using simulation") | |
| return { | |
| "oss_installed": oss_installed, | |
| "oss_version": oss_version, | |
| "enterprise_installed": enterprise_installed, # Always false | |
| "enterprise_version": enterprise_version, # Always "simulated" | |
| "recommendations": InstallationHelper.get_recommendations(oss_installed, enterprise_installed), | |
| "boundaries": { | |
| "oss_can": ["advisory_analysis", "rag_search", "healing_intent"], | |
| "oss_cannot": ["execute", "modify_infra", "autonomous_healing"], | |
| "enterprise_simulated": True, | |
| "enterprise_requires_license": True, | |
| "architecture": "OSS advises β Enterprise simulates" | |
| } | |
| } | |
| def get_recommendations(oss_installed: bool, enterprise_installed: bool) -> List[str]: | |
| """ | |
| FIXED: Get realistic installation recommendations | |
| Enterprise package doesn't exist publicly | |
| """ | |
| recommendations = [] | |
| if not oss_installed: | |
| recommendations.append( | |
| "Install ARF OSS: `pip install agentic-reliability-framework==3.3.9`" # FIXED: v3.3.9 | |
| ) | |
| recommendations.append( | |
| "π‘ Without OSS, demo runs in mock mode with simulated analysis" | |
| ) | |
| # FIXED: Enterprise is simulated, not installable | |
| recommendations.append( | |
| "π ARF Enterprise requires commercial license - simulated in this demo" | |
| ) | |
| recommendations.append( | |
| "π’ Contact sales@arf.dev for Enterprise trial access" | |
| ) | |
| return recommendations | |
| def get_installation_html() -> str: | |
| """Get HTML for installation status display - FIXED to show clear boundaries""" | |
| status = InstallationHelper.check_installation() | |
| if status["oss_installed"]: | |
| oss_html = f""" | |
| <div style="padding: 10px; background: linear-gradient(135deg, #10b981 0%, #0ca678 100%); | |
| color: white; border-radius: 8px; margin: 5px 0; border: 1px solid #0da271;"> | |
| <div style="display: flex; align-items: center; gap: 8px;"> | |
| <span style="font-size: 16px;">β </span> | |
| <div> | |
| <div style="font-weight: 600;">ARF OSS v{status['oss_version']}</div> | |
| <div style="font-size: 12px; opacity: 0.9;">Apache 2.0 β’ Advisory Intelligence</div> | |
| </div> | |
| </div> | |
| </div> | |
| """ | |
| else: | |
| oss_html = """ | |
| <div style="padding: 10px; background: linear-gradient(135deg, #f59e0b 0%, #e0950a 100%); | |
| color: white; border-radius: 8px; margin: 5px 0; border: 1px solid #d98a09;"> | |
| <div style="display: flex; align-items: center; gap: 8px;"> | |
| <span style="font-size: 16px;">β οΈ</span> | |
| <div> | |
| <div style="font-weight: 600;">Mock ARF</div> | |
| <div style="font-size: 12px; opacity: 0.9;">Simulated analysis only</div> | |
| </div> | |
| </div> | |
| </div> | |
| """ | |
| # FIXED: Enterprise is always simulated | |
| enterprise_html = f""" | |
| <div style="padding: 10px; background: linear-gradient(135deg, #64748b 0%, #4b5563 100%); | |
| color: white; border-radius: 8px; margin: 5px 0; border: 1px dashed #9ca3af;"> | |
| <div style="display: flex; align-items: center; gap: 8px;"> | |
| <span style="font-size: 16px;">π</span> | |
| <div> | |
| <div style="font-weight: 600;">Enterprise Simulation</div> | |
| <div style="font-size: 12px; opacity: 0.9;">v{status['enterprise_version']} β’ Commercial License Required</div> | |
| </div> | |
| </div> | |
| </div> | |
| """ | |
| # FIXED: Realistic recommendations | |
| recommendations_html = "" | |
| if status["recommendations"]: | |
| rec_list = "\n".join([f"<li style='margin-bottom: 5px;'>{rec}</li>" for rec in status["recommendations"][:3]]) | |
| recommendations_html = f""" | |
| <div style="margin-top: 15px; padding: 12px; background: #f8fafc; border-radius: 8px; border: 1px solid #e2e8f0;"> | |
| <div style="font-weight: 600; color: #475569; margin-bottom: 8px; display: flex; align-items: center; gap: 6px;"> | |
| <span>π‘</span> <span>Architecture & Recommendations</span> | |
| </div> | |
| <ul style="margin: 5px 0 0 0; padding-left: 20px; color: #64748b; font-size: 13px;"> | |
| {rec_list} | |
| </ul> | |
| </div> | |
| """ | |
| # FIXED: Add boundary context | |
| boundary_html = """ | |
| <div style="margin-top: 10px; padding: 8px; background: #f0fdf4; border-radius: 6px; border: 1px solid #d1fae5;"> | |
| <div style="font-size: 12px; color: #059669; display: flex; align-items: center; gap: 6px;"> | |
| <span style="display: inline-block; width: 8px; height: 8px; background: #10b981; border-radius: 50%;"></span> | |
| <span>Boundary: OSS advises β Enterprise simulates</span> | |
| </div> | |
| </div> | |
| """ | |
| return f""" | |
| <div style="border: 2px solid #e2e8f0; border-radius: 12px; padding: 15px; background: white; | |
| box-shadow: 0 1px 3px rgba(0,0,0,0.05);"> | |
| <h4 style="margin: 0 0 12px 0; color: #1e293b; font-size: 16px; font-weight: 600;"> | |
| π¦ ARF Installation & Boundaries | |
| </h4> | |
| {oss_html} | |
| {enterprise_html} | |
| {boundary_html} | |
| {recommendations_html} | |
| </div> | |
| """ | |
| # Export singleton | |
| installation_helper = InstallationHelper() |