"""In-memory ConversationStore for testing — no SQLite, no SQLAlchemy.""" from typing import Optional import uuid from domain.ports import ConversationStore class FakeConversationStore(ConversationStore): """Stores conversations and messages in dicts.""" def __init__(self): self.conversations: dict[str, dict] = {} self.messages: dict[str, list[dict]] = {} async def get_or_create_conversation( self, user_id: str, channel_id: str, conversation_id: Optional[str] = None ) -> str: if conversation_id and conversation_id in self.conversations: return conversation_id new_id = conversation_id or str(uuid.uuid4()) self.conversations[new_id] = { "user_id": user_id, "channel_id": channel_id, } self.messages[new_id] = [] return new_id async def add_message( self, conversation_id: str, content: str, is_user: bool, parent_id: Optional[str] = None, ) -> str: message_id = str(uuid.uuid4()) if conversation_id not in self.messages: self.messages[conversation_id] = [] self.messages[conversation_id].append( { "id": message_id, "content": content, "is_user": is_user, "parent_id": parent_id, } ) return message_id async def get_conversation_history( self, conversation_id: str, limit: int = 10 ) -> list[dict[str, str]]: msgs = self.messages.get(conversation_id, []) history = [] for msg in msgs[-limit:]: role = "user" if msg["is_user"] else "assistant" history.append({"role": role, "content": msg["content"]}) return history