import asyncio
import json
import sys

if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")
if hasattr(sys.stderr, "reconfigure"):
    sys.stderr.reconfigure(encoding="utf-8", errors="replace")

from mcp.client.sse import sse_client
from mcp.client.session import ClientSession

queries = [
    "DSCons rule",
    "frontend theme",
    "backend architecture",
    "AEC pricing norms",
    "CAD takeoff geometry",
    "database precision",
    "testing workflow",
    "MCP tools protocol"
]

async def main():
    async with sse_client("http://127.0.0.1:8765/sse") as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            for q in queries:
                res = await session.call_tool("mem0_search", {"query": q, "limit": 3, "project": "DSCons"})
                data = json.loads(res.content[0].text)
                results = data.get("memories", {}).get("results", [])
                print(f"=== {q} ===")
                for i, r in enumerate(results):
                    meta = r.get("metadata") or {}
                    code = meta.get("code")
                    score = r.get("score", 0)
                    text = r.get("memory", "")[:80]
                    print(f"  #{i+1}: score={score:.4f} code={code} text={text}")

if __name__ == "__main__":
    asyncio.run(main())
