| import sys |
| from app.database.session import SessionLocal |
| from slowapi import Limiter |
| from slowapi.util import get_remote_address |
| from app.core.config import settings |
|
|
| |
| from agentic_reliability_framework.core.governance.risk_engine import RiskEngine |
| from agentic_reliability_framework.core.decision.decision_engine import DecisionEngine |
| from agentic_reliability_framework.core.governance.stability_controller import LyapunovStabilityController |
| from agentic_reliability_framework.core.governance.causal_explainer import CausalExplainer |
| from agentic_reliability_framework.runtime.memory.rag_graph import RAGGraphMemory |
| from agentic_reliability_framework.core.models.event import ReliabilityEvent, HealingAction |
|
|
|
|
| |
| def get_db(): |
| db = SessionLocal() |
| try: |
| yield db |
| finally: |
| db.close() |
|
|
|
|
| |
| limiter = Limiter(key_func=get_remote_address, default_limits=[settings.RATE_LIMIT]) |
|
|
|
|
| |
| _risk_engine = None |
| _decision_engine = None |
| _stability_controller = None |
| _causal_explainer = None |
| _rag_graph = None |
|
|
|
|
| def _seed_rag_graph(rag): |
| """Seed the RAG graph with historical healing action outcomes.""" |
| seed_data = [ |
| ("seed_restart_1", "test", HealingAction.RESTART_CONTAINER.value, True, 2), |
| ("seed_restart_2", "test", HealingAction.RESTART_CONTAINER.value, True, 3), |
| ("seed_restart_3", "test", HealingAction.RESTART_CONTAINER.value, False, 10), |
| ("seed_rollback_1", "test", HealingAction.ROLLBACK.value, True, 1), |
| ("seed_rollback_2", "test", HealingAction.ROLLBACK.value, True, 2), |
| ("seed_rollback_3", "test", HealingAction.ROLLBACK.value, False, 5), |
| ("seed_scale_1", "test", HealingAction.SCALE_OUT.value, True, 5), |
| ("seed_scale_2", "test", HealingAction.SCALE_OUT.value, False, 15), |
| ("seed_cb_1", "test", HealingAction.CIRCUIT_BREAKER.value, True, 1), |
| ("seed_cb_2", "test", HealingAction.CIRCUIT_BREAKER.value, True, 2), |
| ("seed_ts_1", "test", HealingAction.TRAFFIC_SHIFT.value, True, 4), |
| ("seed_ts_2", "test", HealingAction.TRAFFIC_SHIFT.value, False, 8), |
| ] |
| for inc_id, comp, action, success, res_time in seed_data: |
| event = ReliabilityEvent( |
| component=comp, |
| latency_p99=500, |
| error_rate=0.1, |
| service_mesh="default" |
| ) |
| rag.record_outcome( |
| incident_id=inc_id, |
| event=event, |
| action_taken=action, |
| success=success, |
| resolution_time_minutes=res_time |
| ) |
| print("Seeded RAG graph with historical data", file=sys.stderr) |
|
|
|
|
| def get_rag_graph(): |
| global _rag_graph |
| if _rag_graph is None: |
| _rag_graph = RAGGraphMemory() |
| _seed_rag_graph(_rag_graph) |
| return _rag_graph |
|
|
|
|
| def get_decision_engine(): |
| global _decision_engine |
| if _decision_engine is None: |
| rag = get_rag_graph() |
| _decision_engine = DecisionEngine(rag_graph=rag) |
| return _decision_engine |
|
|
|
|
| def get_risk_engine(): |
| global _risk_engine |
| if _risk_engine is None: |
| _risk_engine = RiskEngine() |
| return _risk_engine |
|
|
|
|
| def get_stability_controller(): |
| global _stability_controller |
| if _stability_controller is None: |
| _stability_controller = LyapunovStabilityController() |
| return _stability_controller |
|
|
|
|
| def get_causal_explainer(): |
| global _causal_explainer |
| if _causal_explainer is None: |
| _causal_explainer = CausalExplainer() |
| return _causal_explainer |
|
|