# hf_demo.py – ARF v4 API with Memory & Health Check from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware import gradio as gr import numpy as np from datetime import datetime # ARF v4 imports from agentic_reliability_framework.core.governance.risk_engine import RiskEngine from agentic_reliability_framework.runtime.memory import create_faiss_index, RAGGraphMemory from agentic_reliability_framework.runtime.memory.constants import MemoryConstants app = FastAPI(title="ARF v4 API with Memory") # Enable CORS for your frontend app.add_middleware( CORSMiddleware, allow_origins=["https://arf-frontend-sandy.vercel.app"], allow_methods=["*"], ) # --------------------------------------------------------------------------- # Initialize ARF components # --------------------------------------------------------------------------- risk_engine = RiskEngine() # Create FAISS index and memory (using default dimension from constants) faiss_index = create_faiss_index(dim=MemoryConstants.VECTOR_DIM) memory = RAGGraphMemory(faiss_index) # --------------------------------------------------------------------------- # API Endpoints # --------------------------------------------------------------------------- @app.get("/") async def root(): return { "service": "ARF OSS API", "version": "4.0.0", "status": "operational", "memory_stats": memory.get_graph_stats() if memory.has_historical_data() else "empty" } @app.get("/health") async def health(): return {"status": "ok", "version": "4.0.0"} @app.get("/api/v1/get_risk") async def get_risk(): risk_score = risk_engine.get_current_risk() return { "system_risk": risk_score.mean, "status": "critical" if risk_score.mean > 0.8 else "normal" } @app.post("/api/v1/incident") async def store_incident(event_data: dict, analysis: dict): try: incident_id = memory.store_incident(event_data, analysis) return {"incident_id": incident_id} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.get("/api/v1/memory/similar") async def find_similar_incidents(action: str, k