# cortex/intake_client.py import os, httpx, logging from typing import Dict, Any, Optional logger = logging.getLogger(__name__) class IntakeClient: """Handles short-term / episodic summaries from Intake service.""" def __init__(self): self.base_url = os.getenv("INTAKE_API", "http://intake:7080") async def summarize_turn(self, session_id: str, user_msg: str, assistant_msg: Optional[str] = None) -> Dict[str, Any]: payload = { "session_id": session_id, "turns": [{"role": "user", "content": user_msg}] } if assistant_msg: payload["turns"].append({"role": "assistant", "content": assistant_msg}) async with httpx.AsyncClient(timeout=30) as client: try: r = await client.post(f"{self.base_url}/summarize", json=payload) r.raise_for_status() return r.json() except Exception as e: logger.warning(f"Intake summarize_turn failed: {e}") return {} async def get_context(self, session_id: str) -> str: async with httpx.AsyncClient(timeout=15) as client: try: r = await client.get(f"{self.base_url}/context/{session_id}") r.raise_for_status() return r.text except Exception as e: logger.warning(f"Intake get_context failed: {e}") return ""