#!/usr/bin/env python3
import sys as _sys
_sys.path.insert(0, "/root/aria/lib")
from aria_logging import get_logger as _get_logger
_log = _get_logger("aria-memory-search")

"""
Aria Memory Search — Semantische Suche über den Obsidian Vault via pgvector.
Aufruf: python3 /root/aria/scripts/aria-memory-search.py "Deine Frage hier"
Kosten: ~$0.0001 pro Suche
"""
import sys
import os
import json
import requests
from openai import OpenAI

OPENAI_KEY = open("/root/aria/.env").read().split("OPENAI_API_KEY=")[1].split("\n")[0]
SUPABASE_URL = "https://rdwtyjtotiryfvfzyafq.supabase.co"
SUPABASE_KEY = open("/root/aria/scripts/.env.aria").read().split("ARIA_SUPABASE_SERVICE_KEY=")[1].split("\n")[0].strip()

def search(query: str, count: int = 5, threshold: float = 0.3, category: str = None):
    openai = OpenAI(api_key=OPENAI_KEY)
    response = openai.embeddings.create(model="text-embedding-3-small", input=query)
    embedding = response.data[0].embedding

    payload = {
        "query_embedding": embedding,
        "match_threshold": threshold,
        "match_count": count,
    }
    if category:
        payload["filter_category"] = category

    res = requests.post(
        f"{SUPABASE_URL}/rest/v1/rpc/match_aria_memory",
        headers={
            "apikey": SUPABASE_KEY,
            "Authorization": f"Bearer {SUPABASE_KEY}",
            "Content-Type": "application/json",
        },
        json=payload
    )
    return res.json()

if __name__ == "__main__":
    _log.event("script_start")
    if len(sys.argv) < 2:
        print("Usage: aria-memory-search.py 'query' [count] [category]")
        sys.exit(1)

    query = sys.argv[1]
    count = int(sys.argv[2]) if len(sys.argv) > 2 else 5
    category = sys.argv[3] if len(sys.argv) > 3 else None

    results = search(query, count, category=category)

    for r in results:
        print(f"\n[{r['category']}] {r['source']} (similarity: {r['similarity']:.3f})")
        print(f"{r['content'][:300]}...")
        print("---")
