AiDebuggerClean / brain_server /api /routes_analyze.py
MrA7A3's picture
Initial modernized KAPO runtime upload
564b5ea verified
"""Routes for analyze/store."""
import time
import logging
import os
from typing import Dict, Any
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from api.deps import get_logger
import requests
from memory.episodic_db import EpisodicDB
from api.deps import is_remote_brain_only, load_config
router = APIRouter()
logger = get_logger("kapo.brain.analyze")
class AnalyzeRequest(BaseModel):
request_id: str
payload: Dict[str, Any]
auth_token: str | None = None
timestamp: float | None = None
@router.post("/analyze")
async def analyze(req: AnalyzeRequest):
"""????? ??????? ?? ??????? ??????? (Episodic)."""
try:
if not is_remote_brain_only():
db = EpisodicDB()
db.insert_experience(
task=req.payload.get("task", "unknown"),
plan=req.payload.get("plan", {}),
tools_used=req.payload.get("tools_used", {}),
result=req.payload.get("result", {}),
success=1 if req.payload.get("success") else 0,
)
else:
try:
hub = load_config().get("LOCAL_HUB_URL") or os.getenv("LOCAL_HUB_URL")
if hub:
requests.post(f"{hub}/memory/store", json={"request_id": req.request_id, "payload": req.payload}, timeout=10)
except Exception:
logger.warning("Local hub store failed")
return {"status": "stored", "timestamp": time.time()}
except Exception as exc:
logger.exception("Analyze failed")
raise HTTPException(status_code=500, detail=str(exc))