"""EGRUL Agent - AI agent for getting company data from Russian EGRUL registry."""

import os
from pathlib import Path

from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.mcp import MCPTools
from mcp import StdioServerParameters


def create_playwright_tools() -> MCPTools:
    """Create Playwright MCP tools instance.

    Uses official @playwright/mcp with local Chromium browser.
    """
    config_path = Path(__file__).parent.parent / "playwright-mcp-config.json"
    params = StdioServerParameters(
        command="npx",
        args=["@playwright/mcp", "--browser=chromium", f"--config={config_path}"],
        env={**os.environ},
    )
    return MCPTools(
        server_params=params,
        timeout_seconds=180,
    )


async def run_egrul_agent(inn: str) -> str:
    """Run EGRUL agent to find company by INN and download PDF.

    This is the main entry point - handles MCP connection lifecycle.
    """
    pdf_storage_path = os.getenv("PDF_STORAGE_PATH", "/data/egrul-pdfs")
    Path(pdf_storage_path).mkdir(parents=True, exist_ok=True)

    # Create fresh MCP tools for each request
    playwright_tools = create_playwright_tools()

    # Connect to MCP server
    await playwright_tools.connect()

    try:
        agent = Agent(
            agent_id="egrul-agent",
            name="EGRUL Agent",
            model=Gemini(id="gemini-2.0-flash"),
            tools=[playwright_tools],
            instructions=f"""Ты агент для получения данных из ЕГРЮЛ.

Твоя задача: найти компанию/ИП по ИНН {inn} на сайте https://egrul.nalog.ru и получить данные.

Используй доступные playwright инструменты для работы с браузером.

В ответе верни:
- Название компании/ИП
- ОГРН/ОГРНИП
""",
            markdown=True,
        )

        response = await agent.arun(f"Найди компанию по ИНН {inn} и скачай PDF выписку")
        return response.content

    finally:
        await playwright_tools.close()


def create_egrul_agent(playwright_tools: MCPTools) -> Agent:
    """Create EGRUL agent for Playground.

    Args:
        playwright_tools: Shared MCPTools instance (connected in app lifespan)
    """
    pdf_storage_path = os.getenv("PDF_STORAGE_PATH", "/data/egrul-pdfs")
    Path(pdf_storage_path).mkdir(parents=True, exist_ok=True)

    return Agent(
        agent_id="egrul-agent",
        name="EGRUL Agent",
        model=Gemini(id="gemini-2.0-flash"),
        tools=[playwright_tools],
        instructions=f"""Ты агент для получения выписок из ЕГРЮЛ (Единый государственный реестр юридических лиц).

## Твоя задача
По ИНН найти компанию/ИП на сайте egrul.nalog.ru и скачать PDF выписку.

## Алгоритм работы
1. Открой https://egrul.nalog.ru/index.html
2. Введи ИНН в поле поиска
3. Нажми кнопку "Найти"
4. Подожди загрузки результатов
5. Найди кнопку "Получить выписку"
6. Скачай PDF файл

## Важно
- Сайт на русском языке
- PDF сохраняй в папку: {pdf_storage_path}

## Формат ответа
После успешного скачивания верни:
- Название компании/ИП
- ОГРН/ОГРНИП
- Путь к скачанному PDF файлу
""",
        markdown=True,
    )
