File size: 1,894 Bytes
5e0532d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from app.services.llm import llm_service

router = APIRouter()

class ChatRequest(BaseModel):
    message: str
    context: dict | None = None

class ChatResponse(BaseModel):
    success: bool
    response: dict

@router.post("/chat", response_model=ChatResponse)
async def chat_endpoint(request: ChatRequest):
    if not request.message:
        raise HTTPException(status_code=400, detail="Message is required")
    
    # Use Orchestrator to handle routing and intelligence
    from app.services.orchestrator import orchestrator
    result = await orchestrator.process_message("user_123", request.message)
    
    # Map backend trace to frontend TraceStep format
    formatted_trace = []
    for step in result.get("trace", []):
        action = step.get("thought", "")
        if step.get("tool_calls"):
            tools = ", ".join([tc["name"] for tc in step["tool_calls"]])
            action = f"Thinking about using tools: {tools}. {action}"
        
        formatted_trace.append({
            "agent": step["agent"],
            "action": action
        })
    
    return {
        "success": True,
        "response": {
            "role": result["role"],
            "content": result["content"],
            "agent": result.get("agent", "ORA"),
            "trace": formatted_trace
        }
    }

@router.get("/memory/episodes")
async def get_episodes():
    from app.services.memory import memory_service
    episodes = await memory_service.retrieve_episodes("user_123", "", limit=10)
    return {"success": True, "episodes": episodes}

@router.get("/user/profile")
async def get_profile():
    return {
        "success": True,
        "profile": {
            "user_id": "user_123",
            "name": "Spiritual Seeker",
            "preferences": ["prayer", "scripture_study"]
        }
    }