"""Clean web grounding helpers for Chanakya."""

import os
from pathlib import Path

import httpx
from dotenv import load_dotenv

from backend.chanakya.rt_agent.log_utils import write_log

load_dotenv(Path(__file__).resolve().parents[3] / ".env", override=False)


def search_and_fetch(query: str, max_results: int = 5) -> str:
    """Search via Tavily and return ranked result excerpts with URLs."""
    api_key = os.environ.get("TAVILY_API_KEY", "")
    if not api_key:
        return "No TAVILY_API_KEY configured."

    resp = httpx.post(
        "https://api.tavily.com/search",
        json={
            "api_key": api_key,
            "query": query,
            "search_depth": "advanced",
            "max_results": max_results,
            "include_raw_content": False,
            "include_answer": True,
        },
        timeout=30,
    )
    resp.raise_for_status()
    data = resp.json()

    chunks: list[str] = []
    for item in data.get("results", []):
        title = item.get("title") or item.get("url", "")
        url = item.get("url", "")
        content = " ".join((item.get("content") or "").split())[:1800]
        if content:
            chunks.append(f"Source: {title}\nURL: {url}\n{content}")

    formatted = "\n\n---\n\n".join(chunks) or "No useful web content found."
    write_log("web-search", {"query": query, "raw_results": data.get("results", []), "formatted": formatted})
    return formatted
