"""
MCP server do zarządzania agent0.

Uruchamiany w-procesowo przez client.py jako task asyncio — dzieli pamięć
z klientem, dzięki czemu narzędzia mogą bezpośrednio wpływać na jego zachowanie.
"""

import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))

from mcp.server.fastmcp import FastMCP
from mcp_helpers import add_code_updater

# Stan współdzielony z client.py (dostęp przez referencję do tego słownika)
state: dict = {
    "autenter": False,
}

mcp = FastMCP("agent0-manager")
add_code_updater(mcp, __file__)


@mcp.tool()
def autenter(enabled: bool) -> str:
    """
    Włącza lub wyłącza automatyczne zatwierdzanie wywołań narzędzi MCP.

    Gdy włączone (True), narzędzia wykonują się automatycznie bez pytania użytkownika.
    Gdy wyłączone (False), przed każdym wywołaniem użytkownik musi nacisnąć Enter
    (zatwierdź) lub wpisać 'n' (pomiń).

    Args:
        enabled: True = wykonuj automatycznie, False = wymagaj potwierdzenia enterem.
    """
    state["autenter"] = enabled
    status = "włączony" if enabled else "wyłączony"
    print(f"  [mcp_agent0] autenter ustawiony na {enabled} | state id={id(state)}", flush=True)
    return f"autenter {status}"


@mcp.tool()
def is_autenter_enabled() -> bool:
    """Zwraca True jeśli autenter jest włączony (automatyczne zatwierdzanie), False jeśli wymagane potwierdzenie enterem."""
    return state["autenter"]


@mcp.tool()
def ping() -> str:
    """Zwraca 'pong' — służy do sprawdzenia czy serwer agent0 działa poprawnie."""
    return "pong"
