from __future__ import annotations from langchain_core.tools import BaseTool, tool from memory_agent.knowledge import KnowledgeService class KnowledgeToolFactory: def __init__(self, service: KnowledgeService) -> None: self._service = service def build(self, namespace: str) -> list[BaseTool]: @tool def answer_from_knowledge(question: str) -> str: """Answer a user question using ONLY previously stored knowledge.""" return self._service.answer_from_knowledge(namespace=namespace, question=question) @tool def store_knowledge( knowledge_text: str, fact_key: str | None = None, fact_value: str | None = None, ) -> str: """Store or update knowledge in FAISS memory. Use when user shares new facts.""" return self._service.store_knowledge( namespace=namespace, knowledge_text=knowledge_text, fact_key=fact_key, fact_value=fact_value, ) return [answer_from_knowledge, store_knowledge]